From d34fb5bc63680f801d7a23034c04b6c7c625c396 Mon Sep 17 00:00:00 2001 From: Orkuncakilkaya Date: Sat, 19 Sep 2026 14:42:30 +0300 Subject: [PATCH] feat(render3d): the air and the light are the hour's, not one constant apiece Aerial perspective is a curve now. A low sun shines through far more air than a high one and shines ALONG the ground rather than down onto it, so density, height falloff and forward scatter all ride the sun's elevation; overcast thickens the air and flattens the scatter, because a grey sky has no disc to scatter from. `lowsun` falls away BELOW the horizon as well as above it, or the middle of the night gets a dawn's haze with no dawn to justify it. The term that was missing entirely is distance DESATURATION. Blending a saturated green ridge toward a saturated blue noon sky leaves a saturated ridge - which is why the same valley read as a photograph at dusk, where the fog colour happened to be a warm grey, and as a toy at one o'clock. A surface is now pulled toward its own luminance faster than the fog itself arrives. Measured far/near saturation at the camp: 07:00 1.11 -> 0.89, 09:00 1.04 -> 0.93, 13:00 0.98 -> 0.89. The grade is the hour's too - nine literals bound at the draw, written by daylight_set now. Noon is the case worth naming: direct sun is warm-white and the only thing filling a midday shadow is a blue sky, so noon gets a cool balance over a blue-lifted shadow with hard contrast, and dawn and dusk the reverse. Ground R-B, lit vs shadowed: 07:00 +42.8/+14.2 -> +48.9/+15.1, 13:00 +32.2/+14.8 -> +25.2/+2.9. Gain is left alone deliberately: the grade is `c * gain + lift * (1 - c)`, so warming it warms the whole frame, and warming it at noon made one o'clock yellower than seven in the morning - the opposite of the point. The visible sky is relit. Turning a photograph on its axis does not change what colour it was taken at, so every sunset had a mid-morning blue overhead. An analytic sky supplies the chroma and the photograph keeps the luminance: the cloud stays where it is and goes orange at dusk, the zenith goes deep blue at noon, and no second sky is shipped. It fades out under the horizon and eases off under cloud. The ground bounce follows the ground, crossing meadow to rock at the map's treeline instead of being one green constant everywhere including above the scree. R3D_NOAIR=1 restores all of it, so a before-and-after comes from one binary at one hour; it joins R3D_NOCLOUD / R3D_NOSHADOW / R3D_NOGI. Verified on macOS OpenGL, macOS Vulkan (MoltenVK) and Windows Vulkan (RTX 3070 Ti). Backends agree: mean difference 0.15-0.88/255 within a machine. Across machines the ORIGINAL renderer already differed by 5.02/255 at 19:12 and this build differs by 2.80, so cross-platform variance is pre-existing and did not grow. 400 frames: GL 7.4 s before and after, VK 7.0 s before and after. Co-Authored-By: Claude Opus 5 --- changes/light-air-and-the-hour.md | 35 + packages/ludic.render3d/daylight.ludic | 74 +- packages/ludic.render3d/post.ludic | 23 +- packages/ludic.render3d/render.ludic | 30 +- packages/ludic.render3d/shaders/lighting.glsl | 38 +- packages/ludic.render3d/shaders/sky.frag | 32 + .../shaders/spv/01089da8.frag.spv | Bin 40136 -> 41440 bytes .../shaders/spv/1b654972.frag.spv | Bin 4440 -> 4748 bytes .../shaders/spv/1ce5c5d1.frag.spv | Bin 42112 -> 43416 bytes .../shaders/spv/1f95f31b.frag.spv | Bin 86868 -> 88156 bytes .../shaders/spv/1fde9cd2.frag.spv | Bin 40136 -> 41440 bytes .../shaders/spv/254e7887.frag.spv | Bin 37432 -> 38720 bytes .../shaders/spv/2e2908c8.frag.spv | Bin 88768 -> 90056 bytes .../shaders/spv/2ee6d2e3.frag.spv | Bin 4632 -> 4940 bytes .../shaders/spv/3733fc38.frag.spv | Bin 45256 -> 46544 bytes .../shaders/spv/3b183d8f.frag.spv | Bin 40864 -> 42184 bytes .../shaders/spv/3e4b62f9.frag.spv | Bin 4856 -> 5164 bytes .../shaders/spv/428caa3a.frag.spv | Bin 16180 -> 18684 bytes .../shaders/spv/439a2253.frag.spv | Bin 4192 -> 4500 bytes .../shaders/spv/46e2325c.frag.spv | Bin 39780 -> 40628 bytes .../shaders/spv/4a8e9f28.frag.spv | Bin 8712 -> 9020 bytes .../shaders/spv/4be7acd9.frag.spv | Bin 16984 -> 17292 bytes .../shaders/spv/4cf96468.frag.spv | Bin 6440 -> 6748 bytes .../shaders/spv/4d4fa91b.frag.spv | Bin 4168 -> 4476 bytes .../shaders/spv/4dda406a.frag.spv | Bin 41284 -> 42588 bytes .../shaders/spv/512004a1.frag.spv | Bin 2680 -> 2988 bytes .../shaders/spv/5e4589a1.frag.spv | Bin 101532 -> 102820 bytes .../shaders/spv/638623c2.frag.spv | Bin 11396 -> 11704 bytes .../shaders/spv/676965ab.frag.spv | Bin 13148 -> 13456 bytes .../shaders/spv/725523d9.frag.spv | Bin 8388 -> 8696 bytes .../shaders/spv/79b77ed9.frag.spv | Bin 42544 -> 43832 bytes .../shaders/spv/7ed7de52.frag.spv | Bin 45536 -> 46824 bytes .../shaders/spv/7f096322.frag.spv | Bin 45536 -> 46824 bytes .../shaders/spv/858f5089.frag.spv | Bin 8564 -> 8872 bytes .../shaders/spv/86f427b0.frag.spv | Bin 6244 -> 6552 bytes .../shaders/spv/9068df1c.frag.spv | Bin 2984 -> 3292 bytes .../shaders/spv/9d3e2ddd.frag.spv | Bin 8888 -> 9196 bytes .../shaders/spv/9dce3246.frag.spv | Bin 4192 -> 4500 bytes .../shaders/spv/a0f2dbac.frag.spv | Bin 101532 -> 102820 bytes .../shaders/spv/a45356c7.frag.spv | Bin 7752 -> 8060 bytes .../shaders/spv/a4683767.frag.spv | Bin 10932 -> 11240 bytes .../shaders/spv/a5ad521e.frag.spv | Bin 40808 -> 42112 bytes .../shaders/spv/a64015f2.frag.spv | Bin 3280 -> 3588 bytes .../shaders/spv/b4587cd4.frag.spv | Bin 48020 -> 49308 bytes .../shaders/spv/b79a1f4e.frag.spv | Bin 2680 -> 2988 bytes .../shaders/spv/b964507f.frag.spv | Bin 3280 -> 3588 bytes .../shaders/spv/b9fc2041.frag.spv | Bin 40136 -> 41440 bytes .../shaders/spv/bf3151c8.frag.spv | Bin 18972 -> 19280 bytes .../shaders/spv/bfa15301.frag.spv | Bin 3932 -> 4240 bytes .../shaders/spv/c57b4f14.frag.spv | Bin 5120 -> 5428 bytes .../shaders/spv/d48d6a48.frag.spv | Bin 45536 -> 46824 bytes .../shaders/spv/e18e40c9.frag.spv | Bin 8424 -> 8732 bytes .../shaders/spv/e86f78e8.frag.spv | Bin 6412 -> 6720 bytes .../shaders/spv/e9b6300c.frag.spv | Bin 3296 -> 3604 bytes .../shaders/spv/f2952361.frag.spv | Bin 103400 -> 104688 bytes .../shaders/spv/f34dce08.frag.spv | Bin 2680 -> 2988 bytes .../shaders/spv/f4382918.frag.spv | Bin 86868 -> 88156 bytes .../shaders/spv/f4a2b586.frag.spv | Bin 45536 -> 46824 bytes .../ludic.render3d/shaders/spv/manifest.txt | 2363 ++++++++++------- 59 files changed, 1560 insertions(+), 1035 deletions(-) create mode 100644 changes/light-air-and-the-hour.md diff --git a/changes/light-air-and-the-hour.md b/changes/light-air-and-the-hour.md new file mode 100644 index 00000000..94e363cb --- /dev/null +++ b/changes/light-air-and-the-hour.md @@ -0,0 +1,35 @@ +bump: minor +type: feat +The air and the light are the hour's, not one constant apiece. + +Aerial perspective is a curve now. A low sun shines through far more air than a high +one and shines ALONG the ground rather than down onto it, so density, height falloff +and forward scatter all ride the sun's own elevation, and overcast thickens the air +while flattening the scatter. The term that was missing entirely is distance +DESATURATION: a surface is pulled toward its own luminance faster than the fog itself +arrives. Without it, blending a saturated ridge toward a saturated blue noon sky left +a saturated ridge, and a midday frame had a mountain three kilometres off reading as +vividly as a bench two metres from the camera. + +The grade is the hour's too. White balance, the shadows' floor, contrast and +saturation were nine literals bound at the draw; daylight.ludic writes them now. +Noon is the case worth naming: direct sun is warm-white and the only thing filling a +midday shadow is a blue sky, so noon gets a cool balance over a blue-lifted shadow +with hard contrast between it and the lit ground, and dawn and dusk get the reverse. +Gain is deliberately left alone - the grade is `c * gain + lift * (1 - c)`, so it +warms the whole frame rather than the highlights. + +The visible sky is relit. It is one HDRI turned on its axis so its sun sits where the +hour wants it, and turning a photograph does not change what colour it was taken at - +so a sunset had a mid-morning blue overhead. An analytic sky supplies the chroma while +the photograph keeps the luminance, so the cloud stays where it is and goes orange at +dusk, and the zenith goes deep blue at noon, with no second sky shipped. It fades out +under the horizon, where the night's own tint, stars and moon take over, and eases off +under heavy cloud. + +And the ground bounce follows the ground: the colour a surface is filled with from +below is the map's now, crossing from meadow to rock at its treeline, instead of one +green constant everywhere including above the scree. + +R3D_NOAIR=1 restores all of it to what it was, so a before-and-after comes from one +binary at one hour. Measured at 400 frames: no cost on either backend. diff --git a/packages/ludic.render3d/daylight.ludic b/packages/ludic.render3d/daylight.ludic index 2a7c16c8..5e08bc28 100644 --- a/packages/ludic.render3d/daylight.ludic +++ b/packages/ludic.render3d/daylight.ludic @@ -142,8 +142,80 @@ function daylight_set(hours: int) -> void { let grey = f_add(f_mul(f_add(day_ibl[0], f_add(day_ibl[1], day_ibl[2])), fl(0.3333)), f_mul(fl(0.6), day_flash)) let dim = f_sub(F_ONE, f_mul(fl(0.55), oc)) for i in 0 .. 3 { day_ibl[i] = f_mul(f_lerp(day_ibl[i], grey, f_mul(fl(0.7), oc)), dim) } + # ---- the air --------------------------------------------------------------------------- + # Aerial perspective is a CURVE, not the one constant it was. A low sun is shining through + # far more air than a high one, and it is shining ALONG the ground rather than down onto it, + # so three things move together with its elevation: how much air there is, how hard that air + # scatters the sun forward, and how low in the valley it lies. `lowsun` peaks at the horizon + # and falls away on both sides - it has to fall away BELOW it too, or the middle of the night + # gets a dawn's haze with no dawn to justify it. Overcast thickens the air and flattens the + # scatter, because a grey sky has no disc to scatter from. The player's slider still + # multiplies the result, so nobody loses the setting they chose. if day_fog_base == 0 { day_fog_base = r3d_fog_density } - r3d_fog_density = f_mul(f_mul(day_fog_base, day_fog_mul), r3d_fog_scale) + let fog_rise = smoothf(f_rad(fi(-12)), f_rad(fi(1)), el) + let fog_high = smoothf(f_rad(fi(2)), f_rad(fi(26)), el) + let lowsun = f_mul(fog_rise, f_sub(F_ONE, fog_high)) + var dens = f_mul(day_fog_base, f_add(F_ONE, f_mul(fl(1.5), lowsun))) + dens = f_mul(dens, f_add(F_ONE, f_mul(fl(1.2), oc))) + r3d_fog_density = f_mul(f_mul(dens, day_fog_mul), r3d_fog_scale) + # how fast the haze thins with height: a settled morning's lies IN the valley, a noon sky is + # thin all the way up, so the falloff rises as the sun drops + r3d_fog_falloff = f_mul(fl(0.002), f_add(F_ONE, f_mul(fl(1.6), lowsun))) + # the glow a ridge is silhouetted against when you look into a low sun + r3d_fog_inscatter = f_mul(f_add(fl(0.012), f_mul(fl(0.16), lowsun)), f_sub(F_ONE, f_mul(fl(0.7), oc))) + # and distance takes colour away at every hour, harder under cloud + r3d_fog_desat = f_add(fl(1.9), f_mul(fl(0.6), oc)) + # ---- the grade ------------------------------------------------------------------------- + # The look of an hour is not only how much air is in front of the mountain; it is what colour + # the light is and what the shadows are filled with. Noon is the case worth naming: direct + # sun is warm-white and the ONLY thing filling a midday shadow is a blue sky, so a midday + # frame wants a cool, lifted shadow and a hard contrast between it and the lit ground. Dawn + # and dusk are the opposite - a warm low sun, warm shadow fill off the whole sky, and less + # contrast because the light is coming through so much air. Overcast flattens and drains both. + # `night` is deliberately NOT `1 - d`: d is already falling while the sun is still on the + # horizon, so the two curves would fight and the warmest minute of the day would come out + # half-cooled. It only begins under the horizon. + let night = f_sub(F_ONE, smoothf(f_rad(fi(-14)), f_rad(fi(-4)), el)) + let hi = fog_high + post_wb_r = f_add(fl(1.02), f_sub(f_mul(fl(0.10), lowsun), f_add(f_mul(fl(0.03), hi), f_mul(fl(0.06), night)))) + post_wb_g = f_add(F_ONE, f_mul(fl(0.012), lowsun)) + post_wb_b = f_add(fl(0.97), f_sub(f_add(f_mul(fl(0.055), hi), f_mul(fl(0.13), night)), f_mul(fl(0.09), lowsun))) + # the shadows' floor: warm and open into a low sun, blue at noon, cold and crushed at night + post_lift_r = f_sub(f_add(fl(0.004), f_mul(fl(0.013), lowsun)), f_mul(fl(0.002), f_add(hi, night))) + post_lift_g = f_sub(f_add(fl(0.004), f_mul(fl(0.008), lowsun)), f_mul(fl(0.001), night)) + post_lift_b = f_add(fl(0.012), f_add(f_mul(fl(0.004), lowsun), f_mul(fl(0.013), hi))) + # Gain is left alone on purpose. It looks like a highlight control and is not: the grade is + # `c * gain + lift * (1 - c)`, so warming the gain warms the WHOLE frame, and warming it at + # noon undid the cool white balance above and turned one o'clock yellower than seven in the + # morning - the opposite of the thing this grade exists to do. Midday's punch comes from + # contrast, and midday's colour from a cool balance over a blue shadow. + post_gain_r = fl(0.99) + post_gain_g = fl(0.995) + post_gain_b = F_ONE + post_contrast = f_sub(f_add(fl(1.12), f_mul(fl(0.11), hi)), f_add(f_mul(fl(0.17), oc), f_mul(fl(0.06), night))) + post_saturation = f_sub(f_add(fl(1.04), f_mul(fl(0.12), lowsun)), f_add(f_mul(fl(0.20), oc), f_mul(fl(0.12), night))) + + # The visible sky is relit by the hour (sky.frag). It fades out under the horizon, where the + # night's own tint, stars and moon take over, and it eases off under heavy cloud - a relit + # overcast is still overcast, and driving a clear-sky model hard through one paints a blue + # zenith onto a grey day. + r3d_sky_relight = f_mul(smoothf(f_rad(fi(-10)), f_rad(fi(1)), el), f_sub(F_ONE, f_mul(fl(0.75), oc))) + + # R3D_NOAIR=1: the air as it was before any of the above - one density, one falloff, the + # inscatter the shader used to hard-code, and no distance desaturation at all. It is here + # so a before-and-after can be shot from ONE binary at one hour, which is the only kind of + # comparison worth looking at, and it joins R3D_NOCLOUD / R3D_NOSHADOW / R3D_NOGI. + if r3d_env_has("R3D_NOAIR") { + r3d_fog_density = f_mul(f_mul(day_fog_base, day_fog_mul), r3d_fog_scale) + r3d_fog_falloff = fl(0.002) + r3d_fog_inscatter = fl(0.02) + r3d_fog_desat = F_ZERO + post_wb_r = fl(1.02); post_wb_g = F_ONE; post_wb_b = fl(0.97) + post_lift_r = fl(0.004); post_lift_g = fl(0.004); post_lift_b = fl(0.012) + post_gain_r = fl(0.99); post_gain_g = fl(0.995); post_gain_b = F_ONE + post_contrast = fl(1.12); post_saturation = fl(1.04) + r3d_sky_relight = F_ZERO + } # exposure: auto-exposure must not turn the night into day # the ceiling has to move with the moon or auto-exposure eats the difference between a # full-moon night and a new-moon one diff --git a/packages/ludic.render3d/post.ludic b/packages/ludic.render3d/post.ludic index 92587bf1..a398a668 100644 --- a/packages/ludic.render3d/post.ludic +++ b/packages/ludic.render3d/post.ludic @@ -27,6 +27,23 @@ var post_lum: words = null var post_mips: int = 0 var post_adapt: int = 0 # smoothed exposure (float bits) var post_exposure_max: int = 0x41A00000 # 20: the ceiling auto-exposure may reach (night lowers it) +# ---- the grade ------------------------------------------------------------------------------ +# White balance, the shadows' floor and the highlights' gain. These were nine literals bound at +# the draw, so the game had the same colour at seven in the morning as at one in the afternoon - +# every knob a grade needs, and no hand on any of them. daylight.ludic owns them now and writes +# them from the sun's own elevation; the values here are what they used to be hard-coded to, so a +# program that never starts a day looks exactly as it did. +# They are plain ints rather than a v3 on purpose: a grade is written by daylight_set, which can +# run before post_init has allocated anything, and nine ints cannot be null. +var post_wb_r: int = 0x3F828F5C # 1.02 +var post_wb_g: int = 0x3F800000 # 1.0 +var post_wb_b: int = 0x3F7851EC # 0.97 +var post_lift_r: int = 0x3B83126F # 0.004 +var post_lift_g: int = 0x3B83126F # 0.004 +var post_lift_b: int = 0x3C449BA6 # 0.012 +var post_gain_r: int = 0x3F7D70A4 # 0.99 +var post_gain_g: int = 0x3F7EB852 # 0.995 +var post_gain_b: int = 0x3F800000 # 1.0 var post_ao: Target = null var post_ao_blur: Target = null @@ -324,9 +341,9 @@ function post_tonemap(color_tex: int) -> void { u_f(gpu_uniform(prog, "u_vignette"), post_vignette) u_f(gpu_uniform(prog, "u_saturation"), post_saturation) u_f(gpu_uniform(prog, "u_contrast"), post_contrast) - u_f3(gpu_uniform(prog, "u_wb"), fl(1.02), F_ONE, fl(0.97)) - u_f3(gpu_uniform(prog, "u_lift"), fl(0.004), fl(0.004), fl(0.012)) - u_f3(gpu_uniform(prog, "u_gain"), fl(0.99), fl(0.995), fl(1.0)) + u_f3(gpu_uniform(prog, "u_wb"), post_wb_r, post_wb_g, post_wb_b) + u_f3(gpu_uniform(prog, "u_lift"), post_lift_r, post_lift_g, post_lift_b) + u_f3(gpu_uniform(prog, "u_gain"), post_gain_r, post_gain_g, post_gain_b) # the HDR10 variant's display calibration (the SDR program has none of these, and -1 sets nothing) u_f(gpu_uniform(prog, "u_hdr_peak"), r3d_hdr_peak_nits()) u_f(gpu_uniform(prog, "u_hdr_paper"), r3d_hdr_paper_nits()) diff --git a/packages/ludic.render3d/render.ludic b/packages/ludic.render3d/render.ludic index c468bb87..c847f5f2 100644 --- a/packages/ludic.render3d/render.ludic +++ b/packages/ludic.render3d/render.ludic @@ -10,6 +10,23 @@ var r3d_fog_density: int = 0 var r3d_fog_scale: int = 0x3F800000 # float bits: a setting's multiplier over the density the day sets var r3d_fog_falloff: int = 0 var r3d_fog_base: int = 0 # the height fog is measured from (float bits); 0 = y = 0 +# Both of these are the DAY's, set by daylight_set from the sun's own elevation. The inscatter +# is how hard the air scatters the sun forward - nearly nothing at noon, and the glow a ridge +# is silhouetted against at dusk. The desaturation is how fast distance takes a surface's own +# colour away, which is the term that was missing entirely and is most of why a midday frame +# had no depth in it at all. +var r3d_fog_inscatter: int = 0x3CA3D70A # 0.02, what the shader used to hard-code +var r3d_fog_desat: int = 0x3FACCCCD # 1.35 +# How much of the visible sky's colour comes from the analytic model rather than from the +# photograph (sky.frag). The day fades it in: at night the sky has its own tint, a star field +# and a moon, and relighting on top of those would only wash them out. +var r3d_sky_relight: int = 0 +# What the ground reflects back up, low and high, and the height they cross at. The defaults +# are Maroon Lake's - a green basin under a grey-rock treeline at about 480 m over the datum. +var r3d_ground_alb_r: int = 0x3E99999A; var r3d_ground_alb_g: int = 0x3EAE147B; var r3d_ground_alb_b: int = 0x3E0F5C29 +var r3d_ground_hi_r: int = 0x3E93F7CF; var r3d_ground_hi_g: int = 0x3E8F5C29; var r3d_ground_hi_b: int = 0x3E851EB8 +var r3d_ground_hi_y: int = 0x43F00000 # 480 +var r3d_ground_hi_w: int = 0x43160000 # 150 var r3d_time: int = 0 var r3d_ready: bool = false # set before r3d_init to build the landscape from a real height map @@ -39,6 +56,12 @@ function fog_bind(prog: int) -> void { u_f(gpu_uniform(prog, "u_fog_density"), r3d_fog_density) u_f(gpu_uniform(prog, "u_fog_height_falloff"), r3d_fog_falloff) u_f(gpu_uniform(prog, "u_fog_base"), r3d_fog_base) + u_f(gpu_uniform(prog, "u_fog_inscatter"), r3d_fog_inscatter) + u_f(gpu_uniform(prog, "u_fog_desat"), r3d_fog_desat) + u_f3(gpu_uniform(prog, "u_ground_alb"), r3d_ground_alb_r, r3d_ground_alb_g, r3d_ground_alb_b) + u_f3(gpu_uniform(prog, "u_ground_alb_hi"), r3d_ground_hi_r, r3d_ground_hi_g, r3d_ground_hi_b) + u_f(gpu_uniform(prog, "u_ground_hi_y"), r3d_ground_hi_y) + u_f(gpu_uniform(prog, "u_ground_hi_w"), r3d_ground_hi_w) var cs = r3d_cloud_shadow if r3d_env_has("R3D_NOCLOUD") { cs = F_ZERO } u_f(gpu_uniform(prog, "u_cloud_shadow"), cs) @@ -117,7 +140,11 @@ function r3d_load_step(i: int) -> bool { } else if i == 3 + TERRAIN_INIT_STEPS { grass_init() r3d_sky_prog = r3d_program("fullscreen.vert", "sky.frag", "") - r3d_fog_density = fl(0.00014) + # The base is NOON's air, and it was tuned when nothing desaturated with distance - so it + # was doing its whole job through colour and could not be raised without the valley going + # blue. With the desaturation term carrying the depth, the air can be as thick as real air + # at 2900 m and the far ridge recedes instead of tinting. + r3d_fog_density = fl(0.00024) r3d_fog_falloff = fl(0.002) r3d_ready = true gpu_check("r3d init") @@ -136,6 +163,7 @@ function r3d_draw_sky() -> void { sky_bind_lighting(p) u_mat4(gpu_uniform(p, "u_inv_vp"), cam_inv_vp) u_f(gpu_uniform(p, "u_sky_gain"), fl(0.95)) + u_f(gpu_uniform(p, "u_sky_relight"), r3d_sky_relight) u_f(gpu_uniform(p, "u_sky_sat"), fl(1.35)) u_f(gpu_uniform(p, "u_time"), r3d_time) mesh_draw(sky_fullscreen) diff --git a/packages/ludic.render3d/shaders/lighting.glsl b/packages/ludic.render3d/shaders/lighting.glsl index 1023455a..182f765f 100644 --- a/packages/ludic.render3d/shaders/lighting.glsl +++ b/packages/ludic.render3d/shaders/lighting.glsl @@ -39,6 +39,20 @@ vec2 skyUV(vec3 d) { // whose normal points down — the underside of a needle card, the lower half of a crown — // was lighting itself from that grey and came out white. Below the horizon the light is // what the ground reflects: the horizon sky times a meadow albedo. +// What the ground under a surface reflects back up at it. It was one green constant for the +// whole world, which is right in a meadow, wrong on scree, and wrong under a cliff - and on a +// map that is not this one it is wrong everywhere. The colours are the map's now, and they +// cross over at its treeline, so a boulder's underside up in the talus is filled with grey +// rock light and one down by the lake is filled with green. +// (Sampling the terrain's own albedo would be better still and wants a texture bound to every +// program; that is phase 60's, where the terrain materials are being reworked anyway.) +uniform vec3 u_ground_alb; // the low ground: meadow and forest +uniform vec3 u_ground_alb_hi; // above the treeline: rock, scree, snow +uniform float u_ground_hi_y; // the height they cross at (world units) +uniform float u_ground_hi_w; // over how many metres +vec3 groundAlbAt(float y) { + return mix(u_ground_alb, u_ground_alb_hi, smoothstep(u_ground_hi_y, u_ground_hi_y + u_ground_hi_w, y)); +} const vec3 GROUND_ALB = vec3(0.30, 0.34, 0.14); // the time of day (daylight.ludic): the sky's light scaled toward night, and the campfire uniform vec3 u_ibl_scale; @@ -248,7 +262,7 @@ vec3 shade(vec3 wpos, vec3 n, vec3 albedo, float rough, float metal, float ao, f vec2 brdf = texture(u_brdf, vec2(NoV, rough)).rg; vec3 specIBL = pre * (Fr * brdf.x + brdf.y) * u_spec_scale; // one bounce off the sunlit ground onto whatever faces it (a warm fill from below) - vec3 groundAlb = vec3(0.16, 0.2, 0.07); + vec3 groundAlb = groundAlbAt(wpos.y) * 0.55; vec3 bounce = kdi * albedo * groundAlb * (u_sun_color * max(u_sun_dir.y, 0.0) / PI + irr) * clamp(0.5 - 0.5 * n.y, 0.0, 1.0) * 0.5; // specular occlusion from ao float so = clamp(pow(NoV + ao, exp2(-16.0 * rough - 1.0)) - 1.0 + ao, 0.0, 1.0); @@ -258,7 +272,12 @@ vec3 shade(vec3 wpos, vec3 n, vec3 albedo, float rough, float metal, float ao, f return sane(min(c, vec3(4096.0))); } -// aerial perspective: exponential height fog toward the horizon sky, with sun inscatter +// aerial perspective: exponential height fog toward the horizon sky, with sun inscatter. +// The strength of all three terms is the DAY's (daylight.ludic), not a constant: a low sun +// is shining through far more air than a high one, and the whole look of a valley at dawn +// is that air. +uniform float u_fog_inscatter; // how hard the air scatters the sun forward +uniform float u_fog_desat; // how fast distance takes a surface's own colour away vec3 applyFog(vec3 col, vec3 wpos, float dist) { vec3 dir = normalize(wpos - u_cam_pos); float hf = u_fog_height_falloff; @@ -267,9 +286,18 @@ vec3 applyFog(vec3 col, vec3 wpos, float dist) { // measured from u_fog_base: two maps on one height datum, one a thousand metres lower, // would otherwise have that one's air exp(falloff * 1000) times thicker float fogAmt = u_fog_density * exp(-(u_cam_pos.y - u_fog_base) * hf) * integ; - float f = 1.0 - exp(-fogAmt); + float f = clamp(1.0 - exp(-fogAmt), 0.0, 1.0); vec3 fogCol = skyPrefiltered(vec3(dir.x, max(dir.y, 0.02), dir.z), 0.6); float sunAmt = pow(max(dot(dir, u_sun_dir), 0.0), 8.0); - fogCol += u_sun_color * 0.02 * sunAmt; - return mix(col, fogCol, clamp(f, 0.0, 1.0)); + fogCol += u_sun_color * u_fog_inscatter * sunAmt; + // DISTANCE TAKES SATURATION BEFORE IT TAKES CONTRAST, and the mix below cannot do that on + // its own: blending a saturated green ridge toward a saturated blue sky leaves a saturated + // ridge. That is why the noon frame had a mountain three kilometres off reading as vividly + // as the workbench two metres from the camera, while the same scene at dusk - where the fog + // colour happens to be a warm grey - looked like a photograph. Pull the surface toward its + // own luminance first, faster than the fog itself arrives, and the ridge recedes at every + // hour rather than only at the one where the sky was already grey. + float l = dot(col, vec3(0.2126, 0.7152, 0.0722)); + col = mix(col, vec3(l), clamp(f * u_fog_desat, 0.0, 1.0)); + return mix(col, fogCol, f); } diff --git a/packages/ludic.render3d/shaders/sky.frag b/packages/ludic.render3d/shaders/sky.frag index 3a902200..29c481bd 100644 --- a/packages/ludic.render3d/shaders/sky.frag +++ b/packages/ludic.render3d/shaders/sky.frag @@ -59,11 +59,43 @@ vec3 moonColour(vec3 dir, float night) { return col * night * (1.0 - 0.9 * u_moon_haze); } +// ---- relighting the photograph --------------------------------------------------------------- +// The sky is ONE HDRI - a South African morning - turned on its axis so its sun disc sits where +// the hour wants it. Turning a photograph does not change what colour it was taken at, so every +// hour of the day was lit by the same late morning: a sunset with a mid-morning blue overhead. +// +// What is worth keeping from the photograph is its STRUCTURE - the cloud, the gradient, the +// sun's own disc - and what is worth replacing is its COLOUR. So the analytic sky below supplies +// the chroma and the photograph keeps the luminance: clouds stay exactly where they are and go +// orange at dusk the way real ones do, and the zenith goes deep blue at noon without a second +// photograph being shipped. +uniform float u_sky_relight; // 0 leaves the photograph alone; the day fades this in +vec3 analyticSky(vec3 dir) { + float ct = clamp(dir.y, 0.0, 1.0); + float cs = clamp(dot(dir, u_sun_dir), -1.0, 1.0); + float lowsun = 1.0 - smoothstep(0.0, 0.45, u_sun_dir.y); + // Rayleigh: deep overhead, pale at the horizon where the line of sight is longest + vec3 base = mix(vec3(0.60, 0.70, 0.85), vec3(0.16, 0.33, 0.74), pow(ct, 0.55)); + // the sun's warmth spreads into the sky around it, and spreads FURTHER the lower it is + float glow = pow(max(cs, 0.0), mix(9.0, 2.0, lowsun)); + base = mix(base, vec3(1.0, 0.55, 0.22), glow * mix(0.22, 0.88, lowsun)); + // and at dusk the whole horizon band warms, not only the part near the sun + float band = (1.0 - smoothstep(0.0, 0.32, ct)) * lowsun; + base = mix(base, vec3(0.96, 0.52, 0.28), band * 0.55); + return base; +} + void main() { vec4 a = u_inv_vp * vec4(v_uv * 2.0 - 1.0, 1.0, 1.0); vec3 dir = normalize(a.xyz / a.w - u_cam_pos); // level 0: the equirect seam (atan wraps) would otherwise pick the smallest mip along one column vec3 col = min(textureLod(u_sky, skyUV(dir), 0.0).rgb, vec3(4096.0)) * u_sky_gain; + if (u_sky_relight > 0.001) { + vec3 sk = analyticSky(dir); + float sl = max(dot(sk, vec3(0.2126, 0.7152, 0.0722)), 1e-4); + float cl = dot(col, vec3(0.2126, 0.7152, 0.0722)); + col = mix(col, sk * (cl / sl), u_sky_relight); + } float l = dot(col, vec3(0.2126, 0.7152, 0.0722)); col = max(mix(vec3(l), col, u_sky_sat), vec3(0.0)); // the photograph's sky dims with the day (daylight.ludic); the night adds its own diff --git a/packages/ludic.render3d/shaders/spv/01089da8.frag.spv b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv index 004f4e20afb3769713fc67cb0c06a5ca4bfdcc07..f3afbb868ea1af5e2045b94af0f67ecf2d0eb8e5 100644 GIT binary patch literal 41440 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⪻7gxbnB)YWg}xd3=8c*4McD{v58Ruj7{|hj+pD75*OB z`OmZLFW_Fw?I`+cH;(hBE$w~@wq5wI;Ep$Oehp3>eYG3M`PP55UGwoIipcdl~0XaP`FbGuU?OIY<5iHoi9Vbv>x1pTC03 zeE$YF-|}Aacer}``3Kl`>WT9axXkyTaPuwWd<<7loPU9Br=EQO4K}_u^L4$drJw(R z9Ygr1HP1Qt8C)Or`1}`aobdnEJZ*fq(?>n`jd{?#-Xkf-)W;mXer?()^HOsEZ&$-M zytbRWdrLk24gn{3U}Gr1=#%-F53Y}T+6)6HcVJ_Fekt250M|!7Z59N(mh)$F7J?hw zPqc+=&77kxQfoZ+4QPv^*@vI_Emmt~+r?|GY`X-Sxs+{}thKW3QnhB=oXtz4nYVeG kSM+7T=41}`8GTu>{TbhQ>ZcR$b6{iHP9M*3HP7(>2bBNz1^@s6 literal 40136 zcmZ{t2b^9-74|ReCWIngx)?f0kzS-F^xk`0mh2{3*knT*9TIwzE=nj;gMc&zjDSE; zX`&Pr6fCG%K}AqNLHYjw``%|WdB5*_e>=?cJm<`rGjnI=-urGsI_6zvzN(t1TCf^c z-8QtUKZ{lKqEwajhSUpILuutQr`Z_LLby(H5MPQv^%ed~o@#^Q! zTUBojsj3esA5jQXeU@?PB@@@ z!kSY@Z@6XO23wBaU`u5DJE~7nPnp`n3xh{B`Xba5dq?9lq*@9*se61c%{Q{4?LJN2 z@*P?&2kt$7O5eoZQIiimsO6>4vgkdv|FG&a)RT@oY1fGpyL_i4^B%Rq?=-F=J~!tXi9T zG+FP_H)ibQx(^4~8l?VfVn1QRz$B`A%xh7%a_p==2k!1arnhH6+px-uJGOg#&;Kvh zy4cHD>lLv+-xh0QICE8ut4^*Slw)#zWlS512gfwD+5)~q*Umd1vL^1ub>0kpuYq0a zacmCmra0HzQXkZ{|G2)%W1ALp=5DLH%|UgWt!unTjkf`({SM%ry7nJ6w!d%GaYiWC z$adHcYWmzBJeo-wQq5oOR<_yC8*FdZ9T?X5BR=a}djCV-27rbxGcqVAW z!8N@n+60Q@+mCuw_oPwXJ*>F#V|v$Q`6Jci*jHPP=c^7BxBL$1J+ZgH^gCeCZ&-CW zxV4}5?;bayzmDgS&D?8q$e?d$btrhwH6KzP20x~+d(y!J6Z>2HV*cuwIq~`jCJcs4 z$U5dxMa-_bVs=zV!?Py6CX>6zn{GY!(ehq)T;KTp>my)rA9Yr}*yiLmtm=nPno{}= zra-LDs&6j;j_O!=tKT8jap0+ay(jF@J7IEbZ_QV+Evixd15e;+H>vnVcUa&eD zU+1)Sz}RooHN^p6slqz~`)$&WdBM8rM6y+p&7BPSC&J zzn#^I;MR53Hl#WUKKGc0RnzpJFrojXod(7X9v7`8TgN*M`>26_aA$Qocut<3)fw=f zzDcHteg5h^>QMt+tuejhC+{?|dt5nqma_SsjgRYFd=7PMO?Oo1f?H?ykm_P_S2EXk zX!UHZ^$i}iQ1s5~2h8s|$s#mDT^mpyhJGy&H|KtP5_l+KyIBvWCfl*x0q3j*) zex`IaJELo=DGb`?naeh5LVw@nL7VraIqfDo&OuwpT(-$>H*7=e{yJ+LE3vDm&ubms zTOs2_XNCtR4(i+v>wd;{wGQf`oWUv{gxngs`g^DL_On87{R5-jPJ{g}Fz9nk_art`@?5aiNA>qj=rZJBe+$+6 zqzS#Fx;Tvb-F|~@>U(e(Cw|w&0T)POEnK(hJEp&B5`B?c@993N-|Xi2FIwx~(OQ#{ zu`V`8Z%rONu@-mPo8RIN{*)HN`% zZw!w)(U*=sw!7cS9m*Kj*F zBcC;Fw|Gyo#^SC{w!J^>efpoA%@Dd2Z$6GsqOK6*sQIi;BV=t?Z@990U`jsI>g-ckJ>KA9V&ZQq&8)>*v=_vyPe zrjF`=@DrN#y%-05+0PPf{L^#sj%qkO?;^W{TjLy3?V;YqlT34)bBz07H?;Hn!^Db}%xVwpYG`RI%&{2&B z?^NrZ)fjL&k9}>tAMV{0_xhTQYqJlu@riAGavPsI7w@Rfgdf+_ihTi?8y#=AEq+a# z@AdGV*zB&28|JcgRyVfso9E&k)ot+Odiv`5{W_SZwmQz;bNLOa?t}OAjUGK^Qtz(Y z?O|UX)kA2lGp3_@ME{Asb=ybhYTH>o*2ZVUkD1uxva0=`giq;eDURV;xN~bqo*}Qo zTW9ge{$rXpuN#9~)u`qk_nvL)XX%b=o*`LFoz)`X@;WZo#+PX0OSSQ3+W2y9eA~Hr zN3}iNhZ5&!SMXRyDc%$8A?5h?1NV)e+&iY>$HI9M967GOz8%%c^2T;X%eFm_^>y3x z;pKQPXyX^bc}g9ObrZa2!UlB?x7K*WI?nClDO0&?x8mN};@rVn{O*?Tgx-l0YXAFd zzCpt~st4f*)V>|nb zFtq-@slHDQ@JiA>s&70K;(Jb+jEbzHYZJxV#>p zZ{r)x#XG8v;e@UG*aF?EVXu)?jSGi zFQXH(8qwH)-0(#k{*yNT)46y@{mwBj+Aj3<3bh~m^3E0R`=s$oZ56nmX!C&8MgXE2 zSM9Pw>u9t$3XNS>`>judv^9r1UZFWowS5ZB+|-UJH0M(7=t7&n(RvEa_gMYL7Mky{ zYW;<_P@_#KG~ZkG^I14KFWhL;3eERb{d~TSpL3~pS)uu!s&-?cE#7GN71|Pw_C%pA z*=R2on(w2=`$eHG)o5=Nn(v|d{i)D=2UUB!(0m6~d#BKR_f-35q500K_Fj>V7d{hf!LG-~eeKkUzSq1{cc z-8qwc4>7)bC%laBJw<=guI=7O^rsr+rN8$8?eUkFcJBkm%XmEd2qw{=Nnu4 z9$WA^ehXH|qqmRM`0d3!PHpqmXBqN6v(dc<`kh6sWts&O zh1`2cuAMP{PVt_v|7(rSIJq`|1JAf-*=@q#g)jZBmp0EDdJnEPvnlcW5I*CYYX;l> z8-B`?_YCs?z}Grrk!=#^Be-q!)0Q}&fU9cSW8p4@A3ncF9mo6^fIBbdzaZGLIR~zt z72#s4`qN&!c0P-!pY4Y?4rqcNl!JCZ2pOyqy0N>-H}W#yhFzPYlL89lp^<-yEEeGvPir*`M()f_wg_ z|105_KKZXYU+veyJ)dHK3eNlv&i6`8=$U`pf4kUMhHroT1%u;V9e&x4k8hd&)`#;m z*#D-G+?Tcjd#$c0?Az$f$N3)tmb#XW=h?Fdg6%!)&H$Tp;++F0-8!DvOYSp{ntS~U zu>Dch@vm&Sdh)#qoU_2SG7~;}^y(ur-aFxZ2Kikze`4_ZJp}h`PreT~+_U2mu>Gqg z-lO2@otq4vecx&EZP(!h()TgAKI&=nIGE40@F!}1^y6tW8?KLfe4Ye9HhaFoxZj1V zS>p3OFf%h4=lgIqW5wqw@FEL7Sg$YV=jj%IEPX!%*GD~Vo&}Q)d%HEJ=itUvkIxUl zi!8XwV4UaSYL@u?5X@&V&X3?~GZEL}?(F=&Kyl8T1IOqX%*j5DX&cwpOVrMv{bH)$G-;|By8i{=uIA>!$U+Ra!-`;og zt#jsg!#zJ!((YvRsv1#`!||RD_t{sw{BpSW>&&C?C4SQWXK?x*T(duiuXV(wgZ;h+ z*T;*mE$u!~tESBk-^xy^X*(w0t>J1Z$!9mTTo>yBxX-PL^Ah~|M=xI6>-ZNi-PUKk z`OAHeQq%r+gENoD`#YM?neq2MEB^m!@QlVT_q|KI{>Jm7$dm6PaNkQaf4+zLvHukt zU)Qa6x$j|#=kt{BVSe;q8?5h{l*IGB%TLBXvgYp$uFLIOyuPP6zTM%zUnjqV;l5`j zf8X1ZzfF(eKku*k=7{(Yzz+t~6Y`-J^Gj8IivKvj z+ckFkcE76|dj$J=QLwQ+V~y>z>|$W`^tCwHeDlM^Xq1j%4?Y>K2PF!tE!|hw2#8?KbZVcxVSS`zc)E$rKm0avuWjynKn))+v?-g?Q z#Bi|phJ%~_Rs!pzZhOx*wX|Oqyh_7uzZ$q~zdBqW^}Ttj_ByNqR=4PRJlC}uL%&VHYUyuNu=#l{9n)rDeblqxHwS0GYd7x3)au6Z znr#XGLc^W&t-$4+Zw=Q+J#)SdSl!|$b8dX^AGMwM=Cv){K9lzduyZH}R@?I*_sBwA zPx%h~$9Nl1MuNAa=#y)=BUqml+u6@fXtrCAVxRV-Z{}j>#=c|Yo4HUomn+bB1-m9Q z&fUOj7C+@UcR|yhGkp)R``TxfjBQV_`oml!&$zw7YOY1kwtc{UJlnMGO;Ph~6DQ8T zU?(SYv>!NQorTGDtWTW_cz>|h!SCe~;{dq&IpjiB9ms#wjFol=fz!_Uk?ZHVnY^s^ z_nbTg?3fRxwjZyl(W?eXmbe~6}idXx9jVBcG` zWsi4*?N?j!I0o!BGM0Ib0;}ok*tDs|e>6Dzw-+prZ7ewZehgTi@f{0Zm}1O6YPoxx zsydGU^ivzpcG~spq1Kjp9|v~cAI3Lv$HUcYA0}r4*ts5{j?eL6^~~2quqqgbP^4QJ>=bD@amT$p~xDL(%pG@ue9EbUu zm-*O-v20`9$<+F1oacfaXRgWlV6Vw}jSp3I0sm3Y+Pn~KJN3l52yE=>&Dy*etfp`J zRg3=@!TMjv9`k$qOTcO~;GQd&g4H}zE~ob6nWBCfMa?rsocOonC2-crRbaU`s_M)9XBfqHS5wQ~3(osjz|*LWXFKi5MO)%u2TtGDg5_H@^K?Df z?@!dz=MCWHD0zPQDp)^1(Qa%s_d&Fq8jYiP@LB0*G~4U1-Pq+y5H+(J=HAGbD|>p$(S^Dc55*gnl$-y123{WY+$eI7CP9Tfdj?m%~( zcQ!WnnQfdiwal56&o{y9 zd5(VothP{de|iu+55;!I(|&%lw!a0|{t(4;%09nMQJ+OgzmI@zU*5YOg{$Wt^f=gl zya#FX_j}%ha{qqm~{gmVVEZp&~M4j=z0XFyWKezF>+W7ko z&vpI{+_>c${4HEPKEG>x%C+z&ntImU@4?Q)niOp_DQW))uzi$k_>XY)Jpca*Y`@0Q z=Jjzb>bXz+1?)Od*Zu~zTKah#+&-4SqN&H{?~PBH%R6Z5$>kql+x?BAZ93Q0wewGk zw)ZG`|M(Z!aqmdcZeGr@dh-4NY~Jd*{vU(YKcd*i>!g6 z*JNHa_3Y0MIX)XuKA}kT$v8W~`lQ&-aSlP_r+()$5Bt{Fb*imgr>kM}voa-T-6{=U zka|^$Yj$;N*QlC*A7;LS`*&hW?%#_EABLZQHzwTskAFW#?%WKeo*!;M_1u6LqPYM3 z9dUd<)#!dFV4H>EYMxhl&Rzs=ENxyB^HfWW#lUJg-xde+Q$HVQvyEd>Pn#vdYOW#s z{WMt3ev|J~@b-L{MpI9|%YfBvmp!*EoS*vdQyW(wb8!B&nS83)aU^wDlTIIXQkFqOUe%B**o^_NhHN zZU9!d__0ckUiS?VTsxV!jlj-ZuJ6WRebm$cCSdiH?9WZn_^J1&b7SB7x}LoMYzA(> z|7?z?p7Uo5uyNGg*Ya{-uT303Yf!SUJ==rVD)8sP?(ub~b06~Wr)AH&=eH}kdw7?E zYu~fs8N)Vk$Kap4aL!!E+k(}@M}W;K-}8-x>!a>kHV3u%Zx2=r-=X1GHG6YMxIXIH zV>^TSsr%9H?<|e&c(f(fuHeM>dhZ6;Cuha(V1BCMjV~U{eF$^S-%%}Z;HN&a{$;lIfo7e?@v+BbJ;;)<7hJ%uZdd5cre&&o%MML zd^SAAI9{hi(e>4y>v=fX>vw3Q$C%FXD6nIVPY+l>b@zt6+#BoD#!tC7)`e$ptXJUAgWVfmm+Xx( z#4Gp4xPrSkCKlYiaY7qEzu}qNKDcu`mOArvELc7KIIuZpuk^$9QTJM#lUn@8gVn+Z z8lHKd0M|!7^L{*-pL*W4XRkOuZHYAroY>C)WVk-rD^tMyRKpuvuFF(J+iEvw=Sj`D z#yJ^W#yJJfPrX;PWv`st=w6c(!6#AlO`Oxf#>sQR8DO>3DcL{Mz_VztE&FFW*x1_4 z&+De7;N7cQK!up!RooDmw;`jZvL(_wd8*(xIO>N(A48|`TxV`3N-cU%{hA&SnWzm z=HW|V`^z=D8q809-kY*o({ht_=wnRxz-?gXC3|KjSU+{oGI@EHZA=?K<@5W7aL+Q&o{cE3wN0pVe%(QgoL`<- z-zd0kzFBbX54G_p3a7w)34;+w|sM{3ux4d+2#*{SKU;`khsK#_|~0v1I-p zZ~T15(zZXvF?juqA@&y1%4&V@diqvyc-q}a~Be}KkMy*JInzV&s#Xv=%i(^qs+}FUy4SyZ1PjdMMcs6a- zGLbNe(Jfm{u*p-ZC)37d0n<8rk^b-xh`83cf3x8k=kMYAwDgY3_-gV0V~ywVKf%p6_CGf~@%{qWM?F4ofsLDM_%_(< zqMmkt1>06z+Wie|yIj-1gY{F-GuS&|e(Gl@?TPmfu(@mZ`a4f*iTxh99LGOv+Z_A9 z8lHIX!}V$Dt$Wx9@N!%q!X1}-+Wi}BTW#t4Kj3m)AHnrg&$vDY^HYyYd*b~UZ0_0} zm)Bb@vHu5ltl^)4^~oHvoGN|PbAHZ)2CeTu+TR6dJW$|ear`U9@UfMFt9l;N724F#PJ(To3YGiez1Lp zFVOIutqa19onoK1TL@j7{>kf8VB_Z*Wnr*>>dvR_76IF*Hs?oP&d+Z6_}Ph)`PsR_ z&d)A|zAMoPy} z2DDQjNoEU@z=m+&1N^%$+H(Ci0&BA`aoN{_`1>jQIsk582T`Z5&1k2dzBY&3mw&HD zTl(4ptj)e^%*^EX*oWiq=U__4bx4EVBZoHF>v|Z)9FCy&Jn_#cZ%xTPQU6^FZkwqE zcg{{Mxb{=q_}K+_eVtcu{V#6gmlpg=@KpuZ|N1t5LmR)P;O2L4!R>!m!Toz8FBe?< z8wI!hZwhYzziW7|*|u=!*K0NcJd)xy+lE@3elNneYix4Qi|yfFi+mTo16<8dv>hAG zbsue~M$P&#Hh~^uzJqSy}^4GCGXYypc!9#&aHjH>a*x0?e}ZAn#FU$Iolsyf9;ONwW*fe z4gjl_=hT64_54}vgTQJtiI+c@a4=l`17aRZ?Z@w4)DNMkxlhFD>o9P8Ux%Zq=X;$a zz-nF(zmrHD>-_nIBf<9V9@O7HlGjmS?dEkfwIB0R@1m%gmpFNKgUzcvbB}?mXAVYz z)tm$KN*wFt)dRL~bJgEIl2kVp{ZxSjs>e_z7oee zc^wC~Z*$e(K9W~ISi59vnRmSlh^TJwd9pJ*2!xk*uKqG zfBP_x$<)b1pGg!o^ALN68&|HLJ#_-u^I7hF=p^_d)UNvz!E%3}=l(kxydSlCo;6Pa z8$+9IJh#=1cOkx~fiI@+fnPv=Z)>ogKNteF9iF%qMm#IMPT)Znl@*H)iQ@) z1gqt_;1aO$7p7>lAMZcvX>%F4Y;!r>HlLzsv(2T{>S^;OuyMk#2I~|4<%Z|a?tBHV z7W*||+vm^4%m5qHIMJ>J+fHA#E2yud=&Q}Vu4**#^iRf;uYet|_fvgd1?#8o_-9e8>F+)CXW(5a*?&I=t6BWG*3gFx7R57PUcMt7Lmz&Qq-;ifpFNLiu+QOL1wOjLK96=& z%zYGfz7zO6v0V#tSbN3J0o4fO5 z-}0Q}?}B|FQrB*-YH9mVux)cL{R^&^bLm5{ANQWN4=DepI0s^5I-ZZuFZY-3D|2Gj!SiP!(E^Az@3Xc z7tagVM?LX7!Cvp2dqd!!nd({RL&5%Cc5R6@AJ}->^fRAfU~|%DzFu>+^ff=&e8Lxi zJErgj;bkrh!Szv3E}sHFMqk>J^TJ?bYm48aV0Hh_z46^|i-WUOg9jg|9ZDX{Ouw%1R)dr!UGd!zC3(?fCZxyE}buA4E`?jz6W;k3)Tm+xM1_rbmm zAITj1UBPnjpP~Ez4#>PM4_42!_zGaPS@?P1T@mcZ^{wqQ6g6`Zm(PppnUj^k=A3hV zWw@Hf57Skj*{i}=qnMZf4+GmfrqvtWGg`g|+!*Q^&st#H`TsV^cs>VK&-Gm!?4D82 zv&%YQb&Kbr@z(|0hqm~w2X-DTt_}S@kEX9Sud&xat2Dv& z>kDA*=Cu{IAM;Y*lA>l_;^eh8*u2VjzHQ*@nS*V?YR-XqC60CS8UeO%bJgEIlGjME zcJtbv+K+juZ%0uxFLCnP0oGW{lPIwy(g) zHrO-uIEvSE9Ce;&MiI~Jmgk-03hwhte;Yrk;P!QD!R_O;g4=#t!L?u6#;+&<=0(9|81Yf~UR-Ayguf~R}u^j`2W)b?de+v=n5Ols}P z?S8PiWo>^0oVBej{e2Ux%^05R^4J~(tL2(~3#|4KB|fvj`h>kT~_hESMySCR~ zANzZNT6@|)0*Jh%2kyAC{~rUZxsGpd+C2`ptv2`PY-&I5Pi;?7 z)ZAm@^#3H-c}!p51>0Bl-1oq0*>m3qtLg7Ge;S-?{uEdq+q2+Y^Jl>F^!o#FuK9Cd zd9L~MV6VA-8Pm4Gr z?tL$VN8_WOee+{*_KmUh@gAUFK3@&c&QJM1J09-!m_VK9rZ;Jq=P2K2|J=s?w?(vj zrujbmDt6cSE7Td&&%o-BHf!VO`cPa`d3SgXuI^g-1+^d7iu&smHFFcEuU~@gYgy{_ z^((M??i0TTtIfjCIZqtxygR%Bwr|I+zkQg;Z>jy5hd#fdsF{bje0NZ<^TPiRVCS-Y zuKpvMdd}HDfqzd?cU?HoYL3I}{ui(@@^0}KT+QN#tycHvedKL4=b^lh{1r_-?f(W= zv-oMXZ~b|NzoVsnne#j7+OoFZ1-rI9!?pc`lK1lWz}hW&fBz@gezoQL{0r<@eYSGl zybsn-eR`vP0Cv3EoEz7iTCV%Q!RGrRb>jX9te$i7W3bvsl(hRVxV_!~(A3k8>95p2 zp=50Hpczk_{h9Z?VDn1O9dI>$le1de%Z0>orIw$-V z1*_cy&h=OfuAY6kI9RRR^Gm?h-D{tw_TyetUy`EcUK6LUrNHfdEsdt0?+caztL6KG z#IeqvUlwfN?pyusBWKZaVD09$0(J6IU!J07UgG5S8L)Yk`)5VCdgkD>U^VB!vnX+_ zlh<&teVeQP_L00+0&6#~Rj8Af`pOhF^AaboRl)6ft%jza`C1*UmibB?>*Tct*uKqG zfBP_xwWyPaK5J6c%tKtBk?M6`93pFjUB~5pVjVPf*U;10)&=iT?2q-}jwRp0d>*Wi z`o8Qd_rm&MbdgME*l zQsAitKB2%T7WgEvb9D-}_gwqggj_sh!nbPU{##wK+vg5#+<&vHwC~-<4`|~@6x{xg zZsVg1ZhvD6u76(}?=QIijgKS|CU#2 zpJ&M2+<()nv@h1i{WrZz`%-P(f77e9`)_)ceA|Y*_kCX3jC|btn^L>i-EW(N)x);{ zyWiZe+P?tTN8NW%wJpIukL=jky*Igc)YI42VEZbcjkZBk*WbNW^CpiGaAPEokzjqM zH+gIa)<->gY!6Nz+KuZTRZpB9!IQ`%d?&d5k(<*Opkj zgUi@^z|A?a_XO*sp4fYV6I;9YBxBeA-XA=%_W_r&_k}yQ#NH3Ak9uP74^C|DiS0S0 zEwK*-mvem(yo`M?Tp#tsJ_MZD+7sI|O`Ea34;%{iEY3UG;c(ln-PjI;d;U9S{j{g; zkxkq1qZ*$3Nf%rnb=x07t(I{e1NNSf_M_n53-V_dd*Es*=IDCvMKj0sDBWP==xZNG zQ)^Gmv0%rn>5E{*MLgudR<-p1+569C!!f+eVu{p6}|3Js#|}(&pJMk8J|j@oMuN zmmAwTKfcDT^IlupOai-RZR1%lk8KLrHK)yUUmn{D;Pf>WEYEkHCxZREJ;t-0_FSKn zz~-V)*3Btk=XN!U_LC|0D0+@8dyE;rh{#(?s&Wp zs->T^!1j}Ma5mUAn3A*Z9CU5^r>}FtuAw}?oCmj^dip;fY+G&ieioPHtHGsU0~a4v;W(u)zbexVDAmu?gq=9 zOUH08csRAX_ODZ`rS1J-bM`&~-WVU- zXtVtz)atf>8ryflPd40m-vhh8694;Pxp0oXNGpM$h{9&DTPUH^x0^{ks8fo-Rrb}xW!SH2&=2v^VgeF?0VGQC+# zFQXY#d#?SD!RD&1?t=mS1l)c`{}fF!)s>KL7p(+%W0#QLE>k_V-59mgly2z>d%7Htmkjb1Gx}2bwwP7wuiJy79fPuY=Vbmwo>e zT<)oV!F@k>oZ8=q>!Y4FAA;R?$^YN*4=C!%|36@L^ULqYK7yP7XDHfp-9B#g<a_+Rh8U04=-&eqY0#gHE{pWlo2{ z^-)iop0&&YkbS^4y<44R$>m&vx3=ZfS7(^F3J}+p^&F z=R31Jw&lU;&-Z6}`db0KKK&WbcG@%M&w$NGA7gp#Rs@%G^;x)n>S;F|?0ji+jD9De zmV8zMyFT*&ZCx3zHiJH9(8nrZwR|_ZDp<|$1Xri_<9E60t5MYao=coQ)&RTa(#M)` zwe+zTSk3QB)80DYNq!D&pMH0yud$QQ+Fx0$IC+)41&jw)oG)H}noqRR~Yd4>bsgsZTMie#k5$8H?0(L){k8{2$T+RODZ=L=( z1KWo=>1!9aXS&HluG|9LwOa`nu|mSERKo{zSXk}*pHnHD(S8Z)(+YfggZ=L642pS8r_T4G+Y>L}FX^*u8{e~y@7Kl; zYU9VY@skT~ZfCUd^9yeO7qsz<8lHLF0q&SaR;~O0j&Se)n{sXAvlE(np4oQ>+fF^- zGwlL){&%EkckZ1Fbz}Sc*WJO!-i?Z#7!B7?J-Lnno2$0O8Vj~RZOKio%*`CrPaoL) z^>v@fvzCqnyOti}88rU=XzF=R9oP7{mdiCX9$i~vO=$cEs1xgWuzJQb5o|m4T-!-t z^|YA`F4y7|xIXH+wo}2mw%Ri{CxFdgd*Yo4cHHqf39O&GbK=>c7XMSgYRT_Zuv+>) z4V=EUWo)N|y;jlve#eK-y5J}lp>ro+|ab7tdH&huGl>Upj_8*Kl+4`^G2-=C%Z zIdJJ^A>4ObeYEN0d8zK4`Cff7*nZ99 zHTW07uB-Ap`Ag8$^S$z=VB4u@Y?pyEHtjy&#&&sQTMkV>{|=S8Tm;sZzOMk=_vOXe zdnKBBo?EX1t2uYM?q7l%D?V3)^;6F{zYKQl(;27Z{t8%4-^`0z{I3Cf-wU4sw|)A& z7VJ97^Zj*T$M3VJHplOp%C);5O`nu}uY5z(&hM4&(|+{z-mES6<}iFmm;d+)rp;I_HFjo(>t{qJt$_qXu}+xX)J_g?&L!!xHh z!_Pr~p;?Q!z}37S<|>cxZQyh8eX;SK30KqCame*`d|v}Qe&fpTfUD{280GQ33#_kk z_5C_rO<%_^PY(Bh?JN9Vu=Ag1u>0VyfgLFNYB!GarY-Hh0k&QEH{p&qaUK9Cj=tKB z<9usNyNAHW&KdG8u;VMwsabIK?2T`OZKs|%4}*=JIFEoGdl~0ZxO(Dz2W&g_?5W4V z#@A-Pt_QXB^8~oecQ)L7%QN#yxO)2eF4%VJiSs>hneX@E=3B;j3a*|wPlIizo_wDH z8(*9Gx?a`N&vRhM5dMRP=Nx<UT%HZQ>SQP27KA~QjvyScl!)YI=zz{%Y>KZWa)`FI7ak9yj?3Qq2}`5C-y^K-a9>S^;D z*tMKLVD?6Te?KTG{rEMl0L?2F+Z`w!dw(vhD90 u&9*t4-$XNS^E9vMzXzL>IoN0PKY;De_{LNBeEuWYShmy0GhEFx{Qm%=+#aa_ diff --git a/packages/ludic.render3d/shaders/spv/1b654972.frag.spv b/packages/ludic.render3d/shaders/spv/1b654972.frag.spv index 31bb45b55ee36003c350d90888b9e93235ac4f71..ce47f9ca4bf58c44914c285c9ae039694f1f4f40 100644 GIT binary patch delta 675 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%0ABWGL3r7hh2Ujh7KR(cdiF(sebSc?f%UQYNngyx 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