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

时间:2013-02-11 02:00:36

标签: opengl glsl vertex-shader

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

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

2 个答案:

答案 0 :(得分:3)

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

N = (M^-1)^T
在CPU上

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

答案 1 :(得分:0)

只是为了澄清还有transpose如果你没有做任何比例,那么普通矩阵就是3x3子矩阵,你可以用glsl做

normal = mat3(model_matrix) * v_normal;