如何在Shader中计算world_position
How to calculate world_position in Shader
我想编写一个着色器,我有一个顶点的位置和 3 个矩阵:
- mat4 模型-视图-投影矩阵
- 模型的mat4世界变换
- 法线的 mat3 世界变换
输出必须是
vec3 world_position
我该如何计算?
将顶点位置作为vec4( pos, 1.0f)
乘以模型矩阵得到世界坐标。
例如,
vec4 world_vertex = model_transform * vec4( vertexPosition, 1.0f );
vec3 world_position = world_vertex.xyz;
编辑
抱歉匆匆阅读了这个问题。我假设 mvp 乘法是因为它是调用片段着色器之前所需的典型转换。正如OP提到的,顶点位置应该乘以模型矩阵。
答案是:
vec4 world_vertex = model_matrix * vec4( vertexPosition, 1.0f );
vec3 world_position = world_vertex.xyz;
我想编写一个着色器,我有一个顶点的位置和 3 个矩阵:
- mat4 模型-视图-投影矩阵
- 模型的mat4世界变换
- 法线的 mat3 世界变换
输出必须是
vec3 world_position
我该如何计算?
将顶点位置作为vec4( pos, 1.0f)
乘以模型矩阵得到世界坐标。
例如,
vec4 world_vertex = model_transform * vec4( vertexPosition, 1.0f );
vec3 world_position = world_vertex.xyz;
编辑
抱歉匆匆阅读了这个问题。我假设 mvp 乘法是因为它是调用片段着色器之前所需的典型转换。正如OP提到的,顶点位置应该乘以模型矩阵。
答案是:
vec4 world_vertex = model_matrix * vec4( vertexPosition, 1.0f );
vec3 world_position = world_vertex.xyz;