#version 150 compatibility #extension GL_EXT_geometry_shader4 : enable out vec3 eye_position; out vec3 normal; void main() { vec3 p0 = gl_PositionIn[0].xyz; vec3 p1 = gl_PositionIn[1].xyz; vec3 p2 = gl_PositionIn[2].xyz; normal = normalize(gl_NormalMatrix * cross(p2-p0,p1-p0)); for (int i=0; i<3; ++i) { vec4 heye_position = gl_ModelViewMatrix * gl_PositionIn[i]; eye_position = heye_position.xyz / heye_position.w; gl_Position = gl_ProjectionMatrix * heye_position; EmitVertex(); } EndPrimitive(); }