현재 내 자신의 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