33 lines
903 B
GLSL
33 lines
903 B
GLSL
#version 460
|
|
|
|
layout (triangles) in;
|
|
layout (triangle_strip, max_vertices = 3) out;
|
|
|
|
layout(location = 0) in GeometryObj {
|
|
vec3 GeoPos; // Реальная позиция в мире
|
|
flat uint Texture; // Текстура
|
|
vec2 UV;
|
|
} Geometry[];
|
|
|
|
layout(location = 0) out FragmentObj {
|
|
vec3 GeoPos; // Реальная позиция в мире
|
|
vec3 Normal;
|
|
flat uint Texture; // Текстура
|
|
vec2 UV;
|
|
} Fragment;
|
|
|
|
void main() {
|
|
vec3 normal = normalize(cross(Geometry[1].GeoPos-Geometry[0].GeoPos, Geometry[2].GeoPos-Geometry[0].GeoPos));
|
|
|
|
for(int iter = 0; iter < 3; iter++) {
|
|
gl_Position = gl_in[iter].gl_Position;
|
|
Fragment.GeoPos = Geometry[iter].GeoPos;
|
|
Fragment.Texture = Geometry[iter].Texture;
|
|
Fragment.UV = Geometry[iter].UV;
|
|
Fragment.Normal = normal;
|
|
EmitVertex();
|
|
}
|
|
|
|
EndPrimitive();
|
|
}
|