Skip to content

Commit 56e91a8

Browse files
committed
wip ellipse
1 parent 5b75b0d commit 56e91a8

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

‎lib/rasterizer.h‎

Lines changed: 14 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 rasterizer_shader_size = 24121;
6+
static const size_t rasterizer_shader_size = 24747;
77
static const char rasterizer_shader[] =
88
"// ---------------------------------------------------------------------------------------------------------------------------\n"
99
"// Structures\n"
@@ -567,6 +567,19 @@ static const char rasterizer_shader[] =
567567
" }\n"
568568
" distance -= g_draw_data[data_idx + 5u];\n"
569569
" }\n"
570+
" case PRIMITIVE_ELLIPSE:\n"
571+
" {\n"
572+
" let p0 = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);\n"
573+
" let p1 = vec2<f32>(g_draw_data[data_idx + 2u], g_draw_data[data_idx + 3u]);\n"
574+
" let width = g_draw_data[data_idx + 4u];\n"
575+
"\n"
576+
" distance = sd_oriented_ellipse(in.pos.xy, p0, p1, width);\n"
577+
"\n"
578+
" if (fillmode == FILL_HOLLOW) \n"
579+
" {\n"
580+
" distance = abs(distance) - g_draw_data[data_idx + 5u];;\n"
581+
" }\n"
582+
" }\n"
570583
" case PRIMITIVE_AABOX:\n"
571584
" {\n"
572585
" let center = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);\n"

‎src/shaders/rasterizer.wgsl‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,19 @@ fn tile_fs(in: vs_out) -> @location(0) vec4<f32>
366366
}
367367
distance -= g_draw_data[data_idx + 5u];
368368
}
369+
case PRIMITIVE_ELLIPSE:
370+
{
371+
let p0 = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);
372+
let p1 = vec2<f32>(g_draw_data[data_idx + 2u], g_draw_data[data_idx + 3u]);
373+
let width = g_draw_data[data_idx + 4u];
374+
375+
distance = sd_oriented_ellipse(in.pos.xy, p0, p1, width);
376+
377+
if (fillmode == FILL_HOLLOW)
378+
{
379+
distance = abs(distance) - g_draw_data[data_idx + 5u];;
380+
}
381+
}
369382
case PRIMITIVE_AABOX:
370383
{
371384
let center = vec2<f32>(g_draw_data[data_idx + 0u], g_draw_data[data_idx + 1u]);

0 commit comments

Comments
 (0)