diff --git a/examples/microw8/palette.cwa b/examples/microw8/palette.cwa index 4cd1c7e..82696a5 100644 --- a/examples/microw8/palette.cwa +++ b/examples/microw8/palette.cwa @@ -32,16 +32,20 @@ export fn tic(time: i32) { } start fn gen_palette() { - let i: i32; + let i: i32 = 12*16*3-1; + let avg: f32; loop gradients { - let lazy scale = ((i := i + 1) % 64) as f32 / 64 as f32; - let inline angle = i as f32 * (3.1416 / 2.0 - 3.1416 / (11.0 * 16.0 * 2.0)); - let lazy a = max(0 as f32, sin(angle) * 0.8 + 0.5) * scale; + let lazy scale = (i % 48) as f32 / 48 as f32; + let inline angle = i as f32 * (3.1416 / 1.5) - i as f32 * (3.1416 / (11.0 * 16.0 * 1.5)); + let c = sin(angle) * 1.0 + 0.7; + let limit = avg + 0.8; + avg = avg + (c - avg) * 0.5; + let lazy a = min(c, limit) * scale; let lazy b = scale * scale * 0.6; - let inline v = (select(i < 11*16*4, min(a + b - a * b, 1 as f32), scale) * 255 as f32) as i32; - i?(120+320*240) = v; + let inline v = (select(i < 11*16*3, max(0 as f32, min(a + b - a * b, 1 as f32)), scale) * 255 as f32) as i32; + (i%3 + i/3*4)?(120+320*240) = v; - branch_if i < 12*16*4: gradients; + branch_if (i := i - 1) >= 0: gradients; } i = 255;