[Bf-blender-cvs] [198be6f37b3] blender2.8: Grid: Fix T51813: Opaque grid on OSX.

Clément Foucault noreply at git.blender.org
Sun May 27 10:46:06 CEST 2018


Commit: 198be6f37b3ca8d65a026a7aeab7d8db4f3eb25e
Author: Clément Foucault
Date:   Sun May 27 10:50:39 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB198be6f37b3ca8d65a026a7aeab7d8db4f3eb25e

Grid: Fix T51813: Opaque grid on OSX.

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

M	source/blender/draw/modes/shaders/object_grid_frag.glsl

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

diff --git a/source/blender/draw/modes/shaders/object_grid_frag.glsl b/source/blender/draw/modes/shaders/object_grid_frag.glsl
index baf508fd854..2d0d637fc45 100644
--- a/source/blender/draw/modes/shaders/object_grid_frag.glsl
+++ b/source/blender/draw/modes/shaders/object_grid_frag.glsl
@@ -32,19 +32,19 @@ uniform int gridFlag;
 
 #define GRID_LINE_SMOOTH 1.15
 
-float get_grid(vec3 co, vec3 fwidthCos, float grid_size)
+float get_grid(vec2 co, vec2 fwidthCos, float grid_size)
 {
 	float half_size = grid_size / 2.0;
-	/* triangular wave pattern, amplitude is [0, grid_size] */
-	vec3 grid_domain = abs(mod(co + half_size, grid_size) - half_size);
+	/* triangular wave pattern, amplitude is [0, half_size] */
+	vec2 grid_domain = abs(mod(co + half_size, grid_size) - half_size);
 	/* modulate by the absolute rate of change of the coordinates
 	 * (make lines have the same width under perspective) */
 	grid_domain /= fwidthCos;
 
 	/* collapse waves and normalize */
-	grid_domain.x = min(grid_domain.x, min(grid_domain.y, grid_domain.z)) / grid_size;
+	grid_domain.x = min(grid_domain.x, grid_domain.y) / half_size;
 
-	return 1.0 - smoothstep(0.0, GRID_LINE_SMOOTH / grid_size, grid_domain.x);
+	return 1.0 - smoothstep(0.0, GRID_LINE_SMOOTH / grid_size, grid_domain.x * 0.5);
 }
 
 vec3 get_axes(vec3 co, vec3 fwidthCos, float line_size)
@@ -160,9 +160,23 @@ void main()
 		float scaleB = gridScale * pow(gridSubdiv, max(lvl + 0.0, 0.0));
 		float scaleC = gridScale * pow(gridSubdiv, max(lvl + 1.0, 1.0));
 
-		float gridA = get_grid(wPos, fwidthPos, scaleA);
-		float gridB = get_grid(wPos, fwidthPos, scaleB);
-		float gridC = get_grid(wPos, fwidthPos, scaleC);
+		vec2 grid_pos, grid_fwidth;
+		if ((gridFlag & PLANE_XZ) > 0) {
+			grid_pos = wPos.xz;
+			grid_fwidth = fwidthPos.xz;
+		}
+		else if ((gridFlag & PLANE_YZ) > 0) {
+			grid_pos = wPos.yz;
+			grid_fwidth = fwidthPos.yz;
+		}
+		else {
+			grid_pos = wPos.xy;
+			grid_fwidth = fwidthPos.xy;
+		}
+
+		float gridA = get_grid(grid_pos, grid_fwidth, scaleA);
+		float gridB = get_grid(grid_pos, grid_fwidth, scaleB);
+		float gridC = get_grid(grid_pos, grid_fwidth, scaleC);
 
 		FragColor = vec4(colorGrid.rgb, gridA * blend);
 		FragColor = mix(FragColor, vec4(mix(colorGrid.rgb, colorGridEmphasise.rgb, blend), 1.0), gridB);



More information about the Bf-blender-cvs mailing list