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