如何在Shader中计算world_position

How to calculate world_position in Shader

我想编写一个着色器,我有一个顶点的位置和 3 个矩阵:

输出必须是

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;