[Bf-blender-cvs] [65834a0a503] temp-gpu-clip-fix: Avoid code duplication

Campbell Barton noreply at git.blender.org
Mon Jan 21 13:28:38 CET 2019


Commit: 65834a0a503ecca2e51063f26cb6876f1c3baf9f
Author: Campbell Barton
Date:   Mon Jan 21 23:29:11 2019 +1100
Branches: temp-gpu-clip-fix
https://developer.blender.org/rB65834a0a503ecca2e51063f26cb6876f1c3baf9f

Avoid code duplication

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

M	source/blender/draw/modes/shaders/common_world_clip_lib.glsl
M	source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
M	source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
M	source/blender/draw/modes/shaders/edit_normals_geom.glsl
M	source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl

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

diff --git a/source/blender/draw/modes/shaders/common_world_clip_lib.glsl b/source/blender/draw/modes/shaders/common_world_clip_lib.glsl
index a8963bf052f..e211def8eff 100644
--- a/source/blender/draw/modes/shaders/common_world_clip_lib.glsl
+++ b/source/blender/draw/modes/shaders/common_world_clip_lib.glsl
@@ -10,5 +10,16 @@ void world_clip_planes_calc_clip_distance(vec3 wpos)
 	gl_ClipDistance[4] = dot(WorldClipPlanes[4].xyz, wpos) + WorldClipPlanes[4].w;
 	gl_ClipDistance[5] = dot(WorldClipPlanes[5].xyz, wpos) + WorldClipPlanes[5].w;
 }
+
+#define world_clip_planes_set_clip_distance(c)
+{ \
+	gl_ClipDistance[0] = (c)[0]; \
+	gl_ClipDistance[1] = (c)[1]; \
+	gl_ClipDistance[2] = (c)[2]; \
+	gl_ClipDistance[3] = (c)[3]; \
+	gl_ClipDistance[4] = (c)[4]; \
+	gl_ClipDistance[5] = (c)[5]; \
+}
+
 #endif
 #endif
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
index 8943292080a..76c53b3cf86 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
@@ -59,12 +59,7 @@ void doVertex(int v, vec4 pos)
 	gl_Position = pos;
 
 #ifdef USE_WORLD_CLIP_PLANES
-	gl_ClipDistance[0] = gl_in[v].gl_ClipDistance[0];
-	gl_ClipDistance[1] = gl_in[v].gl_ClipDistance[1];
-	gl_ClipDistance[2] = gl_in[v].gl_ClipDistance[2];
-	gl_ClipDistance[3] = gl_in[v].gl_ClipDistance[3];
-	gl_ClipDistance[4] = gl_in[v].gl_ClipDistance[4];
-	gl_ClipDistance[5] = gl_in[v].gl_ClipDistance[5];
+	world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance);
 #endif
 
 	EmitVertex();
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
index c475d564f29..1c88f1ff959 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
@@ -73,12 +73,7 @@ void doVertex(int v)
 	gl_Position = pPos[v];
 
 #ifdef USE_WORLD_CLIP_PLANES
-	gl_ClipDistance[0] = gl_in[v].gl_ClipDistance[0];
-	gl_ClipDistance[1] = gl_in[v].gl_ClipDistance[1];
-	gl_ClipDistance[2] = gl_in[v].gl_ClipDistance[2];
-	gl_ClipDistance[3] = gl_in[v].gl_ClipDistance[3];
-	gl_ClipDistance[4] = gl_in[v].gl_ClipDistance[4];
-	gl_ClipDistance[5] = gl_in[v].gl_ClipDistance[5];
+	world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance);
 #endif
 
 	EmitVertex();
@@ -97,12 +92,7 @@ void doVertexOfs(int v, vec2 fixvec)
 	gl_Position = pPos[v] + vec4(fixvec * pPos[v].w, z_ofs, 0.0);
 
 #ifdef USE_WORLD_CLIP_PLANES
-	gl_ClipDistance[0] = gl_in[v].gl_ClipDistance[0];
-	gl_ClipDistance[1] = gl_in[v].gl_ClipDistance[1];
-	gl_ClipDistance[2] = gl_in[v].gl_ClipDistance[2];
-	gl_ClipDistance[3] = gl_in[v].gl_ClipDistance[3];
-	gl_ClipDistance[4] = gl_in[v].gl_ClipDistance[4];
-	gl_ClipDistance[5] = gl_in[v].gl_ClipDistance[5];
+	world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance);
 #endif
 
 	EmitVertex();
diff --git a/source/blender/draw/modes/shaders/edit_normals_geom.glsl b/source/blender/draw/modes/shaders/edit_normals_geom.glsl
index 0d6c6fda915..91a57a79eb0 100644
--- a/source/blender/draw/modes/shaders/edit_normals_geom.glsl
+++ b/source/blender/draw/modes/shaders/edit_normals_geom.glsl
@@ -10,12 +10,7 @@ void main()
 	for (int v = 0; v < 2; v++) {
 		gl_Position = (v == 0) ? v1[0] : v2[0];
 #ifdef USE_WORLD_CLIP_PLANES
-		gl_ClipDistance[0] = gl_in[0].gl_ClipDistance[0];
-		gl_ClipDistance[1] = gl_in[0].gl_ClipDistance[1];
-		gl_ClipDistance[2] = gl_in[0].gl_ClipDistance[2];
-		gl_ClipDistance[3] = gl_in[0].gl_ClipDistance[3];
-		gl_ClipDistance[4] = gl_in[0].gl_ClipDistance[4];
-		gl_ClipDistance[5] = gl_in[0].gl_ClipDistance[5];
+		world_clip_planes_set_clip_distance(gl_in[0].gl_ClipDistance);
 #endif
 		EmitVertex();
 	}
diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl
index d0fb0f531f1..d4d53b7d24d 100644
--- a/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl
+++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl
@@ -21,12 +21,7 @@ void vert_from_gl_in(int v)
 {
 	gl_Position = gl_in[v].gl_Position;
 #ifdef USE_WORLD_CLIP_PLANES
-	gl_ClipDistance[0] = gl_in[v].gl_ClipDistance[0];
-	gl_ClipDistance[1] = gl_in[v].gl_ClipDistance[1];
-	gl_ClipDistance[2] = gl_in[v].gl_ClipDistance[2];
-	gl_ClipDistance[3] = gl_in[v].gl_ClipDistance[3];
-	gl_ClipDistance[4] = gl_in[v].gl_ClipDistance[4];
-	gl_ClipDistance[5] = gl_in[v].gl_ClipDistance[5];
+	world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance);
 #endif
 }



More information about the Bf-blender-cvs mailing list