From 049e42ef20cf1e45c9f8207de90502a071a95a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 2 Jun 2022 21:24:39 +0200 Subject: Cleanup: DRW: Added basic_ prefix to all *.glsl files in basic/shaders This is needed to avoid potential naming collision with other engines. --- source/blender/draw/CMakeLists.txt | 8 ++-- source/blender/draw/engines/basic/basic_shader.c | 6 +-- .../shaders/basic_conservative_depth_geom.glsl | 51 ++++++++++++++++++++++ .../engines/basic/shaders/basic_depth_frag.glsl | 5 +++ .../basic/shaders/basic_depth_pointcloud_vert.glsl | 15 +++++++ .../engines/basic/shaders/basic_depth_vert.glsl | 14 ++++++ .../basic/shaders/conservative_depth_geom.glsl | 51 ---------------------- .../draw/engines/basic/shaders/depth_frag.glsl | 5 --- .../basic/shaders/depth_pointcloud_vert.glsl | 15 ------- .../draw/engines/basic/shaders/depth_vert.glsl | 14 ------ .../basic/shaders/infos/basic_depth_info.hh | 8 ++-- .../draw/engines/external/external_engine.c | 4 +- 12 files changed, 98 insertions(+), 98 deletions(-) create mode 100644 source/blender/draw/engines/basic/shaders/basic_conservative_depth_geom.glsl create mode 100644 source/blender/draw/engines/basic/shaders/basic_depth_frag.glsl create mode 100644 source/blender/draw/engines/basic/shaders/basic_depth_pointcloud_vert.glsl create mode 100644 source/blender/draw/engines/basic/shaders/basic_depth_vert.glsl delete mode 100644 source/blender/draw/engines/basic/shaders/conservative_depth_geom.glsl delete mode 100644 source/blender/draw/engines/basic/shaders/depth_frag.glsl delete mode 100644 source/blender/draw/engines/basic/shaders/depth_pointcloud_vert.glsl delete mode 100644 source/blender/draw/engines/basic/shaders/depth_vert.glsl (limited to 'source/blender/draw') diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 370b3397e8b..ba696b7113f 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -452,10 +452,10 @@ set(GLSL_SRC engines/select/shaders/select_id_vert.glsl engines/select/shaders/select_id_frag.glsl - engines/basic/shaders/conservative_depth_geom.glsl - engines/basic/shaders/depth_vert.glsl - engines/basic/shaders/depth_pointcloud_vert.glsl - engines/basic/shaders/depth_frag.glsl + engines/basic/shaders/basic_conservative_depth_geom.glsl + engines/basic/shaders/basic_depth_vert.glsl + engines/basic/shaders/basic_depth_pointcloud_vert.glsl + engines/basic/shaders/basic_depth_frag.glsl engines/overlay/shaders/overlay_common_lib.glsl engines/overlay/shaders/overlay_antialiasing_frag.glsl diff --git a/source/blender/draw/engines/basic/basic_shader.c b/source/blender/draw/engines/basic/basic_shader.c index d7a8f23e3b3..3d40c627fff 100644 --- a/source/blender/draw/engines/basic/basic_shader.c +++ b/source/blender/draw/engines/basic/basic_shader.c @@ -11,9 +11,9 @@ #include "basic_private.h" -extern char datatoc_depth_frag_glsl[]; -extern char datatoc_depth_vert_glsl[]; -extern char datatoc_conservative_depth_geom_glsl[]; +extern char datatoc_basic_depth_frag_glsl[]; +extern char datatoc_basic_depth_vert_glsl[]; +extern char datatoc_basic_conservative_depth_geom_glsl[]; extern char datatoc_common_view_lib_glsl[]; extern char datatoc_common_pointcloud_lib_glsl[]; diff --git a/source/blender/draw/engines/basic/shaders/basic_conservative_depth_geom.glsl b/source/blender/draw/engines/basic/shaders/basic_conservative_depth_geom.glsl new file mode 100644 index 00000000000..d478f37691e --- /dev/null +++ b/source/blender/draw/engines/basic/shaders/basic_conservative_depth_geom.glsl @@ -0,0 +1,51 @@ +#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) +#pragma BLENDER_REQUIRE(common_view_lib.glsl) + +/* Adaptation of Conservative Rasterization + * from GPU Gems 2 + * Using method 2. + * + * Actual final implementation does not do conservative rasterization and only + * avoids triangles producing no fragments. + */ + +void main() +{ + /* Compute plane normal in ndc space. */ + vec3 pos0 = gl_in[0].gl_Position.xyz / gl_in[0].gl_Position.w; + vec3 pos1 = gl_in[1].gl_Position.xyz / gl_in[1].gl_Position.w; + vec3 pos2 = gl_in[2].gl_Position.xyz / gl_in[2].gl_Position.w; + vec3 plane = normalize(cross(pos1 - pos0, pos2 - pos0)); + /* Compute NDC bound box. */ + vec4 bbox = vec4(min(min(pos0.xy, pos1.xy), pos2.xy), max(max(pos0.xy, pos1.xy), pos2.xy)); + /* Convert to pixel space. */ + bbox = (bbox * 0.5 + 0.5) * drw_view.viewport_size.xyxy; + /* Detect failure cases where triangles would produce no fragments. */ + bvec2 is_subpixel = lessThan(bbox.zw - bbox.xy, vec2(1.0)); + /* View aligned triangle. */ + const float threshold = 0.00001; + bool is_coplanar = abs(plane.z) < threshold; + + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + if (all(is_subpixel)) { + vec2 ofs = (i == 0) ? vec2(-1.0) : ((i == 1) ? vec2(2.0, -1.0) : vec2(-1.0, 2.0)); + /* HACK: Fix cases where the triangle is too small make it cover at least one pixel. */ + gl_Position.xy += drw_view.viewport_size_inverse * gl_Position.w * ofs; + } + /* Test if the triangle is almost parralele with the view to avoid precision issues. */ + else if (any(is_subpixel) || is_coplanar) { + /* HACK: Fix cases where the triangle is Parallel to the view by deforming it slightly. */ + vec2 ofs = (i == 0) ? vec2(-1.0) : ((i == 1) ? vec2(1.0, -1.0) : vec2(1.0)); + gl_Position.xy += drw_view.viewport_size_inverse * gl_Position.w * ofs; + } + else { + /* Triangle expansion should happen here, but we decide to not implement it for + * depth precision & performance reasons. */ + } + + view_clipping_distances_set(gl_in[i]); + EmitVertex(); + } + EndPrimitive(); +} diff --git a/source/blender/draw/engines/basic/shaders/basic_depth_frag.glsl b/source/blender/draw/engines/basic/shaders/basic_depth_frag.glsl new file mode 100644 index 00000000000..ff4a015c335 --- /dev/null +++ b/source/blender/draw/engines/basic/shaders/basic_depth_frag.glsl @@ -0,0 +1,5 @@ + +void main() +{ + /* Passthrough shader. */ +} diff --git a/source/blender/draw/engines/basic/shaders/basic_depth_pointcloud_vert.glsl b/source/blender/draw/engines/basic/shaders/basic_depth_pointcloud_vert.glsl new file mode 100644 index 00000000000..b82edc61cee --- /dev/null +++ b/source/blender/draw/engines/basic/shaders/basic_depth_pointcloud_vert.glsl @@ -0,0 +1,15 @@ + +#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) +#pragma BLENDER_REQUIRE(common_view_lib.glsl) +#pragma BLENDER_REQUIRE(common_pointcloud_lib.glsl) + +void main() +{ + GPU_INTEL_VERTEX_SHADER_WORKAROUND + + vec3 world_pos = pointcloud_get_pos(); + + gl_Position = point_world_to_ndc(world_pos); + + view_clipping_distances(world_pos); +} diff --git a/source/blender/draw/engines/basic/shaders/basic_depth_vert.glsl b/source/blender/draw/engines/basic/shaders/basic_depth_vert.glsl new file mode 100644 index 00000000000..7046979cf97 --- /dev/null +++ b/source/blender/draw/engines/basic/shaders/basic_depth_vert.glsl @@ -0,0 +1,14 @@ + +#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) +#pragma BLENDER_REQUIRE(common_view_lib.glsl) + +void main() +{ + GPU_INTEL_VERTEX_SHADER_WORKAROUND + + vec3 world_pos = point_object_to_world(pos); + + gl_Position = point_world_to_ndc(world_pos); + + view_clipping_distances(world_pos); +} diff --git a/source/blender/draw/engines/basic/shaders/conservative_depth_geom.glsl b/source/blender/draw/engines/basic/shaders/conservative_depth_geom.glsl deleted file mode 100644 index d478f37691e..00000000000 --- a/source/blender/draw/engines/basic/shaders/conservative_depth_geom.glsl +++ /dev/null @@ -1,51 +0,0 @@ -#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) -#pragma BLENDER_REQUIRE(common_view_lib.glsl) - -/* Adaptation of Conservative Rasterization - * from GPU Gems 2 - * Using method 2. - * - * Actual final implementation does not do conservative rasterization and only - * avoids triangles producing no fragments. - */ - -void main() -{ - /* Compute plane normal in ndc space. */ - vec3 pos0 = gl_in[0].gl_Position.xyz / gl_in[0].gl_Position.w; - vec3 pos1 = gl_in[1].gl_Position.xyz / gl_in[1].gl_Position.w; - vec3 pos2 = gl_in[2].gl_Position.xyz / gl_in[2].gl_Position.w; - vec3 plane = normalize(cross(pos1 - pos0, pos2 - pos0)); - /* Compute NDC bound box. */ - vec4 bbox = vec4(min(min(pos0.xy, pos1.xy), pos2.xy), max(max(pos0.xy, pos1.xy), pos2.xy)); - /* Convert to pixel space. */ - bbox = (bbox * 0.5 + 0.5) * drw_view.viewport_size.xyxy; - /* Detect failure cases where triangles would produce no fragments. */ - bvec2 is_subpixel = lessThan(bbox.zw - bbox.xy, vec2(1.0)); - /* View aligned triangle. */ - const float threshold = 0.00001; - bool is_coplanar = abs(plane.z) < threshold; - - for (int i = 0; i < 3; i++) { - gl_Position = gl_in[i].gl_Position; - if (all(is_subpixel)) { - vec2 ofs = (i == 0) ? vec2(-1.0) : ((i == 1) ? vec2(2.0, -1.0) : vec2(-1.0, 2.0)); - /* HACK: Fix cases where the triangle is too small make it cover at least one pixel. */ - gl_Position.xy += drw_view.viewport_size_inverse * gl_Position.w * ofs; - } - /* Test if the triangle is almost parralele with the view to avoid precision issues. */ - else if (any(is_subpixel) || is_coplanar) { - /* HACK: Fix cases where the triangle is Parallel to the view by deforming it slightly. */ - vec2 ofs = (i == 0) ? vec2(-1.0) : ((i == 1) ? vec2(1.0, -1.0) : vec2(1.0)); - gl_Position.xy += drw_view.viewport_size_inverse * gl_Position.w * ofs; - } - else { - /* Triangle expansion should happen here, but we decide to not implement it for - * depth precision & performance reasons. */ - } - - view_clipping_distances_set(gl_in[i]); - EmitVertex(); - } - EndPrimitive(); -} diff --git a/source/blender/draw/engines/basic/shaders/depth_frag.glsl b/source/blender/draw/engines/basic/shaders/depth_frag.glsl deleted file mode 100644 index ff4a015c335..00000000000 --- a/source/blender/draw/engines/basic/shaders/depth_frag.glsl +++ /dev/null @@ -1,5 +0,0 @@ - -void main() -{ - /* Passthrough shader. */ -} diff --git a/source/blender/draw/engines/basic/shaders/depth_pointcloud_vert.glsl b/source/blender/draw/engines/basic/shaders/depth_pointcloud_vert.glsl deleted file mode 100644 index b82edc61cee..00000000000 --- a/source/blender/draw/engines/basic/shaders/depth_pointcloud_vert.glsl +++ /dev/null @@ -1,15 +0,0 @@ - -#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) -#pragma BLENDER_REQUIRE(common_view_lib.glsl) -#pragma BLENDER_REQUIRE(common_pointcloud_lib.glsl) - -void main() -{ - GPU_INTEL_VERTEX_SHADER_WORKAROUND - - vec3 world_pos = pointcloud_get_pos(); - - gl_Position = point_world_to_ndc(world_pos); - - view_clipping_distances(world_pos); -} diff --git a/source/blender/draw/engines/basic/shaders/depth_vert.glsl b/source/blender/draw/engines/basic/shaders/depth_vert.glsl deleted file mode 100644 index 7046979cf97..00000000000 --- a/source/blender/draw/engines/basic/shaders/depth_vert.glsl +++ /dev/null @@ -1,14 +0,0 @@ - -#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl) -#pragma BLENDER_REQUIRE(common_view_lib.glsl) - -void main() -{ - GPU_INTEL_VERTEX_SHADER_WORKAROUND - - vec3 world_pos = point_object_to_world(pos); - - gl_Position = point_world_to_ndc(world_pos); - - view_clipping_distances(world_pos); -} diff --git a/source/blender/draw/engines/basic/shaders/infos/basic_depth_info.hh b/source/blender/draw/engines/basic/shaders/infos/basic_depth_info.hh index 9914d264c63..bae50eb48fa 100644 --- a/source/blender/draw/engines/basic/shaders/infos/basic_depth_info.hh +++ b/source/blender/draw/engines/basic/shaders/infos/basic_depth_info.hh @@ -10,7 +10,7 @@ GPU_SHADER_CREATE_INFO(basic_conservative) .geometry_layout(PrimitiveIn::TRIANGLES, PrimitiveOut::TRIANGLE_STRIP, 3) - .geometry_source("conservative_depth_geom.glsl"); + .geometry_source("basic_conservative_depth_geom.glsl"); /** \} */ @@ -20,11 +20,11 @@ GPU_SHADER_CREATE_INFO(basic_conservative) GPU_SHADER_CREATE_INFO(basic_mesh) .vertex_in(0, Type::VEC3, "pos") - .vertex_source("depth_vert.glsl") + .vertex_source("basic_depth_vert.glsl") .additional_info("draw_mesh"); GPU_SHADER_CREATE_INFO(basic_pointcloud) - .vertex_source("depth_pointcloud_vert.glsl") + .vertex_source("basic_depth_pointcloud_vert.glsl") .additional_info("draw_pointcloud"); /** \} */ @@ -54,7 +54,7 @@ GPU_SHADER_CREATE_INFO(basic_pointcloud) /** \name Depth shader types. * \{ */ -GPU_SHADER_CREATE_INFO(basic_depth).fragment_source("depth_frag.glsl"); +GPU_SHADER_CREATE_INFO(basic_depth).fragment_source("basic_depth_frag.glsl"); BASIC_OBTYPE_VARIATIONS(basic_depth, "basic_depth"); diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c index 9f2f2b4b23d..b9c09e2bc4f 100644 --- a/source/blender/draw/engines/external/external_engine.c +++ b/source/blender/draw/engines/external/external_engine.c @@ -36,8 +36,8 @@ #define EXTERNAL_ENGINE "BLENDER_EXTERNAL" -extern char datatoc_depth_frag_glsl[]; -extern char datatoc_depth_vert_glsl[]; +extern char datatoc_basic_depth_frag_glsl[]; +extern char datatoc_basic_depth_vert_glsl[]; extern char datatoc_common_view_lib_glsl[]; -- cgit v1.2.3