gl_ModelViewMatrixInverseTranspose在三个JS中

gl_ModelViewMatrixInverseTranspose在三个JS中,matrix,three.js,webgl,shader,Matrix,Three.js,Webgl,Shader,在我尝试编写自己的自定义着色器时(我使用的是THREE.ShaderMaterial),我需要设置其WebGL的内置gl\U ModelViewMatrixInverseTranspose统一(如上所示)。我注意到一些制服已经自动传递到着色器,例如,gl\u ModelViewMatrix和gl\u ProjectionMatrix已经分别由三个js'ModelViewMatrix和ProjectionMatrix进行了说明gl_ModelViewProjectionMatrix似乎缺失,但我注

在我尝试编写自己的自定义着色器时(我使用的是
THREE.ShaderMaterial
),我需要设置其WebGL的内置
gl\U ModelViewMatrixInverseTranspose
统一(如上所示)。我注意到一些制服已经自动传递到着色器,例如,
gl\u ModelViewMatrix
gl\u ProjectionMatrix
已经分别由三个js'
ModelViewMatrix
ProjectionMatrix
进行了说明<另一方面,code>gl_ModelViewProjectionMatrix似乎缺失,但我注意到一些示例,其中它可以在着色器内部轻松计算为
projectionMatrix*modelViewMatrix
。所以我的问题是:我是从
modelViewMatrix
开始在着色器中手动计算
gl\u modelviewmatrixinversetransfose
(如果是,如何计算?)还是有一个unform(可能在我定义的
THREE.ShaderMaterial
THREE.UniformsUtils.merge
)已经处理它?干杯。

在Three.js着色器中,modelViewMatrix的逆转置称为
normalMatrix

它会自动传递到着色器中,因此无需执行任何操作即可获得它

// = inverse transpose of modelViewMatrix
uniform mat3 normalMatrix;

供参考的是Three.js的内置统一和属性。

WebGL没有
gl\u ModelViewMatrixInverseTranspose
或任何其他默认矩阵。这是一个不推荐使用的OpenGL老东西。准确地说,3x3
normalMatrix
是4x4
modelViewMatrix的上部3x3子矩阵的逆矩阵的转置