Зеркальное отображение с использованием геометрического шейдера
Я пытаюсь выполнить простое зеркальное отображение геометрии на этапе геометрического шейдера. Мои данные вершин выходят правильно, но освещение вершин не подходит для зеркальной геометрии.
Для вершин я просто отражаю плоскость XZ, которая отлично подходит для моих нужд;
a = VPosition[0];
a.y = -a.y;
b = VPosition[1];
b.y = -b.y;
c = VPosition[2];
c.y = -c.y;
gl_Position = ModelViewProj * vec4( a, 1.0 );
EmitVertex();
gl_Position = ModelViewProj * vec4( b, 1.0 );
EmitVertex();
gl_Position = ModelViewProj * vec4( c, 1.0 );
EmitVertex();
EndPrimitive();
Но как мне отразить нормали вершин? Простое отрицание нормальной y так же, как вершина, похоже, не работает.
Например
an = VNormal[0];
an.y = -an.y;