diff options
Diffstat (limited to 'source/blender/draw/intern/shaders')
-rw-r--r-- | source/blender/draw/intern/shaders/common_intersect_lib.glsl | 14 | ||||
-rw-r--r-- | source/blender/draw/intern/shaders/draw_view_info.hh | 6 |
2 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/draw/intern/shaders/common_intersect_lib.glsl b/source/blender/draw/intern/shaders/common_intersect_lib.glsl index 83223f89277..d1416e220a4 100644 --- a/source/blender/draw/intern/shaders/common_intersect_lib.glsl +++ b/source/blender/draw/intern/shaders/common_intersect_lib.glsl @@ -135,7 +135,7 @@ bool intersect_view(Pyramid pyramid) for (int p = 0; p < 6; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 5; ++v) { - float test = dot(drw_view.frustum_planes[p], vec4(pyramid.corners[v], 1.0)); + float test = dot(drw_view_culling.planes[p], vec4(pyramid.corners[v], 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -157,7 +157,7 @@ bool intersect_view(Pyramid pyramid) for (int p = 0; p < 5; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 8; ++v) { - float test = dot(i_pyramid.planes[p], vec4(drw_view.frustum_corners[v].xyz, 1.0)); + float test = dot(i_pyramid.planes[p], vec4(drw_view_culling.corners[v].xyz, 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -180,7 +180,7 @@ bool intersect_view(Box box) for (int p = 0; p < 6; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 8; ++v) { - float test = dot(drw_view.frustum_planes[p], vec4(box.corners[v], 1.0)); + float test = dot(drw_view_culling.planes[p], vec4(box.corners[v], 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -202,7 +202,7 @@ bool intersect_view(Box box) for (int p = 0; p < 6; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 8; ++v) { - float test = dot(i_box.planes[p], vec4(drw_view.frustum_corners[v].xyz, 1.0)); + float test = dot(i_box.planes[p], vec4(drw_view_culling.corners[v].xyz, 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -226,7 +226,7 @@ bool intersect_view(IsectBox i_box) for (int p = 0; p < 6; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 8; ++v) { - float test = dot(drw_view.frustum_planes[p], vec4(i_box.corners[v], 1.0)); + float test = dot(drw_view_culling.planes[p], vec4(i_box.corners[v], 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -246,7 +246,7 @@ bool intersect_view(IsectBox i_box) for (int p = 0; p < 6; ++p) { bool is_any_vertex_on_positive_side = false; for (int v = 0; v < 8; ++v) { - float test = dot(i_box.planes[p], vec4(drw_view.frustum_corners[v].xyz, 1.0)); + float test = dot(i_box.planes[p], vec4(drw_view_culling.corners[v].xyz, 1.0)); if (test > 0.0) { is_any_vertex_on_positive_side = true; break; @@ -267,7 +267,7 @@ bool intersect_view(Sphere sphere) bool intersects = true; for (int p = 0; p < 6 && intersects; ++p) { - float dist_to_plane = dot(drw_view.frustum_planes[p], vec4(sphere.center, 1.0)); + float dist_to_plane = dot(drw_view_culling.planes[p], vec4(sphere.center, 1.0)); if (dist_to_plane < -sphere.radius) { intersects = false; } diff --git a/source/blender/draw/intern/shaders/draw_view_info.hh b/source/blender/draw/intern/shaders/draw_view_info.hh index c522c607791..b33deebadd5 100644 --- a/source/blender/draw/intern/shaders/draw_view_info.hh +++ b/source/blender/draw/intern/shaders/draw_view_info.hh @@ -48,6 +48,10 @@ GPU_SHADER_CREATE_INFO(draw_view) .uniform_buf(DRW_VIEW_UBO_SLOT, "ViewInfos", "drw_view", Frequency::PASS) .typedef_source("draw_shader_shared.h"); +GPU_SHADER_CREATE_INFO(draw_view_culling) + .uniform_buf(DRW_VIEW_CULLING_UBO_SLOT, "ViewCullingData", "drw_view_culling") + .typedef_source("draw_shader_shared.h"); + GPU_SHADER_CREATE_INFO(draw_modelmat) .uniform_buf(8, "ObjectMatrices", "drw_matrices[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH) .define("ModelMatrix", "(drw_matrices[resource_id].model)") @@ -160,7 +164,7 @@ GPU_SHADER_CREATE_INFO(draw_visibility_compute) .storage_buf(1, Qualifier::READ_WRITE, "uint", "visibility_buf[]") .push_constant(Type::INT, "resource_len") .compute_source("draw_visibility_comp.glsl") - .additional_info("draw_view"); + .additional_info("draw_view", "draw_view_culling"); GPU_SHADER_CREATE_INFO(draw_command_generate) .do_static_compilation(true) |