1
我注意到纹理在所有着色器中都有一个字段名称“value”,但似乎从未使用过这些字段。使用Three.js着色器中的字段“值”
例子:
tDiffuse: { type: "t", value: 0, texture: null },
什么是这个领域的目的是什么?
谢谢
我注意到纹理在所有着色器中都有一个字段名称“value”,但似乎从未使用过这些字段。使用Three.js着色器中的字段“值”
例子:
tDiffuse: { type: "t", value: 0, texture: null },
什么是这个领域的目的是什么?
谢谢
它被使用。
它定义了纹理需要存储在哪个槽中。插槽是一个shaderprogram可以访问纹理槽采样器的地方。这确实大部分是0,因为我们在着色器中只使用1个纹理。但是如果我们想要在着色器中访问多个纹理,那么需要将值更改为nessecary的插槽数量。
就像你可以在这里看到:
https://github.com/gero3/three.js/blob/master/src/renderers/WebGLShaders.js#L1392-1397
地图是第一个纹理。 (插槽0) envMap是第二个纹理。 (插槽1) lightMap是第三个纹理。 (插槽2)
对于在着色器程序中使用的每个纹理,必须选择一个新插槽。