具有Three.js的着色器中的字段“值”

时间:2012-08-07 10:51:42

标签: webgl three.js

我注意到纹理在所有着色器中都有一个字段名称“value”,但似乎从未使用过这些字段。

示例:

tDiffuse: { type: "t", value: 0, texture: null },

这个领域的目的是什么?

由于

1 个答案:

答案 0 :(得分:1)

使用它。

它定义了需要存储纹理的槽。槽是一个着色器程序可以访问纹理槽采样器的地方。这确实是0,因为我们在着色器中仅使用1个纹理。但是如果我们想在着色器中访问多个纹理,则需要将值更改为nessecary的插槽数。

就像你在这里看到的那样:

https://github.com/gero3/three.js/blob/master/src/renderers/WebGLShaders.js#L1392-1397

地图是第一个纹理。 (插槽0) envMap是第二个纹理。 (插槽1) lightMap是第三个纹理。 (插槽2)

对于您在着色器程序中使用的每个纹理,您必须选择一个新的插槽。