Hallo,

i've tried all to generate an output with my tessellation shader. If i add the tessellation evaluation and tessellation control shader to my shader program,

the model to which i applied the shader is gone.

Here is my vertex, tessellation evaluation and tessellation control shader:

Vertex

Code :#version 410 #import "assets/shaders/libraries/VertexCore.glsl" //Varying variables out for tessellation control shader out vec4 v_TexCoordCS; out vec4 v_PositionCS; out vec4 v_ColorCS; out vec3 v_NormalCS; void main(void) { v_TexCoordCS = i_TexCoord; v_NormalCS = normalize(m_ModelNormalMatrix * i_Normal); v_ColorCS = i_Color; v_PositionCS = i_Vertex; }

Tessellation Control

Code :#version 410 layout(vertices = 3) out; //Varying variables in from vertex shader in vec4[3] v_TexCoordCS; in vec4[3] v_PositionCS; in vec4[3] v_ColorCS; in vec3[3] v_NormalCS; //Varying variables out for tessellation evaluation shader out vec4[3] v_TexCoordES; out vec4[3] v_PositionES; out vec4[3] v_ColorES; out vec3[3] v_NormalES; void main(void) { v_TexCoordES[gl_InvocationID] = v_TexCoordCS[gl_InvocationID]; v_PositionES[gl_InvocationID] = v_PositionCS[gl_InvocationID]; v_ColorES[gl_InvocationID] = v_ColorCS[gl_InvocationID]; v_NormalES[gl_InvocationID] = v_NormalCS[gl_InvocationID]; gl_TessLevelInner[0] = 3.0; gl_TessLevelOuter[0] = 10.0; gl_TessLevelOuter[1] = 7.0; gl_TessLevelOuter[2] = 3.0; }

Tessellation Evaluation

Code :#version 410 layout(triangles, equal_spacing, ccw) in; //Matrices uniform mat4 m_ModelMatrix; uniform mat4 m_ViewMatrix; uniform mat4 m_ProjectionMatrix; mat4 m_ModelViewMatrix = m_ViewMatrix * m_ModelMatrix; mat4 m_ModelViewProjectionMatrix = m_ProjectionMatrix * m_ModelViewMatrix; mat4 m_ViewProjectionMatrix = m_ProjectionMatrix * m_ViewMatrix; //Uniforms uniform sampler2D m_DisplacementTexture; uniform float m_DisplacementFactor; //Varying variables in from tessellation control shader in vec4[3] v_TexCoordES; in vec4[3] v_PositionES; in vec4[3] v_ColorES; in vec3[3] v_NormalES; //Varying variables out for fragment shader out vec4 v_TexCoordFS; out vec4 v_PositionFS; out vec4 v_ColorFS; out vec3 v_NormalFS; vec2 interpolate(vec2 v0, vec2 v1, vec2 v2) { return vec2(gl_TessCoord.x) * v0 + vec2(gl_TessCoord.y) * v1 + vec2(gl_TessCoord.z) * v2; } vec3 interpolate(vec3 v0, vec3 v1, vec3 v2) { return vec3(gl_TessCoord.x) * v0 + vec3(gl_TessCoord.y) * v1 + vec3(gl_TessCoord.z) * v2; } void main(void) { v_TexCoordFS = vec4(interpolate(v_TexCoordES[0].st, v_TexCoordES[1].st, v_TexCoordES[2].st), 0.0, 1.0); v_NormalFS = interpolate(v_NormalES[0], v_NormalES[1], v_NormalES[2]); v_NormalFS = normalize(v_NormalFS); v_PositionFS = vec4(interpolate(v_PositionES[0].xyz, v_PositionES[1].xyz, v_PositionES[2].xyz), 1.0); v_ColorFS = vec4(interpolate(v_ColorES[0].rgb, v_ColorES[1].rgb, v_ColorES[2].rgb), 1.0); float displacement = texture(m_DisplacementTexture, v_TexCoordFS.st).x; v_PositionFS += vec4(v_NormalFS, 1.0) * displacement * m_DisplacementFactor; gl_Position = m_ModelViewProjectionMatrix * v_PositionFS; }

And yes, i've set the number of vertices per patch:

Code :glPatchParameteri(GL_PATCH_VERTICES, 3);

I really hope that someone can tell me the mistake in my code!