给定模型/视图/投影变换矩阵,如何在不使用GLSL 1.2中不推荐使用的功能的情况下计算法线矩阵



我知道法线变换矩阵是模型/视图/投影矩阵的转置矩阵的逆,但看起来"inverse"只是在GLSL 1.4中添加的,我找不到"transpose"。我必须把一堆数学复制粘贴到我的GLSL中吗?(如果是的话,有没有一个很好的权威开源地方可以复制?)

需要明确的是,我要问的是"如何在不使用不推荐使用的API的情况下计算gl_NormalMatrix"?

这通常通过计算模型视图矩阵的逆的转置来处理

N = (M^-1)^T

在CPU上,然后像上传任何其他矩阵一样上传矩阵。

只是为了澄清还有转置,如果你不做任何缩放,正规矩阵是3x3子矩阵,在glsl中你可以做

normal = mat3(model_matrix) * v_normal;

最新更新