Hi,
I just started to learn using geometry shaders to handle more complex things. but I get stuck in passing variables through different shaders. What I want to do is simply pass pixelNormal computed in vertex shader to fragment shader. Following is my vertex, geometry and fragment shaders
code. Could anyone help point out what's with my code? Thanks very much.
#version 420
layout(location = 0) in vec3 position;
layout(location = 1) in vec2 texCoord;
layout(location = 2) in vec3 normal;
out vec3 v2gPixelNormal; // v2g means vertex shader to geometry shader
uniform mat4 vNormalMatrix;
void main()
{
gl_Position = vec4(position, 1.0);
v2gPixelNormal = (vec4(normal, 1.0f) * vNormalMatrix).xyz;
}
#version 420
layout (triangles) in;
layout (triangle_strip, max_vertices = 3) out;
uniform mat4 gPVM; //perspective view model matrix
in vec3 v2gPixelNormal[];
out vec3 g2fPixelNormal;
void main()
{
for(int i = 0; i < gl_in.length(); ++i)
{
gl_Position = gPVM * gl_in[i].gl_Position;
g2fPixelNormal = v2gPixelNormal[i];
EmitVertex();
}
EndPrimitive();
}
#version 420
smooth in vec3 g2fPixelNormal; // interplated normal of pixel
layout(location = 0)out vec4 FragClr;
void main()
{
FragClr = phongShading(normalize(g2fPixelNormal));
}