generated from karl/cpp-template
the example from https://learnopengl.com/Advanced-OpenGL/Geometry-Shader is functional; built with SCons.
32 lines
830 B
GLSL
32 lines
830 B
GLSL
#version 330 core
|
|
layout (points) in;
|
|
layout (triangle_strip, max_vertices = 5) out;
|
|
|
|
in VS_OUT {
|
|
vec3 color;
|
|
} gs_in[];
|
|
|
|
out vec3 fColor;
|
|
|
|
void build_house(vec4 position)
|
|
{
|
|
fColor = gs_in[0].color; // gs_in[0] since there's only one input vertex
|
|
gl_Position = position + vec4(-0.2, -0.2, 0.0, 0.0); // 1:bottom-left
|
|
EmitVertex();
|
|
gl_Position = position + vec4( 0.2, -0.2, 0.0, 0.0); // 2:bottom-right
|
|
EmitVertex();
|
|
gl_Position = position + vec4(-0.2, 0.2, 0.0, 0.0); // 3:top-left
|
|
EmitVertex();
|
|
gl_Position = position + vec4( 0.2, 0.2, 0.0, 0.0); // 4:top-right
|
|
EmitVertex();
|
|
gl_Position = position + vec4( 0.0, 0.4, 0.0, 0.0); // 5:top
|
|
fColor = vec3(1.0, 1.0, 1.0);
|
|
EmitVertex();
|
|
EndPrimitive();
|
|
}
|
|
|
|
void main() {
|
|
build_house(gl_in[0].gl_Position);
|
|
}
|
|
|