我正在编写自己的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();
}
}
我下一步需要,我计算了法线脸脸,但我不知道如何得到它们。
你需要重新计算每帧的法线吗? – fen
法线是否需要单位长度?即*归一化*? –
你为什么在几何着色器中执行骨架构造?摆姿势通常在顶点着色器中完成。 – datenwolf