当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript one_dimensional_texture_access.compute1dTextureLayout函数代码示例

本文整理汇总了TypeScript中neuroglancer/webgl/one_dimensional_texture_access.compute1dTextureLayout函数的典型用法代码示例。如果您正苦于以下问题:TypeScript compute1dTextureLayout函数的具体用法?TypeScript compute1dTextureLayout怎么用?TypeScript compute1dTextureLayout使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了compute1dTextureLayout函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: constructor

 constructor(gl: GL, public chunkDataSize: Vec3, public subchunkSize: Vec3, dataLength: number) {
   super();
   compute1dTextureLayout(this, gl, /*texelsPerElement=*/1, dataLength);
   let subchunkGridSize = this.subchunkGridSize = vec3.create();
   for (let i = 0; i < 3; ++i) {
     subchunkGridSize[i] = Math.ceil(chunkDataSize[i] / subchunkSize[i]);
   }
 }
开发者ID:funkey,项目名称:neuroglancer,代码行数:8,代码来源:chunk_format.ts

示例2: testTextureAccess

 testTextureAccess(dataLength, (layout, gl, texelsPerElement) => {
   compute1dTextureLayout(layout, gl, texelsPerElement, dataLength);
 });
开发者ID:stephenplaza,项目名称:neuroglancer,代码行数:3,代码来源:one_dimensional_texture_access.spec.ts

示例3: fragmentShaderTest

    fragmentShaderTest(6, tester => {
      let {gl, builder} = tester;
      const dataType = DataType.UINT32;
      const numComponents = 1;
      const format = new OneDimensionalTextureFormat();
      const layout = new OneDimensionalTextureLayout();
      compute1dTextureFormat(format, dataType, numComponents);

      const data = new Uint32Array(128 * 128 * 128);
      for (let i = 0; i < data.length; ++i) {
        data[i] = i;
      }

      compute1dTextureLayout(layout, gl, format.texelsPerElement, data.length);

      const accessHelper = new OneDimensionalTextureAccessHelper('textureAccess');
      const textureUnitSymbol = Symbol('textureUnit');
      accessHelper.defineShader(builder);
      builder.addUniform('highp float', 'uOffset');
      builder.addUniform('highp vec4', 'uExpected');
      builder.addTextureSampler2D('uSampler', textureUnitSymbol);
      builder.addFragmentCode(
          accessHelper.getAccessor('readValue', 'uSampler', dataType, numComponents));
      builder.addFragmentCode(glsl_unnormalizeUint8);
      builder.addFragmentCode(glsl_uintleToFloat);
      builder.setFragmentMain(`
uint32_t value = readValue(uOffset);
gl_FragData[4] = packFloatIntoVec4(uintleToFloat(value.value.xyz));
gl_FragData[5] = packFloatIntoVec4(all(equal(value.value, uExpected)) ? 1.0 : 0.0);
value.value = unnormalizeUint8(value.value);
gl_FragData[0] = packFloatIntoVec4(value.value.x);
gl_FragData[1] = packFloatIntoVec4(value.value.y);
gl_FragData[2] = packFloatIntoVec4(value.value.z);
gl_FragData[3] = packFloatIntoVec4(value.value.w);
`);

      tester.build();
      let {shader} = tester;
      shader.bind();

      accessHelper.setupTextureLayout(gl, shader, layout);

      const textureUnit = shader.textureUnit(textureUnitSymbol);
      let texture = gl.createTexture();
      tester.registerDisposer(() => {
        gl.deleteTexture(texture);
      });
      gl.bindTexture(gl.TEXTURE_2D, texture);
      setOneDimensionalTextureData(gl, layout, format, data);
      gl.bindTexture(gl.TEXTURE_2D, null);

      function testOffset(x: number) {
        let value = data[x];
        gl.uniform1f(shader.uniform('uOffset'), x);
        gl.uniform4fv(shader.uniform('uExpected'), setVec4FromUint32(new Float32Array(4), value));

        gl.activeTexture(gl.TEXTURE0 + textureUnit);
        gl.bindTexture(gl.TEXTURE_2D, texture);
        tester.execute();
        gl.bindTexture(gl.TEXTURE_2D, null);

        let actual = new Float32Array(4);
        let expected = new Float32Array(4);
        for (let i = 0; i < 4; ++i) {
          actual[i] = tester.readFloat(i);
          expected[i] = (value >>> (8 * i)) & 0xFF;
        }
        expect(actual).toEqual(expected, `offset = ${x}, value = ${x}`);
        expect(tester.readFloat(4)).toEqual(value, `uint24le value != expected, offset = ${x}, value = ${x}`);
        expect(tester.readFloat(5)).toEqual(1.0, `uExpected != value in shader, offset = ${x}, value = ${x}`);
      }

      for (let i = 0; i < 100; ++i) {
        testOffset(i);
      }

      const COUNT = 100;
      for (let i = 0; i < COUNT; ++i) {
        let offset = Math.floor(Math.random() * data.length);
        testOffset(offset);
      }
    });
开发者ID:janelia-flyem,项目名称:neuroglancer,代码行数:82,代码来源:one_dimensional_texture_access.spec.ts


注:本文中的neuroglancer/webgl/one_dimensional_texture_access.compute1dTextureLayout函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。