我知道法线变换矩阵是模型/视图/投影矩阵的转置矩阵的逆,但看起来"inverse
"只是在GLSL 1.4中添加的,我找不到"transpose
"。我必须把一堆数学复制粘贴到我的GLSL中吗?(如果是的话,有没有一个很好的权威开源地方可以复制?)
需要明确的是,我要问的是"如何在不使用不推荐使用的API的情况下计算gl_NormalMatrix
"?
这通常通过计算模型视图矩阵的逆的转置来处理
N = (M^-1)^T
在CPU上,然后像上传任何其他矩阵一样上传矩阵。
只是为了澄清还有转置,如果你不做任何缩放,正规矩阵是3x3子矩阵,在glsl中你可以做
normal = mat3(model_matrix) * v_normal;