[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