我目前正在编写自己的 GLSL 着色器,并且想要平滑着色。当我在将法线发送到 VBO 之前计算法线时,阴影会起作用,但这里的问题是当我使用骨骼矩阵实现动画时,法线不正确。
我正在使用几何着色器来计算法线,但我不知道如何平滑它们。
这是我的几何着色器:
#version 150
layout(triangles) in;
layout (triangle_strip, max_vertices=3) out;
in vec2 texCoord0[3];
in vec3 worldPos0[3];
out vec2 texCoord1;
out vec3 normal1;
out vec3 worldPos1;
void main()
{
vec3 n = cross(worldPos0[1].xyz-worldPos0[0].xyz, worldPos0[2].xyz-worldPos0[0].xyz);
for(int i = 0; i < gl_in.length(); i++)
{
gl_Position = gl_in[i].gl_Position;
texCoord1 = texCoord0;
normal1 = n;
worldPos1 = worldPos0;
EmitVertex();
}
}
我需要计算法线的脸部旁边的脸部,但我不知道如何获得它们。