當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。