Skip to content

Commit cb281e5

Browse files
committed
added oriented quad culling
1 parent 9ff7267 commit cb281e5

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

lib/binning.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include <stddef.h>
55

6-
static const size_t binning_shader_size = 26075;
6+
static const size_t binning_shader_size = 26615;
77
static const char binning_shader[] =
88
"// ---------------------------------------------------------------------------------------------------------------------------\n"
99
"// Structures\n"
@@ -702,6 +702,16 @@ static const char binning_shader[] =
702702
" intersection = false;\n"
703703
" }\n"
704704
" }\n"
705+
" case PRIMITIVE_ORIENTED_QUAD:\n"
706+
" {\n"
707+
" let center = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);\n"
708+
" let dimensions = vec2<f32>(g_draw_data[data_idx + 2u], g_draw_data[data_idx + 3u]);\n"
709+
" let axis = vec2<f32>(g_draw_data[data_idx + 4u], g_draw_data[data_idx + 5u]);\n"
710+
" let dir = axis * .5f/dimensions.x;\n"
711+
" let p0 = center + dir;\n"
712+
" let p1 = center - dir;\n"
713+
" intersection = intersection_aabb_obb(tile_aabb, p0, p1, 1.f/dimensions.y);\n"
714+
" }\n"
705715
" default:\n"
706716
" {\n"
707717
" intersection = true;\n"

src/shaders/binning.wgsl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,16 @@ fn intersection_tile_command(tile_aabb: aabb, cmd: draw_command, aabb_margin: f3
499499
intersection = false;
500500
}
501501
}
502+
case PRIMITIVE_ORIENTED_QUAD:
503+
{
504+
let center = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);
505+
let dimensions = vec2<f32>(g_draw_data[data_idx + 2u], g_draw_data[data_idx + 3u]);
506+
let axis = vec2<f32>(g_draw_data[data_idx + 4u], g_draw_data[data_idx + 5u]);
507+
let dir = axis * .5f/dimensions.x;
508+
let p0 = center + dir;
509+
let p1 = center - dir;
510+
intersection = intersection_aabb_obb(tile_aabb, p0, p1, 1.f/dimensions.y);
511+
}
502512
default:
503513
{
504514
intersection = true;

0 commit comments

Comments
 (0)