Shader mm_contour - Correction to avoid z-fighting moved from fragment shader to vertex shader

This commit is contained in:
enricoturri1966 2022-04-07 10:40:33 +02:00
parent b265e91df2
commit 0995cfc658
8 changed files with 12 additions and 29 deletions

View file

@ -1,13 +1,8 @@
#version 110
const float EPSILON = 0.0001;
uniform vec4 uniform_color;
void main()
{
gl_FragColor = uniform_color;
// Values inside depth buffer for fragments of the contour of a selected area are offset
// by small epsilon to solve z-fighting between painted triangles and contour lines.
gl_FragDepth = gl_FragCoord.z - EPSILON;
}

View file

@ -7,5 +7,8 @@ attribute vec3 v_position;
void main()
{
gl_Position = projection_matrix * view_model_matrix * vec4(v_position, 1.0);
// Add small epsilon to z to solve z-fighting between painted triangles and contour lines.
vec4 clip_position = projection_matrix * view_model_matrix * vec4(v_position, 1.0);
clip_position.z -= 0.00001 * abs(clip_position.w);
gl_Position = clip_position;
}

View file

@ -1,13 +1,8 @@
#version 140
const float EPSILON = 0.0001;
uniform vec4 uniform_color;
void main()
{
gl_FragColor = uniform_color;
// Values inside depth buffer for fragments of the contour of a selected area are offset
// by small epsilon to solve z-fighting between painted triangles and contour lines.
gl_FragDepth = gl_FragCoord.z - EPSILON;
}

View file

@ -7,5 +7,8 @@ in vec3 v_position;
void main()
{
gl_Position = projection_matrix * view_model_matrix * vec4(v_position, 1.0);
// Add small epsilon to z to solve z-fighting between painted triangles and contour lines.
vec4 clip_position = projection_matrix * view_model_matrix * vec4(v_position, 1.0);
clip_position.z -= 0.00001 * abs(clip_position.w);
gl_Position = clip_position;
}

View file

@ -1,11 +1,6 @@
#version 110
const float EPSILON = 0.0001;
void main()
{
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
// Values inside depth buffer for fragments of the contour of a selected area are offset
// by small epsilon to solve z-fighting between painted triangles and contour lines.
gl_FragDepth = gl_FragCoord.z - EPSILON;
}

View file

@ -2,5 +2,8 @@
void main()
{
gl_Position = ftransform();
// Add small epsilon to z to solve z-fighting between painted triangles and contour lines.
vec4 clip_position = gl_ModelViewProjectionMatrix * gl_Vertex;
clip_position.z -= 0.00001 * abs(clip_position.w);
gl_Position = clip_position;
}