diff --git a/packages/ludic.render3d/camera.ludic b/packages/ludic.render3d/camera.ludic index c7459263..d1f1fe61 100644 --- a/packages/ludic.render3d/camera.ludic +++ b/packages/ludic.render3d/camera.ludic @@ -37,7 +37,7 @@ function cam_update(render3d_st: mut Render3dState) -> void { let py = render3d_st.cam_pos[1] let pz = render3d_st.cam_pos[2] m4_look_at_xyz(render3d_st.cam_view, px, py, pz, px + render3d_st.cam_fwd[0], py + render3d_st.cam_fwd[1], pz + render3d_st.cam_fwd[2], 0.0, 1.0, 0.0) - m4_perspective(render3d_st.cam_proj, render3d_st.cam_fov, render3d_st.cam_aspect, render3d_st.cam_near, render3d_st.cam_far) + m4_perspective(render3d_st.cam_proj, render3d_st.cam_fov, render3d_st.cam_aspect, render3d_st.cam_near, r3d_reach(render3d_st, render3d_st.cam_far)) m4_mul(render3d_st.cam_vp_clean, render3d_st.cam_proj, render3d_st.cam_view) m4_inverse(render3d_st.cam_inv_vp_clean, render3d_st.cam_vp_clean) # DLSS's sub-pixel jitter (streamline.ludic), in the projection the scene draws with only: diff --git a/packages/ludic.render3d/env.ludic b/packages/ludic.render3d/env.ludic index e5d2d485..d1258cfc 100644 --- a/packages/ludic.render3d/env.ludic +++ b/packages/ludic.render3d/env.ludic @@ -584,6 +584,7 @@ export state Render3dState { q_sz: floats = null q_st: floats = null r3d_sky_prog: int = 0 + r3d_fog_wall: float = 0.0 # r3d_fog_wall: > 0, nothing past it is seen or drawn r3d_fog_density: float = 0.0 r3d_fog_falloff: float = 0.0 r3d_fog_inscatter: float = 0.02 # 0.02, what the shader used to hard-code diff --git a/packages/ludic.render3d/render.ludic b/packages/ludic.render3d/render.ludic index ee32c899..31b85308 100644 --- a/packages/ludic.render3d/render.ludic +++ b/packages/ludic.render3d/render.ludic @@ -36,6 +36,7 @@ function fog_bind(render3d_st: mut Render3dState, prog: int) -> void { u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_fog_base"), render3d_st.r3d_fog_base) u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_fog_inscatter"), render3d_st.r3d_fog_inscatter) u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_fog_desat"), render3d_st.r3d_fog_desat) + u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_fog_wall"), render3d_st.r3d_fog_wall) u_f3(render3d_st, gpu_uniform(render3d_st, prog, "u_ground_alb"), render3d_st.r3d_ground_alb_r, render3d_st.r3d_ground_alb_g, render3d_st.r3d_ground_alb_b) u_f3(render3d_st, gpu_uniform(render3d_st, prog, "u_ground_alb_hi"), render3d_st.r3d_ground_hi_r, render3d_st.r3d_ground_hi_g, render3d_st.r3d_ground_hi_b) u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_ground_hi_y"), render3d_st.r3d_ground_hi_y) @@ -46,11 +47,31 @@ function fog_bind(render3d_st: mut Render3dState, prog: int) -> void { u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_time"), render3d_st.r3d_time) } +# The fog wall (a game's fog setting): dist > 0 hides everything past dist in the sky's colour - from +# three tenths of it to all of it - and draws nothing past it in any pass: the far plane, every scatter +# layer's reach, the shadow cascades. dist <= 0 leaves everything as it was. +const R3D_FOG_MARGIN: float = 8.0 +export function r3d_fog_wall(render3d_st: mut Render3dState, dist: float) -> void { + var d = dist + if d < 0.0 { d = 0.0 } + render3d_st.r3d_fog_wall = d + cam_update(render3d_st) +} +# how far anything is drawn: the fog wall and a margin, or `far` (0: no limit of its own) without one +function r3d_reach(render3d_st: Render3dState, far: float) -> float { + if render3d_st.r3d_fog_wall <= 0.0 { return far } + let w = render3d_st.r3d_fog_wall + R3D_FOG_MARGIN + if far <= 0.0 or far > w { return w } + return far +} + # profiling switches (environment): R3D_NOSHADOW R3D_NOGI R3D_MSAA=n R3D_NOBLADES R3D_NOCARDS R3D_NOTREES R3D_NEAR=m function r3d_env_flags(render3d_st: mut Render3dState) -> void { render3d_st.r3d_no_shadow = r3d_env_has(render3d_st, "R3D_NOSHADOW") render3d_st.r3d_no_trees = r3d_env_has(render3d_st, "R3D_NOTREES") render3d_st.r3d_no_refl = r3d_env_has(render3d_st, "R3D_NOREFL") + # R3D_FOG_WALL=: the fog wall at that distance, for a shot (a game sets it with r3d_fog_wall) + if r3d_env_has(render3d_st, "R3D_FOG_WALL") { render3d_st.r3d_fog_wall = float(Text.to_int(r3d_env(render3d_st, "R3D_FOG_WALL"))) } if r3d_env_has(render3d_st, "R3D_DEBUG") { render3d_st.r3d_debug = true } if r3d_env_has(render3d_st, "R3D_DBGSHADOW") { render3d_st.r3d_debug_shadow = true } if r3d_env_has(render3d_st, "R3D_NOGI") { render3d_st.post_gi_strength = 0.0; render3d_st.post_ao_strength = 0.0; render3d_st.post_no_gi = true } @@ -152,6 +173,8 @@ function r3d_draw_sky(render3d_st: mut Render3dState) -> void { u_f(render3d_st, gpu_uniform(render3d_st, p, "u_sky_gain"), 0.95) u_f(render3d_st, gpu_uniform(render3d_st, p, "u_sky_relight"), render3d_st.r3d_sky_relight) u_f(render3d_st, gpu_uniform(render3d_st, p, "u_sky_sat"), 1.35) + u_f(render3d_st, gpu_uniform(render3d_st, p, "u_fog_wall"), render3d_st.r3d_fog_wall) + u_f(render3d_st, gpu_uniform(render3d_st, p, "u_fog_inscatter"), render3d_st.r3d_fog_inscatter) u_f(render3d_st, gpu_uniform(render3d_st, p, "u_time"), render3d_st.r3d_time) mesh_draw(render3d_st, render3d_st.sky_fullscreen) gpu_depth_write(render3d_st, true) diff --git a/packages/ludic.render3d/scatter.ludic b/packages/ludic.render3d/scatter.ludic index fcbea5de..ce06ccf6 100644 --- a/packages/ludic.render3d/scatter.ludic +++ b/packages/ludic.render3d/scatter.ludic @@ -561,7 +561,7 @@ function layer_gpu_cull(render3d_st: mut Render3dState, l: Layer) -> void { let pr = render3d_st.sc_gpu_pr for i in 0 .. 36 { pr[i] = 0 } if render3d_st.cam_planes != null { for i in 0 .. 16 { pr[i] = float_bits(render3d_st.cam_planes[i]) } } - pr[16] = float_bits(render3d_st.cam_pos[0]); pr[17] = float_bits(render3d_st.cam_pos[1]); pr[18] = float_bits(render3d_st.cam_pos[2]); pr[19] = float_bits(l.cull) + pr[16] = float_bits(render3d_st.cam_pos[0]); pr[17] = float_bits(render3d_st.cam_pos[1]); pr[18] = float_bits(render3d_st.cam_pos[2]); pr[19] = float_bits(r3d_reach(render3d_st, l.cull)) for k in 0 .. l.n_lods { pr[20 + k] = float_bits(l.lod_dist[k]); pr[24 + k] = len(l.lods[k].prims) } pr[28] = l.count; pr[29] = l.count; pr[30] = l.n_lods; pr[31] = 1 # as layer_grid_gather pads a cell: the tallest instance, plus a margin @@ -622,7 +622,7 @@ function layer_grid_build(render3d_st: mut Render3dState, l: Layer, cell: float) function layer_grid_gather(render3d_st: Render3dState, l: Layer) -> void { let cell = l.gcell let half = cell * 0.5 - let reach = l.cull + cell * 0.71 + let reach = r3d_reach(render3d_st, l.cull) + cell * 0.71 var n = 0 for iz in 0 .. l.gnz { let wz = l.gz0 + float(iz) * cell + half @@ -631,7 +631,7 @@ function layer_grid_gather(render3d_st: Render3dState, l: Layer) -> void { let cnt = l.gstart[c + 1] - l.gstart[c] if cnt == 0 { continue } let wx = l.gx0 + float(ix) * cell + half - if l.cull != 0.0 { + if r3d_reach(render3d_st, l.cull) != 0.0 { let dx = wx - render3d_st.cam_pos[0]; let dz = wz - render3d_st.cam_pos[2] if Math.sqrt(dx * dx + dz * dz) > reach { continue } } @@ -654,14 +654,15 @@ function layer_partition_lods(render3d_st: mut Render3dState, l: Layer, src: flo if n + 2 > SC_LOD_ROOM { return } # past the room made with the state let counts = render3d_st.sc_lod_counts for k in 0 .. n + 2 { counts[k] = 0 } - let cull2 = l.cull * l.cull + let lc = r3d_reach(render3d_st, l.cull) + let cull2 = lc * lc let open = l.lod_dist[n - 1] == 0.0 # the last level runs out to the cull distance for i in 0 .. total { let o = i * INST_FLOATS let dx = src[o] - render3d_st.cam_pos[0]; let dz = src[o + 2] - render3d_st.cam_pos[2] let d2 = dx * dx + dz * dz var lv = n + 1 # n + 1 = dropped - if l.cull == 0.0 or not (d2 > cull2) { + if lc == 0.0 or not (d2 > cull2) { let d = Math.sqrt(d2) lv = n # n = the impostor bucket var k = 0 @@ -727,7 +728,8 @@ function layer_update(render3d_st: mut Render3dState, l: Layer) -> void { var total = l.count if l.gcell != 0.0 { layer_grid_gather(render3d_st, l); src = l.vis; total = l.n_vis } let near2 = l.near * l.near - let cull2 = l.cull * l.cull + let lc = r3d_reach(render3d_st, l.cull) + let cull2 = lc * lc var nn = 0 var nf = 0 let far_off = l.cap * INST_FLOATS # far instances fill the scratch from its end backwards @@ -743,7 +745,7 @@ function layer_update(render3d_st: mut Render3dState, l: Layer) -> void { let dx = src[o] - render3d_st.cam_pos[0] let dz = src[o + 2] - render3d_st.cam_pos[2] let d2 = dx * dx + dz * dz - if l.cull != 0.0 and d2 > cull2 { i += 1; continue } + if lc != 0.0 and d2 > cull2 { i += 1; continue } if l.near == 0.0 or d2 < near2 { let q = nn * INST_FLOATS for k in 0 .. INST_FLOATS { tmp[q + k] = src[o + k] } @@ -905,7 +907,7 @@ function layer_draw_model(render3d_st: mut Render3dState, l: Layer, model: Model } u_f(render3d_st, gpu_uniform(render3d_st, p, "u_rough_scale"), l.rough) if l.blade { u_v3(render3d_st, gpu_uniform(render3d_st, p, "u_blade_base"), render3d_st.sc_blade_base); u_v3(render3d_st, gpu_uniform(render3d_st, p, "u_blade_tip"), render3d_st.sc_blade_tip) } - u_f(render3d_st, gpu_uniform(render3d_st, p, "u_cull"), l.cull) + u_f(render3d_st, gpu_uniform(render3d_st, p, "u_cull"), r3d_reach(render3d_st, l.cull)) sky_bind_lighting(render3d_st, p) shadow_bind(render3d_st, p) fog_bind(render3d_st, p) diff --git a/packages/ludic.render3d/shaders/lighting.glsl b/packages/ludic.render3d/shaders/lighting.glsl index 87bb229c..d3bf88e8 100644 --- a/packages/ludic.render3d/shaders/lighting.glsl +++ b/packages/ludic.render3d/shaders/lighting.glsl @@ -285,6 +285,13 @@ vec3 shade(vec3 wpos, vec3 n, vec3 albedo, float rough, float metal, float ao, f // 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 +uniform float u_fog_wall; // r3d_fog_wall: > 0, the distance past which nothing is seen +// the colour the fog wall hides things in: the sky at the horizon under this view, and the sun +// scattered through it, so what is far melts into the sky behind it (the sky's band meets it) +vec3 fogWallCol(vec3 dir) { + vec3 c = skyPrefiltered(vec3(dir.x, max(dir.y, 0.02), dir.z), 0.6); + return c + u_sun_color * u_fog_inscatter * pow(max(dot(dir, u_sun_dir), 0.0), 8.0); +} vec3 applyFog(vec3 col, vec3 wpos, float dist) { vec3 dir = normalize(wpos - u_cam_pos); float hf = u_fog_height_falloff; @@ -306,5 +313,11 @@ vec3 applyFog(vec3 col, vec3 wpos, float dist) { // 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); + col = mix(col, fogCol, f); + // the fog wall: from three tenths of its distance to all of it, everything goes to the sky's colour + if (u_fog_wall > 0.0) { + float w = smoothstep(0.3 * u_fog_wall, u_fog_wall, dist); + col = mix(col, fogWallCol(dir), w); + } + return col; } diff --git a/packages/ludic.render3d/shaders/sky.frag b/packages/ludic.render3d/shaders/sky.frag index 29c481bd..db0bbd44 100644 --- a/packages/ludic.render3d/shaders/sky.frag +++ b/packages/ludic.render3d/shaders/sky.frag @@ -112,5 +112,11 @@ void main() { float below = smoothstep(0.0, -0.08, dir.y); vec3 fogCol = skyPrefiltered(vec3(dir.x, 0.02, dir.z), 0.6); col = mix(col, fogCol, below); + // under a fog wall the horizon band is the fog's own colour, higher the thicker the fog, so what + // the wall hides meets the sky with no seam; the sky overhead stays + if (u_fog_wall > 0.0) { + float band = clamp(90.0 / u_fog_wall, 0.06, 0.75); + col = mix(col, fogWallCol(dir), 1.0 - smoothstep(-0.02, band, dir.y)); + } o_color = vec4(sane(col), 1.0); } diff --git a/packages/ludic.render3d/shaders/spv/01089da8.frag.spv b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv index 7f9bc3e7..3c512890 100644 Binary files a/packages/ludic.render3d/shaders/spv/01089da8.frag.spv and b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1b654972.frag.spv b/packages/ludic.render3d/shaders/spv/1b654972.frag.spv index 46c181f1..9c4f318a 100644 Binary files a/packages/ludic.render3d/shaders/spv/1b654972.frag.spv and b/packages/ludic.render3d/shaders/spv/1b654972.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv b/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv index 7832db8d..146ad543 100644 Binary files a/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv and b/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv b/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv index 4038a9f5..95873d03 100644 Binary files a/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv and b/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv b/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv index 0d68f3a8..2468e320 100644 Binary files a/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv and b/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/254e7887.frag.spv b/packages/ludic.render3d/shaders/spv/254e7887.frag.spv index c643d1de..eb579317 100644 Binary files a/packages/ludic.render3d/shaders/spv/254e7887.frag.spv and b/packages/ludic.render3d/shaders/spv/254e7887.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/266d2401.frag.spv b/packages/ludic.render3d/shaders/spv/266d2401.frag.spv index ab904275..cb25022c 100644 Binary files a/packages/ludic.render3d/shaders/spv/266d2401.frag.spv and b/packages/ludic.render3d/shaders/spv/266d2401.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv b/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv index 04901728..c2ab3b9c 100644 Binary files a/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv and b/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv b/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv index cc5a2e8e..7d8e017d 100644 Binary files a/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv and b/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv b/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv index dcfea6c7..0f89d218 100644 Binary files a/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv and b/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv b/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv index 29baa4f4..08a9ba73 100644 Binary files a/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv and b/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv b/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv index 2c2d8b01..ad01f8fb 100644 Binary files a/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv and b/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv b/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv index f2fe59df..9e30bcf3 100644 Binary files a/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv and b/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/439a2253.frag.spv b/packages/ludic.render3d/shaders/spv/439a2253.frag.spv index 6be6a7eb..74ee6ea2 100644 Binary files a/packages/ludic.render3d/shaders/spv/439a2253.frag.spv and b/packages/ludic.render3d/shaders/spv/439a2253.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv b/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv index 410c2c6c..da8d020d 100644 Binary files a/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv and b/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv b/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv index 67954350..2a3ad4d5 100644 Binary files a/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv and b/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv b/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv index d9bdc5e5..4c9387c3 100644 Binary files a/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv and b/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv b/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv index 2ce768a2..efdc0753 100644 Binary files a/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv and b/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv b/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv index 5abef2db..16d3af32 100644 Binary files a/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv and b/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv b/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv index f151e5b0..07a93033 100644 Binary files a/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv and b/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/512004a1.frag.spv b/packages/ludic.render3d/shaders/spv/512004a1.frag.spv index 2cb448cd..cb7526ab 100644 Binary files a/packages/ludic.render3d/shaders/spv/512004a1.frag.spv and b/packages/ludic.render3d/shaders/spv/512004a1.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/5161e6ba.frag.spv b/packages/ludic.render3d/shaders/spv/5161e6ba.frag.spv index f713e646..ac513758 100644 Binary files a/packages/ludic.render3d/shaders/spv/5161e6ba.frag.spv and b/packages/ludic.render3d/shaders/spv/5161e6ba.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv b/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv index caa5d86d..e2715ab9 100644 Binary files a/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv and b/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/5e70d731.frag.spv b/packages/ludic.render3d/shaders/spv/5e70d731.frag.spv index 50e04c08..c493de7e 100644 Binary files a/packages/ludic.render3d/shaders/spv/5e70d731.frag.spv and b/packages/ludic.render3d/shaders/spv/5e70d731.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/638623c2.frag.spv b/packages/ludic.render3d/shaders/spv/638623c2.frag.spv index ea75996c..998b6f8e 100644 Binary files a/packages/ludic.render3d/shaders/spv/638623c2.frag.spv and b/packages/ludic.render3d/shaders/spv/638623c2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/676965ab.frag.spv b/packages/ludic.render3d/shaders/spv/676965ab.frag.spv index 5141650f..bf8cb206 100644 Binary files a/packages/ludic.render3d/shaders/spv/676965ab.frag.spv and b/packages/ludic.render3d/shaders/spv/676965ab.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/725523d9.frag.spv b/packages/ludic.render3d/shaders/spv/725523d9.frag.spv index 618d837b..42e3433e 100644 Binary files a/packages/ludic.render3d/shaders/spv/725523d9.frag.spv and b/packages/ludic.render3d/shaders/spv/725523d9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/74258189.frag.spv b/packages/ludic.render3d/shaders/spv/74258189.frag.spv index ce60e47d..8f29a9c8 100644 Binary files a/packages/ludic.render3d/shaders/spv/74258189.frag.spv and b/packages/ludic.render3d/shaders/spv/74258189.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv b/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv index 94242e2e..929db287 100644 Binary files a/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv and b/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/858f5089.frag.spv b/packages/ludic.render3d/shaders/spv/858f5089.frag.spv index b24867f8..708a290b 100644 Binary files a/packages/ludic.render3d/shaders/spv/858f5089.frag.spv and b/packages/ludic.render3d/shaders/spv/858f5089.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv b/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv index d049b062..b0a4a1c3 100644 Binary files a/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv and b/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv b/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv index f6c08ef7..b2c6765c 100644 Binary files a/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv and b/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv b/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv index d2761052..ad0b2cd8 100644 Binary files a/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv and b/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv b/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv index 6be6a7eb..74ee6ea2 100644 Binary files a/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv and b/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a0f2dbac.frag.spv b/packages/ludic.render3d/shaders/spv/a0f2dbac.frag.spv index 0e8c230b..3c367668 100644 Binary files a/packages/ludic.render3d/shaders/spv/a0f2dbac.frag.spv and b/packages/ludic.render3d/shaders/spv/a0f2dbac.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv b/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv index 822a138b..e0a10321 100644 Binary files a/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv and b/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a4683767.frag.spv b/packages/ludic.render3d/shaders/spv/a4683767.frag.spv index 9b341f1c..e8ba2979 100644 Binary files a/packages/ludic.render3d/shaders/spv/a4683767.frag.spv and b/packages/ludic.render3d/shaders/spv/a4683767.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv b/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv index ebab145a..15c9c366 100644 Binary files a/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv and b/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv b/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv index 36e25a03..2e7932cf 100644 Binary files a/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv and b/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b20fdcb5.frag.spv b/packages/ludic.render3d/shaders/spv/b20fdcb5.frag.spv index 35eaa795..c524254d 100644 Binary files a/packages/ludic.render3d/shaders/spv/b20fdcb5.frag.spv and b/packages/ludic.render3d/shaders/spv/b20fdcb5.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv b/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv index d036bb19..49c44d3c 100644 Binary files a/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv and b/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b603a056.frag.spv b/packages/ludic.render3d/shaders/spv/b603a056.frag.spv index f151e5b0..07a93033 100644 Binary files a/packages/ludic.render3d/shaders/spv/b603a056.frag.spv and b/packages/ludic.render3d/shaders/spv/b603a056.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv b/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv index 2cb448cd..cb7526ab 100644 Binary files a/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv and b/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b8cff226.frag.spv b/packages/ludic.render3d/shaders/spv/b8cff226.frag.spv index b58da43a..66105dc5 100644 Binary files a/packages/ludic.render3d/shaders/spv/b8cff226.frag.spv and b/packages/ludic.render3d/shaders/spv/b8cff226.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b964507f.frag.spv b/packages/ludic.render3d/shaders/spv/b964507f.frag.spv index 36e25a03..2e7932cf 100644 Binary files a/packages/ludic.render3d/shaders/spv/b964507f.frag.spv and b/packages/ludic.render3d/shaders/spv/b964507f.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv b/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv index 7f9bc3e7..3c512890 100644 Binary files a/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv and b/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv b/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv index a7e4de8e..72e870d0 100644 Binary files a/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv and b/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv b/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv index 8c0d3203..c77aaf54 100644 Binary files a/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv and b/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv b/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv index 3de9a2ed..4dbe9529 100644 Binary files a/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv and b/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/cb13f3c6.frag.spv b/packages/ludic.render3d/shaders/spv/cb13f3c6.frag.spv index b58da43a..66105dc5 100644 Binary files a/packages/ludic.render3d/shaders/spv/cb13f3c6.frag.spv and b/packages/ludic.render3d/shaders/spv/cb13f3c6.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/d48d6a48.frag.spv b/packages/ludic.render3d/shaders/spv/d48d6a48.frag.spv index 0bd47374..a7ccec27 100644 Binary files a/packages/ludic.render3d/shaders/spv/d48d6a48.frag.spv and b/packages/ludic.render3d/shaders/spv/d48d6a48.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv b/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv index 829cbfd9..ec2c536e 100644 Binary files a/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv and b/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e86f78e8.frag.spv b/packages/ludic.render3d/shaders/spv/e86f78e8.frag.spv index 5cc0f51d..68ce70ca 100644 Binary files a/packages/ludic.render3d/shaders/spv/e86f78e8.frag.spv and b/packages/ludic.render3d/shaders/spv/e86f78e8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv b/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv index 72f7ce01..95145051 100644 Binary files a/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv and b/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f2952361.frag.spv b/packages/ludic.render3d/shaders/spv/f2952361.frag.spv index 54173211..31d302c6 100644 Binary files a/packages/ludic.render3d/shaders/spv/f2952361.frag.spv and b/packages/ludic.render3d/shaders/spv/f2952361.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv b/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv index 2cb448cd..cb7526ab 100644 Binary files a/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv and b/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4382918.frag.spv b/packages/ludic.render3d/shaders/spv/f4382918.frag.spv index 194f3f0b..133a84fb 100644 Binary files a/packages/ludic.render3d/shaders/spv/f4382918.frag.spv and b/packages/ludic.render3d/shaders/spv/f4382918.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv b/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv index 21e807a8..1c01f5bb 100644 Binary files a/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv and b/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/manifest.txt b/packages/ludic.render3d/shaders/spv/manifest.txt index 3d92618e..89b2525a 100644 --- a/packages/ludic.render3d/shaders/spv/manifest.txt +++ b/packages/ludic.render3d/shaders/spv/manifest.txt @@ -1,6 +1,6 @@ # manifest.txt - GENERATED by `ludic-dev shaders` from variants.list. Do not edit. P 2ee6d2e3 fullscreen.vert adapt.frag -B 2ee6d2e3 frag 1 848 +B 2ee6d2e3 frag 1 852 U 2ee6d2e3 frag u_cascade_vp 0 mat4 5 64 U 2ee6d2e3 frag u_cascade_split 320 float 5 16 U 2ee6d2e3 frag u_cascade_range 400 float 5 16 @@ -36,11 +36,12 @@ U 2ee6d2e3 frag u_cloud_shadow 812 float 1 0 U 2ee6d2e3 frag u_time 816 float 1 0 U 2ee6d2e3 frag u_fog_inscatter 820 float 1 0 U 2ee6d2e3 frag u_fog_desat 824 float 1 0 -U 2ee6d2e3 frag u_lod 828 float 1 0 -U 2ee6d2e3 frag u_key 832 float 1 0 -U 2ee6d2e3 frag u_max 836 float 1 0 -U 2ee6d2e3 frag u_rate 840 float 1 0 -U 2ee6d2e3 frag u_reset 844 float 1 0 +U 2ee6d2e3 frag u_fog_wall 828 float 1 0 +U 2ee6d2e3 frag u_lod 832 float 1 0 +U 2ee6d2e3 frag u_key 836 float 1 0 +U 2ee6d2e3 frag u_max 840 float 1 0 +U 2ee6d2e3 frag u_rate 844 float 1 0 +U 2ee6d2e3 frag u_reset 848 float 1 0 T 2ee6d2e3 u_brdf 2 T 2ee6d2e3 u_irradiance 3 T 2ee6d2e3 u_prefilter 4 @@ -86,6 +87,7 @@ U 9d3e2ddd frag u_cloud_shadow 812 float 1 0 U 9d3e2ddd frag u_time 816 float 1 0 U 9d3e2ddd frag u_fog_inscatter 820 float 1 0 U 9d3e2ddd frag u_fog_desat 824 float 1 0 +U 9d3e2ddd frag u_fog_wall 828 float 1 0 U 9d3e2ddd frag u_texel 832 vec2 1 0 U 9d3e2ddd frag u_threshold 840 float 1 0 T 9d3e2ddd u_brdf 2 @@ -132,6 +134,7 @@ U c57b4f14 frag u_cloud_shadow 812 float 1 0 U c57b4f14 frag u_time 816 float 1 0 U c57b4f14 frag u_fog_inscatter 820 float 1 0 U c57b4f14 frag u_fog_desat 824 float 1 0 +U c57b4f14 frag u_fog_wall 828 float 1 0 U c57b4f14 frag u_texel 832 vec2 1 0 U c57b4f14 frag u_radius 840 float 1 0 T c57b4f14 u_brdf 2 @@ -178,6 +181,7 @@ U 5161e6ba frag u_cloud_shadow 812 float 1 0 U 5161e6ba frag u_time 816 float 1 0 U 5161e6ba frag u_fog_inscatter 820 float 1 0 U 5161e6ba frag u_fog_desat 824 float 1 0 +U 5161e6ba frag u_fog_wall 828 float 1 0 U 5161e6ba frag u_inv_proj 832 mat4 1 0 U 5161e6ba frag u_texel 896 vec2 1 0 U 5161e6ba frag u_focus 904 float 1 0 @@ -228,10 +232,11 @@ U 4be7acd9 frag u_cloud_shadow 812 float 1 0 U 4be7acd9 frag u_time 816 float 1 0 U 4be7acd9 frag u_fog_inscatter 820 float 1 0 U 4be7acd9 frag u_fog_desat 824 float 1 0 -U 4be7acd9 frag u_half 828 float 1 0 -U 4be7acd9 frag u_dem_min 832 float 1 0 -U 4be7acd9 frag u_dem_max 836 float 1 0 -U 4be7acd9 frag u_dem_base 840 float 1 0 +U 4be7acd9 frag u_fog_wall 828 float 1 0 +U 4be7acd9 frag u_half 832 float 1 0 +U 4be7acd9 frag u_dem_min 836 float 1 0 +U 4be7acd9 frag u_dem_max 840 float 1 0 +U 4be7acd9 frag u_dem_base 844 float 1 0 U 4be7acd9 frag u_origin 848 vec2 1 0 U 4be7acd9 frag u_lake 864 vec4 1 0 U 4be7acd9 frag u_lake_level 880 float 1 0 @@ -248,7 +253,7 @@ T 4be7acd9 u_shadow 6 T 4be7acd9 u_tershadow 7 T 4be7acd9 u_ts_height 8 P 858f5089 fullscreen.vert ibl_brdf.frag -B 858f5089 frag 0 828 +B 858f5089 frag 0 832 U 858f5089 frag u_cascade_vp 0 mat4 5 64 U 858f5089 frag u_cascade_split 320 float 5 16 U 858f5089 frag u_cascade_range 400 float 5 16 @@ -284,6 +289,7 @@ U 858f5089 frag u_cloud_shadow 812 float 1 0 U 858f5089 frag u_time 816 float 1 0 U 858f5089 frag u_fog_inscatter 820 float 1 0 U 858f5089 frag u_fog_desat 824 float 1 0 +U 858f5089 frag u_fog_wall 828 float 1 0 T 858f5089 u_brdf 2 T 858f5089 u_irradiance 3 T 858f5089 u_prefilter 4 @@ -291,7 +297,7 @@ T 858f5089 u_shadow 5 T 858f5089 u_tershadow 6 T 858f5089 u_ts_height 7 P e18e40c9 fullscreen.vert ibl_irradiance.frag -B e18e40c9 frag 1 832 +B e18e40c9 frag 1 836 U e18e40c9 frag u_cascade_vp 0 mat4 5 64 U e18e40c9 frag u_cascade_split 320 float 5 16 U e18e40c9 frag u_cascade_range 400 float 5 16 @@ -327,7 +333,8 @@ U e18e40c9 frag u_cloud_shadow 812 float 1 0 U e18e40c9 frag u_time 816 float 1 0 U e18e40c9 frag u_fog_inscatter 820 float 1 0 U e18e40c9 frag u_fog_desat 824 float 1 0 -U e18e40c9 frag u_sun_clip 828 float 1 0 +U e18e40c9 frag u_fog_wall 828 float 1 0 +U e18e40c9 frag u_sun_clip 832 float 1 0 T e18e40c9 u_brdf 2 T e18e40c9 u_irradiance 3 T e18e40c9 u_prefilter 4 @@ -336,7 +343,7 @@ T e18e40c9 u_sky 6 T e18e40c9 u_tershadow 7 T e18e40c9 u_ts_height 8 P 638623c2 fullscreen.vert ibl_prefilter.frag -B 638623c2 frag 1 840 +B 638623c2 frag 1 844 U 638623c2 frag u_cascade_vp 0 mat4 5 64 U 638623c2 frag u_cascade_split 320 float 5 16 U 638623c2 frag u_cascade_range 400 float 5 16 @@ -372,9 +379,10 @@ U 638623c2 frag u_cloud_shadow 812 float 1 0 U 638623c2 frag u_time 816 float 1 0 U 638623c2 frag u_fog_inscatter 820 float 1 0 U 638623c2 frag u_fog_desat 824 float 1 0 -U 638623c2 frag u_rough 828 float 1 0 -U 638623c2 frag u_sun_clip 832 float 1 0 -U 638623c2 frag u_sky_w 836 float 1 0 +U 638623c2 frag u_fog_wall 828 float 1 0 +U 638623c2 frag u_rough 832 float 1 0 +U 638623c2 frag u_sun_clip 836 float 1 0 +U 638623c2 frag u_sky_w 840 float 1 0 T 638623c2 u_brdf 2 T 638623c2 u_irradiance 3 T 638623c2 u_prefilter 4 @@ -419,6 +427,7 @@ U 4cf96468 frag u_cloud_shadow 812 float 1 0 U 4cf96468 frag u_time 816 float 1 0 U 4cf96468 frag u_fog_inscatter 820 float 1 0 U 4cf96468 frag u_fog_desat 824 float 1 0 +U 4cf96468 frag u_fog_wall 828 float 1 0 U 4cf96468 frag u_texel 832 vec2 1 0 U 4cf96468 frag u_amount 840 float 1 0 U 4cf96468 frag u_grain 844 float 1 0 @@ -467,6 +476,7 @@ U 428caa3a frag u_cloud_shadow 812 float 1 0 U 428caa3a frag u_time 816 float 1 0 U 428caa3a frag u_fog_inscatter 820 float 1 0 U 428caa3a frag u_fog_desat 824 float 1 0 +U 428caa3a frag u_fog_wall 828 float 1 0 U 428caa3a frag u_inv_vp 832 mat4 1 0 U 428caa3a frag u_sky_gain 896 float 1 0 U 428caa3a frag u_sky_sat 900 float 1 0 @@ -519,6 +529,7 @@ U 3e4b62f9 frag u_cloud_shadow 812 float 1 0 U 3e4b62f9 frag u_time 816 float 1 0 U 3e4b62f9 frag u_fog_inscatter 820 float 1 0 U 3e4b62f9 frag u_fog_desat 824 float 1 0 +U 3e4b62f9 frag u_fog_wall 828 float 1 0 U 3e4b62f9 frag u_texel 832 vec2 1 0 T 3e4b62f9 u_ao 2 T 3e4b62f9 u_brdf 3 @@ -565,6 +576,7 @@ U 676965ab frag u_cloud_shadow 812 float 1 0 U 676965ab frag u_time 816 float 1 0 U 676965ab frag u_fog_inscatter 820 float 1 0 U 676965ab frag u_fog_desat 824 float 1 0 +U 676965ab frag u_fog_wall 828 float 1 0 U 676965ab frag u_inv_proj 832 mat4 1 0 U 676965ab frag u_proj 896 mat4 1 0 U 676965ab frag u_texel 960 vec2 1 0 @@ -581,7 +593,7 @@ T 676965ab u_shadow 7 T 676965ab u_tershadow 8 T 676965ab u_ts_height 9 P a45356c7 fullscreen.vert ternormal.frag -B a45356c7 frag 1 832 +B a45356c7 frag 1 836 U a45356c7 frag u_cascade_vp 0 mat4 5 64 U a45356c7 frag u_cascade_split 320 float 5 16 U a45356c7 frag u_cascade_range 400 float 5 16 @@ -617,7 +629,8 @@ U a45356c7 frag u_cloud_shadow 812 float 1 0 U a45356c7 frag u_time 816 float 1 0 U a45356c7 frag u_fog_inscatter 820 float 1 0 U a45356c7 frag u_fog_desat 824 float 1 0 -U a45356c7 frag u_half 828 float 1 0 +U a45356c7 frag u_fog_wall 828 float 1 0 +U a45356c7 frag u_half 832 float 1 0 T a45356c7 u_brdf 2 T a45356c7 u_irradiance 3 T a45356c7 u_prefilter 4 @@ -626,7 +639,7 @@ T a45356c7 u_src 6 T a45356c7 u_tershadow 7 T a45356c7 u_ts_height 8 P 4a8e9f28 fullscreen.vert tershadow.frag #define NOISE_ONLY; -B 4a8e9f28 frag 1 844 +B 4a8e9f28 frag 1 860 U 4a8e9f28 frag u_cascade_vp 0 mat4 5 64 U 4a8e9f28 frag u_cascade_split 320 float 5 16 U 4a8e9f28 frag u_cascade_range 400 float 5 16 @@ -662,8 +675,9 @@ U 4a8e9f28 frag u_cloud_shadow 812 float 1 0 U 4a8e9f28 frag u_time 816 float 1 0 U 4a8e9f28 frag u_fog_inscatter 820 float 1 0 U 4a8e9f28 frag u_fog_desat 824 float 1 0 -U 4a8e9f28 frag u_half 828 float 1 0 -U 4a8e9f28 frag u_sun 832 vec3 1 0 +U 4a8e9f28 frag u_fog_wall 828 float 1 0 +U 4a8e9f28 frag u_half 832 float 1 0 +U 4a8e9f28 frag u_sun 848 vec3 1 0 T 4a8e9f28 u_brdf 2 T 4a8e9f28 u_height 3 T 4a8e9f28 u_irradiance 4 @@ -708,8 +722,9 @@ U 725523d9 frag u_cloud_shadow 812 float 1 0 U 725523d9 frag u_time 816 float 1 0 U 725523d9 frag u_fog_inscatter 820 float 1 0 U 725523d9 frag u_fog_desat 824 float 1 0 -U 725523d9 frag u_ao_strength 828 float 1 0 -U 725523d9 frag u_gi_strength 832 float 1 0 +U 725523d9 frag u_fog_wall 828 float 1 0 +U 725523d9 frag u_ao_strength 832 float 1 0 +U 725523d9 frag u_gi_strength 836 float 1 0 U 725523d9 frag u_wb 848 vec3 1 0 U 725523d9 frag u_lift 864 vec3 1 0 U 725523d9 frag u_gain 880 vec3 1 0 @@ -766,8 +781,9 @@ U a4683767 frag u_cloud_shadow 812 float 1 0 U a4683767 frag u_time 816 float 1 0 U a4683767 frag u_fog_inscatter 820 float 1 0 U a4683767 frag u_fog_desat 824 float 1 0 -U a4683767 frag u_ao_strength 828 float 1 0 -U a4683767 frag u_gi_strength 832 float 1 0 +U a4683767 frag u_fog_wall 828 float 1 0 +U a4683767 frag u_ao_strength 832 float 1 0 +U a4683767 frag u_gi_strength 836 float 1 0 U a4683767 frag u_wb 848 vec3 1 0 U a4683767 frag u_lift 864 vec3 1 0 U a4683767 frag u_gain 880 vec3 1 0 @@ -827,6 +843,7 @@ U 74258189 frag u_cloud_shadow 812 float 1 0 U 74258189 frag u_time 816 float 1 0 U 74258189 frag u_fog_inscatter 820 float 1 0 U 74258189 frag u_fog_desat 824 float 1 0 +U 74258189 frag u_fog_wall 828 float 1 0 U 74258189 frag u_inv_vp 832 mat4 1 0 U 74258189 frag u_vol_steps 896 float 1 0 U 74258189 frag u_vol_density 900 float 1 0 @@ -864,7 +881,7 @@ U d48d6a48 vert u_d0 4372 float 1 0 U d48d6a48 vert u_radius 4376 float 1 0 U d48d6a48 vert u_px 4380 float 1 0 U d48d6a48 vert u_dbg 4384 int 1 0 -B d48d6a48 frag 1 964 +B d48d6a48 frag 1 980 U d48d6a48 frag u_cascade_vp 0 mat4 5 64 U d48d6a48 frag u_cascade_split 320 float 5 16 U d48d6a48 frag u_cascade_range 400 float 5 16 @@ -900,15 +917,16 @@ U d48d6a48 frag u_cloud_shadow 812 float 1 0 U d48d6a48 frag u_time 816 float 1 0 U d48d6a48 frag u_fog_inscatter 820 float 1 0 U d48d6a48 frag u_fog_desat 824 float 1 0 -U d48d6a48 frag u_model_h 828 float 1 0 -U d48d6a48 frag u_view 832 mat4 1 0 -U d48d6a48 frag u_tint 896 vec3 1 0 -U d48d6a48 frag u_rough_scale 908 float 1 0 -U d48d6a48 frag u_emissive 912 float 1 0 -U d48d6a48 frag u_blade_base 928 vec3 1 0 -U d48d6a48 frag u_blade_tip 944 vec3 1 0 -U d48d6a48 frag u_blade_cols 956 float 1 0 -U d48d6a48 frag u_blade_tex_on 960 float 1 0 +U d48d6a48 frag u_fog_wall 828 float 1 0 +U d48d6a48 frag u_model_h 832 float 1 0 +U d48d6a48 frag u_view 848 mat4 1 0 +U d48d6a48 frag u_tint 912 vec3 1 0 +U d48d6a48 frag u_rough_scale 924 float 1 0 +U d48d6a48 frag u_emissive 928 float 1 0 +U d48d6a48 frag u_blade_base 944 vec3 1 0 +U d48d6a48 frag u_blade_tip 960 vec3 1 0 +U d48d6a48 frag u_blade_cols 972 float 1 0 +U d48d6a48 frag u_blade_tex_on 976 float 1 0 T d48d6a48 u_arm 2 T d48d6a48 u_blade_tex 3 T d48d6a48 u_brdf 4 @@ -947,7 +965,7 @@ U cb13f3c6 vert u_px 316 float 1 0 U cb13f3c6 vert u_dbg 320 int 1 0 I cb13f3c6 a_pos 0 vec3 I cb13f3c6 a_uv 2 vec2 -B cb13f3c6 frag 1 964 +B cb13f3c6 frag 1 980 U cb13f3c6 frag u_cascade_vp 0 mat4 5 64 U cb13f3c6 frag u_cascade_split 320 float 5 16 U cb13f3c6 frag u_cascade_range 400 float 5 16 @@ -983,15 +1001,16 @@ U cb13f3c6 frag u_cloud_shadow 812 float 1 0 U cb13f3c6 frag u_time 816 float 1 0 U cb13f3c6 frag u_fog_inscatter 820 float 1 0 U cb13f3c6 frag u_fog_desat 824 float 1 0 -U cb13f3c6 frag u_model_h 828 float 1 0 -U cb13f3c6 frag u_view 832 mat4 1 0 -U cb13f3c6 frag u_tint 896 vec3 1 0 -U cb13f3c6 frag u_rough_scale 908 float 1 0 -U cb13f3c6 frag u_emissive 912 float 1 0 -U cb13f3c6 frag u_blade_base 928 vec3 1 0 -U cb13f3c6 frag u_blade_tip 944 vec3 1 0 -U cb13f3c6 frag u_blade_cols 956 float 1 0 -U cb13f3c6 frag u_blade_tex_on 960 float 1 0 +U cb13f3c6 frag u_fog_wall 828 float 1 0 +U cb13f3c6 frag u_model_h 832 float 1 0 +U cb13f3c6 frag u_view 848 mat4 1 0 +U cb13f3c6 frag u_tint 912 vec3 1 0 +U cb13f3c6 frag u_rough_scale 924 float 1 0 +U cb13f3c6 frag u_emissive 928 float 1 0 +U cb13f3c6 frag u_blade_base 944 vec3 1 0 +U cb13f3c6 frag u_blade_tip 960 vec3 1 0 +U cb13f3c6 frag u_blade_cols 972 float 1 0 +U cb13f3c6 frag u_blade_tex_on 976 float 1 0 T cb13f3c6 u_arm 2 T cb13f3c6 u_blade_tex 3 T cb13f3c6 u_brdf 4 @@ -1031,7 +1050,7 @@ U b8cff226 vert u_px 4412 float 1 0 U b8cff226 vert u_dbg 4416 int 1 0 I b8cff226 a_pos 0 vec3 I b8cff226 a_uv 2 vec2 -B b8cff226 frag 1 964 +B b8cff226 frag 1 980 U b8cff226 frag u_cascade_vp 0 mat4 5 64 U b8cff226 frag u_cascade_split 320 float 5 16 U b8cff226 frag u_cascade_range 400 float 5 16 @@ -1067,15 +1086,16 @@ U b8cff226 frag u_cloud_shadow 812 float 1 0 U b8cff226 frag u_time 816 float 1 0 U b8cff226 frag u_fog_inscatter 820 float 1 0 U b8cff226 frag u_fog_desat 824 float 1 0 -U b8cff226 frag u_model_h 828 float 1 0 -U b8cff226 frag u_view 832 mat4 1 0 -U b8cff226 frag u_tint 896 vec3 1 0 -U b8cff226 frag u_rough_scale 908 float 1 0 -U b8cff226 frag u_emissive 912 float 1 0 -U b8cff226 frag u_blade_base 928 vec3 1 0 -U b8cff226 frag u_blade_tip 944 vec3 1 0 -U b8cff226 frag u_blade_cols 956 float 1 0 -U b8cff226 frag u_blade_tex_on 960 float 1 0 +U b8cff226 frag u_fog_wall 828 float 1 0 +U b8cff226 frag u_model_h 832 float 1 0 +U b8cff226 frag u_view 848 mat4 1 0 +U b8cff226 frag u_tint 912 vec3 1 0 +U b8cff226 frag u_rough_scale 924 float 1 0 +U b8cff226 frag u_emissive 928 float 1 0 +U b8cff226 frag u_blade_base 944 vec3 1 0 +U b8cff226 frag u_blade_tip 960 vec3 1 0 +U b8cff226 frag u_blade_cols 972 float 1 0 +U b8cff226 frag u_blade_tex_on 976 float 1 0 T b8cff226 u_arm 2 T b8cff226 u_blade_tex 3 T b8cff226 u_brdf 4 @@ -1138,6 +1158,7 @@ U 3733fc38 frag u_cloud_shadow 812 float 1 0 U 3733fc38 frag u_time 816 float 1 0 U 3733fc38 frag u_fog_inscatter 820 float 1 0 U 3733fc38 frag u_fog_desat 824 float 1 0 +U 3733fc38 frag u_fog_wall 828 float 1 0 U 3733fc38 frag u_view 832 mat4 1 0 U 3733fc38 frag u_tiles 896 float 1 0 U 3733fc38 frag u_tint 912 vec3 1 0 @@ -1200,6 +1221,7 @@ U 4d4fa91b frag u_cloud_shadow 812 float 1 0 U 4d4fa91b frag u_time 816 float 1 0 U 4d4fa91b frag u_fog_inscatter 820 float 1 0 U 4d4fa91b frag u_fog_desat 824 float 1 0 +U 4d4fa91b frag u_fog_wall 828 float 1 0 U 4d4fa91b frag u_view 832 mat4 1 0 U 4d4fa91b frag u_tiles 896 float 1 0 U 4d4fa91b frag u_tint 912 vec3 1 0 @@ -1231,7 +1253,7 @@ I 9dce3246 a_pos 0 vec3 I 9dce3246 i_pos 3 vec4 I 9dce3246 a_nrm 1 vec3 I 9dce3246 a_uv 2 vec2 -B 9dce3246 frag 0 828 +B 9dce3246 frag 0 832 U 9dce3246 frag u_cascade_vp 0 mat4 5 64 U 9dce3246 frag u_cascade_split 320 float 5 16 U 9dce3246 frag u_cascade_range 400 float 5 16 @@ -1267,6 +1289,7 @@ U 9dce3246 frag u_cloud_shadow 812 float 1 0 U 9dce3246 frag u_time 816 float 1 0 U 9dce3246 frag u_fog_inscatter 820 float 1 0 U 9dce3246 frag u_fog_desat 824 float 1 0 +U 9dce3246 frag u_fog_wall 828 float 1 0 T 9dce3246 u_arm 2 T 9dce3246 u_brdf 3 T 9dce3246 u_diff 4 @@ -1294,7 +1317,7 @@ I 439a2253 a_pos 0 vec3 I 439a2253 i_pos 3 vec4 I 439a2253 a_nrm 1 vec3 I 439a2253 a_uv 2 vec2 -B 439a2253 frag 0 828 +B 439a2253 frag 0 832 U 439a2253 frag u_cascade_vp 0 mat4 5 64 U 439a2253 frag u_cascade_split 320 float 5 16 U 439a2253 frag u_cascade_range 400 float 5 16 @@ -1330,6 +1353,7 @@ U 439a2253 frag u_cloud_shadow 812 float 1 0 U 439a2253 frag u_time 816 float 1 0 U 439a2253 frag u_fog_inscatter 820 float 1 0 U 439a2253 frag u_fog_desat 824 float 1 0 +U 439a2253 frag u_fog_wall 828 float 1 0 T 439a2253 u_arm 2 T 439a2253 u_brdf 3 T 439a2253 u_diff 4 @@ -1357,7 +1381,7 @@ I 86f427b0 a_pos 0 vec3 I 86f427b0 i_pos 3 vec4 I 86f427b0 a_nrm 1 vec3 I 86f427b0 a_uv 2 vec2 -B 86f427b0 frag 0 828 +B 86f427b0 frag 0 832 U 86f427b0 frag u_cascade_vp 0 mat4 5 64 U 86f427b0 frag u_cascade_split 320 float 5 16 U 86f427b0 frag u_cascade_range 400 float 5 16 @@ -1393,6 +1417,7 @@ U 86f427b0 frag u_cloud_shadow 812 float 1 0 U 86f427b0 frag u_time 816 float 1 0 U 86f427b0 frag u_fog_inscatter 820 float 1 0 U 86f427b0 frag u_fog_desat 824 float 1 0 +U 86f427b0 frag u_fog_wall 828 float 1 0 T 86f427b0 u_arm 2 T 86f427b0 u_brdf 3 T 86f427b0 u_diff 4 @@ -1420,7 +1445,7 @@ I bfa15301 a_pos 0 vec3 I bfa15301 i_pos 3 vec4 I bfa15301 a_nrm 1 vec3 I bfa15301 a_uv 2 vec2 -B bfa15301 frag 1 828 +B bfa15301 frag 1 832 U bfa15301 frag u_cascade_vp 0 mat4 5 64 U bfa15301 frag u_cascade_split 320 float 5 16 U bfa15301 frag u_cascade_range 400 float 5 16 @@ -1456,6 +1481,7 @@ U bfa15301 frag u_cloud_shadow 812 float 1 0 U bfa15301 frag u_time 816 float 1 0 U bfa15301 frag u_fog_inscatter 820 float 1 0 U bfa15301 frag u_fog_desat 824 float 1 0 +U bfa15301 frag u_fog_wall 828 float 1 0 T bfa15301 u_brdf 2 T bfa15301 u_diff 3 T bfa15301 u_irradiance 4 @@ -1482,7 +1508,7 @@ I 266d2401 a_pos 0 vec3 I 266d2401 i_pos 3 vec4 I 266d2401 a_nrm 1 vec3 I 266d2401 a_uv 2 vec2 -B 266d2401 frag 1 828 +B 266d2401 frag 1 832 U 266d2401 frag u_cascade_vp 0 mat4 5 64 U 266d2401 frag u_cascade_split 320 float 5 16 U 266d2401 frag u_cascade_range 400 float 5 16 @@ -1518,6 +1544,7 @@ U 266d2401 frag u_cloud_shadow 812 float 1 0 U 266d2401 frag u_time 816 float 1 0 U 266d2401 frag u_fog_inscatter 820 float 1 0 U 266d2401 frag u_fog_desat 824 float 1 0 +U 266d2401 frag u_fog_wall 828 float 1 0 T 266d2401 u_brdf 2 T 266d2401 u_diff 3 T 266d2401 u_irradiance 4 @@ -1544,7 +1571,7 @@ I 01089da8 a_pos 0 vec3 I 01089da8 i_pos 3 vec4 I 01089da8 a_nrm 1 vec3 I 01089da8 a_uv 2 vec2 -B 01089da8 frag 1 916 +B 01089da8 frag 1 932 U 01089da8 frag u_cascade_vp 0 mat4 5 64 U 01089da8 frag u_cascade_split 320 float 5 16 U 01089da8 frag u_cascade_range 400 float 5 16 @@ -1580,11 +1607,12 @@ U 01089da8 frag u_cloud_shadow 812 float 1 0 U 01089da8 frag u_time 816 float 1 0 U 01089da8 frag u_fog_inscatter 820 float 1 0 U 01089da8 frag u_fog_desat 824 float 1 0 -U 01089da8 frag u_model_h 828 float 1 0 -U 01089da8 frag u_view 832 mat4 1 0 -U 01089da8 frag u_tint 896 vec3 1 0 -U 01089da8 frag u_rough_scale 908 float 1 0 -U 01089da8 frag u_emissive 912 float 1 0 +U 01089da8 frag u_fog_wall 828 float 1 0 +U 01089da8 frag u_model_h 832 float 1 0 +U 01089da8 frag u_view 848 mat4 1 0 +U 01089da8 frag u_tint 912 vec3 1 0 +U 01089da8 frag u_rough_scale 924 float 1 0 +U 01089da8 frag u_emissive 928 float 1 0 T 01089da8 u_arm 2 T 01089da8 u_blade_tex 3 T 01089da8 u_brdf 4 @@ -1614,7 +1642,7 @@ I 254e7887 a_pos 0 vec3 I 254e7887 i_pos 3 vec4 I 254e7887 a_nrm 1 vec3 I 254e7887 a_uv 2 vec2 -B 254e7887 frag 1 920 +B 254e7887 frag 1 936 U 254e7887 frag u_cascade_vp 0 mat4 5 64 U 254e7887 frag u_cascade_split 320 float 5 16 U 254e7887 frag u_cascade_range 400 float 5 16 @@ -1650,12 +1678,13 @@ U 254e7887 frag u_cloud_shadow 812 float 1 0 U 254e7887 frag u_time 816 float 1 0 U 254e7887 frag u_fog_inscatter 820 float 1 0 U 254e7887 frag u_fog_desat 824 float 1 0 -U 254e7887 frag u_model_h 828 float 1 0 -U 254e7887 frag u_view 832 mat4 1 0 -U 254e7887 frag u_tint 896 vec3 1 0 -U 254e7887 frag u_rough_scale 908 float 1 0 -U 254e7887 frag u_emissive 912 float 1 0 -U 254e7887 frag u_cull 916 float 1 0 +U 254e7887 frag u_fog_wall 828 float 1 0 +U 254e7887 frag u_model_h 832 float 1 0 +U 254e7887 frag u_view 848 mat4 1 0 +U 254e7887 frag u_tint 912 vec3 1 0 +U 254e7887 frag u_rough_scale 924 float 1 0 +U 254e7887 frag u_emissive 928 float 1 0 +U 254e7887 frag u_cull 932 float 1 0 T 254e7887 u_arm 2 T 254e7887 u_blade_tex 3 T 254e7887 u_brdf 4 @@ -1685,7 +1714,7 @@ I 1ce5c5d1 a_pos 0 vec3 I 1ce5c5d1 i_pos 3 vec4 I 1ce5c5d1 a_nrm 1 vec3 I 1ce5c5d1 a_uv 2 vec2 -B 1ce5c5d1 frag 1 916 +B 1ce5c5d1 frag 1 932 U 1ce5c5d1 frag u_cascade_vp 0 mat4 5 64 U 1ce5c5d1 frag u_cascade_split 320 float 5 16 U 1ce5c5d1 frag u_cascade_range 400 float 5 16 @@ -1721,11 +1750,12 @@ U 1ce5c5d1 frag u_cloud_shadow 812 float 1 0 U 1ce5c5d1 frag u_time 816 float 1 0 U 1ce5c5d1 frag u_fog_inscatter 820 float 1 0 U 1ce5c5d1 frag u_fog_desat 824 float 1 0 -U 1ce5c5d1 frag u_model_h 828 float 1 0 -U 1ce5c5d1 frag u_view 832 mat4 1 0 -U 1ce5c5d1 frag u_tint 896 vec3 1 0 -U 1ce5c5d1 frag u_rough_scale 908 float 1 0 -U 1ce5c5d1 frag u_emissive 912 float 1 0 +U 1ce5c5d1 frag u_fog_wall 828 float 1 0 +U 1ce5c5d1 frag u_model_h 832 float 1 0 +U 1ce5c5d1 frag u_view 848 mat4 1 0 +U 1ce5c5d1 frag u_tint 912 vec3 1 0 +U 1ce5c5d1 frag u_rough_scale 924 float 1 0 +U 1ce5c5d1 frag u_emissive 928 float 1 0 T 1ce5c5d1 u_arm 2 T 1ce5c5d1 u_blade_tex 3 T 1ce5c5d1 u_brdf 4 @@ -1755,7 +1785,7 @@ I 5e70d731 a_pos 0 vec3 I 5e70d731 i_pos 3 vec4 I 5e70d731 a_nrm 1 vec3 I 5e70d731 a_uv 2 vec2 -B 5e70d731 frag 1 916 +B 5e70d731 frag 1 932 U 5e70d731 frag u_cascade_vp 0 mat4 5 64 U 5e70d731 frag u_cascade_split 320 float 5 16 U 5e70d731 frag u_cascade_range 400 float 5 16 @@ -1791,11 +1821,12 @@ U 5e70d731 frag u_cloud_shadow 812 float 1 0 U 5e70d731 frag u_time 816 float 1 0 U 5e70d731 frag u_fog_inscatter 820 float 1 0 U 5e70d731 frag u_fog_desat 824 float 1 0 -U 5e70d731 frag u_model_h 828 float 1 0 -U 5e70d731 frag u_view 832 mat4 1 0 -U 5e70d731 frag u_tint 896 vec3 1 0 -U 5e70d731 frag u_rough_scale 908 float 1 0 -U 5e70d731 frag u_emissive 912 float 1 0 +U 5e70d731 frag u_fog_wall 828 float 1 0 +U 5e70d731 frag u_model_h 832 float 1 0 +U 5e70d731 frag u_view 848 mat4 1 0 +U 5e70d731 frag u_tint 912 vec3 1 0 +U 5e70d731 frag u_rough_scale 924 float 1 0 +U 5e70d731 frag u_emissive 928 float 1 0 T 5e70d731 u_arm 2 T 5e70d731 u_blade_tex 3 T 5e70d731 u_brdf 4 @@ -1827,7 +1858,7 @@ I f4a2b586 a_pos 0 vec3 I f4a2b586 i_pos 3 vec4 I f4a2b586 a_nrm 1 vec3 I f4a2b586 a_uv 2 vec2 -B f4a2b586 frag 1 964 +B f4a2b586 frag 1 980 U f4a2b586 frag u_cascade_vp 0 mat4 5 64 U f4a2b586 frag u_cascade_split 320 float 5 16 U f4a2b586 frag u_cascade_range 400 float 5 16 @@ -1863,15 +1894,16 @@ U f4a2b586 frag u_cloud_shadow 812 float 1 0 U f4a2b586 frag u_time 816 float 1 0 U f4a2b586 frag u_fog_inscatter 820 float 1 0 U f4a2b586 frag u_fog_desat 824 float 1 0 -U f4a2b586 frag u_model_h 828 float 1 0 -U f4a2b586 frag u_view 832 mat4 1 0 -U f4a2b586 frag u_tint 896 vec3 1 0 -U f4a2b586 frag u_rough_scale 908 float 1 0 -U f4a2b586 frag u_emissive 912 float 1 0 -U f4a2b586 frag u_blade_base 928 vec3 1 0 -U f4a2b586 frag u_blade_tip 944 vec3 1 0 -U f4a2b586 frag u_blade_cols 956 float 1 0 -U f4a2b586 frag u_blade_tex_on 960 float 1 0 +U f4a2b586 frag u_fog_wall 828 float 1 0 +U f4a2b586 frag u_model_h 832 float 1 0 +U f4a2b586 frag u_view 848 mat4 1 0 +U f4a2b586 frag u_tint 912 vec3 1 0 +U f4a2b586 frag u_rough_scale 924 float 1 0 +U f4a2b586 frag u_emissive 928 float 1 0 +U f4a2b586 frag u_blade_base 944 vec3 1 0 +U f4a2b586 frag u_blade_tip 960 vec3 1 0 +U f4a2b586 frag u_blade_cols 972 float 1 0 +U f4a2b586 frag u_blade_tex_on 976 float 1 0 T f4a2b586 u_arm 2 T f4a2b586 u_blade_tex 3 T f4a2b586 u_brdf 4 @@ -1901,7 +1933,7 @@ I b4587cd4 a_pos 0 vec3 I b4587cd4 i_pos 3 vec4 I b4587cd4 a_nrm 1 vec3 I b4587cd4 a_uv 2 vec2 -B b4587cd4 frag 1 920 +B b4587cd4 frag 1 936 U b4587cd4 frag u_cascade_vp 0 mat4 5 64 U b4587cd4 frag u_cascade_split 320 float 5 16 U b4587cd4 frag u_cascade_range 400 float 5 16 @@ -1937,12 +1969,13 @@ U b4587cd4 frag u_cloud_shadow 812 float 1 0 U b4587cd4 frag u_time 816 float 1 0 U b4587cd4 frag u_fog_inscatter 820 float 1 0 U b4587cd4 frag u_fog_desat 824 float 1 0 -U b4587cd4 frag u_model_h 828 float 1 0 -U b4587cd4 frag u_view 832 mat4 1 0 -U b4587cd4 frag u_tint 896 vec3 1 0 -U b4587cd4 frag u_rough_scale 908 float 1 0 -U b4587cd4 frag u_emissive 912 float 1 0 -U b4587cd4 frag u_cull 916 float 1 0 +U b4587cd4 frag u_fog_wall 828 float 1 0 +U b4587cd4 frag u_model_h 832 float 1 0 +U b4587cd4 frag u_view 848 mat4 1 0 +U b4587cd4 frag u_tint 912 vec3 1 0 +U b4587cd4 frag u_rough_scale 924 float 1 0 +U b4587cd4 frag u_emissive 928 float 1 0 +U b4587cd4 frag u_cull 932 float 1 0 T b4587cd4 u_arm 2 T b4587cd4 u_blade_tex 3 T b4587cd4 u_brdf 4 @@ -1972,7 +2005,7 @@ I 4dda406a a_pos 0 vec3 I 4dda406a i_pos 3 vec4 I 4dda406a a_nrm 1 vec3 I 4dda406a a_uv 2 vec2 -B 4dda406a frag 1 916 +B 4dda406a frag 1 932 U 4dda406a frag u_cascade_vp 0 mat4 5 64 U 4dda406a frag u_cascade_split 320 float 5 16 U 4dda406a frag u_cascade_range 400 float 5 16 @@ -2008,11 +2041,12 @@ U 4dda406a frag u_cloud_shadow 812 float 1 0 U 4dda406a frag u_time 816 float 1 0 U 4dda406a frag u_fog_inscatter 820 float 1 0 U 4dda406a frag u_fog_desat 824 float 1 0 -U 4dda406a frag u_model_h 828 float 1 0 -U 4dda406a frag u_view 832 mat4 1 0 -U 4dda406a frag u_tint 896 vec3 1 0 -U 4dda406a frag u_rough_scale 908 float 1 0 -U 4dda406a frag u_emissive 912 float 1 0 +U 4dda406a frag u_fog_wall 828 float 1 0 +U 4dda406a frag u_model_h 832 float 1 0 +U 4dda406a frag u_view 848 mat4 1 0 +U 4dda406a frag u_tint 912 vec3 1 0 +U 4dda406a frag u_rough_scale 924 float 1 0 +U 4dda406a frag u_emissive 928 float 1 0 T 4dda406a u_arm 2 T 4dda406a u_blade_tex 3 T 4dda406a u_brdf 4 @@ -2042,7 +2076,7 @@ I b603a056 a_pos 0 vec3 I b603a056 i_pos 3 vec4 I b603a056 a_nrm 1 vec3 I b603a056 a_uv 2 vec2 -B b603a056 frag 1 916 +B b603a056 frag 1 932 U b603a056 frag u_cascade_vp 0 mat4 5 64 U b603a056 frag u_cascade_split 320 float 5 16 U b603a056 frag u_cascade_range 400 float 5 16 @@ -2078,11 +2112,12 @@ U b603a056 frag u_cloud_shadow 812 float 1 0 U b603a056 frag u_time 816 float 1 0 U b603a056 frag u_fog_inscatter 820 float 1 0 U b603a056 frag u_fog_desat 824 float 1 0 -U b603a056 frag u_model_h 828 float 1 0 -U b603a056 frag u_view 832 mat4 1 0 -U b603a056 frag u_tint 896 vec3 1 0 -U b603a056 frag u_rough_scale 908 float 1 0 -U b603a056 frag u_emissive 912 float 1 0 +U b603a056 frag u_fog_wall 828 float 1 0 +U b603a056 frag u_model_h 832 float 1 0 +U b603a056 frag u_view 848 mat4 1 0 +U b603a056 frag u_tint 912 vec3 1 0 +U b603a056 frag u_rough_scale 924 float 1 0 +U b603a056 frag u_emissive 928 float 1 0 T b603a056 u_arm 2 T b603a056 u_blade_tex 3 T b603a056 u_brdf 4 @@ -2112,7 +2147,7 @@ I 3b183d8f a_pos 0 vec3 I 3b183d8f i_pos 3 vec4 I 3b183d8f a_nrm 1 vec3 I 3b183d8f a_uv 2 vec2 -B 3b183d8f frag 1 916 +B 3b183d8f frag 1 932 U 3b183d8f frag u_cascade_vp 0 mat4 5 64 U 3b183d8f frag u_cascade_split 320 float 5 16 U 3b183d8f frag u_cascade_range 400 float 5 16 @@ -2148,11 +2183,12 @@ U 3b183d8f frag u_cloud_shadow 812 float 1 0 U 3b183d8f frag u_time 816 float 1 0 U 3b183d8f frag u_fog_inscatter 820 float 1 0 U 3b183d8f frag u_fog_desat 824 float 1 0 -U 3b183d8f frag u_model_h 828 float 1 0 -U 3b183d8f frag u_view 832 mat4 1 0 -U 3b183d8f frag u_tint 896 vec3 1 0 -U 3b183d8f frag u_rough_scale 908 float 1 0 -U 3b183d8f frag u_emissive 912 float 1 0 +U 3b183d8f frag u_fog_wall 828 float 1 0 +U 3b183d8f frag u_model_h 832 float 1 0 +U 3b183d8f frag u_view 848 mat4 1 0 +U 3b183d8f frag u_tint 912 vec3 1 0 +U 3b183d8f frag u_rough_scale 924 float 1 0 +U 3b183d8f frag u_emissive 928 float 1 0 T 3b183d8f u_arm 2 T 3b183d8f u_blade_tex 3 T 3b183d8f u_brdf 4 @@ -2182,7 +2218,7 @@ I 79b77ed9 a_pos 0 vec3 I 79b77ed9 i_pos 3 vec4 I 79b77ed9 a_nrm 1 vec3 I 79b77ed9 a_uv 2 vec2 -B 79b77ed9 frag 1 920 +B 79b77ed9 frag 1 936 U 79b77ed9 frag u_cascade_vp 0 mat4 5 64 U 79b77ed9 frag u_cascade_split 320 float 5 16 U 79b77ed9 frag u_cascade_range 400 float 5 16 @@ -2218,12 +2254,13 @@ U 79b77ed9 frag u_cloud_shadow 812 float 1 0 U 79b77ed9 frag u_time 816 float 1 0 U 79b77ed9 frag u_fog_inscatter 820 float 1 0 U 79b77ed9 frag u_fog_desat 824 float 1 0 -U 79b77ed9 frag u_model_h 828 float 1 0 -U 79b77ed9 frag u_view 832 mat4 1 0 -U 79b77ed9 frag u_tint 896 vec3 1 0 -U 79b77ed9 frag u_rough_scale 908 float 1 0 -U 79b77ed9 frag u_emissive 912 float 1 0 -U 79b77ed9 frag u_cull 916 float 1 0 +U 79b77ed9 frag u_fog_wall 828 float 1 0 +U 79b77ed9 frag u_model_h 832 float 1 0 +U 79b77ed9 frag u_view 848 mat4 1 0 +U 79b77ed9 frag u_tint 912 vec3 1 0 +U 79b77ed9 frag u_rough_scale 924 float 1 0 +U 79b77ed9 frag u_emissive 928 float 1 0 +U 79b77ed9 frag u_cull 932 float 1 0 T 79b77ed9 u_arm 2 T 79b77ed9 u_blade_tex 3 T 79b77ed9 u_brdf 4 @@ -2253,7 +2290,7 @@ I b9fc2041 a_pos 0 vec3 I b9fc2041 i_pos 3 vec4 I b9fc2041 a_nrm 1 vec3 I b9fc2041 a_uv 2 vec2 -B b9fc2041 frag 1 916 +B b9fc2041 frag 1 932 U b9fc2041 frag u_cascade_vp 0 mat4 5 64 U b9fc2041 frag u_cascade_split 320 float 5 16 U b9fc2041 frag u_cascade_range 400 float 5 16 @@ -2289,11 +2326,12 @@ U b9fc2041 frag u_cloud_shadow 812 float 1 0 U b9fc2041 frag u_time 816 float 1 0 U b9fc2041 frag u_fog_inscatter 820 float 1 0 U b9fc2041 frag u_fog_desat 824 float 1 0 -U b9fc2041 frag u_model_h 828 float 1 0 -U b9fc2041 frag u_view 832 mat4 1 0 -U b9fc2041 frag u_tint 896 vec3 1 0 -U b9fc2041 frag u_rough_scale 908 float 1 0 -U b9fc2041 frag u_emissive 912 float 1 0 +U b9fc2041 frag u_fog_wall 828 float 1 0 +U b9fc2041 frag u_model_h 832 float 1 0 +U b9fc2041 frag u_view 848 mat4 1 0 +U b9fc2041 frag u_tint 912 vec3 1 0 +U b9fc2041 frag u_rough_scale 924 float 1 0 +U b9fc2041 frag u_emissive 928 float 1 0 T b9fc2041 u_arm 2 T b9fc2041 u_blade_tex 3 T b9fc2041 u_brdf 4 @@ -2323,7 +2361,7 @@ I f34dce08 a_pos 0 vec3 I f34dce08 i_pos 3 vec4 I f34dce08 a_nrm 1 vec3 I f34dce08 a_uv 2 vec2 -B f34dce08 frag 0 828 +B f34dce08 frag 0 832 U f34dce08 frag u_cascade_vp 0 mat4 5 64 U f34dce08 frag u_cascade_split 320 float 5 16 U f34dce08 frag u_cascade_range 400 float 5 16 @@ -2359,6 +2397,7 @@ U f34dce08 frag u_cloud_shadow 812 float 1 0 U f34dce08 frag u_time 816 float 1 0 U f34dce08 frag u_fog_inscatter 820 float 1 0 U f34dce08 frag u_fog_desat 824 float 1 0 +U f34dce08 frag u_fog_wall 828 float 1 0 T f34dce08 u_brdf 2 T f34dce08 u_diff 3 T f34dce08 u_irradiance 4 @@ -2385,7 +2424,7 @@ I 512004a1 a_pos 0 vec3 I 512004a1 i_pos 3 vec4 I 512004a1 a_nrm 1 vec3 I 512004a1 a_uv 2 vec2 -B 512004a1 frag 0 828 +B 512004a1 frag 0 832 U 512004a1 frag u_cascade_vp 0 mat4 5 64 U 512004a1 frag u_cascade_split 320 float 5 16 U 512004a1 frag u_cascade_range 400 float 5 16 @@ -2421,6 +2460,7 @@ U 512004a1 frag u_cloud_shadow 812 float 1 0 U 512004a1 frag u_time 816 float 1 0 U 512004a1 frag u_fog_inscatter 820 float 1 0 U 512004a1 frag u_fog_desat 824 float 1 0 +U 512004a1 frag u_fog_wall 828 float 1 0 T 512004a1 u_brdf 2 T 512004a1 u_diff 3 T 512004a1 u_irradiance 4 @@ -2447,7 +2487,7 @@ I b964507f a_pos 0 vec3 I b964507f i_pos 3 vec4 I b964507f a_nrm 1 vec3 I b964507f a_uv 2 vec2 -B b964507f frag 0 828 +B b964507f frag 0 832 U b964507f frag u_cascade_vp 0 mat4 5 64 U b964507f frag u_cascade_split 320 float 5 16 U b964507f frag u_cascade_range 400 float 5 16 @@ -2483,6 +2523,7 @@ U b964507f frag u_cloud_shadow 812 float 1 0 U b964507f frag u_time 816 float 1 0 U b964507f frag u_fog_inscatter 820 float 1 0 U b964507f frag u_fog_desat 824 float 1 0 +U b964507f frag u_fog_wall 828 float 1 0 T b964507f u_brdf 2 T b964507f u_diff 3 T b964507f u_irradiance 4 @@ -2496,7 +2537,7 @@ U 1b654972 vert u_screen 0 vec2 1 0 I 1b654972 a_pos 0 vec2 I 1b654972 a_uv 1 vec2 I 1b654972 a_col 2 vec4 -B 1b654972 frag 0 828 +B 1b654972 frag 0 832 U 1b654972 frag u_cascade_vp 0 mat4 5 64 U 1b654972 frag u_cascade_split 320 float 5 16 U 1b654972 frag u_cascade_range 400 float 5 16 @@ -2532,6 +2573,7 @@ U 1b654972 frag u_cloud_shadow 812 float 1 0 U 1b654972 frag u_time 816 float 1 0 U 1b654972 frag u_fog_inscatter 820 float 1 0 U 1b654972 frag u_fog_desat 824 float 1 0 +U 1b654972 frag u_fog_wall 828 float 1 0 T 1b654972 u_brdf 2 T 1b654972 u_font 3 T 1b654972 u_irradiance 4 @@ -2546,7 +2588,7 @@ U e86f78e8 vert u_screen 0 vec2 1 0 I e86f78e8 a_pos 0 vec2 I e86f78e8 a_uv 1 vec2 I e86f78e8 a_col 2 vec4 -B e86f78e8 frag 1 836 +B e86f78e8 frag 1 840 U e86f78e8 frag u_cascade_vp 0 mat4 5 64 U e86f78e8 frag u_cascade_split 320 float 5 16 U e86f78e8 frag u_cascade_range 400 float 5 16 @@ -2582,8 +2624,9 @@ U e86f78e8 frag u_cloud_shadow 812 float 1 0 U e86f78e8 frag u_time 816 float 1 0 U e86f78e8 frag u_fog_inscatter 820 float 1 0 U e86f78e8 frag u_fog_desat 824 float 1 0 -U e86f78e8 frag u_hdr_paper 828 float 1 0 -U e86f78e8 frag u_hdr_scale 832 float 1 0 +U e86f78e8 frag u_fog_wall 828 float 1 0 +U e86f78e8 frag u_hdr_paper 832 float 1 0 +U e86f78e8 frag u_hdr_scale 836 float 1 0 T e86f78e8 u_brdf 2 T e86f78e8 u_font 3 T e86f78e8 u_irradiance 4 @@ -2605,7 +2648,7 @@ I 1fde9cd2 a_joints 5 vec4 I 1fde9cd2 a_pos 0 vec3 I 1fde9cd2 a_nrm 1 vec3 I 1fde9cd2 a_uv 2 vec2 -B 1fde9cd2 frag 1 916 +B 1fde9cd2 frag 1 932 U 1fde9cd2 frag u_cascade_vp 0 mat4 5 64 U 1fde9cd2 frag u_cascade_split 320 float 5 16 U 1fde9cd2 frag u_cascade_range 400 float 5 16 @@ -2641,11 +2684,12 @@ U 1fde9cd2 frag u_cloud_shadow 812 float 1 0 U 1fde9cd2 frag u_time 816 float 1 0 U 1fde9cd2 frag u_fog_inscatter 820 float 1 0 U 1fde9cd2 frag u_fog_desat 824 float 1 0 -U 1fde9cd2 frag u_model_h 828 float 1 0 -U 1fde9cd2 frag u_view 832 mat4 1 0 -U 1fde9cd2 frag u_tint 896 vec3 1 0 -U 1fde9cd2 frag u_rough_scale 908 float 1 0 -U 1fde9cd2 frag u_emissive 912 float 1 0 +U 1fde9cd2 frag u_fog_wall 828 float 1 0 +U 1fde9cd2 frag u_model_h 832 float 1 0 +U 1fde9cd2 frag u_view 848 mat4 1 0 +U 1fde9cd2 frag u_tint 912 vec3 1 0 +U 1fde9cd2 frag u_rough_scale 924 float 1 0 +U 1fde9cd2 frag u_emissive 928 float 1 0 T 1fde9cd2 u_arm 2 T 1fde9cd2 u_blade_tex 3 T 1fde9cd2 u_brdf 4 @@ -2669,7 +2713,7 @@ I a5ad521e a_joints 5 vec4 I a5ad521e a_pos 0 vec3 I a5ad521e a_nrm 1 vec3 I a5ad521e a_uv 2 vec2 -B a5ad521e frag 1 916 +B a5ad521e frag 1 932 U a5ad521e frag u_cascade_vp 0 mat4 5 64 U a5ad521e frag u_cascade_split 320 float 5 16 U a5ad521e frag u_cascade_range 400 float 5 16 @@ -2705,11 +2749,12 @@ U a5ad521e frag u_cloud_shadow 812 float 1 0 U a5ad521e frag u_time 816 float 1 0 U a5ad521e frag u_fog_inscatter 820 float 1 0 U a5ad521e frag u_fog_desat 824 float 1 0 -U a5ad521e frag u_model_h 828 float 1 0 -U a5ad521e frag u_view 832 mat4 1 0 -U a5ad521e frag u_tint 896 vec3 1 0 -U a5ad521e frag u_rough_scale 908 float 1 0 -U a5ad521e frag u_emissive 912 float 1 0 +U a5ad521e frag u_fog_wall 828 float 1 0 +U a5ad521e frag u_model_h 832 float 1 0 +U a5ad521e frag u_view 848 mat4 1 0 +U a5ad521e frag u_tint 912 vec3 1 0 +U a5ad521e frag u_rough_scale 924 float 1 0 +U a5ad521e frag u_emissive 928 float 1 0 T a5ad521e u_arm 2 T a5ad521e u_blade_tex 3 T a5ad521e u_brdf 4 @@ -2770,6 +2815,7 @@ U 9068df1c frag u_cloud_shadow 812 float 1 0 U 9068df1c frag u_time 816 float 1 0 U 9068df1c frag u_fog_inscatter 820 float 1 0 U 9068df1c frag u_fog_desat 824 float 1 0 +U 9068df1c frag u_fog_wall 828 float 1 0 U 9068df1c frag u_outline_col 832 vec3 1 0 T 9068df1c u_brdf 2 T 9068df1c u_diff 3 @@ -2828,6 +2874,7 @@ U e9b6300c frag u_cloud_shadow 812 float 1 0 U e9b6300c frag u_time 816 float 1 0 U e9b6300c frag u_fog_inscatter 820 float 1 0 U e9b6300c frag u_fog_desat 824 float 1 0 +U e9b6300c frag u_fog_wall 828 float 1 0 U e9b6300c frag u_outline_col 832 vec3 1 0 T e9b6300c u_brdf 2 T e9b6300c u_diff 3 @@ -2849,7 +2896,7 @@ I b79a1f4e a_joints 5 vec4 I b79a1f4e a_pos 0 vec3 I b79a1f4e a_nrm 1 vec3 I b79a1f4e a_uv 2 vec2 -B b79a1f4e frag 0 828 +B b79a1f4e frag 0 832 U b79a1f4e frag u_cascade_vp 0 mat4 5 64 U b79a1f4e frag u_cascade_split 320 float 5 16 U b79a1f4e frag u_cascade_range 400 float 5 16 @@ -2885,6 +2932,7 @@ U b79a1f4e frag u_cloud_shadow 812 float 1 0 U b79a1f4e frag u_time 816 float 1 0 U b79a1f4e frag u_fog_inscatter 820 float 1 0 U b79a1f4e frag u_fog_desat 824 float 1 0 +U b79a1f4e frag u_fog_wall 828 float 1 0 T b79a1f4e u_brdf 2 T b79a1f4e u_diff 3 T b79a1f4e u_irradiance 4 @@ -2905,7 +2953,7 @@ I a64015f2 a_joints 5 vec4 I a64015f2 a_pos 0 vec3 I a64015f2 a_nrm 1 vec3 I a64015f2 a_uv 2 vec2 -B a64015f2 frag 0 828 +B a64015f2 frag 0 832 U a64015f2 frag u_cascade_vp 0 mat4 5 64 U a64015f2 frag u_cascade_split 320 float 5 16 U a64015f2 frag u_cascade_range 400 float 5 16 @@ -2941,6 +2989,7 @@ U a64015f2 frag u_cloud_shadow 812 float 1 0 U a64015f2 frag u_time 816 float 1 0 U a64015f2 frag u_fog_inscatter 820 float 1 0 U a64015f2 frag u_fog_desat 824 float 1 0 +U a64015f2 frag u_fog_wall 828 float 1 0 T a64015f2 u_brdf 2 T a64015f2 u_diff 3 T a64015f2 u_irradiance 4 @@ -2995,14 +3044,15 @@ U 2e2908c8 frag u_cloud_shadow 812 float 1 0 U 2e2908c8 frag u_time 816 float 1 0 U 2e2908c8 frag u_fog_inscatter 820 float 1 0 U 2e2908c8 frag u_fog_desat 824 float 1 0 -U 2e2908c8 frag u_half 828 float 1 0 -U 2e2908c8 frag u_texel 832 float 1 0 -U 2e2908c8 frag u_ortho_on 836 float 1 0 -U 2e2908c8 frag u_carpet_on 840 float 1 0 -U 2e2908c8 frag u_snow_line 844 float 1 0 -U 2e2908c8 frag u_lake_level 848 float 1 0 -U 2e2908c8 frag u_wet 852 float 1 0 -U 2e2908c8 frag u_sea_level 856 float 1 0 +U 2e2908c8 frag u_fog_wall 828 float 1 0 +U 2e2908c8 frag u_half 832 float 1 0 +U 2e2908c8 frag u_texel 836 float 1 0 +U 2e2908c8 frag u_ortho_on 840 float 1 0 +U 2e2908c8 frag u_carpet_on 844 float 1 0 +U 2e2908c8 frag u_snow_line 848 float 1 0 +U 2e2908c8 frag u_lake_level 852 float 1 0 +U 2e2908c8 frag u_wet 856 float 1 0 +U 2e2908c8 frag u_sea_level 860 float 1 0 U 2e2908c8 frag u_lake 864 vec4 1 0 U 2e2908c8 frag u_origin 880 vec2 1 0 U 2e2908c8 frag u_view 896 mat4 1 0 @@ -3073,14 +3123,15 @@ U 1f95f31b frag u_cloud_shadow 812 float 1 0 U 1f95f31b frag u_time 816 float 1 0 U 1f95f31b frag u_fog_inscatter 820 float 1 0 U 1f95f31b frag u_fog_desat 824 float 1 0 -U 1f95f31b frag u_half 828 float 1 0 -U 1f95f31b frag u_texel 832 float 1 0 -U 1f95f31b frag u_ortho_on 836 float 1 0 -U 1f95f31b frag u_carpet_on 840 float 1 0 -U 1f95f31b frag u_snow_line 844 float 1 0 -U 1f95f31b frag u_lake_level 848 float 1 0 -U 1f95f31b frag u_wet 852 float 1 0 -U 1f95f31b frag u_sea_level 856 float 1 0 +U 1f95f31b frag u_fog_wall 828 float 1 0 +U 1f95f31b frag u_half 832 float 1 0 +U 1f95f31b frag u_texel 836 float 1 0 +U 1f95f31b frag u_ortho_on 840 float 1 0 +U 1f95f31b frag u_carpet_on 844 float 1 0 +U 1f95f31b frag u_snow_line 848 float 1 0 +U 1f95f31b frag u_lake_level 852 float 1 0 +U 1f95f31b frag u_wet 856 float 1 0 +U 1f95f31b frag u_sea_level 860 float 1 0 U 1f95f31b frag u_lake 864 vec4 1 0 U 1f95f31b frag u_origin 880 vec2 1 0 U 1f95f31b frag u_view 896 mat4 1 0 @@ -3151,14 +3202,15 @@ U f4382918 frag u_cloud_shadow 812 float 1 0 U f4382918 frag u_time 816 float 1 0 U f4382918 frag u_fog_inscatter 820 float 1 0 U f4382918 frag u_fog_desat 824 float 1 0 -U f4382918 frag u_half 828 float 1 0 -U f4382918 frag u_texel 832 float 1 0 -U f4382918 frag u_ortho_on 836 float 1 0 -U f4382918 frag u_carpet_on 840 float 1 0 -U f4382918 frag u_snow_line 844 float 1 0 -U f4382918 frag u_lake_level 848 float 1 0 -U f4382918 frag u_wet 852 float 1 0 -U f4382918 frag u_sea_level 856 float 1 0 +U f4382918 frag u_fog_wall 828 float 1 0 +U f4382918 frag u_half 832 float 1 0 +U f4382918 frag u_texel 836 float 1 0 +U f4382918 frag u_ortho_on 840 float 1 0 +U f4382918 frag u_carpet_on 844 float 1 0 +U f4382918 frag u_snow_line 848 float 1 0 +U f4382918 frag u_lake_level 852 float 1 0 +U f4382918 frag u_wet 856 float 1 0 +U f4382918 frag u_sea_level 860 float 1 0 U f4382918 frag u_lake 864 vec4 1 0 U f4382918 frag u_origin 880 vec2 1 0 U f4382918 frag u_view 896 mat4 1 0 @@ -3229,14 +3281,15 @@ U f2952361 frag u_cloud_shadow 812 float 1 0 U f2952361 frag u_time 816 float 1 0 U f2952361 frag u_fog_inscatter 820 float 1 0 U f2952361 frag u_fog_desat 824 float 1 0 -U f2952361 frag u_half 828 float 1 0 -U f2952361 frag u_texel 832 float 1 0 -U f2952361 frag u_ortho_on 836 float 1 0 -U f2952361 frag u_carpet_on 840 float 1 0 -U f2952361 frag u_snow_line 844 float 1 0 -U f2952361 frag u_lake_level 848 float 1 0 -U f2952361 frag u_wet 852 float 1 0 -U f2952361 frag u_sea_level 856 float 1 0 +U f2952361 frag u_fog_wall 828 float 1 0 +U f2952361 frag u_half 832 float 1 0 +U f2952361 frag u_texel 836 float 1 0 +U f2952361 frag u_ortho_on 840 float 1 0 +U f2952361 frag u_carpet_on 844 float 1 0 +U f2952361 frag u_snow_line 848 float 1 0 +U f2952361 frag u_lake_level 852 float 1 0 +U f2952361 frag u_wet 856 float 1 0 +U f2952361 frag u_sea_level 860 float 1 0 U f2952361 frag u_lake 864 vec4 1 0 U f2952361 frag u_origin 880 vec2 1 0 U f2952361 frag u_view 896 mat4 1 0 @@ -3307,14 +3360,15 @@ U a0f2dbac frag u_cloud_shadow 812 float 1 0 U a0f2dbac frag u_time 816 float 1 0 U a0f2dbac frag u_fog_inscatter 820 float 1 0 U a0f2dbac frag u_fog_desat 824 float 1 0 -U a0f2dbac frag u_half 828 float 1 0 -U a0f2dbac frag u_texel 832 float 1 0 -U a0f2dbac frag u_ortho_on 836 float 1 0 -U a0f2dbac frag u_carpet_on 840 float 1 0 -U a0f2dbac frag u_snow_line 844 float 1 0 -U a0f2dbac frag u_lake_level 848 float 1 0 -U a0f2dbac frag u_wet 852 float 1 0 -U a0f2dbac frag u_sea_level 856 float 1 0 +U a0f2dbac frag u_fog_wall 828 float 1 0 +U a0f2dbac frag u_half 832 float 1 0 +U a0f2dbac frag u_texel 836 float 1 0 +U a0f2dbac frag u_ortho_on 840 float 1 0 +U a0f2dbac frag u_carpet_on 844 float 1 0 +U a0f2dbac frag u_snow_line 848 float 1 0 +U a0f2dbac frag u_lake_level 852 float 1 0 +U a0f2dbac frag u_wet 856 float 1 0 +U a0f2dbac frag u_sea_level 860 float 1 0 U a0f2dbac frag u_lake 864 vec4 1 0 U a0f2dbac frag u_origin 880 vec2 1 0 U a0f2dbac frag u_view 896 mat4 1 0 @@ -3385,14 +3439,15 @@ U 5e4589a1 frag u_cloud_shadow 812 float 1 0 U 5e4589a1 frag u_time 816 float 1 0 U 5e4589a1 frag u_fog_inscatter 820 float 1 0 U 5e4589a1 frag u_fog_desat 824 float 1 0 -U 5e4589a1 frag u_half 828 float 1 0 -U 5e4589a1 frag u_texel 832 float 1 0 -U 5e4589a1 frag u_ortho_on 836 float 1 0 -U 5e4589a1 frag u_carpet_on 840 float 1 0 -U 5e4589a1 frag u_snow_line 844 float 1 0 -U 5e4589a1 frag u_lake_level 848 float 1 0 -U 5e4589a1 frag u_wet 852 float 1 0 -U 5e4589a1 frag u_sea_level 856 float 1 0 +U 5e4589a1 frag u_fog_wall 828 float 1 0 +U 5e4589a1 frag u_half 832 float 1 0 +U 5e4589a1 frag u_texel 836 float 1 0 +U 5e4589a1 frag u_ortho_on 840 float 1 0 +U 5e4589a1 frag u_carpet_on 844 float 1 0 +U 5e4589a1 frag u_snow_line 848 float 1 0 +U 5e4589a1 frag u_lake_level 852 float 1 0 +U 5e4589a1 frag u_wet 856 float 1 0 +U 5e4589a1 frag u_sea_level 860 float 1 0 U 5e4589a1 frag u_lake 864 vec4 1 0 U 5e4589a1 frag u_origin 880 vec2 1 0 U 5e4589a1 frag u_view 896 mat4 1 0 @@ -3463,6 +3518,7 @@ U bf3151c8 frag u_cloud_shadow 812 float 1 0 U bf3151c8 frag u_time 816 float 1 0 U bf3151c8 frag u_fog_inscatter 820 float 1 0 U bf3151c8 frag u_fog_desat 824 float 1 0 +U bf3151c8 frag u_fog_wall 828 float 1 0 U bf3151c8 frag u_view 832 mat4 1 0 U bf3151c8 frag u_far_split 896 float 1 0 U bf3151c8 frag u_far_band 900 float 1 0 @@ -3518,6 +3574,7 @@ U 46e2325c frag u_cloud_shadow 812 float 1 0 U 46e2325c frag u_time 816 float 1 0 U 46e2325c frag u_fog_inscatter 820 float 1 0 U 46e2325c frag u_fog_desat 824 float 1 0 +U 46e2325c frag u_fog_wall 828 float 1 0 U 46e2325c frag u_view 832 mat4 1 0 U 46e2325c frag u_wade 896 vec3 1 0 U 46e2325c frag u_inv_vp 912 mat4 1 0 @@ -3549,7 +3606,7 @@ I b20fdcb5 i_ground 6 vec4 I b20fdcb5 a_pos 0 vec3 I b20fdcb5 i_tint 5 vec4 I b20fdcb5 a_uv 2 vec2 -B b20fdcb5 frag 1 964 +B b20fdcb5 frag 1 980 U b20fdcb5 frag u_cascade_vp 0 mat4 5 64 U b20fdcb5 frag u_cascade_split 320 float 5 16 U b20fdcb5 frag u_cascade_range 400 float 5 16 @@ -3585,15 +3642,16 @@ U b20fdcb5 frag u_cloud_shadow 812 float 1 0 U b20fdcb5 frag u_time 816 float 1 0 U b20fdcb5 frag u_fog_inscatter 820 float 1 0 U b20fdcb5 frag u_fog_desat 824 float 1 0 -U b20fdcb5 frag u_model_h 828 float 1 0 -U b20fdcb5 frag u_view 832 mat4 1 0 -U b20fdcb5 frag u_tint 896 vec3 1 0 -U b20fdcb5 frag u_rough_scale 908 float 1 0 -U b20fdcb5 frag u_emissive 912 float 1 0 -U b20fdcb5 frag u_blade_base 928 vec3 1 0 -U b20fdcb5 frag u_blade_tip 944 vec3 1 0 -U b20fdcb5 frag u_blade_cols 956 float 1 0 -U b20fdcb5 frag u_blade_tex_on 960 float 1 0 +U b20fdcb5 frag u_fog_wall 828 float 1 0 +U b20fdcb5 frag u_model_h 832 float 1 0 +U b20fdcb5 frag u_view 848 mat4 1 0 +U b20fdcb5 frag u_tint 912 vec3 1 0 +U b20fdcb5 frag u_rough_scale 924 float 1 0 +U b20fdcb5 frag u_emissive 928 float 1 0 +U b20fdcb5 frag u_blade_base 944 vec3 1 0 +U b20fdcb5 frag u_blade_tip 960 vec3 1 0 +U b20fdcb5 frag u_blade_cols 972 float 1 0 +U b20fdcb5 frag u_blade_tex_on 976 float 1 0 T b20fdcb5 u_arm 2 T b20fdcb5 u_blade_tex 3 T b20fdcb5 u_brdf 4 diff --git a/packages/ludic.render3d/shadow.ludic b/packages/ludic.render3d/shadow.ludic index 8c1e2d92..ddbd024a 100644 --- a/packages/ludic.render3d/shadow.ludic +++ b/packages/ludic.render3d/shadow.ludic @@ -142,17 +142,22 @@ function shadow_pass(render3d_st: mut Render3dState) -> void { gpu_depth_func(render3d_st, GL_LESS) gpu_depth_bias(render3d_st, 2.0, 4.0) gpu_cull(render3d_st, false) + # a fog wall: a cascade reaches no further than it, and one that begins past it is only cleared + let wall = r3d_reach(render3d_st, 0.0) for c in 0 .. SHADOW_CASCADES { render3d_st.sh_cascade = c - shadow_fit(render3d_st, c, near, render3d_st.sh_split[c]) + var far = render3d_st.sh_split[c] + if wall > 0.0 and far > wall { far = Math.max(wall, near + 1.0) } + shadow_fit(render3d_st, c, near, far) prof_cpu_mark(render3d_st, "shadow fit") + let past = wall > 0.0 and near >= wall near = render3d_st.sh_split[c] gpu_fb_depth_layer(render3d_st, render3d_st.sh_tex, c) if render3d_st.r3d_debug and c == 0 { shadow_debug_fbo(render3d_st) } gpu_clear(render3d_st, GL_DEPTH_BUFFER_BIT) let vp = shadow_cascade_vp(render3d_st, c) # shadows off (a video setting): the cascades stay cleared, so everything reads lit - if render3d_st.sh_enabled { + if render3d_st.sh_enabled and not past { if not render3d_st.sh_skip_terrain { terrain_draw_shadow(vp) } r3d_scene_casters(render3d_st, vp) } diff --git a/packages/ludic.render3d/streamline.ludic b/packages/ludic.render3d/streamline.ludic index 5df5d7d6..b136e2cc 100644 --- a/packages/ludic.render3d/streamline.ludic +++ b/packages/ludic.render3d/streamline.ludic @@ -358,7 +358,7 @@ function gsl_constants(render3d_st: mut Render3dState) -> void { let fix = m4_new(); let proj = m4_new(); let v2c = m4_new(); let c2v = m4_new() let cur = m4_new(); let prev = m4_new(); let inv_cur = m4_new(); let c2p = m4_new(); let p2c = m4_new() gsl_clip_fix(fix) - m4_perspective(proj, render3d_st.cam_fov, render3d_st.cam_aspect, render3d_st.cam_near, render3d_st.cam_far) + m4_perspective(proj, render3d_st.cam_fov, render3d_st.cam_aspect, render3d_st.cam_near, r3d_reach(render3d_st, render3d_st.cam_far)) m4_mul(v2c, fix, proj) m4_inverse(c2v, v2c) gsl_put_m4(k, 32, v2c) # cameraViewToClip (no jitter) @@ -393,7 +393,7 @@ function gsl_constants(render3d_st: mut Render3dState) -> void { gsl_put_v3(k, 400, render3d_st.cam_right) gsl_put_v3(k, 412, render3d_st.cam_fwd) Vk.put_i32(k, 424, float_bits(render3d_st.cam_near)) - Vk.put_i32(k, 428, float_bits(render3d_st.cam_far)) + Vk.put_i32(k, 428, float_bits(r3d_reach(render3d_st, render3d_st.cam_far))) Vk.put_i32(k, 432, float_bits(render3d_st.cam_fov)) Vk.put_i32(k, 436, float_bits(render3d_st.cam_aspect)) Vk.put_i32(k, 440, float_bits(0.0)) # motionVectorsInvalidValue