gpt4 book ai didi

opengl - 为什么我必须计算模型矩阵的逆矩阵的转置才能计算反射纹理的法线?

转载 作者:行者123 更新时间:2023-12-05 03:11:42 25 4
gpt4 key购买 nike

我正在关注 this使用环境贴图创建天空盒/立方体贴图的教程。我在理解顶点着色器中的计算时遇到了一些问题:

#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 normal;

out vec3 Normal;
out vec3 Position;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
gl_Position = projection * view * model * vec4(position, 1.0f);
Normal = mat3(transpose(inverse(model))) * normal;
Position = vec3(model * vec4(position, 1.0f));
}

在这里,作者在将法线传递给片段着色器以计算反射纹理之前计算法线:

Normal = mat3(transpose(inverse(model))) * normal;

我的问题是,这个计算到底做了什么?为什么在与法线相乘之前必须先计算模型矩阵的逆矩阵的转置?

最佳答案

如果不这样做,不均匀的缩放会扭曲法线。我认为这总结了图片,比我可能做的更好:http://www.lighthouse3d.com/tutorials/glsl-12-tutorial/the-normal-matrix/

关于opengl - 为什么我必须计算模型矩阵的逆矩阵的转置才能计算反射纹理的法线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36298416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com