Fix depth offset in paint mode wireframe.

The original offset was wrong because it applied a constant to
homogenous coordinates (the actual depth is z/w), which broke
totally if near clip distance was reduced.

A correct depth offset has to take slope into account like
glPolygonOffset in order to avoid dotted lines caused by
interpolation precision variations. When drawing wire lines
however only the slope of the line itself is accessible, so
also generally increase the offset when the object is close.
This commit is contained in:
Alexander Gavrilov
2018-11-29 17:51:25 +03:00
parent 4c2a3b4701
commit e6605d5f37
2 changed files with 3 additions and 3 deletions

View File

@@ -11,6 +11,9 @@ void main()
discard;
}
/* Apply depth offset by taking slope and distance into account. */
gl_FragDepth = gl_FragCoord.z - mix(exp2(-10), exp2(-23), gl_FragCoord.z) - 2.0 * fwidth(gl_FragCoord.z);
#ifdef VERTEX_MODE
vec4 colSel = colorEdgeSelect;
colSel.rgb = clamp(colSel.rgb - 0.2, 0.0, 1.0);

View File

@@ -10,8 +10,5 @@ void main()
{
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
/* Temp hack for william to start using blender 2.8 for icons. Will be removed by T54910 */
gl_Position.z -= 0.0001;
finalFlag = data;
}