Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-10-22 16:53:35 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-10-22 16:56:12 +0300
commita20c590966b53511a29b9eb42a87d8e568ea092a (patch)
treec10c8f42eb1374989855003466eded5ffab0360a /source/blender/draw
parent59054d5eba487a0c79661e7b8f774edc75e582e0 (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.glsl3
-rw-r--r--source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl6
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]);