A little problem with my tessellation shader. I try to implement a simple tessellation shader but it only makes points.
Here's my vertex shader :
[source lang="cpp"]out vec4 ecPosition;out vec3 ecNormal; void main( void ){ vec4 position = gl_Vertex; gl_Position = gl_ModelViewProjectionMatrix * position; ecPosition = gl_ModelViewMatrix * position; ecNormal = normalize(gl_NormalMatrix * gl_Normal);}[/source]
My tessellation control shader :
[source lang="cpp"]layout(vertices = 3) out;out vec4 ecPosition3[];in vec3 ecNormal[];in vec4 ecPosition[];out vec3 myNormal[];void main(){ gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; myNormal[gl_InvocationID] = ecNormal[gl_InvocationID]; ecPosition3[gl_InvocationID] = ecPosition[gl_InvocationID]; gl_TessLevelOuter[0] = float(4.0); gl_TessLevelOuter[1] = float(4.0); gl_TessLevelOuter[2] = float(4.0); gl_TessLevelInner[0] = float(4.0);}[/source]
And my Tessellation Evaluation shader:
[source lang="cpp"]layout(triangles, equal_spacing, ccw) in;in vec3 myNormal[];in vec4 ecPosition3[];out vec3 ecNormal;out vec4 ecPosition;void main(){ float u = gl_TessCoord.x; float v = gl_TessCoord.y; float w = gl_TessCoord.z; vec3 position = vec4(gl_in[0].gl_Position.xyz * u + gl_in[1].gl_Position.xyz * v + gl_in[2].gl_Position.xyz * w ); vec3 position2 = vec4(ecPosition3[0].xyz * u + ecPosition3[1].xyz * v + ecPosition3[2].xyz * w ); vec3 normal = myNormal[0] * u + myNormal[1] * v + myNormal[2] * w ); ecNormal = normal; gl_Position = vec4(position, 1.0); ecPosition = vec4(position2, 1.0); }[/source]
Here's a screenshot : http://img4.imagesha...nstitrektht.png
Thanks all!
urza57
Member Since 19 Jun 2012Offline Last Active Jul 17 2012 07:44 AM

Find content
Not Telling