diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-22 16:53:35 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-22 16:56:12 +0300 |
commit | a20c590966b53511a29b9eb42a87d8e568ea092a (patch) | |
tree | c10c8f42eb1374989855003466eded5ffab0360a /source/blender/draw | |
parent | 59054d5eba487a0c79661e7b8f774edc75e582e0 (diff) |
DRW: Fix crash on startup for old Nvidia drivers
This should fix T57296 once and for all.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl | 3 | ||||
-rw-r--r-- | source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl | 6 |
2 files changed, 4 insertions, 5 deletions
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl index d6bcffb12c6..f1ebb419d60 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl @@ -63,8 +63,7 @@ void main() int v_0 = (gl_VertexID / 3) * 3; int vidx = gl_VertexID % 3; - barycentric = vec3(0.0); - barycentric[vidx] = 1.0; + barycentric = vec3(equal(ivec3(0, 1, 2), ivec3(vidx))); /* Edge */ ivec4 vData[3], data = ivec4(0); diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl index 460bed14a8b..b472ab43666 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl @@ -139,9 +139,9 @@ void main() pos[v_n] = get_vertex_pos(v_id[v_n]); gl_Position = p_pos[v_n] = ModelViewProjectionMatrix * vec4(pos[v_n], 1.0); - barycentric[v_n] = do_edge[v_n] ? 0.0 : 1.0; - barycentric[v_n1] = 1.0; - barycentric[v_n2] = do_edge[v_n2] ? 0.0 : 1.0; + bvec3 bary = equal(ivec3(0, 1, 2), ivec3(v_n1)); + /* This is equivalent to component wise : (do_edge ? bary : 1.0) */ + barycentric = vec3(lessThanEqual(ivec3(do_edge), ivec3(bary))); # ifndef LIGHT_EDGES vec3 nor = get_vertex_nor(v_id[v_n]); |