GPU correctness fixes and optimizations
This commit is contained in:
+15
-15
@@ -279,12 +279,14 @@ hellope_custom :: proc() {
|
||||
}
|
||||
|
||||
gauge := Gauge {
|
||||
value = 0.73,
|
||||
color = {50, 200, 100, 255},
|
||||
value = 0.73,
|
||||
color = {50, 200, 100, 255},
|
||||
bg_color = {80, 80, 80, 255},
|
||||
}
|
||||
gauge2 := Gauge {
|
||||
value = 0.45,
|
||||
color = {200, 100, 50, 255},
|
||||
value = 0.45,
|
||||
color = {200, 100, 50, 255},
|
||||
bg_color = {80, 80, 80, 255},
|
||||
}
|
||||
|
||||
// `clay.CustomElementConfig.customData` is a rawptr; the Clay integration in `draw`
|
||||
@@ -342,11 +344,11 @@ hellope_custom :: proc() {
|
||||
// reflection inside the strip), and gauge2 is deferred-replayed by
|
||||
// `prepare_clay_batch` after the bracket closes (renders crisp on top of the
|
||||
// bracket output — unrelated to the strip since they don't overlap).
|
||||
// `backgroundColor` is omitted on the gauges; bg lives on `Gauge.bg_color`. See `draw_custom`.
|
||||
if clay.UI(clay.ID("gauge"))(
|
||||
{
|
||||
layout = {sizing = {clay.SizingFixed(300), clay.SizingFixed(30)}},
|
||||
custom = {customData = &gauge_custom},
|
||||
backgroundColor = {80, 80, 80, 255},
|
||||
},
|
||||
) {
|
||||
if clay.UI(clay.ID("backdrop"))(
|
||||
@@ -362,7 +364,6 @@ hellope_custom :: proc() {
|
||||
{
|
||||
layout = {sizing = {clay.SizingFixed(300), clay.SizingFixed(30)}},
|
||||
custom = {customData = &gauge2_custom},
|
||||
backgroundColor = {80, 80, 80, 255},
|
||||
},
|
||||
) {}
|
||||
}
|
||||
@@ -376,8 +377,9 @@ hellope_custom :: proc() {
|
||||
}
|
||||
|
||||
Gauge :: struct {
|
||||
value: f32,
|
||||
color: draw.Color,
|
||||
value: f32,
|
||||
color: draw.Color,
|
||||
bg_color: draw.Color,
|
||||
}
|
||||
|
||||
draw_custom :: proc(layer: ^draw.Layer, bounds: draw.Rectangle, render_data: clay.CustomRenderData) {
|
||||
@@ -386,14 +388,12 @@ hellope_custom :: proc() {
|
||||
// before the union refactor.
|
||||
gauge := cast(^Gauge)render_data.customData
|
||||
|
||||
// `gauge.bg_color` instead of `render_data.backgroundColor`: under Clay master, an
|
||||
// element with both `custom.customData` and `backgroundColor` emits a Custom AND a
|
||||
// Rectangle for the same bounds, in that order — the Rectangle paints over the
|
||||
// callback's output. Carrying bg on user data sidesteps it.
|
||||
border_width: f32 = 2
|
||||
draw.rectangle(
|
||||
layer,
|
||||
bounds,
|
||||
draw.color_from_clay(render_data.backgroundColor),
|
||||
outline_color = draw.WHITE,
|
||||
outline_width = border_width,
|
||||
)
|
||||
draw.rectangle(layer, bounds, gauge.bg_color, outline_color = draw.WHITE, outline_width = border_width)
|
||||
|
||||
fill := draw.Rectangle {
|
||||
x = bounds.x,
|
||||
|
||||
Reference in New Issue
Block a user