1

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

需要明确的是,我要问的是“如何在gl_NormalMatrix不使用已弃用的 API 的情况下进行计算”?

4

2 回答 2

3

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

N = (M^-1)^T

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

于 2013-02-11T02:08:03.117 回答
0

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

normal = mat3(model_matrix) * v_normal;
于 2013-12-04T16:27:42.747 回答