From 112cf6eadff5642af21235aa1cd4eaecd575755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 4 Feb 2019 01:35:21 +0100 Subject: Edit Mesh: Remove old unused code and files Cleanup after recent refactor. --- source/blender/draw/CMakeLists.txt | 5 - source/blender/draw/modes/edit_mesh_mode.c | 16 +- .../shaders/edit_mesh_overlay_facedot_frag.glsl | 21 -- .../shaders/edit_mesh_overlay_facedot_vert.glsl | 36 ---- .../shaders/edit_mesh_overlay_facefill_vert.glsl | 13 +- .../modes/shaders/edit_mesh_overlay_geom_edge.glsl | 124 ----------- .../modes/shaders/edit_mesh_overlay_geom_tri.glsl | 227 --------------------- .../shaders/edit_mesh_overlay_points_vert.glsl | 56 ----- 8 files changed, 6 insertions(+), 492 deletions(-) delete mode 100644 source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl delete mode 100644 source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl delete mode 100644 source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl delete mode 100644 source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl delete mode 100644 source/blender/draw/modes/shaders/edit_mesh_overlay_points_vert.glsl (limited to 'source') diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 27eb2ed30de..b3e643dafdb 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -270,11 +270,6 @@ data_to_c_simple(modes/shaders/armature_dof_vert.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_common_lib.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_frag.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_vert.glsl SRC) -data_to_c_simple(modes/shaders/edit_mesh_overlay_geom_tri.glsl SRC) -data_to_c_simple(modes/shaders/edit_mesh_overlay_geom_edge.glsl SRC) -data_to_c_simple(modes/shaders/edit_mesh_overlay_points_vert.glsl SRC) -data_to_c_simple(modes/shaders/edit_mesh_overlay_facedot_frag.glsl SRC) -data_to_c_simple(modes/shaders/edit_mesh_overlay_facedot_vert.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_mix_frag.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_facefill_vert.glsl SRC) data_to_c_simple(modes/shaders/edit_mesh_overlay_facefill_frag.glsl SRC) diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c index e981b305dfb..01797e9e20c 100644 --- a/source/blender/draw/modes/edit_mesh_mode.c +++ b/source/blender/draw/modes/edit_mesh_mode.c @@ -49,11 +49,6 @@ extern char datatoc_paint_weight_frag_glsl[]; extern char datatoc_edit_mesh_overlay_common_lib_glsl[]; extern char datatoc_edit_mesh_overlay_frag_glsl[]; extern char datatoc_edit_mesh_overlay_vert_glsl[]; -extern char datatoc_edit_mesh_overlay_geom_tri_glsl[]; -extern char datatoc_edit_mesh_overlay_geom_edge_glsl[]; -extern char datatoc_edit_mesh_overlay_points_vert_glsl[]; -extern char datatoc_edit_mesh_overlay_facedot_frag_glsl[]; -extern char datatoc_edit_mesh_overlay_facedot_vert_glsl[]; extern char datatoc_edit_mesh_overlay_mix_frag_glsl[]; extern char datatoc_edit_mesh_overlay_facefill_vert_glsl[]; extern char datatoc_edit_mesh_overlay_facefill_frag_glsl[]; @@ -218,15 +213,14 @@ static void EDIT_MESH_engine_init(void *vedata) .frag = (const char *[]){datatoc_gpu_shader_point_varying_color_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def_or_empty, "#define FACEDOT\n", NULL}, }); - MEM_freeN(lib); - - sh_data->overlay_mix = DRW_shader_create_fullscreen(datatoc_edit_mesh_overlay_mix_frag_glsl, NULL); - sh_data->overlay_facefill = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib_or_empty, datatoc_common_globals_lib_glsl, datatoc_edit_mesh_overlay_facefill_vert_glsl, NULL}, - .frag = (const char *[]){datatoc_common_globals_lib_glsl, datatoc_edit_mesh_overlay_facefill_frag_glsl, NULL}, + .vert = (const char *[]){lib, datatoc_edit_mesh_overlay_facefill_vert_glsl, NULL}, + .frag = (const char *[]){lib, datatoc_edit_mesh_overlay_facefill_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def_or_empty, NULL}, }); + MEM_freeN(lib); + + sh_data->overlay_mix = DRW_shader_create_fullscreen(datatoc_edit_mesh_overlay_mix_frag_glsl, NULL); sh_data->normals_face = DRW_shader_create_from_arrays({ .vert = (const char *[]){world_clip_lib_or_empty, datatoc_edit_normals_vert_glsl, NULL}, diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl deleted file mode 100644 index a4c911c56e3..00000000000 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl +++ /dev/null @@ -1,21 +0,0 @@ - -flat in int isSelected; -#ifdef VERTEX_FACING -flat in float facing; -#endif - -out vec4 FragColor; - -void main() -{ - if (isSelected != 0) { - FragColor = colorFaceDot; - } - else { - FragColor = colorVertex; - } - -#ifdef VERTEX_FACING - FragColor.a *= 1.0 - abs(facing) * 0.4; -#endif -} diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl deleted file mode 100644 index a66560cd8d9..00000000000 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl +++ /dev/null @@ -1,36 +0,0 @@ - -uniform mat4 ModelViewProjectionMatrix; -uniform mat4 ModelMatrix; - -in vec3 pos; -in vec4 norAndFlag; - -flat out int isSelected; - -#ifdef VERTEX_FACING -uniform mat4 ProjectionMatrix; -uniform mat4 ModelViewMatrix; -uniform mat3 NormalMatrix; - -flat out float facing; -#endif - -void main() -{ - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); - /* Bias Facedot Z position in clipspace. */ - gl_Position.z -= 0.00035; - gl_PointSize = sizeFaceDot; - isSelected = int(norAndFlag.w); -#ifdef VERTEX_FACING - vec3 view_normal = normalize(NormalMatrix * norAndFlag.xyz); - vec3 view_vec = (ProjectionMatrix[3][3] == 0.0) - ? normalize((ModelViewMatrix * vec4(pos, 1.0)).xyz) - : vec3(0.0, 0.0, 1.0); - facing = dot(view_vec, view_normal); -#endif - -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); -#endif -} diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl index d6e1943980a..1c2338f0913 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl @@ -14,18 +14,7 @@ void main() ivec4 data_m = data & dataMask; - if ((data_m.x & FACE_ACTIVE) != 0) { - faceColor = colorFaceSelect; - } - else if ((data_m.x & FACE_SELECTED) != 0) { - faceColor = colorFaceSelect; - } - else if ((data_m.x & FACE_FREESTYLE) != 0) { - faceColor = colorFaceFreestyle; - } - else { - faceColor = colorFace; - } + faceColor = EDIT_MESH_face_color(data_m.x); #ifdef USE_WORLD_CLIP_PLANES world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); 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 deleted file mode 100644 index 76c53b3cf86..00000000000 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl +++ /dev/null @@ -1,124 +0,0 @@ - -/* Solid Wirefram implementation - * Mike Erwin, Clément Foucault */ - -layout(lines) in; -layout(triangle_strip, max_vertices=4) out; - -uniform mat4 ProjectionMatrix; -uniform mat4 ViewProjectionMatrixInverse; -uniform vec2 viewportSize; - -in vec4 pPos[]; -in ivec4 vData[]; -#ifdef VERTEX_FACING -in float vFacing[]; -#endif - -/* these are the same for all vertices - * and does not need interpolation */ -flat out vec3 edgesCrease; -flat out vec3 edgesBweight; -flat out vec4 faceColor; -flat out ivec3 flag; -#ifdef VERTEX_SELECTION -out vec3 vertexColor; -#endif -#ifdef VERTEX_FACING -out float facing; -#endif - -/* See fragment shader */ -flat out vec2 ssPos[3]; - -/* Some bugged AMD drivers need these global variables. See T55961 */ -#ifdef VERTEX_SELECTION -vec3 vertex_color[3]; -#endif - -#ifdef VERTEX_FACING -float v_facing[3]; -#endif - -/* project to screen space */ -vec2 proj(vec4 pos) -{ - return (0.5 * (pos.xy / pos.w) + 0.5) * viewportSize; -} - -void doVertex(int v, vec4 pos) -{ -#ifdef VERTEX_SELECTION - vertexColor = vertex_color[v]; -#endif - -#ifdef VERTEX_FACING - facing = v_facing[v]; -#endif - - gl_Position = pos; - -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance); -#endif - - EmitVertex(); -} - -void main() -{ - /* Face */ - faceColor = vec4(0.0); - - /* Proj Vertex */ - vec2 pos[2] = vec2[2](proj(pPos[0]), proj(pPos[1])); - - /* little optimization use a vec4 to vectorize - * following operations */ - vec4 dirs1, dirs2; - - /* Edge normalized vector */ - dirs1.xy = normalize(pos[1] - pos[0]); - - /* perpendicular to dir */ - dirs1.zw = vec2(-dirs1.y, dirs1.x); - - /* Make it view independent */ - dirs1 *= sizeEdgeFix / viewportSize.xyxy; - - dirs2 = dirs1; - - /* Perspective */ - if (ProjectionMatrix[3][3] == 0.0) { - dirs1 *= pPos[0].w; - dirs2 *= pPos[1].w; - } - -#ifdef VERTEX_SELECTION - vertex_color[0] = EDIT_MESH_vertex_color(vData[0].x).rgb; - vertex_color[1] = EDIT_MESH_vertex_color(vData[1].x).rgb; -#endif - -#ifdef VERTEX_FACING - /* Weird but some buggy AMD drivers need this. */ - v_facing[0] = vFacing[0]; - v_facing[1] = vFacing[1]; -#endif - - /* Edge / Vert data */ - ssPos[0] = ssPos[2] = pos[0]; - ssPos[1] = pos[1]; - flag[0] = flag[2] = (vData[0].x << 8); - flag[1] = (vData[1].x << 8); - doVertex(0, pPos[0] + vec4( dirs1.zw, 0.0, 0.0)); - doVertex(0, pPos[0] + vec4(-dirs1.zw, 0.0, 0.0)); - - flag[2] |= vData[0].y; - edgesCrease[2] = vData[0].z / 255.0; - edgesBweight[2] = vData[0].w / 255.0; - - doVertex(1, pPos[1] + vec4( dirs2.zw, 0.0, 0.0)); - doVertex(1, pPos[1] + vec4(-dirs2.zw, 0.0, 0.0)); - - EndPrimitive(); -} 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 deleted file mode 100644 index 49097831811..00000000000 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl +++ /dev/null @@ -1,227 +0,0 @@ - -/* Solid Wirefram implementation - * Mike Erwin, Clément Foucault */ - -layout(triangles) in; - -/* To fix the edge artifacts, we render - * an outline strip around the screenspace - * triangle. Order is important. - * TODO diagram - */ -layout(triangle_strip, max_vertices=11) out; - -uniform mat4 ProjectionMatrix; -uniform vec2 viewportSize; -uniform bool isXray = false; - -in vec4 pPos[]; -#ifdef USE_WORLD_CLIP_PLANES -/* Worldspace position. */ -in vec3 wsPos[]; -#endif -in ivec4 vData[]; -#ifdef VERTEX_FACING -in float vFacing[]; -#endif - -/* these are the same for all vertices - * and does not need interpolation */ -flat out vec3 edgesCrease; -flat out vec3 edgesBweight; -flat out vec4 faceColor; -flat out ivec3 flag; - -flat out vec2 ssPos[3]; -#ifdef VERTEX_SELECTION -out vec3 vertexColor; -#endif -#ifdef VERTEX_FACING -out float facing; -#endif - -#ifdef ANTI_ALIASING -#define Z_OFFSET -0.0005 -#else -#define Z_OFFSET 0.0 -#endif - -/* Some bugged AMD drivers need these global variables. See T55961 */ -#ifdef VERTEX_SELECTION -vec3 vertex_color[3]; -#endif - -#ifdef VERTEX_FACING -float v_facing[3]; -#endif - -/* project to screen space */ -vec2 proj(vec4 pos) -{ - return (0.5 * (pos.xy / pos.w) + 0.5) * viewportSize; -} - -void doVertex(int v) -{ -#ifdef VERTEX_SELECTION - vertexColor = vertex_color[v]; -#endif - -#ifdef VERTEX_FACING - facing = v_facing[v]; -#endif - gl_Position = pPos[v]; - -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance); -#endif - - EmitVertex(); -} - -void doVertexOfs(int v, vec2 fixvec) -{ -#ifdef VERTEX_SELECTION - vertexColor = vertex_color[v]; -#endif - -#ifdef VERTEX_FACING - facing = v_facing[v]; -#endif - float z_ofs = Z_OFFSET * ((ProjectionMatrix[3][3] == 0.0) ? 1.0 : 0.0); - gl_Position = pPos[v] + vec4(fixvec * pPos[v].w, z_ofs, 0.0); - -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_set_clip_distance(gl_in[v].gl_ClipDistance); -#endif - - EmitVertex(); -} - -void mask_edge_flag(int v, ivec3 eflag) -{ - int vaf = (v + 1) % 3; - - /* Only shade the edge that we are currently drawing. - * (fix corner bleeding) */ - flag = eflag; - flag[vaf] &= ~EDGE_EXISTS; - flag[v] &= ~EDGE_EXISTS; -} - -vec2 compute_fixvec(int i) -{ - int i1 = (i + 1) % 3; - int i2 = (i + 2) % 3; - /* This fix the case when 2 vertices are perfectly aligned - * and corner vectors have nowhere to go. - * ie: length(cornervec[i]) == 0 */ - const float epsilon = 1e-2; /* in pixel so not that much */ - const vec2 bias[3] = vec2[3]( - vec2( epsilon, epsilon), - vec2(-epsilon, epsilon), - vec2( 0.0, -epsilon) - ); - vec2 v1 = ssPos[i] + bias[i]; - vec2 v2 = ssPos[i1] + bias[i1]; - vec2 v3 = ssPos[i2] + bias[i2]; - /* Edge normalized vector */ - vec2 dir = normalize(v2 - v1); - vec2 dir2 = normalize(v3 - v1); - /* perpendicular to dir */ - vec2 perp = vec2(-dir.y, dir.x); - /* Backface case */ - if (dot(perp, dir2) > 0.0) { - perp = -perp; - } - /* Make it view independent */ - return perp * sizeEdgeFix / viewportSize; -} - -void main() -{ - /* Edge */ - ivec3 eflag; - for (int v = 0; v < 3; ++v) { - eflag[v] = vData[v].y | (vData[v].x << 8); - edgesCrease[v] = vData[v].z / 255.0; - edgesBweight[v] = vData[v].w / 255.0; - } - - /* Face */ - vec4 fcol; - if ((vData[0].x & FACE_ACTIVE) != 0) { - fcol = colorFaceSelect; - } - else if ((vData[0].x & FACE_SELECTED) != 0) { - fcol = colorFaceSelect; - } - else if ((vData[0].x & FACE_FREESTYLE) != 0) { - fcol = colorFaceFreestyle; - } - else { - fcol = colorFace; - } - - /* Vertex */ - ssPos[0] = proj(pPos[0]); - ssPos[1] = proj(pPos[1]); - ssPos[2] = proj(pPos[2]); - -#ifdef VERTEX_SELECTION - vertex_color[0] = EDIT_MESH_vertex_color(vData[0].x).rgb; - vertex_color[1] = EDIT_MESH_vertex_color(vData[1].x).rgb; - vertex_color[2] = EDIT_MESH_vertex_color(vData[2].x).rgb; -#endif - -#ifdef VERTEX_FACING - /* Weird but some buggy AMD drivers need this. */ - v_facing[0] = vFacing[0]; - v_facing[1] = vFacing[1]; - v_facing[2] = vFacing[2]; -#endif - - /* Remember that we are assuming the last vertex - * of a triangle is the provoking vertex (decide what flat attributes are). */ - - if ((eflag[2] & EDGE_EXISTS) != 0) { - /* Do 0 -> 1 edge strip */ - faceColor = vec4(fcol.rgb, 0.0); - mask_edge_flag(0, eflag); - - vec2 fixvec = compute_fixvec(0); - doVertexOfs(0, fixvec); - doVertexOfs(1, fixvec); - } - - doVertex(0); - doVertex(1); - - /* Do face triangle */ - faceColor = fcol; - flag = (isXray) ? ivec3(0) : eflag; - doVertex(2); - faceColor.a = 0.0; /* to not let face color bleed */ - - if ((eflag[0] & EDGE_EXISTS) != 0) { - /* Do 1 -> 2 edge strip */ - mask_edge_flag(1, eflag); - - vec2 fixvec = compute_fixvec(1); - doVertexOfs(1, fixvec); - doVertexOfs(2, fixvec); - } - EndPrimitive(); - - if ((eflag[1] & EDGE_EXISTS) != 0) { - /* Do 2 -> 0 edge strip */ - mask_edge_flag(2, eflag); - doVertex(2); - doVertex(0); - - vec2 fixvec = compute_fixvec(2); - doVertexOfs(2, fixvec); - doVertexOfs(0, fixvec); - EndPrimitive(); - } -} diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_points_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_points_vert.glsl deleted file mode 100644 index 687e5b0a0fc..00000000000 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_points_vert.glsl +++ /dev/null @@ -1,56 +0,0 @@ - -uniform mat3 NormalMatrix; -uniform mat4 ProjectionMatrix; -uniform mat4 ModelViewMatrix; -uniform mat4 ModelViewProjectionMatrix; -uniform mat4 ModelMatrix; -uniform float ofs = 3e-5; - -in vec3 pos; -in ivec4 data; -#ifdef VERTEX_FACING -in vec3 vnor; -#endif - -out vec4 finalColor; - -void main() -{ - finalColor = colorVertex; - finalColor = ((data.x & VERTEX_SELECTED) != 0) ? colorVertexSelect : finalColor; - finalColor = ((data.x & VERTEX_ACTIVE) != 0) ? vec4(colorEditMeshActive.xyz, 1.0) : finalColor; - - gl_PointSize = sizeVertex * 2.0; - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); - gl_Position.z -= ofs * ((ProjectionMatrix[3][3] == 0.0) ? 1.0 : 0.0); - - /* Make selected and active vertex always on top. */ - if ((data.x & VERTEX_SELECTED) != 0) { - gl_Position.z -= 1e-7; - } - if ((data.x & VERTEX_ACTIVE) != 0) { - gl_Position.z -= 1e-7; - } - -#ifdef VERTEX_FACING - vec4 vPos = ModelViewMatrix * vec4(pos, 1.0); - vec3 view_normal = normalize(NormalMatrix * vnor); - vec3 view_vec = (ProjectionMatrix[3][3] == 0.0) - ? normalize(vPos.xyz) - : vec3(0.0, 0.0, 1.0); - float facing = dot(view_vec, view_normal); - facing = 1.0 - abs(facing) * 0.4; - - finalColor = mix(colorEditMeshMiddle, finalColor, facing); - finalColor.a = 1.0; -#endif - - if ((data.x & VERTEX_EXISTS) == 0) { - gl_Position = vec4(0.0); - gl_PointSize = 0.0; - } - -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); -#endif -} -- cgit v1.2.3