diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-06-04 12:28:21 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-06-05 15:29:27 +0300 |
commit | eeda9369b6e63e38a82292f0b42eefc8247e4348 (patch) | |
tree | ca865cbeac97c0087543c39524e40627bb3d0401 /source/blender/draw/modes/shaders | |
parent | 957c8f1305149ce85472a4082405217475af4b62 (diff) |
TexturePaint: Missing Texture Depth Test
Depth testing was off as it used the precomputed ModelView matrix. As
draw engines currently use a different approach the depth was sometimes
a bit off making the color disappear.
This change will use a different vertex shader that will write the
correct depth. I expected the same change to be needed in the bone
selection overlay but was not able to reproduce it.
Reviewed By: fclem
Maniphest Tasks: T64615
Differential Revision: https://developer.blender.org/D5006
Diffstat (limited to 'source/blender/draw/modes/shaders')
-rw-r--r-- | source/blender/draw/modes/shaders/paint_face_selection_vert.glsl | 19 | ||||
-rw-r--r-- | source/blender/draw/modes/shaders/paint_face_vert.glsl | 12 |
2 files changed, 21 insertions, 10 deletions
diff --git a/source/blender/draw/modes/shaders/paint_face_selection_vert.glsl b/source/blender/draw/modes/shaders/paint_face_selection_vert.glsl new file mode 100644 index 00000000000..4b5191ead07 --- /dev/null +++ b/source/blender/draw/modes/shaders/paint_face_selection_vert.glsl @@ -0,0 +1,19 @@ + +in vec3 pos; +in vec4 nor; /* select flag on the 4th component */ + +void main() +{ + vec3 world_pos = point_object_to_world(pos); + gl_Position = point_world_to_ndc(world_pos); + + /* Don't draw faces that are selected. */ + if (nor.w > 0.0) { + gl_Position = vec4(0.0, 0.0, 0.0, 1.0); + } + else { +#ifdef USE_WORLD_CLIP_PLANES + world_clip_planes_calc_clip_distance(world_pos); +#endif + } +} diff --git a/source/blender/draw/modes/shaders/paint_face_vert.glsl b/source/blender/draw/modes/shaders/paint_face_vert.glsl index 4b5191ead07..d135071c15c 100644 --- a/source/blender/draw/modes/shaders/paint_face_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_face_vert.glsl @@ -1,19 +1,11 @@ - in vec3 pos; -in vec4 nor; /* select flag on the 4th component */ void main() { vec3 world_pos = point_object_to_world(pos); gl_Position = point_world_to_ndc(world_pos); - /* Don't draw faces that are selected. */ - if (nor.w > 0.0) { - gl_Position = vec4(0.0, 0.0, 0.0, 1.0); - } - else { #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance(world_pos); + world_clip_planes_calc_clip_distance(world_pos); #endif - } -} +}
\ No newline at end of file |