diff --git a/src/renderer/renderer_dx12.cpp b/src/renderer/renderer_dx12.cpp index 550ccc9..9f2086b 100644 --- a/src/renderer/renderer_dx12.cpp +++ b/src/renderer/renderer_dx12.cpp @@ -148,6 +148,10 @@ float4 PSMain(PSInput input) : SV_TARGET { } } + // Dither to reduce gradient banding (interleaved gradient noise) + float dither = frac(52.9829189 * frac(dot(input.pos.xy, float2(0.06711056, 0.00583715)))) - 0.5; + col.rgb += dither / 255.0; + if (col.a < 0.002) discard; return col; } diff --git a/src/renderer/renderer_metal.mm b/src/renderer/renderer_metal.mm index c8b866e..3b79efc 100644 --- a/src/renderer/renderer_metal.mm +++ b/src/renderer/renderer_metal.mm @@ -133,6 +133,10 @@ fragment float4 fragment_main(Fragment in [[stage_in]], } } + // Dither to reduce gradient banding (interleaved gradient noise) + float dither = fract(52.9829189 * fract(dot(in.pos.xy, float2(0.06711056, 0.00583715)))) - 0.5; + col.rgb += dither / 255.0; + if (col.a < 0.002) discard_fragment(); return col; } diff --git a/src/ui/ui_widgets.cpp b/src/ui/ui_widgets.cpp index 6c5408b..469a2f6 100644 --- a/src/ui/ui_widgets.cpp +++ b/src/ui/ui_widgets.cpp @@ -268,7 +268,7 @@ B32 ui_button(const char *id, const char *text) { CLAY(eid, .layout = { .sizing = { .width = CLAY_SIZING_FIT(), .height = CLAY_SIZING_FIXED(WIDGET_BUTTON_HEIGHT) }, - .padding = { uip(12), uip(12), 0, 0 }, + .padding = { uip(12), uip(12), uip(1), 0 }, .childAlignment = { .y = CLAY_ALIGN_Y_CENTER }, }, .backgroundColor = base, @@ -1099,7 +1099,7 @@ S32 ui_modal(const char *id, const char *title, const char *message, CLAY(btn_id, .layout = { .sizing = { .width = CLAY_SIZING_FIT(), .height = CLAY_SIZING_FIXED(WIDGET_BUTTON_HEIGHT) }, - .padding = { uip(16), uip(16), 0, 0 }, + .padding = { uip(16), uip(16), uip(1), 0 }, .childAlignment = { .y = CLAY_ALIGN_Y_CENTER }, }, .backgroundColor = mbtn_base,