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