在我尝试编写自己的自定义着色器(我正在使用THREE.ShaderMaterial
)时,我需要设置其WebGL的内置gl_ModelViewMatrixInverseTranspose
制服(如http://mew.cx/glsl_quickref.pdf所示)。我注意到一些制服已经自动传递到着色器,例如gl_ModelViewMatrix
和gl_ProjectionMatrix
已分别由threejs'modelViewMatrix
和projectionMatrix
计算。另一方面,gl_ModelViewProjectionMatrix
似乎缺失了,但我注意到一些例子可以很容易地在着色器中计算为projectionMatrix * modelViewMatrix
。所以我的问题是:我是从gl_ModelViewMatrixInverseTranspose
开始在我的着色器中手动计算modelViewMatrix
(如果是的话,怎么做?)或者是否存在unform(可能在我的THREE.ShaderMaterial
定义中合并与THREE.UniformsUtils.merge
)已经处理它?欢呼声。
答案 0 :(得分:1)
在Three.js着色器中,modelViewMatrix的逆转置称为normalMatrix
。
它会自动传递到着色器中,因此您无需进行任何工作即可获得它。
// = inverse transpose of modelViewMatrix
uniform mat3 normalMatrix;
参考here是内置的制服和属性Three.js。