Jump to content

  • Log In with Google      Sign In   
  • Create Account

urza57

Member Since 19 Jun 2012
Offline Last Active Jul 17 2012 07:44 AM

Topics I've Started

Tessellation makes point

19 June 2012 - 05:16 AM

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!

PARTNERS