From ab6f31001308e2d14a22b6708d74a68fb7ce3f75 Mon Sep 17 00:00:00 2001 From: Orkuncakilkaya Date: Sat, 19 Sep 2026 21:13:42 +0300 Subject: [PATCH] feat(render3d): an aspen quakes, and a tree is no longer bent like a bow layer_flutter(l, v) gives a scatter layer a per-leaf tremble. The vertex stage offsets each leaf by a phase taken from its own place on the card, so neighbouring leaves are never in step, and writes the result out as a varying the fragment stage uses to flash the leaf's pale underside as it turns - which is the part that reads, since a still frame of a tremble is a still frame of nothing. One uniform, one varying, no extra pass. And the sway itself was measured in METRES: hgt * hgt * 0.35 is right for a 40 cm flower and puts ten metres of sideways into a 14 m trunk, so every tall tree in the valley stood bent over like a fishing rod. It is a fraction of the model's own height now - the tip moves a few per cent of the tree whatever the tree is, and the base does not move at all. Co-Authored-By: Claude Opus 5 --- changes/an-aspen-quakes.md | 15 ++++++ packages/ludic.render3d/scatter.ludic | 10 ++++ packages/ludic.render3d/shaders/grass.mesh | 2 + packages/ludic.render3d/shaders/grass.vert | 4 +- packages/ludic.render3d/shaders/model.frag | 6 +++ packages/ludic.render3d/shaders/model.vert | 31 ++++++++++- packages/ludic.render3d/shaders/skin.vert | 2 + .../shaders/spv/01089da8.frag.spv | Bin 41492 -> 42148 bytes .../shaders/spv/01089da8.vert.spv | Bin 9680 -> 9792 bytes .../shaders/spv/1ce5c5d1.frag.spv | Bin 45060 -> 45684 bytes .../shaders/spv/1ce5c5d1.vert.spv | Bin 12992 -> 15828 bytes .../shaders/spv/1fde9cd2.frag.spv | Bin 41492 -> 42148 bytes .../shaders/spv/1fde9cd2.vert.spv | Bin 5196 -> 5260 bytes .../shaders/spv/254e7887.frag.spv | Bin 38772 -> 39444 bytes .../shaders/spv/254e7887.vert.spv | Bin 10024 -> 10136 bytes .../shaders/spv/3b183d8f.frag.spv | Bin 43812 -> 44404 bytes .../shaders/spv/3b183d8f.vert.spv | Bin 12992 -> 15828 bytes .../shaders/spv/439a2253.vert.spv | Bin 10024 -> 10136 bytes .../shaders/spv/4dda406a.frag.spv | Bin 44264 -> 44888 bytes .../shaders/spv/4dda406a.vert.spv | Bin 12992 -> 15828 bytes .../shaders/spv/512004a1.vert.spv | Bin 12936 -> 15772 bytes .../shaders/spv/79b77ed9.frag.spv | Bin 43884 -> 44040 bytes .../shaders/spv/79b77ed9.vert.spv | Bin 13280 -> 16116 bytes .../shaders/spv/7ed7de52.frag.spv | Bin 48116 -> 48724 bytes .../shaders/spv/7ed7de52.vert.spv | Bin 26708 -> 26784 bytes .../shaders/spv/7f096322.frag.spv | Bin 48116 -> 48724 bytes .../shaders/spv/7f096322.vert.spv | Bin 27040 -> 27116 bytes .../shaders/spv/86f427b0.vert.spv | Bin 9680 -> 9792 bytes .../shaders/spv/9068df1c.vert.spv | Bin 5812 -> 5876 bytes .../shaders/spv/9dce3246.vert.spv | Bin 9680 -> 9792 bytes .../shaders/spv/a5ad521e.frag.spv | Bin 42164 -> 42804 bytes .../shaders/spv/a5ad521e.vert.spv | Bin 5196 -> 5260 bytes .../shaders/spv/a64015f2.vert.spv | Bin 5124 -> 5188 bytes .../shaders/spv/b4587cd4.frag.spv | Bin 50936 -> 51560 bytes .../shaders/spv/b4587cd4.vert.spv | Bin 13336 -> 16172 bytes .../shaders/spv/b79a1f4e.vert.spv | Bin 5124 -> 5188 bytes .../shaders/spv/b964507f.vert.spv | Bin 12936 -> 15772 bytes .../shaders/spv/b9fc2041.frag.spv | Bin 41492 -> 42148 bytes .../shaders/spv/b9fc2041.vert.spv | Bin 12992 -> 15828 bytes .../shaders/spv/bfa15301.vert.spv | Bin 12992 -> 15828 bytes .../shaders/spv/d48d6a48.frag.spv | Bin 48116 -> 48724 bytes .../shaders/spv/d48d6a48.vert.spv | Bin 27312 -> 27412 bytes .../shaders/spv/e9b6300c.vert.spv | Bin 5812 -> 5876 bytes .../shaders/spv/f34dce08.vert.spv | Bin 9624 -> 9736 bytes .../shaders/spv/f4a2b586.frag.spv | Bin 48116 -> 48724 bytes .../shaders/spv/f4a2b586.vert.spv | Bin 14008 -> 16844 bytes .../ludic.render3d/shaders/spv/manifest.txt | 48 ++++++++++++------ 47 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 changes/an-aspen-quakes.md diff --git a/changes/an-aspen-quakes.md b/changes/an-aspen-quakes.md new file mode 100644 index 00000000..9bb85168 --- /dev/null +++ b/changes/an-aspen-quakes.md @@ -0,0 +1,15 @@ +bump: minor +type: feat +An aspen leaf hangs on a flattened stalk and turns in air a spruce never feels, and the +kit had no way to say so. `layer_flutter(l, v)` gives a scatter layer a per-leaf tremble: +the vertex stage offsets each leaf by a phase taken from its own place on the card, so +neighbouring leaves are never in step, and writes the result out as a varying the +fragment stage uses to flash the leaf's pale underside as it turns. The flash is the part +that reads - a still frame of a tremble is a still frame of nothing. One uniform, one +varying, no extra pass, and every other layer leaves it at zero. + +Also fixes the sway itself, which was measured in METRES: `hgt * hgt * 0.35` is right for +a 40 cm flower and puts ten metres of sideways into a 14 m trunk, so every tall tree in +the valley stood bent over like a fishing rod. It is a fraction of the model's own height +now, so the tip moves a few per cent of the tree whatever the tree is and the base does +not move at all. diff --git a/packages/ludic.render3d/scatter.ludic b/packages/ludic.render3d/scatter.ludic index ed908ff9..551c88a1 100644 --- a/packages/ludic.render3d/scatter.ludic +++ b/packages/ludic.render3d/scatter.ludic @@ -19,6 +19,7 @@ property Layer { imp: Impostor, foliage: bool = false, wind: int = 0, # float bits + flutter: int = 0, # float bits; per-leaf tremble (aspen), 0 = none tint: words, inst: words, # INST_FLOATS per instance count: int = 0, @@ -128,6 +129,11 @@ function model_cross_card() -> Model { } # A card layer: crossed cards carrying a single-tile atlas baked from `scan`. +# An aspen leaf hangs on a flattened stalk and turns in air nothing else feels. Give the +# layer a flutter and its leaves tremble and flash their pale undersides; everything else +# leaves it at zero. It is per layer rather than per instance because a species quakes or +# it does not. +function layer_flutter(l: Layer, v: int) -> void { l.flutter = v } function layer_cards(scan: Model, cap: int, wind: int, cull: int) -> Layer { let l = layer_new(model_cross_card(), cap, true, wind, F_ZERO, cull) l.card = true @@ -473,6 +479,7 @@ function impostor_bake(model: Model, tiles: int, tw: int, th: int) -> Impostor { u_mat4(gpu_uniform(bake, "u_view"), view) u_mat4(gpu_uniform(bake, "u_proj"), proj) u_f(gpu_uniform(bake, "u_wind"), F_ZERO) + u_f(gpu_uniform(bake, "u_flutter"), F_ZERO) gpu_viewport(t * tw, 0, tw, th) for i in 0 .. len(model.prims) { let pr = model.prims[i] @@ -1032,6 +1039,7 @@ function layer_draw_model(l: Layer, model: Model, vb: int, cnt: int, card: bool, if l.grounded { terrain_bind_height(p) } u_f(gpu_uniform(p, "u_time"), r3d_time) u_f(gpu_uniform(p, "u_wind"), l.wind) + u_f(gpu_uniform(p, "u_flutter"), l.flutter) var mh = F_ZERO if not card and l.foliage { mh = model.height } u_f(gpu_uniform(p, "u_model_h"), mh) @@ -1154,6 +1162,7 @@ function layer_draw_depth(l: Layer, model: Model, vb: int, cnt: int) -> void { if l.grounded { terrain_bind_height(p) } u_f(gpu_uniform(p, "u_time"), r3d_time) u_f(gpu_uniform(p, "u_wind"), l.wind) + u_f(gpu_uniform(p, "u_flutter"), l.flutter) u_f(gpu_uniform(p, "u_model_h"), model.height) u_mat4(gpu_uniform(p, "u_view"), cam_view) u_mat4(gpu_uniform(p, "u_proj"), cam_proj) @@ -1298,6 +1307,7 @@ function carpet_bake(layers: []Layer, count: int, tile: int, res: int) -> int { u_mat4(gpu_uniform(bake, "u_view"), view) u_mat4(gpu_uniform(bake, "u_proj"), proj) u_f(gpu_uniform(bake, "u_wind"), F_ZERO) + u_f(gpu_uniform(bake, "u_flutter"), F_ZERO) u_f(gpu_uniform(bake, "u_time"), F_ZERO) for li in 0 .. len(layers) { let l = layers[li] diff --git a/packages/ludic.render3d/shaders/grass.mesh b/packages/ludic.render3d/shaders/grass.mesh index f7c3de5f..b5210fbd 100644 --- a/packages/ludic.render3d/shaders/grass.mesh +++ b/packages/ludic.render3d/shaders/grass.mesh @@ -38,6 +38,7 @@ out vec2 v_uv[]; out float v_seed[]; out vec2 v_rot[]; out float v_hull[]; +out float v_quake[]; // grass does not quake; written so model.frag can read it const float CELL = 16.0; float hash1(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); } @@ -153,6 +154,7 @@ void main() { v_seed[o] = seed; v_rot[o] = vec2(s, c_); v_hull[o] = hull; + v_quake[o] = 0.0; } } for (int q = 0; q < ROWS - 1; q++) { diff --git a/packages/ludic.render3d/shaders/grass.vert b/packages/ludic.render3d/shaders/grass.vert index aa4b8b1f..e2f27f0e 100644 --- a/packages/ludic.render3d/shaders/grass.vert +++ b/packages/ludic.render3d/shaders/grass.vert @@ -41,6 +41,7 @@ out vec2 v_uv; out float v_seed; out vec2 v_rot; out float v_hull; +out float v_quake; // only aspens quake; written so model.frag can read it const float CELL = 16.0; float hash1(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); } @@ -67,7 +68,7 @@ float heightSmooth(sampler2D tex, vec2 uv) { return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; } -void cull() { gl_Position = vec4(0.0, 0.0, 2.0, 1.0); v_wpos = vec3(0.0); v_nrm = vec3(0.0, 1.0, 0.0); v_uv = vec2(0.0); v_seed = 0.0; v_rot = vec2(0.0, 1.0); v_hull = 1.0; } +void cull() { gl_Position = vec4(0.0, 0.0, 2.0, 1.0); v_wpos = vec3(0.0); v_nrm = vec3(0.0, 1.0, 0.0); v_uv = vec2(0.0); v_seed = 0.0; v_rot = vec2(0.0, 1.0); v_hull = 1.0; v_quake = 0.0; } void main() { #ifdef TILES @@ -198,6 +199,7 @@ void main() { v_uv = far ? vec2(a_uv.x, 0.45 + 0.2 * a_uv.y) : a_uv; v_seed = seed; v_rot = vec2(s, c_); + v_quake = 0.0; v_hull = (dist > 2.0 || far || (u_dbg & 2) != 0) ? -1.0 : 1.0; // no back-face flip, no rounding past arm's reach gl_Position = u_proj * u_view * vec4(w, 1.0); } diff --git a/packages/ludic.render3d/shaders/model.frag b/packages/ludic.render3d/shaders/model.frag index 6a2e58dc..db536c38 100644 --- a/packages/ludic.render3d/shaders/model.frag +++ b/packages/ludic.render3d/shaders/model.frag @@ -4,6 +4,7 @@ in vec2 v_uv; in float v_seed; in vec2 v_rot; in float v_hull; +in float v_quake; // an aspen leaf turning its pale side up uniform float u_model_h; out vec4 o_color; uniform sampler2D u_diff; @@ -147,6 +148,11 @@ void main() { if (u_model_h > 2.0) arm.r *= mix(0.5, 1.0, v_hull); #endif alb *= u_tint * (0.85 + 0.3 * fract(v_seed * 7.13)); + // The quake made visible. A turning aspen leaf shows its pale, almost white underside, so + // the crown does not merely move - it GLITTERS, leaf by leaf, and that is what reads at a + // distance and in a still frame. Toward the viewer is the pale side; away is the face. + if (v_quake > 0.0) alb = mix(alb, alb * 0.55 + vec3(0.42, 0.45, 0.33), min(v_quake * 2.6, 0.75)); + else if (v_quake < 0.0) alb *= 1.0 + v_quake * 0.28; // the dark half stays gentle: a crown should shimmer, not flicker #if defined(FOLIAGE) && !defined(BLADE) // Per-plant HUE, not only per-plant brightness. The line above varies value by +-15% and // nothing else, so a stand of one species was one colour at fifteen different exposures - diff --git a/packages/ludic.render3d/shaders/model.vert b/packages/ludic.render3d/shaders/model.vert index 8f121ca6..643c55ea 100644 --- a/packages/ludic.render3d/shaders/model.vert +++ b/packages/ludic.render3d/shaders/model.vert @@ -54,8 +54,15 @@ out vec2 v_rot; // have been shaded since SpeedTree; without it a card crown reads as frosted. uniform float u_model_h; // the model's height (m), 0 = not a crown out float v_hull; // 0 at the crown's axis .. 1 at its rim +// An aspen leaf hangs on a flattened stalk, so it twists in air a conifer does not feel at +// all. u_flutter is per layer: 0 for everything else, and the quake is written out as a +// varying so the fragment stage can flash the leaf's pale underside as it turns - which is +// the part you actually SEE. A still frame of a tremble is a still frame of nothing. +uniform float u_flutter; +out float v_quake; void main() { float s = i_rot.x, c = i_rot.y; + v_quake = 0.0; vec3 p = a_pos * i_pos.w; #ifdef CARD p = vec3(p.x * u_card_w, p.y * u_card_h, p.z * u_card_w); @@ -81,8 +88,28 @@ void main() { // read at the tree's own place in the world, so a gust crosses the grass and goes on into // the trees. `stiff` is 0.35 because a bole resists what a blade cannot. float sway = windSway(i_pos.xz, u_time, ph, 0.35) * u_wind * i_rot.w; - p.x += sway * hgt * hgt * 0.35; - p.z += sway * hgt * hgt * 0.15 * cos(ph * 0.7); + // The bend is a FRACTION OF THE TREE, not a number of metres. `hgt * hgt` in metres is + // fine for a 40 cm flower and ruinous for a 14 m aspen - it put ten metres of sideways + // into a trunk and bent it over like a fishing rod, which is what standing under one and + // looking up finally showed. Normalised, the tip moves a few per cent of the tree's own + // height whatever the tree is, and the base does not move at all. + float th = max(u_model_h * i_pos.w, 0.001); + float hn = (u_model_h > 2.0) ? clamp(hgt / th, 0.0, 1.0) : min(hgt, 1.0); + float reach = (u_model_h > 2.0) ? th * 0.22 : 0.35; + p.x += sway * hn * hn * reach; + p.z += sway * hn * hn * reach * 0.43 * cos(ph * 0.7); + if (u_flutter > 0.0) { + // per-leaf, not per-tree: the phase comes from the vertex's own place on the card, so + // neighbouring leaves are never in step - a crown that trembles as one block reads as + // the whole tree shivering. + float qp = u_time * 8.5 + a_pos.x * 11.3 + a_pos.z * 9.7 + a_pos.y * 4.1 + i_rot.z * 6.2831; + float q = sin(qp) * 0.65 + sin(qp * 1.73 + 1.1) * 0.35; + float amp = u_flutter * (0.40 + 0.60 * windGust(i_pos.xz, u_time)) * smoothstep(0.0, 1.2, hgt); + p.x += q * amp * 0.10; + p.y += q * amp * 0.05; + p.z += cos(qp * 0.9) * amp * 0.10; + v_quake = q * amp; + } #endif v_hull = 1.0; if (u_model_h > 2.0) { diff --git a/packages/ludic.render3d/shaders/skin.vert b/packages/ludic.render3d/shaders/skin.vert index 60172813..2ecf26ae 100644 --- a/packages/ludic.render3d/shaders/skin.vert +++ b/packages/ludic.render3d/shaders/skin.vert @@ -21,6 +21,7 @@ out vec2 v_uv; out float v_seed; out vec2 v_rot; out float v_hull; +out float v_quake; // only aspens quake; written so model.frag can read it void main() { mat4 m = u_model; if (u_skinned > 0.5) { @@ -43,6 +44,7 @@ void main() { v_seed = 0.0701; v_rot = vec2(0.0, 1.0); v_hull = 1.0; + v_quake = 0.0; #ifdef SHADOW_PASS gl_Position = u_light_vp * w; #else diff --git a/packages/ludic.render3d/shaders/spv/01089da8.frag.spv b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv index 57af6fcd3a0d5dd1b06a2fc43cef708ba165b513..0074535c3e603a81e2ae69c915bf1a9ebe411318 100644 GIT binary patch delta 2527 zcmZ9NS!~rs6vj_CDoZt5(-+rj>RNs9MVqFryyycl;-d)(X|#x`;0ASJQBjH_im0fd;*Nk+Tu@tFUi|&;y{BI9O=jl%zH{cx%$YO)d;hlDRXb{% z>T1t!jHrppaa$ZA z_^eq6$N3}h;nCII?RcMr{|dNs^wXB}R)Hff?@9hF{QMaUig6}J6yi06He7T-h&}Lg z7|(?N0ImZsrnynM=Tyspzrn}On=!t?@9-H5YJ1vAA+;EP!1Yl##t}4g*H$3 z*xowR>>{2!&_YY@21kba+J_qpsIi#NyWd2*mcy5T)z*NIk?04( z{{AK>+8&^-ru`YUMcjq%{Vzqkla~CUGQW?w+LyuAM(ZQym$X8xM9^UIIFTV9rE^2~ z;v|2JPHjtV#1u}U_BfrzYTanJ$fjd)p(nuFvrXYsr2ZtDb1tU2*_9ItCFgEV>CScd zi&J@GPv=7~*-l ztz}!La~+zS%yg~?tLd8uQ1bw}uw&(cJXpqi5nMQx&dGjt71H=J_}sG17a-3QYy|g| zZN3J1NBLSdf#k)JE`|w>fC-@nVr|mpnD=K?>1bMXxvx`GH&1Hp=mvfCt^)>BX;?&10cP9=Q6ESm4tJK=cy2||~%})k+dw`!2uS+ym z$G700VJ?dAO6+sjx)kue65u^)?#ygTJe>#zYxw4Zq?ZAakfLlU(meQ>&N=?nB^bD%a4U)1v;aO zZ$66SgU%Y?r0Iw`n$p5H8B#6ZH~e)@2oZwYV$HOKpVJbSXUR@W_&F_MIq|fFpVJn8 zPFwi+PD5W<;VKORsUO_hdW8>qHcAP%hrBM#M#NE8IGB?5=pdy|It}KQ1hUXC z(FXU4qZ2^Q;ntQECY9KzKit}G3)`~ri-1R!6Uuo<_>g8U$VD7Z%*i+ro3I!`EKDa8 zz`_LI73QY4EQ7+7g^$;6eqR{BBuBuqeu z4$`GX9}A;&^GsXg7EzY&YkR43B#0d@Y=- zMbPc0Z-mPC9M$0u*B^;B|qG0aTXu|2Nvfx{D7yEUpI}{ F`~&_L16BY4 diff --git a/packages/ludic.render3d/shaders/spv/01089da8.vert.spv b/packages/ludic.render3d/shaders/spv/01089da8.vert.spv index 96c9159854ebb1df79f89912ab06d7c4e85c7157..3dc8c5c6bf7353b5fd88b1fa3892a8b28ae39d02 100644 GIT binary patch literal 9792 zcmZ9R2Y6NW8OARO0TcugMR714Acz7E5P^UwQ$cZyTtjk0E+n~_g$oS|Zbj|XF1z>c z^H^zZL9NvmZSAyn+19ppPiL#`?|1I`lJlHHKL79ge&fGSa<8>DlLi+G0}4Y6Lkjl} zC?wCwLJdlxU^|m`Xkk#om#kc~a(ZW1)ASQhI>Er7wuW-M+8e;c?>k0$;*I&1ev5tVZl*$`gy4JK+ zDqSs;J7>P+Gf zGZ(YYMB3&QA4OYEF=>S@tb#GK#WSjSxp-C;pDShojkyHenZ~aZr}68-l~i}pDyjaU zF_?3A9m~azN{s1Ycw_3@L)%llqPt;JDe31i_~z8-x;GRzSE7!4Q10Wkg{R>5X&>%Q zL$ST1E#=S9_Vo2RFxj)7VoP^xtMNk$1KAf=aB-=*p}V!~{PuElrK4?8Yo&2hfmNm= zexL4QPr0nFR2cZv5^yb#?uC7uC*!>@ru7`Mka3dQi9s}+uwI=uoF$wO+ap3A|SL5p8PR^Va ziLVD-SGW|+8g&+{mm$eri?+F;qapUvyVg_Ok{kqUd+&NOd+i~ zH#D)D`{7u;2l8W6?)jHb#YQn=YfPYmdE(I^_h>verm#j`g;4n20T9D)%x;lQ|=tLf}Ml?T2Fs3=6D_7c3OSzLG-r+ z>|_3yX^k~*Zp!_AuBLxiimf5vP3!*1jhFAi)a>sOT77ckAEkAC>hf>U4oJEA^2bvx z`hOzjF`p;l){A)GZPu`!_f(&Is9)~8PA&4E1G_)^cZ*5Ze+ax5?A%?SvHZp8yG||4 zx#TU*QRt4NjvV_i-+tuYbv4J~85s;W*Z3i+&l<5WL(zEZ4xyMKm3yu|K54QPln%r-(x#KZj?z>DaxbL#y?xXKAx%r#G{PgX! z+;^Lr`MYU-w;6vp{0gvZ+l!3_`5tqh)%0oB?W8qFzjfsP?pBL=cEkB87~cbM9XucM z8)%KScFg+@w3jEZ?c1+A;cIu+ESSbS#`U`kZj8D$cGB{bthr;5`>s?A?z>WcGBxbq z^Xg;YucFk^&Oz0;oxqW_3z_Y1+8uD`5d)r@_E+04eAk2U?gBM@%EIvuHGv@kvhjFxOEOr zwGFI^zgNbjn)_BE#E>A>QoyKcF(jMQ*8p+ z*zuVCxUOnZcM@1_7&~X(BQdr#!TQW`?bRdaXmB>?7`QpEgFbWIAN9yN7Hpju>s0WR z)MBjD;OfRk-f`e;-gJ0A?|3wIV`F_z09#LA)S3a#)|v^=*P4Z^`3+!WF2~GYN2?a`jbQI|tVI(zzZNAlNRJ?3-|*#7k8=X5WcexK;)EnxRQJC?V?)niU?1DmV9EuH7v!Om4*)OrWl_36c8 zAKnR8k6QPE%~g-}xgVTepLfBXdv;9khO0+k?*Y4py;$`1Ua)$s&-=jUsmJ;}0JcAU z`Sp1}+5?zR^z#95e$PLMrXF+p5ZGMxnA3;B**Sd#p5OD2qNzt;A4_9;X=6?w2dl@N zJ^?mQJ?8XDu>I-F&*@WW`hB9GPlNM&{uwm&nA2y$=BjT?_xy8U=c+GieI9JBUM$A^ z1+aS5`Xbm|^{DkFuxCNvn~Yi>e~UYZk(f^{=HJ{0(E2yF?}P`j!5RK=hCd2^EXSY9 zalc!ReB=FoIk@%xjybq~zh}c%@?xp)t)?=9mVq5UTII2N_O1%3j15{p{j2CMt`oH=_j^VF^B`l&_D z?|`39eXgZEYJCsv_=A5R?D*om{s3%@y0xF7Rg3r^f{k~)uKkZN`_Hb`k5fI))3b2% z)T7Q%z>Xv8{1j}R=dg(R8CX5){2Xka`nL3p{{n1%eNpR|U~BbaQR{iIdhlO??f-iA z!QTVF#?+$5Z@~F^y?~}3aqS&`yCnhaup7utAvL@x}P| zP4!*G_5y2^?99ht8X}_<~vs$wMT;UwGTj3H)a<#MuGG1ngh|)W9|om z%~KEUV6eL1F~-~vN&I{tk+#m)_qMuo^ZXtP_AUfJ3~r2{P4piQHb&ii-}7n_KNhUE zinsN?#E%23X+AZW-!FKd$D=7P!i8rXFi>6xclV(2fDC zAB_!TjE-Xpn4jb`mHx??f4l2D7VJ2UalZZ@Q;V}O6|6RlzqE~?2IeRE?n0lxM?6n) zw)8uPt!UH1u2uHl9}icLm=n^NUgD$A8EEP;rTw=U0^6VY z`nIKeJR7Xf@0Z;x_k9kSpX77Ce&^%waP`>xQ^DS);B(=|M1S+Zem5QFnpt~38b8VR zHr6oD*ywu!n4hF?W9{31)L-L7#oe-vz88Yy9B(If5!~~#D(&-hxSHl;tRq)lA<2V~L-#d3ss>k;U=fbU_Zl2>m4>NBK7UMrZ)#F@U0Qa4y9)EjW z2v*nP^X)}o`_LD07lWO*=9)ULOVEtf=bEmdRf}<723FIzmR3H8^XI)<2OdFtDXl)| zrhYkCUlDU|-m3<%d*6%2+}5M1I~MaA!RD$*UK7}THqSB0jq{AfKG|B+bGrd-ys^!+ z^6-_xo>6@*V0p~54cv<9+ej;S48HFx;D>0l_jWUyy7BF_a^rhww_xsLH)j1>+AA^j zh`9=E%xLOH%++x9d#Pj2HJEwoF^6lx&M!W{Zw0IQgmzu3DTj7_s(DUV^N#gQ_oA6^ iynf$__t3Y#ZE*WH#xdVOdn49`IcDcAH!lAF!v6skx??>6 literal 9680 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 diff --git a/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv b/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv index 24306b426cfebff02155ad5e3eeb1bd8b56edc41..8eb93cd9c9e8c09d67503a02ba140708c0b98403 100644 GIT binary patch delta 5391 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 OlRLJ)@6CH`&Hn)~iUXzq diff --git a/packages/ludic.render3d/shaders/spv/1ce5c5d1.vert.spv b/packages/ludic.render3d/shaders/spv/1ce5c5d1.vert.spv index 289c8479bfc9146b211d0ed028c8764386933e3c..da1cf6e2caf8db94d862c98ebae2574b0bcbd29a 100644 GIT binary patch literal 15828 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 diff --git a/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv b/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv index 57af6fcd3a0d5dd1b06a2fc43cef708ba165b513..0074535c3e603a81e2ae69c915bf1a9ebe411318 100644 GIT binary patch delta 2527 zcmZ9NS!~rs6vj_CDoZt5(-+rj>RNs9MVqFryyycl;-d)(X|#x`;0ASJQBjH_im0fd;*Nk+Tu@tFUi|&;y{BI9O=jl%zH{cx%$YO)d;hlDRXb{% z>T1t!jHrppaa$ZA z_^eq6$N3}h;nCII?RcMr{|dNs^wXB}R)Hff?@9hF{QMaUig6}J6yi06He7T-h&}Lg z7|(?N0ImZsrnynM=Tyspzrn}On=!t?@9-H5YJ1vAA+;EP!1Yl##t}4g*H$3 z*xowR>>{2!&_YY@21kba+J_qpsIi#NyWd2*mcy5T)z*NIk?04( z{{AK>+8&^-ru`YUMcjq%{Vzqkla~CUGQW?w+LyuAM(ZQym$X8xM9^UIIFTV9rE^2~ z;v|2JPHjtV#1u}U_BfrzYTanJ$fjd)p(nuFvrXYsr2ZtDb1tU2*_9ItCFgEV>CScd zi&J@GPv=7~*-l ztz}!La~+zS%yg~?tLd8uQ1bw}uw&(cJXpqi5nMQx&dGjt71H=J_}sG17a-3QYy|g| zZN3J1NBLSdf#k)JE`|w>fC-@nVr|mpnD=K?>1bMXxvx`GH&1Hp=mvfCt^)>BX;?&10cP9=Q6ESm4tJK=cy2||~%})k+dw`!2uS+ym z$G700VJ?dAO6+sjx)kue65u^)?#ygTJe>#zYxw4Zq?ZAakfLlU(meQ>&N=?nB^bD%a4U)1v;aO zZ$66SgU%Y?r0Iw`n$p5H8B#6ZH~e)@2oZwYV$HOKpVJbSXUR@W_&F_MIq|fFpVJn8 zPFwi+PD5W<;VKORsUO_hdW8>qHcAP%hrBM#M#NE8IGB?5=pdy|It}KQ1hUXC z(FXU4qZ2^Q;ntQECY9KzKit}G3)`~ri-1R!6Uuo<_>g8U$VD7Z%*i+ro3I!`EKDa8 zz`_LI73QY4EQ7+7g^$;6eqR{BBuBuqeu z4$`GX9}A;&^GsXg7EzY&YkR43B#0d@Y=- zMbPc0Z-mPC9M$0u*B^;B|qG0aTXu|2Nvfx{D7yEUpI}{ F`~&_L16BY4 diff --git a/packages/ludic.render3d/shaders/spv/1fde9cd2.vert.spv b/packages/ludic.render3d/shaders/spv/1fde9cd2.vert.spv index 66c22c3a44ba9f40b5b1bfa69990382214741439..4470c31db4180c82b970041a7801c28efcdc1167 100644 GIT binary patch delta 868 zcmYk3OG{f(6ovOaNz^DA)F@IE5js$-lMDo*SP=_mBJ>9cL8MABC?(oSk>J3AAV_*g zj!G%5(LQ{n?}t_6(7)ioA7N*Ot}nT#G_bPwT6^t%_Br=*U~4cHb9b7}0&BAtyC|nd zf{ya!Sn9Qz?F;8Z?P&8XNXHHBN$&CL?BXL!Sd&%4Y1ehTB9-4lA@^{(m|w{+FR9k7 z>YD2gD&dan9>f!CcqUg1g$McK%Iwk{Q)2Z~=x5@2c;&i+TJ^?d++yRvUX_}JDOnlg zgsjZ|*fw!~S&RSE+UvaG36$d@`aWi$u~JZ?S5taMN5b4lEu zh92=<#TFqW^zssl$w;FH`sCYFq=!0l;Jhl@ka$}0jS&BjzgJG3{tssJb;58OIP^sL zJuoxw`7iOAZ8tuwSJ_d1D&Rq9$eCgwa2QL#xhtCIweUr9sPmH)-g-j+T=}!GA6_TZ zr7sclm9JEU4k0IuMZ0}dPHkPguRk! zvV_Q2cqvS1Sf}D!fzQn=vP7%mI|1E$4wU2JWxeN6Ir=lrq31}T4;>E=ek?o{%JPVh YSXBfg1%~VM*hj%{&Vq1!+S*2izYZ>SjQ{`u delta 791 zcmYjOJxfAi6h8M}zpmnvg@h7OM4BxQQ4l85pkq^$AWb1e4z)E%Lt7EIJ2gd1_GM-E zZC~0XwDv<<+Jc@(?<>9V+;h%zo^#%F&$}J}j0FvS)GMM%Kz#CH1*f!-HJ>t1M5GC{ zYCBEM@JPj8(!+xlFg(jEg@w{ualKet6_0q4we*Nqv8$bLTaN@;&*MhEX@BcstyMRT zq@Fc|O>`iKq-q$T7AGgJ9@p22yBZBXHME^N+j57-SZz2N7i<>Q9Gc1rCvMf-?s20W zMd}EY4@d$-n2Y76!!bt;Lw5|zw#?5uG5?2L0&xiT6yTLAuEJ-Y^>xQ*Z{~65qP!sZ ziRIG{A+Lz@yLx&OTiA#H22ewuP2OQOfR}Ly#!Y~nid*)VnJC|a@crMZMpeh+(^b diff --git a/packages/ludic.render3d/shaders/spv/254e7887.frag.spv b/packages/ludic.render3d/shaders/spv/254e7887.frag.spv index c8e5fd2d0f0b88f2a0ff6f648884c6fadc490488..faeaf2f1ce3f3d19ec9c172a0c677a24106df742 100644 GIT binary patch delta 2575 zcmZ9N&2N-d6vl6-v=;e@gpG}c6lz;WDhhtq(l1d^srzAdV17ea&Bpou{Mx4alqMOoUrztH>EKl1!envmWU5PRQV;6I(c+2H z*NC>3#TQA<|z;couD{Fj2ac6<}_0esgnO(F$%s zVoLj|o7I&2$lYoyxM2m~rjbXx+v>k2<8zsRF8E?yQPVqcebgIM z?bc!+qni`qy z=-_@KJ36@bfrZogyUL;$t1R|+c)HU5Udiq6mE8Vb$?flz-2M*kdG>e4TPva3;Njqb z_IGd>Of7z#|9+#TOIvw0F}|U$Kf||y)jkFP#TU5;?DG#*(ALa&i1ByIRd5%&jnjhm z9|aBGn(=GwtGx}bc7{ftS<=d>9YKR#=R&4*A1?!%#YuiYFEu-GJz1#j;^kMf!L-|r zgIGLhH&}a&^;|9W2hm)!lVPy!_2nh!Zn89T9d4188JnG1Mod;cEIu0%|4@2RpA! z$i!m5K5+Q}8@jj`qR^2A@C3L(0P3;eNpSdk6XfCl6nGea_4sW2!0w~XGyK0$>*EYt z^6C0iP7Mg(L83g*z%f*ucJs0N!FgtXOv2|`uzDQy9N2a0eru-mJTJfX4uz1ONgj`+xXwR>Q{|Apw B1j7IT delta 1878 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 IXIB>gA0+u_+5i9m delta 4972 zcmZ9Qdz4jm6~}*bFT)5ks4+<;CW1=27XNg|M3pInpVS4E^g#T@bNt-%+KI?b+;fa>+4w*d@X!QZQjD* zo8aY{*t`R;rWfHS6WzOh8C-As0GUmowE9qi4i6TY;2$>Q$X?0Iu*OLCtXEmNtwyRUaiQN&@n)2w-O z=G2QiJm(Ah;`w(Cc8qy`SZ1z0of$q~rFLVF2ahcA2^#rmpHcV^E4XR&FY~g$X|*#) z`FMHBK00+34wb^8Yw)hI%XZ23C!%A%%W3tZ1v7%LQ%s8v557L2ua4&?3UP7#CpEoe@ zD0BNja0{{z1aD0!HiM6Zlx|tsbHLb4S9g6_J3qLkyZg)B4p8QHf#Als z2^9QbD@%5PvV&b9xC!h6!Sz3Auz%{n$ZT74N@ufn2%k>n^c@a2MH`CRX`EatZdmPS z7QPu++imF6S)r~CwP~ykF6nemY7x61+)g0%{vyU1!&8>l;jA$Ro(V1wJgXR}9?8!J zJ5Jk7(v1e6114auYd4*6jqsS}4=F#SE$rL1Rl~p7^jA?SY{185$V@**IF#U*=y8dn@c?7-|Y(LO; z4Oe;Ct^>!+xW(ihtS}x&mR3PdBe-|yomjDzS&&H#<{$&xAoRD$jf}Y-{0P^hc|FA4 z{{&4v_)o#kqHD+J|1-Eg>TNDr#Ty{5@*@ieleziTBhVVKT2?HqpM%w+m|uV`W{_7+ zjQJ&+`lTf2l77X>aq4ZZ4Zl^~1Tp!f!okOo8@b+G*mei&H;Oy8I2)0+NHhp`VMZ~x z!W)aZ4NX0YxgDH2P($p~JHQ&;*ZoD+cf!@xqOiN*QM7i8wlKdPX|pgc>26LhQCJ(_ zD&_ZZa@>I&>)ikA5p;^Z{cEthKt}_v<*MeLJ&FDsuy?kBYb3cBtiBeX%dy=DR$I@b zc!wAdfc?BjQQGe3P}`caN=_osgNP=K*?0)7*2xjYsJ)viMS%J>9>Z_3jpK;N@H?=@ zt|~3ihtbsYhIA~(M<5Q=5QS_6`;4QI--CxZ)Whddu+tqrkAX*UsQ0gYy|X>Li1~1N zKY?PF$2ns3AHd#f_&f>LPd$A82wu(+K2L%5Q`g7XPlKaNZ34?X>I)}J&p;OAq#=Sl z3pS9p2=W~G5)N0KLH`6+)7N>|rWXEx20PE%Hgo+Jhe;j#Ja`|jo84UbBt!m!=pcPu!LE#Q z>v{=IJ%auVTy9MEi z$EioMH^7lhyUAYWsvf!C0(aMWmRI;+h)&UV-UjQW9^K>}uz_uX+M}Di3Dy?D-vt-J z^Vsjfy|IY>K3E@hntT1_`#(qo*CB#$1#2@nm-GQA6Gl=02RqK*tL=P9>@|9K(*8=Z zv4N=x&6v^2D&)^wnT7~D3>-l#V1F<~&}Ojq!Rkl7cR1W++MMofBv6Z@cLJL<`s)a| z@$IiiR;kWkAUef>kzj*F(pI>d10#W2td+Kv!+@d%eNgI-NUc6@}hgBkArO<=-Ku}yCE7#Vqw-IK%R7EgxY`~Z&Z9Q9@E->rhh~Ak$Hv3m zgL@S|CZ7OSkHr2Vde=G}h|>{kWH z`D;b)7iiW=mJWoRg_8jts6!N^EfRbY9LfD-LmqF2gTZ5np&m)U1b&~S-zc8{m*M*P r39X~0t1h~+Li|eM=pPF+sWSi3j%I)k4($fFNPom1GI-M0sgJLlY diff --git a/packages/ludic.render3d/shaders/spv/3b183d8f.vert.spv b/packages/ludic.render3d/shaders/spv/3b183d8f.vert.spv index 289c8479bfc9146b211d0ed028c8764386933e3c..da1cf6e2caf8db94d862c98ebae2574b0bcbd29a 100644 GIT binary patch literal 15828 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 diff --git a/packages/ludic.render3d/shaders/spv/439a2253.vert.spv b/packages/ludic.render3d/shaders/spv/439a2253.vert.spv index 7f6b91c1aef277a3f20bcbfccab99e32565afffd..8d5749a2ce35051cdf7a1a78d7d85928fb75f8d3 100644 GIT binary patch literal 10136 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 literal 10024 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 EAAo474*&oF diff --git a/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv b/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv index 28bfd927bf8ca27fcdd2e4b988aff7750b92bfb2..53f0f57144231f982f64304fd076d8c6df6b731a 100644 GIT binary patch delta 5422 zcmZ9QX?R^#6^3_`rkBo2YSb2yGL+JZNx=$9+Efb4R6ubG#L%X_A(UL&ru@<)DF2ii zQ&12Qr3{ujKpbjCkygbasI4eeq$(;RR0Xw6RrGyt&I%{@KF_}A`@XgIT5Iof*1jis za!>sud+Vn()E`kwsV+@Q2c;_prnJ;e8#r^pgpZ9+X$5-a?hkfP&&DPBhR!ScyL!7* zV`@lS;N?pbcwG7xcwM<`W#5$}d^^0-wYFEDocz*qEL zR*k(=->eYq2MPuLKn?$K4gYBkAFkm)ui?AK@P_mdJll}3oc;tJOUYzjAF? zCHPbD_2r(+gO}XFLb21v@P_m{_y&Tz>O;Zh@(4Z>d`{mPRsEP!${-h36E4KCuH4;i z2DiQ)UQF=*8h%j?@2uh8;=WEcyKikZ-pVod#?%Mz@0_-NU1zzwXLWgf)u}S{SaVzB z5+8{}se?;8omz|~_ak@iEbznvKU^ap?UkXk4>@{jb_#GdF$`CSX&&5=oA_#(_;73R z>)@+aJu%9!hwt2fXX|{t561sfaOdc!E#`d&oYLa9;J3k#>DU-?E=XGuHdodx4u_|! z6DsY&_f`4TOM@SPZ`{!z0n*EG0=7gUQ%i$;=Qd|=V)-e3cr@%X_=Cg4)oBy3EQinL zdKl}y1l$0=p5cDT-A=Vgdl~$>IUS?xSOf3aSl>3Edjd?C^QDhEF`CmpMDKwggD#`a z%HR$24lJ;FHK;)t^uTwL7k@XZ-t9w}}MmvjeTJGg3$ z?YtB0_QrO85v-9>y;N4u$kVMg)2ktd`}c-EYBaQOsjti`mX06?68Ysc#}V zm-IWnoTnZK+3&%1mKs4CbSLIbd30GH(!u|@kFpJi1(H8bNSeu1$Nq^((ScXTi{O^1@?|8=3 z;C&2y=8pFEKM?E!9S!&tS2b7mDEc#l&z{(nJ&W=TBYv{}30B+5=KGWNZ?GQ^V{QLp zsCgKRqrClKGsNfp)sH9$Z_SP^E}21BR2j8up7Un@JPOhrXEMoOJL`z zMSo2Mz+;U~ZRhKk`NSlQRLl&RV!ekcnUeX)}>ACV_2k7a^Yv zSJT(H+SI~7n*wp$HTsG*m0?mRzY2ULSM}KPSA(6SEebgptiF}!(c9;-*95OU_NJq$ z$Gq40r<9X5L`BWu;tF01SHpR91#0n}ydJ!pgvFz42AX=roC$Vki7 zZ$Pl2Ji2snM|{atk3eq(t3~p|z$PyqRkP64;}#qacAk3VIs#nH<#DBh$$W#=5Xp`L zcTjck*>HX0*f|=kk9wRYbHE1nG|?WXiEqQ&BGz26v9l27A-J*#J|C=;dIVnpj^NrO zxUbgQj77|JEZBrG?>MmYJbSebK=Ss?((wp7_%0g(PJkOUUQSVaNw7J{9|DRmyeI@Bz5KI~e>>{uUJYXkM+$N&v6GgriY>-HL z3Rul~kw7h;l~V_IwKZieD5o+aN-NkX(GzXj80z7(7+gF(mcaE>*T-I63Xa309W0N- z<85FM5A@cckDd4J-9sg!IaJit4HDsz|K2A<0}Ha6I@LE zF1VV`kytJKF9hp<6I*@@N!|@tyAkeRd+!0O`Lp>xu73R4RDUl+E%SF%5()0Y$=^hc z+Pp@>4zLOJ^{-KR*e(Xg{k{k+*XHU!0QObEd7WUnFVH+ES?Yp(6ej~ZQHLl-TO{ZP zNAi_mdHgV}0yh&wJ(8{lx0Cd|yx+=j{rrU1Q(8JA+E*c7nmh8s!QUXI>OWn2(G1YT S&~9*xT*0+>Xx7pPdj1binPKe! delta 4819 zcmZ9PYnWAK6~|v@7>>d~2}lZF5HDbYf+;!a%s3!|SG-`K=6QG~Ll1eGkpcbI4z+J3 zj^iy+#G+EXJ4S_gLrX2NA{C9q%rZ31puA$~@3&{KVRO#&?DPKr|Fzz=*8A?g-m}lk zTkE#HQa8N5?%+yFgVM0HM>?-(c=MnUJ*Q1+n2k2?!KDjEXZ7iOLsF`KE2V}sI4uWv zS3ADhc|||J72egcsN<5<&sWs&l{NfF@I{?VF07uce|=g7Kfm+hJob-ke19s>O2O}{ zak#sN-&@1)tKkpU@V?!6eOd#*yjaLO@HaZnzbJ#})jf@H#iEX`;2YqJs|zm;{x-b4 z6FYX}^=T*ka-zHHLF{g|+K(&XGdt(xdSi~ip6A;O++AIeEii*ye;7hJL2C_ftKl}X=#||+yh)GpV`!+??K?9 zB|bqTAMNw{F57S7i0lX;%TCwuwW{lq6N7J5OkFdAKcDj}X9nL4zu2(2GwDVc3SXJa67Hc?X=+f+i7KPrv-PuomS>{TZw1Mb}I?VZVPS#yRFRa zwlcTd%G_=%bGt3L1=(%Ehb0tSZkLeK)4fkl8JFp5Z-qr}ZdRp$0ra7(wx%G^FH zb9*hg@olw&Pq(sUuazC_wcsYO*MjRmr*Hd_t(ELb>iRB^0z+EH*Y~;Xg+>&$Yxx?) zXd7w2s_^XrYg>oj!UN~Cq1Mc^!H}-wOD$seg2xg_eQ6Qn`XMRH8$x4Dya8OEcw;e9 zJ(Ax9wvn`*MLHYoW-tMBUAytre*o^{vJm+#U^V?)62Bc96=T9};HkN>K7XR+VY?kX zuCV!Z%cJl+z|#xcN=A7TTh5Sv$d|{m9pXIg?%MJUpiyEwxT;9@6L=J2E6BrkC%B!< zd3J?7Y^%X8N}C-bk0S2@n@5}7k|{`R70;zMw#mokes~AhLq$Qr^Z;M#`rAtK2>cM( z^FW(zB@f%f;Mf^kOy0y3#_h<`&mi9>xGQueR%~S!WD$ zyH@`TH1*hxUxM95pB?Z2TChIqjowVfM<71svkC{3t?6xR8kMcVk`<5AW8g=*BK_lF z)32@DmF@{N_3KH;ke=krdFqYD)36?Fwn>HEeGl7Hg>5VvepwpL+APPTM`Nt(S70B- zDCXDT+G3tTQ;%Yv1v^hY8uK}@x{bWFDEc>W^>ySQsO+~0QMC?MZDGE3Xp6i3JMd9l zjl8Wfq~G)9ylGq;!OwH)6V3bwu#dfd#@oQC=EAo4ZnFvE%DNdN$sg6Y*5b4R+Y4Z| zr??d#667VYpHH}T+Fs;R`zY1rIO4pFX2RHwSHNnUxhy8rsQ57xBY@AK${sP|W{nrpqe+9eU;q(UhbuRU|cYgyrS=%-2 z&Pa;+JJ_V!BG#K=7Z*PN0PCk7KHG+{|I15GZ-I5(RyY~_pI{rz?RuM0-c&qD?|{4U zQIACLf{mliM8^0Rcomn6kiQ33dpG0Dz#0`}!oR_8yS5#S+qq2Y z^*=QAi1~l-zgrt;*JogzFwkE8N0&e9wwFhjc9ZR7RF6P)V6{kI4>x)F;2Mmk9=D(Y zTvy@#Ylvh+z>!P`lldm29?A9qx05XRo^XBQ5E=^BM?FrxVPNBWB5IGbrIJB3MzG=F za_|vwR~Es)0M|!7f`1Vl!L>(lU$L|q+YK8D_BAZ#jRI#*^eooc1Buof4cFoQqR$Pm zH{76cvW)?IvgLYl_V0rhF}3^pA2Ig@YhTOzySIUuSsIIAGL3GxFM?`O^?qQJ#&Nqp z*aRN8Ln+Sx6Z(Yz0bpZ9(gVS2&WreJ{m%-OjPGrmF)BL31BsU zH(MC}_`9jz%%zt3!$k0FM7Bs~p0gQREoH(WX$uAiUK r&Zx}n7j3K%&nz5yBX7zLK{?D{pLL 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 diff --git a/packages/ludic.render3d/shaders/spv/512004a1.vert.spv b/packages/ludic.render3d/shaders/spv/512004a1.vert.spv index 8d24cfc73f8af254e88b9cb1653ed02e688a4f0a..6e564c509b69abd34b022e03767cc7d54e2b7d33 100644 GIT binary patch literal 15772 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 YeH-KW?xKAYb~84F-|@?h%irt%50?bERR910 literal 12936 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 HIJ*8HY?G7= delta 837 zcmZ9KJxIe~5QZ;lYZamBQoE=v;tyI06`T}02s*eq7fMmkL5W1I;8NV&q;zr-MNn|@ zCn5^s;4UI)QHT1sI=czJZ_|X2FNA#e+}(F~Io_=o^QUUYLS|1?#E@2LmhWgeHg3eq z)5DQxI6u!er{blRg~FV@E)tQj?7_QSa0*M}@xI0f8Xtijdu@JUlKCMy0ngft^;)M| z?zzSn9!~_#F13U!jjuJn3Aj>=$4mDCdb2-h{HQTEVCONd?bPS3YVl8SG4I%`ja__! z*YX92yP3kSQiezhcC*K>l^BhTuxJ+?e3--{!+svl%qcG(IALh`{ z8h^ONNl}s=q8EfMopCNkT diff --git a/packages/ludic.render3d/shaders/spv/79b77ed9.vert.spv b/packages/ludic.render3d/shaders/spv/79b77ed9.vert.spv index b1f4f90e1311d8056c209315ab76f77d7e06f046..ba4a574f664b614ceed5faccf7af02c45e0b8573 100644 GIT binary patch literal 16116 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 literal 13280 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 diff --git a/packages/ludic.render3d/shaders/spv/7ed7de52.frag.spv b/packages/ludic.render3d/shaders/spv/7ed7de52.frag.spv index ae5781f723c2a10cd1f4956dadca5d00f52fccee..024db4bfad94a5589a65cff77fd14ccb1fa5fb8d 100644 GIT binary patch delta 5251 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 delta 4638 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 PU@cXxn8U@u6@Co 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 diff --git a/packages/ludic.render3d/shaders/spv/7f096322.frag.spv b/packages/ludic.render3d/shaders/spv/7f096322.frag.spv index ae5781f723c2a10cd1f4956dadca5d00f52fccee..024db4bfad94a5589a65cff77fd14ccb1fa5fb8d 100644 GIT binary patch delta 5251 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 delta 4638 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 N=IprT`sKg<{69x$fw=$x diff --git a/packages/ludic.render3d/shaders/spv/86f427b0.vert.spv b/packages/ludic.render3d/shaders/spv/86f427b0.vert.spv index 20a844a673b6d6cc274e9bb6628aa5ff3013dda2..86097da087a4cd16cf4d84cd247be5137077be4a 100644 GIT binary patch literal 9792 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 literal 9680 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 diff --git a/packages/ludic.render3d/shaders/spv/9068df1c.vert.spv b/packages/ludic.render3d/shaders/spv/9068df1c.vert.spv index aff7eb39ecff1a993a79a4aadbcce8fe2291885e..58cb3d114bf9b3171627cc2194b46725096753cc 100644 GIT binary patch delta 886 zcmXw$%}Z2a6vofJ*Ku@)*))m^&4LKR$%P9+2os4=X%hslj6v`gVkn75C^EEY(JIFK zm)Nvu5#%&|o0XOMHT@BSxD)(6Gw*xhx#v93dCqyyeedi3lm1*3UP+q;mbEtfU(O8% z9pziYxp!t(14p2~@!}vTw3xIf#mCFjbFrnY)vEA^kBWEW#mRVaDSiq?MNihku8XP$ z&ap5%zjSYQC2l&>I5xuWpqgxl-B)#r9!=C~Ol*#un4i(il%=g+$wjxrOU)H}F|~p* ziyAA0^_$ILp41iwU0kPd_n?&IEFM|ta$e}P&u zkja;J9P^dms(=nq1jBB(Kjf-CV;AlE7pPbIbEoY(y@%-M{Ui7D#>sE;)zaiWv!GJT zOk_(E^%vfPQHFIAKLY)H-J+Jr5I+Iw-t&cA9^I_>d?lB@&K&i81L~75k1l)*tb#Hg a_@I4<$f$yb^Ly+E@SAHvarxNVhQK+Ktb$Ac delta 831 zcmYk3%P%Bh6ve-)(v9v|m^QI!gqcVfEG#6G2qH$9Sg^7o5uqaz5y3)Y(Xp@;Y5iBs zagdettUTmO6g=hZ`@K#s%m)CdQ|} zjnB*uPmUx|<)gcEGM#mSl5gF0=jU^W*$R5Ub2jI1F8Ttf(pGOu@H#UnNW#tlPFUk zGzYcbP+T2#jJOT*-qpM0I#>ViAeXoF`1hL|il>^vwtz5ys0WwbwtBX(O8yr}BVH!A zL)s#?fkD3Pl3iQ0o|Y_H-b4M*O}FwlUv=;JKY7j&K8(V ztGNW~6~7p8R{>vU%%?ZQYe;LTi(A=4V_zQ@)nmux9 xv{tLxCl|khk9rP(`ov44bsvIxkV2#S2uKHC`)aOla}4a9no+fc&n)*VcmWR0c((um diff --git a/packages/ludic.render3d/shaders/spv/9dce3246.vert.spv b/packages/ludic.render3d/shaders/spv/9dce3246.vert.spv index 20a844a673b6d6cc274e9bb6628aa5ff3013dda2..86097da087a4cd16cf4d84cd247be5137077be4a 100644 GIT binary patch literal 9792 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 literal 9680 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 diff --git a/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv b/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv index ef4bf1252db5070edb03ac1f397ac08af7375f57..7b82bf06af1d27a82e4b9d8d4a178c7540d8855b 100644 GIT binary patch delta 2463 zcmZ9NTWnQD6o#j#m(!cAmVytUQHjva7*o5yW^^*gD|Ge2r#N z?4mTWjUqTFd#F951%)f1#90eQ|VO=Tt++xbz~8-+P=bdlLQpzUSeZM=V`LJ2QIw+3E8dz3f$c+S@mSNp4QwdtCa*34*Gnn2KC0XdK^y+PxG z9>7WdCXL!eA*E*WQrkk~H?w%OTWGgpaiXnY?eR8qzo@^3=9tTPUF<|%Hsjn)mabff z<78#VW@nbMsO?}EwK3nN9bmQCrMJO8?vl2hylTb~N1S)Sv&k`kdJjR-qv5vDrCl_e zb6afZ`)DpQw(|q9n!b^MnhC_j_T>qgSj77XoGqYnu%)gL#*e`l=C(cb^2lH>xF@%H z1ms=$XZaMof`uE;aoUaV#jWi+60{!ofgh^lyl;X;;QfdiblQ)80KA*tOCo%}0INrB z90WT~-S147zNGOxckpU|1mbSG5YMRgnM64iUqcp*9O#;#tp(}w4gI&XE-8HvcH^~q zkma$QAHjyy=Ao9057Ap0k?&zR`KA}pV(iawb^ST;SyBk&FJL!Kqo-dUw%@?<0lW$1 zU1V>K{|;VF{}sK7xL_CNg1l9XT>i#iTg(>Eqo3;z?~$&BU+R`L`B{sJpL4);p>8?5Ga^e?@S2TlDS zUNsMzI3{=wA8S8s_Aw#VT3VpKC(-3u7z>a%7ha@tZTi)KyYflAQ%juDW?2hgOK(8O zX^+Kdi}(#-cSoE5czIW<%}PNUA@c~LAtr4CFJ{1P`R&jQ*Uu-k({jza53MEFxHh>P ci>3c)E1Ki=*KTYVQY>;Sw-!gIuG+TzKMjjc&j0`b delta 1826 zcmZ9MNlX+$7=>#Frxh`nh;oq_m$-z1i;0?1fpF0S2bUO6L_$y*5_OOz-t1`b-~~fS z)EHyDc+r!ByP|^PjtcH5?kk9j3h2rA&2&L$I;pDn-oMme^>=r3N3i*3Fg+zWYpgK= zlV--5VW%N|X&}9!DA)Pw7&GJ?-&sG|t&Wzik8Lw1WX712k}FHAN;jJXKb^$SCh-g6 zRk7Og=ra6M%vJHS*rs@{Ye~M>llaX9Uo*1V?Ief0NxUP8KS<(Tqr9+{DvcuT{w^^7V95b}iWk09OmZ!;1m;IbBTTVP(_H#Pz z=XBb~R~uSw1va45eom+ToKE{Wo%Zvt#v?i5Ofr4+Stza7Y1)|EpXyE$J|$b0M!s&A zBg6A_1=!9A&-H8^AC66nIj5;WgE+1N9?||<%y~_fTFFNocKoT=CRk=+_C za<++E#L;o;mVQ~dQ!6iv^|>O9zDqt@Osgj1&?o2{Mr+d)&>Hsa`$SrWDTH3NIqv95 z+a=grpiyvp3pa%8Gzg?=aBI6Iyx+6YKe#ROjxZY$M=#-E`gl}@6uOCPF!v;I3nwJn z;QQj}1kh->wRH+}mDp%H+}a)r+qUqj!y~#A+WAO$yH*a!L0l@PGAd#dk`Y8=US9%8 zOz>l2PHNloRG7B#&DzbM38UBRV8lEZCJx=^=@usU4ij?YPA^0dakd+y*?^bA1RPW$ zhn2KP80~=gA@NtjXhSOcjaHt2vZ24$KpQr}IJWtZ$>*#%!W9>)e5(^ z55ifETNh`z0_KyZhz6c~V{xu;fU|!VuhU9~_Zryk_SkI3K4H5X|6X{+yT5P3naY8V zzZTQ4smL*9W|jBuf0uwGkJWy78t=c=etKF^+DaA4k99yA@%UpWIYsiL9dMeq9cL8MABC?(oSk>J3AAV_*g zj!G%5(LQ{n?}t_6(7)ioA7N*Ot}nT#G_bPwT6^t%_Br=*U~4cHb9b7}0&BAtyC|nd zf{ya!Sn9Qz?F;8Z?P&8XNXHHBN$&CL?BXL!Sd&%4Y1ehTB9-4lA@^{(m|w{+FR9k7 z>YD2gD&dan9>f!CcqUg1g$McK%Iwk{Q)2Z~=x5@2c;&i+TJ^?d++yRvUX_}JDOnlg zgsjZ|*fw!~S&RSE+UvaG36$d@`aWi$u~JZ?S5taMN5b4lEu zh92=<#TFqW^zssl$w;FH`sCYFq=!0l;Jhl@ka$}0jS&BjzgJG3{tssJb;58OIP^sL zJuoxw`7iOAZ8tuwSJ_d1D&Rq9$eCgwa2QL#xhtCIweUr9sPmH)-g-j+T=}!GA6_TZ zr7sclm9JEU4k0IuMZ0}dPHkPguRk! zvV_Q2cqvS1Sf}D!fzQn=vP7%mI|1E$4wU2JWxeN6Ir=lrq31}T4;>E=ek?o{%JPVh YSXBfg1%~VM*hj%{&Vq1!+S*2izYZ>SjQ{`u delta 791 zcmYjOJxfAi6h8M}zpmnvg@h7OM4BxQQ4l85pkq^$AWb1e4z)E%Lt7EIJ2gd1_GM-E zZC~0XwDv<<+Jc@(?<>9V+;h%zo^#%F&$}J}j0FvS)GMM%Kz#CH1*f!-HJ>t1M5GC{ zYCBEM@JPj8(!+xlFg(jEg@w{ualKet6_0q4we*Nqv8$bLTaN@;&*MhEX@BcstyMRT zq@Fc|O>`iKq-q$T7AGgJ9@p22yBZBXHME^N+j57-SZz2N7i<>Q9Gc1rCvMf-?s20W zMd}EY4@d$-n2Y76!!bt;Lw5|zw#?5uG5?2L0&xiT6yTLAuEJ-Y^>xQ*Z{~65qP!sZ ziRIG{A+Lz@yLx&OTiA#H22ewuP2OQOfR}Ly#!Y~nid*)VnJC|a@crMZMpeh+(^b diff --git a/packages/ludic.render3d/shaders/spv/a64015f2.vert.spv b/packages/ludic.render3d/shaders/spv/a64015f2.vert.spv index 917e392d93df8b3c3f4263e6b2680598bf772b94..0c1c0955b3d8bae872b683b18485d4c040d25b18 100644 GIT binary patch delta 795 zcmX|8%Su8~6y5ij<^u<1B4J3-Aj>8Wf*?%9ASXeiMuLb$h@wP~NrebCXcTfsjv7Q| z@66s0E$9dOfIg#UL2K!~U0Ck3*4}&VbGBQ-kD%M4hPp*Gafw~tD(-QuuM&^A4@Kkz zXacSJ&b#L65^8IyrPXw9L9Akvnm((1{WYlk7W1jO;&OH+TPz^gjqIlKYc;*9{3EQf zbZX+O`TTTtc_m%Q(8bc8!hSk7^)KbqT8(cNR=Li=08%z!2Box7Kmx_)SQj|IgmnFD zy=~s9(QsxBquECfYP?cg)5}&*51&eP6qtcqt8ri*wv;Au+=Il|vta=I2+J~>IeIaV8T0Z4@)Jx(4MCp4le;Q9hPEos zF92(()8rMAucbMMlJjlUOy1Hfj*#~n3U?dBFQ3=|PV`TQr*va5Gjq!f&BL_wHHkS_ZHg0u=DGN@e(32GTJ%&Jwp?90lg zvM-IG7XF+z?Sjs+H`0SM_uX^Oz3;v^AL+ex%v9qc5ksO9mNzFhYs8(UtbHaTZJ^UU zcsIU2D>;r68Sv z3IiEn1aq<6)*Llr6uwhLwxzzHbKZyCH1as&IbZ?wUn5duFX}ww3HVNzaynm@XAq@B zm777?5%w?IM4nAv5qUc{=b_Ab7jk~yaX;mjHR@e6|L#130K*eg)7&o_+YlH-LW}k77>W58h}V_yu?`UHbq4 diff --git a/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv b/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv index ece2244db1a452e6686c90ed1ce8346324a72923..edc13b264acbdccfbf1eaccb0324e40ef483e60c 100644 GIT binary patch delta 5528 zcmZ9Qdz4mX6~^D;n}Lx_cu6HmKoG@1Lo8~v85k8bO$AXB9mNp`M-T@F7%a0Rm{}Q4 z<4~A4a4rAPy1n({j&-~FKj14{J6l(z-TbvG{(2Sv54^Ku?IrDV^{=Ei z;Y&I$%VWQ#Z&nJnvuf}=Rs6jwK2XKqui`aKvRrIs4_-+_;aOKPlaY{%T9+(`=GA=| zzOJ)%W$=%}*R)@HdGKT5<>1YG@Jc!b-bHX{JrCU8z8fzDpWbnDuAf(*GRVR_;e{Ah zx3{&K!KGgfFDJOZif^pq-BsKz?pVxXcXa0QHdWcTz`GWY=5e#AdLH4WaE~EG|<~K zV{B$>TeNJkMT48#77ebyU0UXLX_?!l!5wdxmbqP8@GM^o+qCRps|Gir?ONuv>>k{% z4Z8{L+A_Cm%iONr%@3?iCa`VG4x9Q~k6AK0vu(DqnRRULHt_vi{kZSs(fOhN{N80h zwf%tW39emiy|@wG*7*^5bBX`B;5QIg`%mC%AJnC^zR(_qqi1>F8OWY}1kr-7#Yz4s zSZywk@kpvydmK)!X>wt=Kj&dF(NDqJ;~JUjbNy$ra76Y}#p8p9P z0ky}f{Tb}aScuQY%V0JAW7S?Bmi>RgD;Qp6>Ji|t@E!12_8oAw?YxlUDgGPWaoR$A z6|C-iz(k&kY7zIJVB>0g&HY!1<$D7>l}qF6+~p0$lm9O;_2vORTDALxyIubVyInrv zF0H<{n{oWM(k}MM)gHxUZzDKsjh?siFzy1c;?lO0yF6^~f?Zy1p2PB(#DBpi()J#A zxp;uPUDM2#cqDz`{%=Kms;J1BFd+^3fcLq}Bk&NgvoV+_x;$*P;8;0NcXD6Ct|@CHsJo7#9$6Gux}v;Smgz*=`e5$_eCsc%)TB?J@{T=SJ4O6gu~(bsM}F$ zBfxIaoWgFdp&6ov2s8?ue=ZhB>xbZKQOszt#WZsw#+bd))Hjjb72F5xIQ2L+_XV4L zN@4Hkt}XBX{R-njh&pcLZgsu{wMC-+!9KZB%mMJ~Vh%)8k7CAv9j6{=!biaBoFUoZ zp>Pm_1`n2~dMrGu)^61n=G$1Cg*oH#;K^)Tbi)L=fsAvBT z=<8h3nYA%;64;sfO%_QG1*^x~axz%$ZUXtXJRI!L_kgy;xYT?Ph$GGvu=(=UAb&an zqUe`r6r<+(9Ra+@Hhc_h>%}%qgeLWU zGr%r)_#6ZFOH_S*@xXlo>{xAaT7D92Qf(1yCfJ#W&!_yeL`Mzb^l7j?9!?E#9Fw{} zw$gFnIJErok~b8^dqQfhx@Rp$C94_c8sM@~$a6}rCxLZWj}lG>TUM0( zS-6_MQL>t$J-SW>`(%`luFs*VN6gc}tYtQMcAbu(lZH6E&Hxi9KfAP>%r9E?2s9t8 z7Rk>9SDy|G(9~lBXMr8Jz($N@XCp*19ZWWlyLu%1JlI!L@N?k$#IdsotdDw}Cg*~U zJB3SoKX+p<1fQGnPXucLmxG@VcV-d%0n5qvQ?f@_c9=Yh2u+oP%#Y{D3K5!i8= zhp)!5JQ~q#OW->ACXWCY!wni|SsU21Og(}w1sl|u+Q&0KVqOB*eqHeyV^QrkqRBM6 zBo}f=987vC*raj5E(4puXWs9j2iOXIqR8c7V?@%+z-o?*_-gU2tZ@IU&#=pJSiu!R zJHQ5wW?Bi>M?HL2fy<{yCtN>ueQee>;5a>2gXIk;(lRc^T8PJohDg)}HjuW^)`8Xc zXXehr@0ly|M*afo6vH6wQx0kBe7cee-*6%t%?8Wn@+;( z5EO4_(f!-U%v{p4)hk(hZQ< z;f-LqMrZ#mu-^&}>;}vI!uHAN0dMARK*wp1Vzfo_Z-XQGCa^qS1=)8XlL(?Al5Pf1 zB`&IJD88J7R|&Mjz;*I&D_EwYz8w!SU%7Ipm(brxu4 delta 4849 zcmZ9PS&&uL6^2i9yXg)#0wD^5GKw~W1W-u;8w8brpkYWO3T5Y%*$091??y7$Od+iJFNi0rGw4o`r{dt4^K&|JT}U?P=|O z?ul=ePJgr1yVPT3eUj89mn99!?!CR6YcAhA_r|)d4N0=|!1lYZOiRfRu(z#AlDece z`3-neTkDGQ)(Zavd_!w{>$;@EpRMB0SMe9&?d2^GwawDMl>8aKyu3DxeYnc^WqDc% zex%CbXchlU6+c$Rk5}w{mz zj1_0%+DmvTxe?w$bVq#?xUH>%Cxh=P&(8E|8NN5mcRP4f+scV6&EVAEhfqvVuHqYm zcP<$?V1f%+UdGgx+q2f&!kS0h3GZ0eUf!JZU0p8@TvV4e8{&}oeTJmE$!l}I3qBm& zBY4;9A@B7~$KcQt=^&G`f5W=l#=?fepMiJt-d|IBhu;NsMl&-wdyn6a+vWX0weS(V z!`=(NYSmlQg7<^(IkY8sntTFbbjzORaF_>g?sYhGFyIRKb-ag>paWb2Ur(o|=G^I0 zi}sJePd2qo5567VvZu%Nu}r3Y-vQT0eQGkGHaW-eoh)Kjf&zARb&sD~lUhHvG1oxe z)==vSVzH4U>y~?byVcXs`&BFa}$OR zw_1u`R!otf?0jP4;M5LU8ex%J8bxkt6uIRQ-2Pc2MQ)iCxup`^_*P2JC$Zub!bd{J zEtP0sf=vak|F*89H!bgzK8eq67TlfvBk&J-+~JKVYCi_M-o0}B&fNDW=-NI+pT@Rw z1E@8#0c`hEuv*0a8Q2O@-=4?#d3};5-@{pBH0%Z!8y?CVsz>r)fNiI3KItsOUxEpk z>DrB_{wwf49y=ocHCRpmX$eQaM#X6GTkuha5d10l3HYOVfT!VVhdD1Ci9vq{x1F}o zeh*gnd~k*=0kw$x9QZ^^V2##;f<~wB1@IUiZPtc-GV7`BkKmNI0d1$fk<&%npTI8H zI38z6-wSn>IM$?gV_IL@)9B4h2##8##U&5hE8vYh+N?8q*j@!YgW9Y)c?{w;u!*!; ze{!+4*G=*nNnM(q7Jo(f4$ljS(fD<^x($x;mWS;Pu%prDg(nZ&Ti}>EFF*NY=Er4v z8@!jd19Tuq>X}D-W{*r_FdG@zBgY2xGFi%;z5{OIy_o4VnE~HLQxE(oteRb9&P@Krv7b`yBGciww-!o zQrSEI2AjMox2N5JF#abu4nouMAa6V8si!RxodR1C(V5fm>du@&Q;*J^1=~(N&V>J3 z{~A0*w&%V69~?ubMaRy;qu1K)v>o$%MVlRS#5J68qu@~uJ>a&Rz;glJD_Ea6M@kK> zzh$7K0ng)90z0ymw5$U=GVkh0(i5zH5T811^vwL&FH*JC>n0*wTw-xEyY0zhBs(ebCh7^y>?@ow{*6f0Be1UPz)pAgTnYDsL_L;n0NA$L;AU`VWU#>yE;pBj9Q}yA0aY zBI!u5)2_{1eht{9wjBj`v#H0FUkA30w&=+9VD(9jd}O+Q-q1~*2j=xpM@DL&gq{{Lb-(}X8BWKJ=G)nr@;|jyV3nlQjh3Uz}`i{r^5A#bLLjC zKI(CNG&gY07`TZ?hi={m_oEBr#bDFH#o)KW9ZCeB0oF%7g3km;Z0!--4>)ahw5Rv= z9S{>n!#lw?^t9DBn5_`iH4CoYtGg0_zbbHp#^E&^?AfIrG3S6IruLz<&tj54xeGyu zZ{!~?mi}D0$+S5merBpg(!14p;zYd%YyvmAA3*cq`h@>y!N!Pz%m=HbHjD&{u{#!k zs}HS(XzCGk5!j$nJ)Z;XqaHq=2N#cvd*S-29Ufc(k$9b_B?0KOciM{|f zkhahs0IOfYCUg*1ZcA3VOHf;QV(d%7E}**G-uYez?!}`mB7PBURBaB&gQOK)tndfn zYWg~j+SI~-xm!Fg18=UC7@gM@xs%CPfz>1NLtq+adIV~N7Zb0BtLYnw)xv)bSpUb9 zv^E(}!iNzQA7dn5k88ndUXAN{`}1m4U&o{7)hLbxQ)uU{7dGFKa0A$c`j)}+%;pwv zhr|MJ1j{u#`psZJ4s5syEccVz>D~g~$J>Cm(;l7C7RkQ^j^x|G@;Lj`FGEHWL_;L~ z3U~xb7v$^zRk(isLi<{-G3blh*K>_Cfqyvl+5h+y&G!0hH@2PJ${Sl(pGAv1{trlIlqP9t<~YI(j1COUhG6OtY32fHZjhRm zOO{KiWoa(ip4h%wR?xohTG_w)KhM4Ay`IjI&)@sL-|}0}xrcjc*?jMjwc2L2t!krc zPi!hbZi4a5(x4dcI8>JG1stZfZn z-nC@G?18@iiG!U79oc!{kx0b0Fy312!j%m?8r)ykN7YAY&fMkgE0RN6J=47HN_pEi z^M=)S054tC-q%sDGpx2FZC`&^XJ?&{s_j9$sH1D)qW-yydwTj8P3$}9z#|<~-QQB% zjkdqz!ur^D2M-K7wh^^);O>D1UGv)(cDK1`6B}c0MPGn9?|o_8=lAyX^)-Bx;0p`i zX|(;l9gENF?x@GM>0>=;>ik^VrR}}#iwl0<|L~UDGI(!CAF(a972w7?wbX{djk&ed zR)f1RV=kv%&d!T(5FgmU_lT!9@PlFwjWLgc`-=F-#YOy6;GRN%R$S;ive!(L++p>z z)7947lQHdzZ+_wPObxaz8)(14dAHPB;Y$mjXRW<$X;12S?z)*?)U$gP+0Z4rG@d$;=;eapJOxMx8}cbgqV_r4iu>+Bxr@9*dZyS9^^c!6hvy|LXN z@8$NkCA~RY-q(Yr{ThHTTG(H&u>!o5j?B9T+{gXbs5z{*R$u9iURU8aRQOH*!&_>% z!~5&CTWa@$7coHlc?{g!(LUe#Igek%m$66U&Dc24zIbbJ`{JebobABnvFupkKDP$j z77cWFH*#me=W{5nb27NMqq~kz5wn1f;~a1!qY<|h?q-{FQQbEP9$vc&%$ezHYdlEm zxmTl=$Kx||ux)w$a9i8w=U{0Me3lNj`E+UY?Q^xg#C^sNw)J&%aC&_HydTcJaB4^I z86CYoptw8>>R$SK`nvkNdOTAj>pIKW(7TrO&+S_2BeCf-jhtECT}zMa>g#V`GQXqg z^PbSh;x&D)fzNy|$K$h~n8sjETC%_q`KnB_mcZOkUO5){NLw+LpTwi*vtF!ME)P{eYagj+Z*ncJX6bg@@k%%c{8x&*>^cl zUd>Z8ZwSk{9KYJrCCxQZ`)og`k_cGcJb>4_^F2>j<&l+mhjV4yhT)hwE zufZI<=U+Yv+mR7lV>}hi6ORSCr>)q|#JiVreXVf!QB9M(hlv@_d|X50jng+C@3s|9 zUE7uak1c%8t9*s;&UkjlVVwQ#QUs~l->$Uwr*5B`Dwy)^OcW5V}_pS^bTWA-P< z@lGgW)DttY5%W}H_JgZgD>1JHUo_@{qr<1bJ3IHC5q@xkH~T#lK5yD1N5wx4zJA@A zP5)7K{(O_qgg>`o!}P?@f^YfVy_@}=Q1_2+#?NWQKau#?*ZF--|LO4c>vnDOdGM)I zcWjRLEO@Op)bw}4)~{PPeJ9q@_nubFy|BK#{z6FW+3>?b&9jmIF9vfp>s?o;PdEF! zvCfB@{MI_3F~k0RHni4xqn`Zv3V#9ac$JF?(Do_&|!0r%OHdiTJ4c36Ex_dvk=bnVEX>-uIF|U zd=qi%w$8(O4#3^d@Jrx6U)}FZ!Tk9j|7rxE>5gL;T0c|0vMy`kYoB@XDD!UsJ4X9A zUhZeCTDYIF;hrZyW98<*7mUMIOCN2c`QGayAeoKi?L)G^P|MNX!CL?#RKL&SvK9jvak0#DJeH=|+;vOx<`MgQoC(!k+q8IZ%2{u># zvO;?dtnPC?^&W?p`<>1TsTuokW^*{^e5|=O=H*4gfos#PBslP0ja%)y23D0-LLEG^^wKOvN_CTqpghcL=x@OTELuYQ9e-=5TPi z&m-V!zGI|Mzc(^hU-tQEu)6Oa8OL;R#-Ts`9s~BBMt|~WfE~BKjOAFc>z2IZz-qIw z#2gPUk9Rg)?F202JrQiKzKrc8aK@%TeY_4l6VsouoeZ9V>2ohVD{2|T8^CI#If<_S zDVVk0lR230PsaR*GpVn9mdC)ow#9Om{kvSw^7bX{yL9!u$JyZY zp+EU=1?zJ!l79}^zV*2e&R5MbIL~&>wbOTQ!85-3aMx0w^OjF5?w18%@0D{gea5(U z>dEf_+h4}F5UkdTC1w%Wyu@^Y)!hHg;e4>U`jU46*!@giH`x14J!g0^*mcvFxFulg z>GN#K%V%p3xYw?j=f=;_-3sh^*d6l>?MdqyQd@?V&&-MnAFA-x6@Gbz-%#QARQQ7x z{%D0iUg1ww__GCfEq4a@V$N{^d@Suip)KTjIS5`}X#KQ3#ksk#(A{_EFSnlSuo82f z!Y=|F;~waL8)l69sfBh4_~OFcKjSXNjMZm9uB%$=t^%uhUl{*(%==Pk9u<62_C{S)+@kg6_&BS3$AW#@~#9AVadA+T+O>0P2Je6&oyA{ z=}WCO;2|uv)`F|G-i@YiY-(K#ww}J^z6X3=VOJDueLdV*eXfCLQZ4=81RlcH6!ABM z)vS}4b>JZ^eXj=_r=Gsw3%;?itlceeb>ma(Ht-OZ{@w>xyA?~!?cgCS{oMgJ?shCO z?*|WIiTME7ICY;do|`){$Dl9cybD}iqr1_J)#n;{pQ@#=4}ynE{N946?+?L^QBTf? zD>3)MjZ@E9?gv-L@&KB#`W(wWv}&pQ5wLrh8XpB$&&xw->c%GTVX*Vc-aG;}PCYRn z1KVF>J`Ofc-Ld$5QcL_Nz>X#SlVJPE`acFXM&0~JY1I<{DX=xep8(r`@}C47qi+7= zv}%ce8tgrtwfHo+x)#r%J&oy0-ejBPo}yJt{04A&UeCcZuk`a3G~@Io@2gh9c+wx z>U;xiEq$5SH^J3;eGAQ4eX0L#aCu(efg7jpyq=|1Gk#~DwIJguRh|?c=AIey{ZNGq7i% zJeHrs)xFQn`vqpMdgk;?aCuI@f;;bWonOP%)7Njn)j9nZO+9n^9oRhe%<1=F`_osQ z(;v|Ed!?U0g5Ce}SpEc8&z$}YHdlRBG0(q%ovXgo`YYJ=DeuGI;OeRMBG_E@tj|l} z^7{N8?%c~``UhM+ef<;c8kYNd8Lpo7`4`wc^{mhTf$dLUb$$Mgrr#_5{0Cg!^Z%l$ zXHLFEn5&*SZH88!)8_E%p0}W>r>|i}OnFYj(bO}i5n%JwGpCVY`_osQ(8G zcy-UWL{rb4wgQ{0zN*;s(O~DQFSWJ?TdO?gZP3(HYg@3n>Z!FI*t4L|cX4^%#ht@A z%&P_So%>a^`ForHu3%(|`)>)t{XV$0!e^Ga&y;}*_xJ4N>%XSNN5TC~yX^Nj?J~ci z!u?IV?7zLj{aw54f3U(ItMDf)+~2;-`J1s|W$tg_;f~+m!NZ-Ozk`RnUb8CP-@fBF z-rv8&jX$Tt{S7>R`@5*Z{oPx?XU6aQcgFk;pnQMtQs{mrxWDqm?*=x$e8zT%s~hkB z%f3LGKhU>8(Sgkz%*TB_{ z@w@y3F~9FW0COyUHXKywxi6-|%~Mb9gTdA=&-DefD!)zkl*!1jM>ab`{jtEI*nU~81;^=7zw z#xoCWo_gw@2`;bCS#ax==k*r2dg`1FHcvhCdMnua`m*=ufSs>%(Vx9nPycP;a{uST zJp<)=w8PcY|9N2Z)Kh0ZxV%3L;MOV6qXVv9SVu*~`GVC(5it<~TOSa~1b0as70%fV`wVX5^_ zu=Vt%))ioDmB;lixO!?`1y;KfORcNH*3;)Yt)NwNO*S&`cZ02a3hV3V>gnfhuzBh^*B=D)r+%*W--9`Z+iCS>3?Bkl$M9h^^~czo`)MD*)b7Ln zPK}S!dcDk^>-z}yam;sGapv+6c%Z}|2HU@XFZbSi1Z<3YemD6Tm_PO3QuJ>EpM^R0 z2jTkvNk5Lk{_HpXJqotJtidP1{Hgy&r>|T`U%8I;QsGpX}>rz-rH6j^#;OHOFmD^Q{x#nu^bu)czdU zd}AM@mB;sauxB&;3t;D+aeNVMjCx|e1TM#X8E%|jAi`ri2*xD_iu z)4l>%UsarwuY%RgPu|zS$#YI}rd>Dz}D2C`TrQ~{ExuW$40Pv z)@>75&HUv31e`qAO>Uh2DYQSsJl{XXQupVDp7Z?+xY{Ph>hs`NU@y;J&k)0bNR2JeKG$Mqk$ zdTRX_tTu$D7E4^So<8^U*R*O`-_5~lIb$twL$)>yoZ7>{`VK}CzV$hN|K6|Wx_BP90awrCwrJ{(b0g#39z22A zymRaTSJS*~tnGIO`ciugxOyIULQ^;1?-bFD}1uU)`1(ex#5 zSFmH(mo?rUJiyrV`L_ogTK{(gn`r%aTE?Wto?z=3=NSE7L@o8kfnCG!SAmU5ek<4* z^=Ny6)yHG5jnC!1)fh|&`+}3__~gcAJg)|q$2SpP9^Za&W7IRg z*MQY8V?60+65M{u_ul?!>KWf_!D{9wZ!$P}j!$k}#&-a?eC7{?t4+ajz7GP^b^ST5 zKeO`bqi+75j6u!!i#)$=_4)7re1EcU@5||M@0~la^mmMPuzXI;0ITIa=vc6qpA-6K zVrqU)h*SGGaJBaFXzIrJnQ#Jl0_{Gf{%519XRS{Jo2MS_B(VAkj3a-Sd>wofT%WD; zods5RZsX`<4%oF0e?8n7e>2qo2Cy;e=ATTfmiSY_YI#Pz5v-u9`aCS}&u4)h$3#rOXEyKdZvi__W1R0P zv}!pEXM@%9Tzf0nT9Yt+n`rYs?%C4s9DMe)fnBTev*%p6dScp(nDYI99-4aQG#{*X zF*TF70B-H_z19I&&w1zs+n@RRRuy~P1=hC+bFbX@^TE#Rcuc=*aSp9|_WlC!OoGC@ z;l`xD#bDn9W3HLCm!MmFGG-0)j7{G?h2Or7wQu`T_a4r@Wt+a2fm?}@ZzQi5?s++- z=(7*5rg_=FFl*2cv4(N>x0F`R_4Tw&vW5Iu$ueg`{PQmm(K-# zD=;;m3*wCRZQ#aO8{aKl3|G^fFaCrTtaKU-$kq{^!(2McDOavGyZpg&09^I z@m~g3&$+rB>@!V0-{rm&tghvE=PSVWp)Yao0y}TbHFaE9q8Y2tHNA*dE#tlhtfud3 zT6x|{)`0h*##OZXoSSR@Zm_Kx)$u-m+zVD(9|7^dG7(6tDd~;!S1tpjzMmm zXDs_<>v%o4H-U{e_C{KHeCxoTQGGXq<(cQL;9D?#>uKeV!RP(^z}5HT+tJjGzl~OI z{N1$oVD95xwAP;l{$Qae=H4QvpLr$bLul&PQOBGQgUwUV9PR@piyt+H*i zk=cSFS$^%94ME8=+XHB~&4%ZE$vNcU-Mhgwuko8EK4{&O8u?yt*srtNK6n~!Z5 za9_W5hG&z(9evI1D=I5HDlXXc>X_@%n=$*^gSKf!cUMnO)wef%W#K!Hwzs=w)u|mV zd2B@=>p_$AQ)pK=bvLal_^JQL>#{T8-7P)D)@5gctLs#k4S=h2tIO7d+c9GHoPS4nZVY#1D zSzo2Uy=Bc7jWo2?-Cd`t4bS5|kA0O6H@ec#03zQzps&)~zKR19n&-8z;%VEGKP=Z) zG<7#u=xK{Se2dfDsnSlQjxXO%7SBXhmCr_$BkzLMK4#HO9`37Z&7s*P z`jWGES&3g+;#Zfr&xrm?TVF>22y<(Ngny9`&(!HJ@wX^VQ4o_?#uCI+&w7n;ntQRiC}+M|W0h7M?6y z!W#H2_nGC{mV58Xz2x3|a{FJx|K59cc@#dem-oO?{2$yizC%fCfO|!rscD|PoTp}9 zBNln~o#x5Qd1~ejU@A?dOT+{i`;Z zXx_VO&ta~y_w5w0SMaG-nse`8_rUeg@BN$ZnfI04vFrCp1(qUVFK3q4}B{G0w#p+t93`X5G-lYVMU|^^D8+ zD!6A`zBe|85nE#l70eTl2f2Us*aY(3H@UugxO=9i$=$DrnZkTrL*tFpHwEwLlBTXr z)?WKL^ZJt9M0CAE@&c%k@n_(U$NmRt-D}T!^uHPGyNHAN#<4wi!RG@L41F@IbWSj`7eUCg#)#=O;7&aDd}?9Qx%x zPt~H{+Jsy8T=?|Sk2J=ftcO3oX=&{YUkIOZ@`f6}7(RRU?fIE^{MW+MJ-r#u8Lr(E zx8?D(7dpOgf*p(fIzGA2_jG)B!+kErc;79$?rT?!Q|@b*{9sNukf`cqpRb~L z=I5a5o6Uc|<}PC7o{0nDj?d@Uq44>{Ij4ir^hMmkNu2j?#2tdJZymjucPQ9g_45mD z4p`l1VAMMdp7y(d6;dd(J%l*VkgwHZ&x^muJJ0QDT_d%6EbdMD z9wqMUyng3lI|Z}mRYjk>7uqyh$5v0P7V&$6(|F%UsLjBPw?DO5r5qB`f$OoTcL-R`*WQRZ6rA>X z7+lTQ2ohVD{3)@cY@VMaS~ns zV=!yGCrdHkYZ&t;XHs8!mdC=qMq_c7{T(OH@{S4ieQxMuz@G7Ov~k9d1CL0!pYa6u z9yul9-UFu=Jm#?sZXdBm?*_*j>5DZw0j$sWOp*H@u(=U)B3NxX7VG$4u)6Q1qK}io z(TD!Xe;-(%dlC8X2ivzk_rdw9IR@w1gt>P5PAPbdZw1`7)aShAbBg<=8SK4s3Z~B( z*G@h1Tfp`g<68+P; z3AUa-&z3wrTa(~k6EV+?uc12^*z>Rp<{8?R)-$Ab29}5g_ZC|0S*)uR7v!2{T( zMf}IWYSxLEjo<++`o0cqoO<;Aaqu;T#oB!Wu5NtP`XqP&i~c?ZR=XaHm>a+YSoHU4 zuyHqF5%U@F02VQy1skXC^Tl)XIm|KWi*bG)TwbFupc$*rHS#`Hi@v@H9!U6?3Lbrb z8E%Yv|;PO~*K{HmLW4V!5E$ZF|b`PV*SHb1;@-;MdVYGbTEu@7>{x=|1-6e^|GUA)sGEN$ty;u?3vA8c_k!&| z^6vv1qi+5^v}zIm0N8sv*5cdX@>)EI_5h|Y^1cIhoWUOgJGQuIz6&-+J;w4qu(k9> zf8Phkvn}EtMl)7l)PDqg1{U=n1skXCyzZw}i}+38bY73cV_wnE6KKZii@YCzUBBQ@ zf?c!d_lIC()T7Riz}C_i^ZGHkJg=Xi8LKbq{}i0g>t}G|)ScI3v}(prpnVG48C%5t zxi#%CFz5a>X3TKfUt;PJ^DD41&tMVrELc6p`)jay>dU$F2WfwU*`K~4*k2v#@|^yLrr#_2c>(PHr(^j$Ts`LW53srF>xy~)6YN~|MXi5k}g3{KbQ6}WRx$Mh;(J^FeL>>8$hy$)B8_4zm0JoQ+g|A6gJUwM7rK-2FP z{k#b-@A-ex)MHM*i7;0^=Cl=BI;SD<@}AeBsYhQ!i4)ZJe(e&3pMzh9NRCw}%k0rT_d z^#0kY(0%5*e)5Rl8EkyIhr7Vljdy+Jo^3xboPyP3kv|PQ6>GqZ@j19VSl#z<=Inu) zr*2L6NX;6q!Jc5Xbj;J?>c;qa^S+p$N$-P2Kl>GWoVESo=BY>R1Hjf!=QkU!9<>hw zTiegDqxQjI^{9Oa*gW;9JqK*<^s~Ri;ObF(F1S4Id1&fUdp_7a^lLbZ_4USC9UW1Ka<3 z#o1g2R*M?%2AAh`Jeqop=LE2M>QVPS;BfQKt!!fFT1zbJqG=t4kk9o9! zt*BRp4}eI^pGcb)l(8 zoz-CT)MH*}fUU1D_NN={e4UGa_s81mG45Wl=OLYYA6$JDPi)V0KbW8V`(S;W!Pe>l z>$BD@+B314*jg;+cUGat*w2Qm&7+2SS~J=X8zVE45Fi@Z;O)g$kEu(|4v z?IK#Wi2o#5E%>Lvp1a7u0c?zV#C#f@#(V~DoO zF<%9%-G;^I^Irq=lYf_{KVokOTT_3`?GCVWOYecN!_{L=z5!MgGRMXc7MdxLQ0vo&>9DUOqo!uYZW9d^l!YtjmwU<#qWnntH6uPry^L zbX|T5SC2LL8Q47a(0&e9e+rA&kY9lL$zMbCKaKf$j;}Aj1UpV+obMB~YOxp3fYsu= zxL<+!$-ke|w;AktinFEPIe1V18thu7_w*oKJz_Q&G3jgIZ_w0ZPQL}KokPvYdk${x z^xpU#Ts_Xi@4@zGzP@$E9{&NX?|ICg8vz8O!W5` zu=jeHYi8}gV*KRaD_g@nW25iCf%(b%HrBrFNBuQURNPy((f8lMagGPc{Rez1c1+Rd zKf!96myKsL*5F?V)-cZgUZ7QTeP_|Wgn33^#NsTxTiEa5c@#aXOAS;s3=P#~YaWzGfSs9-lF91-FKJjK2ix)z^#jsV+-zK9zMcHWw6>bSN>GghB#`Z~4MV%(#^YWn=0 zTpr(%34gV%bpL6s691Ygz-{v?s@2efa?tOaC?1-lBSj>A1*j)9<8v}Nq&2tQL z<2+-rPqvQNb349>H`c%Xk%w<5uxC`Ce+MLwc}@cRw?6v(n;^Mk7*G6U@HpD^zTFK? z-FW{dNN)V@w0mIg<1||9&j9aP=n*r$i0Nfs5iy2zWw0#Z;WI1Z;%ea8ZgJ~yyeEl-{$-e D*SWVS diff --git a/packages/ludic.render3d/shaders/spv/b79a1f4e.vert.spv b/packages/ludic.render3d/shaders/spv/b79a1f4e.vert.spv index 917e392d93df8b3c3f4263e6b2680598bf772b94..0c1c0955b3d8bae872b683b18485d4c040d25b18 100644 GIT binary patch delta 795 zcmX|8%Su8~6y5ij<^u<1B4J3-Aj>8Wf*?%9ASXeiMuLb$h@wP~NrebCXcTfsjv7Q| z@66s0E$9dOfIg#UL2K!~U0Ck3*4}&VbGBQ-kD%M4hPp*Gafw~tD(-QuuM&^A4@Kkz zXacSJ&b#L65^8IyrPXw9L9Akvnm((1{WYlk7W1jO;&OH+TPz^gjqIlKYc;*9{3EQf zbZX+O`TTTtc_m%Q(8bc8!hSk7^)KbqT8(cNR=Li=08%z!2Box7Kmx_)SQj|IgmnFD zy=~s9(QsxBquECfYP?cg)5}&*51&eP6qtcqt8ri*wv;Au+=Il|vta=I2+J~>IeIaV8T0Z4@)Jx(4MCp4le;Q9hPEos zF92(()8rMAucbMMlJjlUOy1Hfj*#~n3U?dBFQ3=|PV`TQr*va5Gjq!f&BL_wHHkS_ZHg0u=DGN@e(32GTJ%&Jwp?90lg zvM-IG7XF+z?Sjs+H`0SM_uX^Oz3;v^AL+ex%v9qc5ksO9mNzFhYs8(UtbHaTZJ^UU zcsIU2D>;r68Sv z3IiEn1aq<6)*Llr6uwhLwxzzHbKZyCH1as&IbZ?wUn5duFX}ww3HVNzaynm@XAq@B zm777?5%w?IM4nAv5qUc{=b_Ab7jk~yaX;mjHR@e6|L#130K*eg)7&o_+YlH-LW}k77>W58h}V_yu?`UHbq4 diff --git a/packages/ludic.render3d/shaders/spv/b964507f.vert.spv b/packages/ludic.render3d/shaders/spv/b964507f.vert.spv index 8d24cfc73f8af254e88b9cb1653ed02e688a4f0a..6e564c509b69abd34b022e03767cc7d54e2b7d33 100644 GIT binary patch literal 15772 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 YeH-KW?xKAYb~84F-|@?h%irt%50?bERR910 literal 12936 zcmZ9S34m2)`Nppdn~0*ZFX8~o5@srH#I7b)6~SW#mv$g%*xWr7T47Nzu&p%y?p<3oY(U_&%1p4IhVOp({IY4QfZIU zUZugM8U0GxwO^?pN~z@iaPE7R24;Nml4VN{>F8`Yem$=GykCbkW$p`8KPAZ$-;FKj<-8a5rP;XiJrox~0(_2<9cH3yUimG*|O zFSj-0>^)Wqc*~we{`wYjS?(|Kl~Kb@2Aa4q|Ic8^D!$swwq=D`TrEZ334u zV=m&po>doLAwH~vw~1#}@J(Vij4`)?JM#ED#d-X8a9gfFB+m8WtTn?Vw|};8%608+ z(WkNaR%O1L(nRpuJkGsUU$?d`^4w?TDz7O`gS!!}>He#)Yi*DDa4&WzZLEMdukOtH zz7o8)*}TD}Gr_FT@r_OOT`irbww9aP+SeT0(zfdC600~M^V3ABtFF7;xPG@r8rs_S zwzJd*W^wN6uDTXCOIt^^WHh}Hk4sLI3$?#p`cJ=<*v!aqw ziF*>ClVr{_;ARfq0RDR!%v^WWRSs>I`wCjxU!PCib?dW@Wo@5T-O1kZxz%0gNv^c* zGps)0KF_-AIvN|9bmnMTfWE#oAk^cvG|L$AR zrog=-&(t(eUd&T7Zy^?WPDh$2FXpM4*MmjB9G}{bL~~Bm?oBjnt38lto>R4*iDsK> zk0hGsQ|;G@=Gj#1OEk}=+S8bG?3tVd_6k0^LNo5Uat-X8e$RsOwii5&_Z%4SrQdUq zuBqoh&MotM4pQzpkk@4XnrvSi>s-d(_kHc z?}2%Ydc;hx#B7h48E`dgMa)~k=Z?5>UhqTVO-)l520x<0tL+{IUq1WRx#6D;-@4`W zs()_AAFuL7@P~KqoFDPW!G}CHrP|&JnSW?Cen}<%?udU^#&4+lPla#YGPcT>!)MJJ zUhVH0@KUL#>TiN=-Lhr=NaoSc6SbIYVSRb_!HT^GS<-bY=p-gH03^P#2mMv zO&|8)!r<%R5AR%3-J{*`87nqd`9}DxS+`_++WHs5(>1#a&K|Aq`D?QHSqtp%*TDA0 z_U*4c`?pixAM0I*=5r_db3L4E;Rr@`132{i!1Sxy&i!!C+Ps6Q?ixRe?IO|scsI}b zPr;qX;LpN+*4V%2z|LLje;&=}oBbWb-S>-E^y4-7=6hb4YkohH9iQzRpYdD^?)%0V zxqHO-O{~vgu;p!Ezufnan%w#F{gbr;-v{hmdX6T7eAo1W)%0ohYhUi>=(mpC&rWJF z4{w6=lf@6uv3t?{33+T^?w<HKz16 z+nvu0sTun^qd5k1Jl5PB^K!2qO`Lnkcd^+0;=j`!=RVw>6SZ0_)>b~Xzx%wjSY_RJYc`abin|kcwHDKpWU&OV7t*6huB~SO( z1i05&%zfiKbX<DDxiJ32nCD^$rq7%n?&^{A5pbGwA>16- zQJ*=kk9y>M6x@SFUoQrqkz4fjV{mn2Bk$wj9xU=c0WRi!5>4IMn4eF9t*0+)T>|dG zqSj_`vDT;2)Qyc=mx8UQFLFNvzAU$k^SQnpZmd4%z&)uJ?SB^BgI$uxe-5l>oru{2 z?!lt%tzhHSqwTA}SLPOT_j$Ow@lopkJ@=b8DFE^qYtIxh{mU}MzHzm25IG{g6(JUd%^ZC&dhyaW7MNBKLT4zU$l2WIG$}0_W+u) z`l9}W;B{Ek|1sD&b;q@xyIREW1gGPA7#`z_c7B3poW98WDcJc7{s`DPi*|noHby<_ z{2Xj8eKD?IfQ#e$C7QANqW+`cbX>oJ8>jBL9^$TM{AlivVdJnxoXxb>a-b1^#@dr%5SG4mq*gcT; z<&SW6&$)Sj!pv2VG5r~wj_Db=<4)`R1+E@#{S{ms)3a#mF{bCh=BdY+{sy)^eZ?{T z9ZkPiwDS+J>!0@JdANFv>7QV8)qC@C{tN6_^+m0JgPosr9sUDXk6JH)%~g;2c@dn> z&r5K}p7!ZwxO%kp3fMVJ+j(e!&oJA1;5 zYd!=`J;t;b*j)AAe9eb~9jm^mwKv#WX`lB&Q;%B1z~-t)t$o4n1$}-Nm&a#u$1oA| zs=@rseE|3Pcbnf;4@$V-PY3sRr+!DB@@Wb8nX;n5R~ES6r$+u@;{84~xcPpcn)2QP z-;{9s&2@KhG4n-=A8~HSu@LqcMNqoSvUCx$ZO9`IATd zII!{Q8jgpn8}Ize-P``Ya1vIFMgD={$=DRk7@va&fz|yCXUtL{b4*nLfeTp-22-p~PYtQ7a7V&Qd8*hJ|??b`1pU%%=aP`=;hl9;ik2QU!tuzBje`8hfUY<+!EYc|+g=^DHZt{&~r0o(os`5ey$t3{1@ z;NrOEqp3%K7J$vm^t{eOcsf6e;MPgUbu3&x>Kq3)Pd&zUJlOjBma+?6_qSt?*Rkl2 zwO5aEod8bTUkrB-r0a7cTs_)932dHv)OiOuU7vTtt&@&p30ytuybEledW_@UVC(CP zxjh+dt#o~s!qubw_kh#&IR&m3HI{*k<9aWedi3X1uzBiH_cU-iKktJV$F&?yJ?fke zHcvgqbq3h_`eJ?F4|cqcMZfD~ZT0B)2f*%!bnG95s}JSL<9V+G^OJpVsc#q9S}VZ% ztkuMQHP(PNVllqvT#vq&;c9cKVcsb4S=dM{UCXm`J@VGT)mpF^b1T?-`l41Fcrupm zueEUXsMQWuTZcuh4zTs~MXgS-wbFid!PTSIdaznI7PZa+TTh?!w354;bJEASKLob! z$;_|M_Vd7MnwRfL^Uj6qvp>%71z2%@dve|Q^TG0%`wxR{TVF4Cx!8BuMr?NeJKB$c zN6@D2S;JUkqTP$YwtFEKwLc10k9oKlY#sHOzmI`k*C|-!eH^SFd7l8At8U*ma94}? zPlDBge+ulri~LK##;8ZkW^fwwX}EFfk#{Lr-FdLTzB?`hPsGx_^BK5$FEO5l%fV{q zN8T0S$a4&G~Hz6y>!=R|ItcpLXKXx~`( z_1Ccm>^dyQ@r_)+gP0q@-^A3e$6lhwP29a+Y@1p-s z%oug^Z_l-ezZM;lR zg3VJ8?MGns`>=S2JOJh=dxz-1AM^JTo~Z}H_R|>0dlz@L*b6@ftHpOp4}tl~zGu?6 z3+#T1y`|qVc%~l)J6GwM{s~+?Vt$&(r0>8-(9~m0KLe|sN6pClIo#Um+4u!qJ@&&d z!M10 z7lJj6v%M#|t2w_u7yf`XU{7JO7oN`bcrN@AuI9S zrLUED@L%C-nwR~wAJ4)6hS`s2G4p+A|2@~^ccuS;TSGni|4*=a&tuX5e}UCwU;P{G zGfh4I&GR3yx)#5?djV`4`XcT{u;bR8Q~UK2nz8zv(`UG=MZaGKtLb}%yF9-8`!9F` zHD2bf&#`$vUkB@Z4RdUst2e-|eR^j82UoW*<~fPxsz=@)Xs)w)_Cao(do0$;yZv?F z_Rr&utpUr!HxN9H7=8Xdi#*0T1nl3e=<{z|RNs9MVqFryyycl;-d)(X|#x`;0ASJQBjH_im0fd;*Nk+Tu@tFUi|&;y{BI9O=jl%zH{cx%$YO)d;hlDRXb{% z>T1t!jHrppaa$ZA z_^eq6$N3}h;nCII?RcMr{|dNs^wXB}R)Hff?@9hF{QMaUig6}J6yi06He7T-h&}Lg z7|(?N0ImZsrnynM=Tyspzrn}On=!t?@9-H5YJ1vAA+;EP!1Yl##t}4g*H$3 z*xowR>>{2!&_YY@21kba+J_qpsIi#NyWd2*mcy5T)z*NIk?04( z{{AK>+8&^-ru`YUMcjq%{Vzqkla~CUGQW?w+LyuAM(ZQym$X8xM9^UIIFTV9rE^2~ z;v|2JPHjtV#1u}U_BfrzYTanJ$fjd)p(nuFvrXYsr2ZtDb1tU2*_9ItCFgEV>CScd zi&J@GPv=7~*-l ztz}!La~+zS%yg~?tLd8uQ1bw}uw&(cJXpqi5nMQx&dGjt71H=J_}sG17a-3QYy|g| zZN3J1NBLSdf#k)JE`|w>fC-@nVr|mpnD=K?>1bMXxvx`GH&1Hp=mvfCt^)>BX;?&10cP9=Q6ESm4tJK=cy2||~%})k+dw`!2uS+ym z$G700VJ?dAO6+sjx)kue65u^)?#ygTJe>#zYxw4Zq?ZAakfLlU(meQ>&N=?nB^bD%a4U)1v;aO zZ$66SgU%Y?r0Iw`n$p5H8B#6ZH~e)@2oZwYV$HOKpVJbSXUR@W_&F_MIq|fFpVJn8 zPFwi+PD5W<;VKORsUO_hdW8>qHcAP%hrBM#M#NE8IGB?5=pdy|It}KQ1hUXC z(FXU4qZ2^Q;ntQECY9KzKit}G3)`~ri-1R!6Uuo<_>g8U$VD7Z%*i+ro3I!`EKDa8 zz`_LI73QY4EQ7+7g^$;6eqR{BBuBuqeu z4$`GX9}A;&^GsXg7EzY&YkR43B#0d@Y=- zMbPc0Z-mPC9M$0u*B^;B|qG0aTXu|2Nvfx{D7yEUpI}{ F`~&_L16BY4 diff --git a/packages/ludic.render3d/shaders/spv/b9fc2041.vert.spv b/packages/ludic.render3d/shaders/spv/b9fc2041.vert.spv index 289c8479bfc9146b211d0ed028c8764386933e3c..da1cf6e2caf8db94d862c98ebae2574b0bcbd29a 100644 GIT binary patch literal 15828 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 diff --git a/packages/ludic.render3d/shaders/spv/bfa15301.vert.spv b/packages/ludic.render3d/shaders/spv/bfa15301.vert.spv index a8db43dc088b5d012d796f7b28496b704c92b040..0c25d0f0c2497229bd0f15554f5a84fa8d990499 100644 GIT binary patch literal 15828 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 delta 4638 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 a_@I4<$f$yb^Ly+E@SAHvarxNVhQK+Ktb$Ac delta 831 zcmYk3%P%Bh6ve-)(v9v|m^QI!gqcVfEG#6G2qH$9Sg^7o5uqaz5y3)Y(Xp@;Y5iBs zagdettUTmO6g=hZ`@K#s%m)CdQ|} zjnB*uPmUx|<)gcEGM#mSl5gF0=jU^W*$R5Ub2jI1F8Ttf(pGOu@H#UnNW#tlPFUk zGzYcbP+T2#jJOT*-qpM0I#>ViAeXoF`1hL|il>^vwtz5ys0WwbwtBX(O8yr}BVH!A zL)s#?fkD3Pl3iQ0o|Y_H-b4M*O}FwlUv=;JKY7j&K8(V ztGNW~6~7p8R{>vU%%?ZQYe;LTi(A=4V_zQ@)nmux9 xv{tLxCl|khk9rP(`ov44bsvIxkV2#S2uKHC`)aOla}4a9no+fc&n)*VcmWR0c((um diff --git a/packages/ludic.render3d/shaders/spv/f34dce08.vert.spv b/packages/ludic.render3d/shaders/spv/f34dce08.vert.spv index 20c125afa9971f9850846958df6fca0dda561f13..b59781dab43b0a49f813ac1e561146f0acb2ae92 100644 GIT binary patch literal 9736 zcmZ9R2Y6NW8OARO0TcugMR714Acz7E5P^UwQ$cZyTtjk0E+n~_g$qd(+)C}%F1z>c z^H^zZL9NvmZSAyn+19ppPiL#`?|1I`!g7Fr;u%%ETs*6a&lj_R##{#OOyk#y)A;q^N~*hPl~jMg z7|gl5j^$!UCC2m+yfO9dq3tPN)!neEl=Sl`d~@n^-5ZLVD^bTiDEIT)!jo|Ov=8^D zq1fKhmhz`*d;0qvnCw|kv8B7U)%YQWf$R$_xVY5Z(B0Z~VSBl`($Ti4wbHn$z$#M_ zzfX6ur(D{yPgCwLZtkdTR2!7UxzF9jRyVWQ!{8&|)74$#L3%#YG)w2-#{)ygJ zX)3iA?I84_iQe4W-PKj<0K5N#()AD@2ySEp#bdx7rPc%=B__fBI00N;?P^>-+{u}< zBJuTr>k5~HS)VUKNt4kdhl{&m+JkDL+M_;A0+*Pi)hJzDbSE85OyVjJiWk=1a`rLnf zXSS9%FD`d>HMBRD`hA`OeH^@gpKIW|!pHIW&LE~bm}Tuvj;M~>zDLlPwO4DVocRX_Mi`-$zy)W{p=Q~dB*<3=F_rZBCB_i&IzNJJ2 z_go&B(dEeBY&uHE?wHGk=!Fx6V>=S%ql_uQ#qTfFC%d>v( ziu>lH-@B6CXYY#KwbJih$#U=i#cA$x1Cm>dl3EY z0Q;E#Wm;p6o11cfpR4KLm11kichkB*a^vNDFg5#om{yJcs3XTd%(ox8cU{eKct!@p%{6{V>a#}d%TP3)`h&?D1`d5R_{qJ)`p?g? z@F{C|&JX|O#J_i5@KfRU-8*LfG)C^ap9Xi&)omm04EU^Bvy!@w?<}}`rC)w7+`Hp= zSAm_2;}8EDH1CS@we?-)6ZMPmoe#fwhWRD1YwmcAm-{YL3+}rtxclh4Om6-rFhBkK zEce}}X8vwk-)+Vp3BL;L+V)~&LB7Y_XElAAbvtRz(Qh5Ozq{39p51WgZhTLQJs
  • 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 aR=9l|2D)ko>))8V;B$IT$Ya&&e7`=# zv*F+;)H!t5@r8B#q&nVT#|O9Ijp=0gU@?&lJiBAgf|RnMnVpNUsJCMw_PpAq@c!ET z?%=n;%PX;F3*MOSg%1+lS+4`vYD4%D@Zmj&bG+k1QZiz2qmo#xJ; zH*ct@u{rPVjr|{2U43NRh^EXVv^`@+@J!>}m|X5hZnB-gBTM{K8u@59vHn{X+`Rgi zdD-7Ov={j%B!#lWxWb`Q1fNrBcGlUd;2(p}T3Xp}H#WFA9i7r>1f4V( zq>o^3k01FuX6SafI$?J^`~-Kk%be96H*tEyPPPmF<$gQzwq2BY$MXI6+99(klvSHT zncEo3+{RGm_J!bWWU()lxqYF`?F%KIB^yIYNH&JxmThAQZUUP_ncEx6+};q}@%Dx? zw>NC&TyUGiW`UDd;wH37gk5fC0fXSf#Ik{kTfn zj^a@>jyU2R4IZ8x`O{Ys6zwc7i?cfxyt1&xa?V1t$XL#=!PWGQ38*=NNbI{jAtx5` zjt6HK5zxV2T!k>s247Lw{LYuh4CaDwD{OPX@=3+Ebb?Q%aN{{nyYX!l+QjpCJ2~QI z`M%6Yh(hcI@+f2hcs!2-?F;g-od|YCwAmx%QDhI;MB3~ZaMD*2DJ=@Dkom(1}=Zw~fY%Okywx z8Q2c#0INKfWByI>F}z#3Ix+iG(A0yU3U(FGVvGq-gX^Q-QrwKw!QPsK3VUWUyPt*# zbOu;0EAI7Tuv!#zCfH)8a2;dJS!n7jiUa&Du;bL@%AO52`7S)#*@kS`curybBt{+Y z;B9fPkhVy49@v8!#e5rHU(9#V)T5a5!H!dpo^k>BeDD7&BwAcl{ar*2YEktPcvP+3 z!((B7Cup-U>PZ)YZw1(F5K+#c;Kz$?k0I~ve06-8$@n~~oGJF|;< zN0RS@)uUBk0#>`8IJWA`zrYGnQq_!=Jd@VO4``i9T-;A?r*W3O%i zJ62oK60@`tVp5F}>_)J2jlTI~uzu>{a}(H09X>aM^;6f!$@~NyUFsIFd=e9NGj9cF zb`uQ|U{9BNzT)Ihw?iDH zF$%c@tiCrtj@>YSVcZFy$Wv~6cfr+T+*+_>)uW)h!Q~0u16R{G?Hn2TVdvudWz}h1C6X0_2-@=_( z#Qq&vAN7d+q}M8f>kz>o2S3SUa8K)cunA+}@4=3<_iAh7oW#}p16;d5+G70EaAQU* z`y<#d^h`qp{S!EX>adY z&h%!6=@bM03N}b2{To=#fssHh&dPIn3;R3Db375{d9YF9PW%I`k9zq06MP&``1}j3 zpSnI?)_;Sedu#y9qkFsn_U@u*!$JOoXdsOd_(ib#^F`8)uBLM&Rtx`k!1`a#lJ8E!cfo3x!7K3hz-oR`e!$z0UzFP$xpgAY} z=7Oxi$$$>jA&Su!398^o?tk^j94aoV(a{m+Tk>gvjj*B5>SH<(us delta 4638 zcmZ9Pd$3nk7036zSNJu;+=*eFVVV(8oW>@df$@)qNpJ!LYn4U5E#25B6?8D(kAZ&Fom5QonRW z8jrlNt+Q=@>f@(Y_@oM-4DamdnNy#re^Y9K&*-=)kM-q>@01EZvyW$ol6|$}@U;s6 zdWD};;pZL3o6`C4Ma7HE0Jpczm

    ^n+IRq*|spHtWW4d=&sLQ5DqKh<&{`-7;j2H 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 T!?_=U#otpoZn<&sw^aWJQPk-o diff --git a/packages/ludic.render3d/shaders/spv/manifest.txt b/packages/ludic.render3d/shaders/spv/manifest.txt index 4e747f09..3b0546c1 100644 --- a/packages/ludic.render3d/shaders/spv/manifest.txt +++ b/packages/ludic.render3d/shaders/spv/manifest.txt @@ -1076,7 +1076,7 @@ T 4d4fa91b u_shadow 7 T 4d4fa91b u_tershadow 8 T 4d4fa91b u_ts_height 9 P 9dce3246 model.vert bake.frag -B 9dce3246 vert 0 232 +B 9dce3246 vert 0 236 U 9dce3246 vert u_view 0 mat4 1 0 U 9dce3246 vert u_proj 64 mat4 1 0 U 9dce3246 vert u_light_vp 128 mat4 1 0 @@ -1088,6 +1088,7 @@ U 9dce3246 vert u_ground 208 float 1 0 U 9dce3246 vert u_ts_origin 216 vec2 1 0 U 9dce3246 vert u_ts_half 224 float 1 0 U 9dce3246 vert u_model_h 228 float 1 0 +U 9dce3246 vert u_flutter 232 float 1 0 I 9dce3246 i_rot 4 vec4 I 9dce3246 a_pos 0 vec3 I 9dce3246 i_pos 3 vec4 @@ -1137,7 +1138,7 @@ T 9dce3246 u_shadow 7 T 9dce3246 u_tershadow 8 T 9dce3246 u_ts_height 9 P 439a2253 model.vert bake.frag #define CARD; -B 439a2253 vert 0 232 +B 439a2253 vert 0 236 U 439a2253 vert u_view 0 mat4 1 0 U 439a2253 vert u_proj 64 mat4 1 0 U 439a2253 vert u_light_vp 128 mat4 1 0 @@ -1149,6 +1150,7 @@ U 439a2253 vert u_ground 208 float 1 0 U 439a2253 vert u_ts_origin 216 vec2 1 0 U 439a2253 vert u_ts_half 224 float 1 0 U 439a2253 vert u_model_h 228 float 1 0 +U 439a2253 vert u_flutter 232 float 1 0 I 439a2253 i_rot 4 vec4 I 439a2253 a_pos 0 vec3 I 439a2253 i_pos 3 vec4 @@ -1198,7 +1200,7 @@ T 439a2253 u_shadow 7 T 439a2253 u_tershadow 8 T 439a2253 u_ts_height 9 P 86f427b0 model.vert bake.frag #define FLOWER; -B 86f427b0 vert 0 232 +B 86f427b0 vert 0 236 U 86f427b0 vert u_view 0 mat4 1 0 U 86f427b0 vert u_proj 64 mat4 1 0 U 86f427b0 vert u_light_vp 128 mat4 1 0 @@ -1210,6 +1212,7 @@ U 86f427b0 vert u_ground 208 float 1 0 U 86f427b0 vert u_ts_origin 216 vec2 1 0 U 86f427b0 vert u_ts_half 224 float 1 0 U 86f427b0 vert u_model_h 228 float 1 0 +U 86f427b0 vert u_flutter 232 float 1 0 I 86f427b0 i_rot 4 vec4 I 86f427b0 a_pos 0 vec3 I 86f427b0 i_pos 3 vec4 @@ -1259,7 +1262,7 @@ T 86f427b0 u_shadow 7 T 86f427b0 u_tershadow 8 T 86f427b0 u_ts_height 9 P bfa15301 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST; -B bfa15301 vert 0 232 +B bfa15301 vert 0 236 U bfa15301 vert u_view 0 mat4 1 0 U bfa15301 vert u_proj 64 mat4 1 0 U bfa15301 vert u_light_vp 128 mat4 1 0 @@ -1271,6 +1274,7 @@ U bfa15301 vert u_ground 208 float 1 0 U bfa15301 vert u_ts_origin 216 vec2 1 0 U bfa15301 vert u_ts_half 224 float 1 0 U bfa15301 vert u_model_h 228 float 1 0 +U bfa15301 vert u_flutter 232 float 1 0 I bfa15301 i_rot 4 vec4 I bfa15301 a_pos 0 vec3 I bfa15301 i_pos 3 vec4 @@ -1319,7 +1323,7 @@ T bfa15301 u_shadow 6 T bfa15301 u_tershadow 7 T bfa15301 u_ts_height 8 P 01089da8 model.vert model.frag -B 01089da8 vert 0 232 +B 01089da8 vert 0 236 U 01089da8 vert u_view 0 mat4 1 0 U 01089da8 vert u_proj 64 mat4 1 0 U 01089da8 vert u_light_vp 128 mat4 1 0 @@ -1331,6 +1335,7 @@ U 01089da8 vert u_ground 208 float 1 0 U 01089da8 vert u_ts_origin 216 vec2 1 0 U 01089da8 vert u_ts_half 224 float 1 0 U 01089da8 vert u_model_h 228 float 1 0 +U 01089da8 vert u_flutter 232 float 1 0 I 01089da8 i_rot 4 vec4 I 01089da8 a_pos 0 vec3 I 01089da8 i_pos 3 vec4 @@ -1386,7 +1391,7 @@ T 01089da8 u_shadow 8 T 01089da8 u_tershadow 9 T 01089da8 u_ts_height 10 P 254e7887 model.vert model.frag #define CARD;#define CHEAP; -B 254e7887 vert 0 232 +B 254e7887 vert 0 236 U 254e7887 vert u_view 0 mat4 1 0 U 254e7887 vert u_proj 64 mat4 1 0 U 254e7887 vert u_light_vp 128 mat4 1 0 @@ -1398,6 +1403,7 @@ U 254e7887 vert u_ground 208 float 1 0 U 254e7887 vert u_ts_origin 216 vec2 1 0 U 254e7887 vert u_ts_half 224 float 1 0 U 254e7887 vert u_model_h 228 float 1 0 +U 254e7887 vert u_flutter 232 float 1 0 I 254e7887 i_rot 4 vec4 I 254e7887 a_pos 0 vec3 I 254e7887 i_pos 3 vec4 @@ -1454,7 +1460,7 @@ T 254e7887 u_shadow 8 T 254e7887 u_tershadow 9 T 254e7887 u_ts_height 10 P 1ce5c5d1 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST; -B 1ce5c5d1 vert 0 232 +B 1ce5c5d1 vert 0 236 U 1ce5c5d1 vert u_view 0 mat4 1 0 U 1ce5c5d1 vert u_proj 64 mat4 1 0 U 1ce5c5d1 vert u_light_vp 128 mat4 1 0 @@ -1466,6 +1472,7 @@ U 1ce5c5d1 vert u_ground 208 float 1 0 U 1ce5c5d1 vert u_ts_origin 216 vec2 1 0 U 1ce5c5d1 vert u_ts_half 224 float 1 0 U 1ce5c5d1 vert u_model_h 228 float 1 0 +U 1ce5c5d1 vert u_flutter 232 float 1 0 I 1ce5c5d1 i_rot 4 vec4 I 1ce5c5d1 a_pos 0 vec3 I 1ce5c5d1 i_pos 3 vec4 @@ -1521,7 +1528,7 @@ T 1ce5c5d1 u_shadow 8 T 1ce5c5d1 u_tershadow 9 T 1ce5c5d1 u_ts_height 10 P f4a2b586 model.vert model.frag #define FOLIAGE;#define WIND;#define BLADE; -B f4a2b586 vert 0 248 +B f4a2b586 vert 0 252 U f4a2b586 vert u_view 0 mat4 1 0 U f4a2b586 vert u_proj 64 mat4 1 0 U f4a2b586 vert u_light_vp 128 mat4 1 0 @@ -1535,6 +1542,7 @@ U f4a2b586 vert u_ground 224 float 1 0 U f4a2b586 vert u_ts_origin 232 vec2 1 0 U f4a2b586 vert u_ts_half 240 float 1 0 U f4a2b586 vert u_model_h 244 float 1 0 +U f4a2b586 vert u_flutter 248 float 1 0 I f4a2b586 i_rot 4 vec4 I f4a2b586 a_pos 0 vec3 I f4a2b586 i_pos 3 vec4 @@ -1592,7 +1600,7 @@ T f4a2b586 u_shadow 8 T f4a2b586 u_tershadow 9 T f4a2b586 u_ts_height 10 P b4587cd4 model.vert model.frag #define FOLIAGE;#define WIND;#define CARD; -B b4587cd4 vert 0 232 +B b4587cd4 vert 0 236 U b4587cd4 vert u_view 0 mat4 1 0 U b4587cd4 vert u_proj 64 mat4 1 0 U b4587cd4 vert u_light_vp 128 mat4 1 0 @@ -1604,6 +1612,7 @@ U b4587cd4 vert u_ground 208 float 1 0 U b4587cd4 vert u_ts_origin 216 vec2 1 0 U b4587cd4 vert u_ts_half 224 float 1 0 U b4587cd4 vert u_model_h 228 float 1 0 +U b4587cd4 vert u_flutter 232 float 1 0 I b4587cd4 i_rot 4 vec4 I b4587cd4 a_pos 0 vec3 I b4587cd4 i_pos 3 vec4 @@ -1660,7 +1669,7 @@ T b4587cd4 u_shadow 8 T b4587cd4 u_tershadow 9 T b4587cd4 u_ts_height 10 P 4dda406a model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS; -B 4dda406a vert 0 232 +B 4dda406a vert 0 236 U 4dda406a vert u_view 0 mat4 1 0 U 4dda406a vert u_proj 64 mat4 1 0 U 4dda406a vert u_light_vp 128 mat4 1 0 @@ -1672,6 +1681,7 @@ U 4dda406a vert u_ground 208 float 1 0 U 4dda406a vert u_ts_origin 216 vec2 1 0 U 4dda406a vert u_ts_half 224 float 1 0 U 4dda406a vert u_model_h 228 float 1 0 +U 4dda406a vert u_flutter 232 float 1 0 I 4dda406a i_rot 4 vec4 I 4dda406a a_pos 0 vec3 I 4dda406a i_pos 3 vec4 @@ -1727,7 +1737,7 @@ T 4dda406a u_shadow 8 T 4dda406a u_tershadow 9 T 4dda406a u_ts_height 10 P 3b183d8f model.vert model.frag #define FOLIAGE;#define WIND;#define FLOWER; -B 3b183d8f vert 0 232 +B 3b183d8f vert 0 236 U 3b183d8f vert u_view 0 mat4 1 0 U 3b183d8f vert u_proj 64 mat4 1 0 U 3b183d8f vert u_light_vp 128 mat4 1 0 @@ -1739,6 +1749,7 @@ U 3b183d8f vert u_ground 208 float 1 0 U 3b183d8f vert u_ts_origin 216 vec2 1 0 U 3b183d8f vert u_ts_half 224 float 1 0 U 3b183d8f vert u_model_h 228 float 1 0 +U 3b183d8f vert u_flutter 232 float 1 0 I 3b183d8f i_rot 4 vec4 I 3b183d8f a_pos 0 vec3 I 3b183d8f i_pos 3 vec4 @@ -1794,7 +1805,7 @@ T 3b183d8f u_shadow 8 T 3b183d8f u_tershadow 9 T 3b183d8f u_ts_height 10 P 79b77ed9 model.vert model.frag #define SHADOW_PASS;#define WIND;#define CARD; -B 79b77ed9 vert 0 232 +B 79b77ed9 vert 0 236 U 79b77ed9 vert u_view 0 mat4 1 0 U 79b77ed9 vert u_proj 64 mat4 1 0 U 79b77ed9 vert u_light_vp 128 mat4 1 0 @@ -1806,6 +1817,7 @@ U 79b77ed9 vert u_ground 208 float 1 0 U 79b77ed9 vert u_ts_origin 216 vec2 1 0 U 79b77ed9 vert u_ts_half 224 float 1 0 U 79b77ed9 vert u_model_h 228 float 1 0 +U 79b77ed9 vert u_flutter 232 float 1 0 I 79b77ed9 i_rot 4 vec4 I 79b77ed9 a_pos 0 vec3 I 79b77ed9 i_pos 3 vec4 @@ -1862,7 +1874,7 @@ T 79b77ed9 u_shadow 8 T 79b77ed9 u_tershadow 9 T 79b77ed9 u_ts_height 10 P b9fc2041 model.vert model.frag #define WIND; -B b9fc2041 vert 0 232 +B b9fc2041 vert 0 236 U b9fc2041 vert u_view 0 mat4 1 0 U b9fc2041 vert u_proj 64 mat4 1 0 U b9fc2041 vert u_light_vp 128 mat4 1 0 @@ -1874,6 +1886,7 @@ U b9fc2041 vert u_ground 208 float 1 0 U b9fc2041 vert u_ts_origin 216 vec2 1 0 U b9fc2041 vert u_ts_half 224 float 1 0 U b9fc2041 vert u_model_h 228 float 1 0 +U b9fc2041 vert u_flutter 232 float 1 0 I b9fc2041 i_rot 4 vec4 I b9fc2041 a_pos 0 vec3 I b9fc2041 i_pos 3 vec4 @@ -1929,7 +1942,7 @@ T b9fc2041 u_shadow 8 T b9fc2041 u_tershadow 9 T b9fc2041 u_ts_height 10 P f34dce08 model.vert shadow.frag #define SHADOW_PASS; -B f34dce08 vert 0 232 +B f34dce08 vert 0 236 U f34dce08 vert u_view 0 mat4 1 0 U f34dce08 vert u_proj 64 mat4 1 0 U f34dce08 vert u_light_vp 128 mat4 1 0 @@ -1941,6 +1954,7 @@ U f34dce08 vert u_ground 208 float 1 0 U f34dce08 vert u_ts_origin 216 vec2 1 0 U f34dce08 vert u_ts_half 224 float 1 0 U f34dce08 vert u_model_h 228 float 1 0 +U f34dce08 vert u_flutter 232 float 1 0 I f34dce08 i_rot 4 vec4 I f34dce08 a_pos 0 vec3 I f34dce08 i_pos 3 vec4 @@ -1989,7 +2003,7 @@ T f34dce08 u_shadow 6 T f34dce08 u_tershadow 7 T f34dce08 u_ts_height 8 P 512004a1 model.vert shadow.frag #define SHADOW_PASS;#define WIND; -B 512004a1 vert 0 232 +B 512004a1 vert 0 236 U 512004a1 vert u_view 0 mat4 1 0 U 512004a1 vert u_proj 64 mat4 1 0 U 512004a1 vert u_light_vp 128 mat4 1 0 @@ -2001,6 +2015,7 @@ U 512004a1 vert u_ground 208 float 1 0 U 512004a1 vert u_ts_origin 216 vec2 1 0 U 512004a1 vert u_ts_half 224 float 1 0 U 512004a1 vert u_model_h 228 float 1 0 +U 512004a1 vert u_flutter 232 float 1 0 I 512004a1 i_rot 4 vec4 I 512004a1 a_pos 0 vec3 I 512004a1 i_pos 3 vec4 @@ -2049,7 +2064,7 @@ T 512004a1 u_shadow 6 T 512004a1 u_tershadow 7 T 512004a1 u_ts_height 8 P b964507f model.vert shadow.frag #define SHADOW_PASS;#define WIND;#define ALPHA_TEST; -B b964507f vert 0 232 +B b964507f vert 0 236 U b964507f vert u_view 0 mat4 1 0 U b964507f vert u_proj 64 mat4 1 0 U b964507f vert u_light_vp 128 mat4 1 0 @@ -2061,6 +2076,7 @@ U b964507f vert u_ground 208 float 1 0 U b964507f vert u_ts_origin 216 vec2 1 0 U b964507f vert u_ts_half 224 float 1 0 U b964507f vert u_model_h 228 float 1 0 +U b964507f vert u_flutter 232 float 1 0 I b964507f i_rot 4 vec4 I b964507f a_pos 0 vec3 I b964507f i_pos 3 vec4