[Bf-blender-cvs] [a20c590966b] blender2.8: DRW: Fix crash on startup for old Nvidia drivers

Clément Foucault noreply at git.blender.org
Mon Oct 22 15:56:13 CEST 2018


Commit: a20c590966b53511a29b9eb42a87d8e568ea092a
Author: Clément Foucault
Date:   Mon Oct 22 15:53:35 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa20c590966b53511a29b9eb42a87d8e568ea092a

DRW: Fix crash on startup for old Nvidia drivers

This should fix T57296 once and for all.

===================================================================

M	source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl
M	source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl

===================================================================

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]);



More information about the Bf-blender-cvs mailing list