diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-09 00:27:51 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-09 00:28:07 +0300 |
commit | c995eb1f9f69b9f94ea0b82c4d50495cfd1b38a9 (patch) | |
tree | 0bcd5cb443a0771d901035e13e64bbbf471a17f0 /source/blender/gpu | |
parent | 9489fea07b61c83a429b61de887b692dffb6a4f4 (diff) |
Cleanup: GPUShader: Remove unused edge fancy shader
Diffstat (limited to 'source/blender/gpu')
11 files changed, 0 insertions, 455 deletions
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index 5a42c4d3d1b..f30eff1484b 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -178,7 +178,6 @@ data_to_c_simple(shaders/gpu_shader_3D_image_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_normal_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_flat_color_vert.glsl SRC) -data_to_c_simple(shaders/gpu_shader_3D_line_dashed_uniform_color_legacy_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_line_dashed_uniform_color_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_smooth_color_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_normal_smooth_color_vert.glsl SRC) @@ -225,14 +224,6 @@ data_to_c_simple(shaders/gpu_shader_2D_edituvs_stretch_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_3D_selection_id_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_selection_id_frag.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_front_back_persp_vert.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_front_back_persp_geom.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_front_back_persp_legacy_vert.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_front_back_ortho_vert.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_overlay_vert.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_overlay_geom.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_overlay_simple_geom.glsl SRC) -data_to_c_simple(shaders/gpu_shader_edges_overlay_frag.glsl SRC) data_to_c_simple(shaders/gpu_shader_text_simple_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_text_simple_geom.glsl SRC) data_to_c_simple(shaders/gpu_shader_text_vert.glsl SRC) diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h index 9bcf732a35a..00570bd7ebc 100644 --- a/source/blender/gpu/GPU_shader.h +++ b/source/blender/gpu/GPU_shader.h @@ -100,10 +100,6 @@ typedef enum eGPUBuiltinShader { /* specialized drawing */ GPU_SHADER_TEXT, GPU_SHADER_TEXT_SIMPLE, - GPU_SHADER_EDGES_FRONT_BACK_PERSP, - GPU_SHADER_EDGES_FRONT_BACK_ORTHO, - GPU_SHADER_EDGES_OVERLAY_SIMPLE, - GPU_SHADER_EDGES_OVERLAY, GPU_SHADER_KEYFRAME_DIAMOND, GPU_SHADER_SIMPLE_LIGHTING, GPU_SHADER_SIMPLE_LIGHTING_FLAT_COLOR, diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c index 4b130cdbb3e..7201025ad8a 100644 --- a/source/blender/gpu/intern/gpu_shader.c +++ b/source/blender/gpu/intern/gpu_shader.c @@ -145,17 +145,8 @@ extern char datatoc_gpu_shader_selection_id_frag_glsl[]; extern char datatoc_gpu_shader_2D_line_dashed_uniform_color_vert_glsl[]; extern char datatoc_gpu_shader_2D_line_dashed_frag_glsl[]; extern char datatoc_gpu_shader_2D_line_dashed_geom_glsl[]; -extern char datatoc_gpu_shader_3D_line_dashed_uniform_color_legacy_vert_glsl[]; extern char datatoc_gpu_shader_3D_line_dashed_uniform_color_vert_glsl[]; -extern char datatoc_gpu_shader_edges_front_back_persp_vert_glsl[]; -extern char datatoc_gpu_shader_edges_front_back_persp_geom_glsl[]; -extern char datatoc_gpu_shader_edges_front_back_persp_legacy_vert_glsl[]; -extern char datatoc_gpu_shader_edges_front_back_ortho_vert_glsl[]; -extern char datatoc_gpu_shader_edges_overlay_vert_glsl[]; -extern char datatoc_gpu_shader_edges_overlay_geom_glsl[]; -extern char datatoc_gpu_shader_edges_overlay_simple_geom_glsl[]; -extern char datatoc_gpu_shader_edges_overlay_frag_glsl[]; extern char datatoc_gpu_shader_text_vert_glsl[]; extern char datatoc_gpu_shader_text_geom_glsl[]; extern char datatoc_gpu_shader_text_frag_glsl[]; @@ -842,30 +833,6 @@ static const GPUShaderStages builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = { .vert = datatoc_gpu_shader_keyframe_diamond_vert_glsl, .frag = datatoc_gpu_shader_keyframe_diamond_frag_glsl, }, - /* This version is magical but slow! */ - [GPU_SHADER_EDGES_FRONT_BACK_PERSP] = - { - .vert = datatoc_gpu_shader_edges_front_back_persp_vert_glsl, - .geom = datatoc_gpu_shader_edges_front_back_persp_geom_glsl, - .frag = datatoc_gpu_shader_flat_color_frag_glsl, - }, - [GPU_SHADER_EDGES_FRONT_BACK_ORTHO] = - { - .vert = datatoc_gpu_shader_edges_front_back_ortho_vert_glsl, - .frag = datatoc_gpu_shader_flat_color_frag_glsl, - }, - [GPU_SHADER_EDGES_OVERLAY_SIMPLE] = - { - .vert = datatoc_gpu_shader_3D_vert_glsl, - .geom = datatoc_gpu_shader_edges_overlay_simple_geom_glsl, - .frag = datatoc_gpu_shader_edges_overlay_frag_glsl, - }, - [GPU_SHADER_EDGES_OVERLAY] = - { - .vert = datatoc_gpu_shader_edges_overlay_vert_glsl, - .geom = datatoc_gpu_shader_edges_overlay_geom_glsl, - .frag = datatoc_gpu_shader_edges_overlay_frag_glsl, - }, [GPU_SHADER_SIMPLE_LIGHTING] = { .vert = datatoc_gpu_shader_3D_normal_vert_glsl, @@ -1332,28 +1299,8 @@ GPUShader *GPU_shader_get_builtin_shader_with_config(eGPUBuiltinShader shader, GPUShader **sh_p = &builtin_shaders[sh_cfg][shader]; if (*sh_p == NULL) { - GPUShaderStages stages_legacy = {NULL}; const GPUShaderStages *stages = &builtin_shader_stages[shader]; - if (shader == GPU_SHADER_EDGES_FRONT_BACK_PERSP) { - /* TODO: remove after switch to core profile (maybe) */ - if (!GLEW_VERSION_3_2) { - stages_legacy.vert = datatoc_gpu_shader_edges_front_back_persp_legacy_vert_glsl; - stages_legacy.frag = datatoc_gpu_shader_flat_color_alpha_test_0_frag_glsl; - stages = &stages_legacy; - } - } - else if (shader == GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR) { - /* Dashed need geometry shader, which are not supported by legacy OpenGL, - * fallback to solid lines. */ - /* TODO: remove after switch to core profile (maybe) */ - if (!GLEW_VERSION_3_2) { - stages_legacy.vert = datatoc_gpu_shader_3D_line_dashed_uniform_color_legacy_vert_glsl; - stages_legacy.frag = datatoc_gpu_shader_2D_line_dashed_frag_glsl; - stages = &stages_legacy; - } - } - /* common case */ if (sh_cfg == GPU_SHADER_CFG_DEFAULT) { *sh_p = GPU_shader_create( diff --git a/source/blender/gpu/shaders/gpu_shader_edges_front_back_ortho_vert.glsl b/source/blender/gpu/shaders/gpu_shader_edges_front_back_ortho_vert.glsl deleted file mode 100644 index a71dfba575b..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_front_back_ortho_vert.glsl +++ /dev/null @@ -1,54 +0,0 @@ - -// Draw "fancy" wireframe, displaying front-facing, back-facing and -// silhouette lines differently. -// Mike Erwin, April 2015 - -uniform bool drawFront = true; -uniform bool drawBack = true; -uniform bool drawSilhouette = true; - -uniform vec4 frontColor; -uniform vec4 backColor; -uniform vec4 silhouetteColor; - -uniform vec3 eye; // direction we are looking - -uniform mat4 ModelViewProjectionMatrix; - -in vec3 pos; - -// normals of faces this edge joins (object coords) -in vec3 N1; -in vec3 N2; - -flat out vec4 finalColor; - -// TODO: in float angle; // [-pi .. +pi], + peak, 0 flat, - valley - -// to discard an entire line, set both endpoints to nowhere -// and it won't produce any fragments -const vec4 nowhere = vec4(vec3(0.0), 1.0); - -void main() -{ - bool face_1_front = dot(N1, eye) > 0.0; - bool face_2_front = dot(N2, eye) > 0.0; - - vec4 position = ModelViewProjectionMatrix * vec4(pos, 1.0); - - if (face_1_front && face_2_front) { - // front-facing edge - gl_Position = drawFront ? position : nowhere; - finalColor = frontColor; - } - else if (face_1_front || face_2_front) { - // exactly one face is front-facing, silhouette edge - gl_Position = drawSilhouette ? position : nowhere; - finalColor = silhouetteColor; - } - else { - // back-facing edge - gl_Position = drawBack ? position : nowhere; - finalColor = backColor; - } -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_geom.glsl b/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_geom.glsl deleted file mode 100644 index 3de14704781..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_geom.glsl +++ /dev/null @@ -1,60 +0,0 @@ - -// Draw "fancy" wireframe, displaying front-facing, back-facing and -// silhouette lines differently. -// Mike Erwin, April 2015 - -// After working with this shader a while, convinced we should make -// separate shaders for perpective & ortho. (Oct 2016) - -// Due to perspective, the line segment's endpoints might disagree on -// whether the adjacent faces are front facing. This geometry shader -// decides which edge type to use if endpoints disagree. - -uniform mat4 ProjectionMatrix; - -uniform bool drawFront = true; -uniform bool drawBack = true; -uniform bool drawSilhouette = true; - -uniform vec4 frontColor; -uniform vec4 backColor; -uniform vec4 silhouetteColor; - -layout(lines) in; -layout(line_strip, max_vertices = 2) out; - -in vec4 MV_pos[]; -in float edgeClass[]; - -flat out vec4 finalColor; - -void emitLine(vec4 color) -{ - gl_Position = ProjectionMatrix * MV_pos[0]; - EmitVertex(); - gl_Position = ProjectionMatrix * MV_pos[1]; - finalColor = color; - EmitVertex(); - EndPrimitive(); -} - -void main() -{ - float finalEdgeClass = max(edgeClass[0], edgeClass[1]); - - if (finalEdgeClass > 0.0f) { - // front-facing edge - if (drawFront) - emitLine(frontColor); - } - else if (finalEdgeClass < 0.0f) { - // back-facing edge - if (drawBack) - emitLine(backColor); - } - else { - // exactly one face is front-facing, silhouette edge - if (drawSilhouette) - emitLine(silhouetteColor); - } -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_legacy_vert.glsl b/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_legacy_vert.glsl deleted file mode 100644 index ffd52a0a225..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_legacy_vert.glsl +++ /dev/null @@ -1,68 +0,0 @@ - -// Draw "fancy" wireframe, displaying front-facing, back-facing and -// silhouette lines differently. -// Mike Erwin, April 2015 - -// After working with this shader a while, convinced we should make -// separate shaders for perpective & ortho. (Oct 2016) - -// This shader is an imperfect stepping stone until all platforms are -// ready for geometry shaders. - -// Due to perspective, the line segment's endpoints might disagree on -// whether the adjacent faces are front facing. Need to use a geometry -// shader or pass in an extra position attribute (the other endpoint) -// to do this properly. - -uniform bool drawFront = true; -uniform bool drawBack = true; -uniform bool drawSilhouette = true; - -uniform vec4 frontColor; -uniform vec4 backColor; -uniform vec4 silhouetteColor; - -uniform mat4 ModelViewMatrix; -uniform mat4 ModelViewProjectionMatrix; -uniform mat3 NormalMatrix; - -in vec3 pos; - -// normals of faces this edge joins (object coords) -in vec3 N1; -in vec3 N2; - -flat out vec4 finalColor; - -// TODO: in float angle; // [-pi .. +pi], + peak, 0 flat, - valley - -// to discard an entire line, set its color to invisible -// (must have GL_BLEND enabled, or discard in fragment shader) -const vec4 invisible = vec4(0.0); - -bool front(vec3 N) -{ - vec4 xformed = ModelViewMatrix * vec4(pos, 1.0); - return dot(NormalMatrix * N, normalize(-xformed.xyz)) > 0.0; -} - -void main() -{ - bool face_1_front = front(N1); - bool face_2_front = front(N2); - - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); - - if (face_1_front && face_2_front) { - // front-facing edge - finalColor = drawFront ? frontColor : invisible; - } - else if (face_1_front || face_2_front) { - // exactly one face is front-facing, silhouette edge - finalColor = drawSilhouette ? silhouetteColor : invisible; - } - else { - // back-facing edge - finalColor = drawBack ? backColor : invisible; - } -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_vert.glsl b/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_vert.glsl deleted file mode 100644 index c8b722e1d7e..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_front_back_persp_vert.glsl +++ /dev/null @@ -1,44 +0,0 @@ - -// Draw "fancy" wireframe, displaying front-facing, back-facing and -// silhouette lines differently. -// Mike Erwin, April 2015 - -// After working with this shader a while, convinced we should make -// separate shaders for perpective & ortho. (Oct 2016) - -// Due to perspective, the line segment's endpoints might disagree on -// whether the adjacent faces are front facing. We use a geometry -// shader to resolve this properly. - -uniform mat4 ModelViewMatrix; -uniform mat3 NormalMatrix; - -in vec3 pos; -in vec3 N1, N2; // normals of faces this edge joins (object coords) - -out vec4 MV_pos; -out float edgeClass; - -// TODO: in float angle; // [-pi .. +pi], + peak, 0 flat, - valley - -bool front(vec3 N, vec3 eye) -{ - return dot(NormalMatrix * N, eye) > 0.0; -} - -void main() -{ - MV_pos = ModelViewMatrix * vec4(pos, 1.0); - - vec3 eye = normalize(-MV_pos.xyz); - - bool face_1_front = front(N1, eye); - bool face_2_front = front(N2, eye); - - if (face_1_front && face_2_front) - edgeClass = 1.0; // front-facing edge - else if (face_1_front || face_2_front) - edgeClass = 0.0; // exactly one face is front-facing, silhouette edge - else - edgeClass = -1.0; // back-facing edge -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_overlay_frag.glsl b/source/blender/gpu/shaders/gpu_shader_edges_overlay_frag.glsl deleted file mode 100644 index 7b35f67dd54..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_overlay_frag.glsl +++ /dev/null @@ -1,21 +0,0 @@ - -#define SMOOTH 1 - -const float transitionWidth = 1.0; - -uniform vec4 fillColor = vec4(0); -uniform vec4 outlineColor = vec4(0, 0, 0, 1); - -noperspective in vec3 distanceToOutline; - -out vec4 FragColor; - -void main() -{ - float edgeness = min(min(distanceToOutline.x, distanceToOutline.y), distanceToOutline.z); -#if SMOOTH - FragColor = mix(outlineColor, fillColor, smoothstep(0, transitionWidth, edgeness)); -#else - FragColor = (edgeness <= 0) ? outlineColor : fillColor; -#endif -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_overlay_geom.glsl b/source/blender/gpu/shaders/gpu_shader_edges_overlay_geom.glsl deleted file mode 100644 index 48fff1629fd..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_overlay_geom.glsl +++ /dev/null @@ -1,72 +0,0 @@ -layout(triangles) in; -layout(triangle_strip, max_vertices = 3) out; - -uniform float outlineWidth = 1.0; -uniform vec2 viewportSize; - -in vec4 pos_xformed[]; -in float widthModulator[]; - -noperspective out vec3 distanceToOutline; - -// project to screen space -vec2 proj(int axis) -{ - vec4 pos = pos_xformed[axis]; - return (0.5 * (pos.xy / pos.w) + 0.5) * viewportSize; -} - -float dist(vec2 pos[3], int v) -{ - // current vertex position - vec2 vpos = pos[v]; - // endpoints of opposite edge - vec2 e1 = pos[(v + 1) % 3]; - vec2 e2 = pos[(v + 2) % 3]; - - float abs_det = length(cross(vec3(vpos - e1, 0), vec3(vpos - e2, 0))); // could simplify - return abs_det / distance(e2, e1); -} - -vec3 distance[3]; - -void clearEdge(int v) -{ - float distant = 10 * outlineWidth; - for (int i = 0; i < 3; ++i) - distance[i][v] += distant; -} - -void modulateEdge(int v) -{ - float offset = min(widthModulator[v], 1) * outlineWidth; - for (int i = 0; i < 3; ++i) - distance[i][v] -= offset; -} - -void main() -{ - vec2 pos[3] = vec2[3](proj(0), proj(1), proj(2)); - - for (int v = 0; v < 3; ++v) - distance[v] = vec3(0); - - for (int v = 0; v < 3; ++v) { - if (widthModulator[v] > 0) { - distance[v][v] = dist(pos, v); - modulateEdge(v); - } - } - - for (int v = 0; v < 3; ++v) - if (widthModulator[v] <= 0) - clearEdge(v); - - for (int v = 0; v < 3; ++v) { - gl_Position = pos_xformed[v]; - distanceToOutline = distance[v]; - EmitVertex(); - } - - EndPrimitive(); -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_overlay_simple_geom.glsl b/source/blender/gpu/shaders/gpu_shader_edges_overlay_simple_geom.glsl deleted file mode 100644 index 12f5a2c7811..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_overlay_simple_geom.glsl +++ /dev/null @@ -1,56 +0,0 @@ -layout(triangles) in; -layout(triangle_strip, max_vertices = 3) out; - -uniform float outlineWidth = 1.0; -uniform vec2 viewportSize; - -noperspective out vec3 distanceToOutline; - -// project to screen space -vec2 proj(int axis) -{ - vec4 pos = gl_in[axis].gl_Position; - return (0.5 * (pos.xy / pos.w) + 0.5) * viewportSize; -} - -float dist(vec2 pos[3], int v) -{ - // current vertex position - vec2 vpos = pos[v]; - // endpoints of opposite edge - vec2 e1 = pos[(v + 1) % 3]; - vec2 e2 = pos[(v + 2) % 3]; - - float abs_det = length(cross(vec3(vpos - e1, 0), vec3(vpos - e2, 0))); // could simplify - return abs_det / distance(e2, e1); -} - -vec3 distance[3]; - -void modulateEdge(int v) -{ - float offset = 0.5 * outlineWidth; - for (int i = 0; i < 3; ++i) - distance[i][v] -= offset; -} - -void main() -{ - vec2 pos[3] = vec2[3](proj(0), proj(1), proj(2)); - - for (int v = 0; v < 3; ++v) - distance[v] = vec3(0); - - for (int v = 0; v < 3; ++v) { - distance[v][v] = dist(pos, v); - modulateEdge(v); - } - - for (int v = 0; v < 3; ++v) { - gl_Position = gl_in[v].gl_Position; - distanceToOutline = distance[v]; - EmitVertex(); - } - - EndPrimitive(); -} diff --git a/source/blender/gpu/shaders/gpu_shader_edges_overlay_vert.glsl b/source/blender/gpu/shaders/gpu_shader_edges_overlay_vert.glsl deleted file mode 100644 index 33615ac36e5..00000000000 --- a/source/blender/gpu/shaders/gpu_shader_edges_overlay_vert.glsl +++ /dev/null @@ -1,14 +0,0 @@ - -uniform mat4 ModelViewProjectionMatrix; - -in vec3 pos; -in float edgeWidthModulator; - -out vec4 pos_xformed; -out float widthModulator; - -void main() -{ - pos_xformed = ModelViewProjectionMatrix * vec4(pos, 1.0); - widthModulator = edgeWidthModulator; -} |