From eca76f01770564742f4531581ac391bc9585c881 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Wed, 6 Nov 2024 11:43:12 +1300 Subject: [PATCH 01/11] feat: use cargo-gpu instead of out-of-workspace shaders binary --- Cargo.lock | 10 + crates/renderling/Cargo.toml | 8 + .../bloom-bloom_downsample_fragment.spv | Bin 4916 -> 0 bytes .../src/linkage/bloom-bloom_mix_fragment.spv | Bin 1776 -> 0 bytes .../linkage/bloom-bloom_upsample_fragment.spv | Bin 3324 -> 0 bytes .../src/linkage/bloom-bloom_vertex.spv | Bin 1304 -> 0 bytes .../src/linkage/bloom_downsample_fragment.rs | 55 +- .../src/linkage/bloom_mix_fragment.rs | 54 +- .../src/linkage/bloom_upsample_fragment.rs | 54 +- crates/renderling/src/linkage/bloom_vertex.rs | 53 +- .../linkage/brdf_lut_convolution_fragment.rs | 55 +- .../linkage/brdf_lut_convolution_vertex.rs | 54 +- .../src/linkage/compute_frustum_culling.rs | 54 +- ...volution-brdf_lut_convolution_fragment.spv | Bin 5212 -> 0 bytes ...onvolution-brdf_lut_convolution_vertex.spv | Bin 1388 -> 0 bytes .../convolution-generate_mipmap_fragment.spv | Bin 608 -> 0 bytes .../convolution-generate_mipmap_vertex.spv | Bin 1172 -> 0 bytes ...prefilter_environment_cubemap_fragment.spv | Bin 6456 -> 0 bytes ...n-prefilter_environment_cubemap_vertex.spv | Bin 12180 -> 0 bytes .../linkage/cull-compute_frustum_culling.spv | Bin 19688 -> 0 bytes .../src/linkage/generate_mipmap_fragment.rs | 54 +- .../src/linkage/generate_mipmap_vertex.rs | 54 +- .../prefilter_environment_cubemap_fragment.rs | 57 +- .../prefilter_environment_cubemap_vertex.rs | 55 +- .../src/linkage/renderlet_fragment.rs | 54 +- .../src/linkage/renderlet_vertex.rs | 53 +- .../skybox-skybox_cubemap_fragment.spv | Bin 1100 -> 0 bytes .../linkage/skybox-skybox_cubemap_vertex.spv | Bin 11340 -> 0 bytes ...skybox-skybox_equirectangular_fragment.spv | Bin 1368 -> 0 bytes .../src/linkage/skybox-skybox_vertex.spv | Bin 9888 -> 0 bytes .../src/linkage/skybox_cubemap_fragment.rs | 54 +- .../src/linkage/skybox_cubemap_vertex.rs | 54 +- .../skybox_equirectangular_fragment.rs | 54 +- .../renderling/src/linkage/skybox_vertex.rs | 53 +- .../src/linkage/stage-renderlet_fragment.spv | Bin 74564 -> 0 bytes .../src/linkage/stage-renderlet_vertex.spv | Bin 43336 -> 0 bytes .../tonemapping-tonemapping_fragment.spv | Bin 5488 -> 0 bytes .../tonemapping-tonemapping_vertex.spv | Bin 1148 -> 0 bytes .../src/linkage/tonemapping_fragment.rs | 55 +- .../src/linkage/tonemapping_vertex.rs | 54 +- ...ial-tutorial_implicit_isosceles_vertex.spv | Bin 756 -> 0 bytes .../tutorial-tutorial_passthru_fragment.spv | Bin 328 -> 0 bytes .../tutorial-tutorial_slabbed_renderlet.spv | Bin 19376 -> 0 bytes .../tutorial-tutorial_slabbed_vertices.spv | Bin 5860 -> 0 bytes ...-tutorial_slabbed_vertices_no_instance.spv | Bin 5236 -> 0 bytes .../tutorial_implicit_isosceles_vertex.rs | 55 +- .../src/linkage/tutorial_passthru_fragment.rs | 54 +- .../src/linkage/tutorial_slabbed_renderlet.rs | 54 +- .../src/linkage/tutorial_slabbed_vertices.rs | 54 +- .../tutorial_slabbed_vertices_no_instance.rs | 55 +- shaders/Cargo.lock | 966 ------------------ shaders/Cargo.toml | 30 - shaders/rust-toolchain.toml | 12 - shaders/src/main.rs | 196 ---- shaders/src/shader.rs | 68 -- 55 files changed, 884 insertions(+), 1708 deletions(-) delete mode 100644 crates/renderling/src/linkage/bloom-bloom_downsample_fragment.spv delete mode 100644 crates/renderling/src/linkage/bloom-bloom_mix_fragment.spv delete mode 100644 crates/renderling/src/linkage/bloom-bloom_upsample_fragment.spv delete mode 100644 crates/renderling/src/linkage/bloom-bloom_vertex.spv delete mode 100644 crates/renderling/src/linkage/convolution-brdf_lut_convolution_fragment.spv delete mode 100644 crates/renderling/src/linkage/convolution-brdf_lut_convolution_vertex.spv delete mode 100644 crates/renderling/src/linkage/convolution-generate_mipmap_fragment.spv delete mode 100644 crates/renderling/src/linkage/convolution-generate_mipmap_vertex.spv delete mode 100644 crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_fragment.spv delete mode 100644 crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_vertex.spv delete mode 100644 crates/renderling/src/linkage/cull-compute_frustum_culling.spv delete mode 100644 crates/renderling/src/linkage/skybox-skybox_cubemap_fragment.spv delete mode 100644 crates/renderling/src/linkage/skybox-skybox_cubemap_vertex.spv delete mode 100644 crates/renderling/src/linkage/skybox-skybox_equirectangular_fragment.spv delete mode 100644 crates/renderling/src/linkage/skybox-skybox_vertex.spv delete mode 100644 crates/renderling/src/linkage/stage-renderlet_fragment.spv delete mode 100644 crates/renderling/src/linkage/stage-renderlet_vertex.spv delete mode 100644 crates/renderling/src/linkage/tonemapping-tonemapping_fragment.spv delete mode 100644 crates/renderling/src/linkage/tonemapping-tonemapping_vertex.spv delete mode 100644 crates/renderling/src/linkage/tutorial-tutorial_implicit_isosceles_vertex.spv delete mode 100644 crates/renderling/src/linkage/tutorial-tutorial_passthru_fragment.spv delete mode 100644 crates/renderling/src/linkage/tutorial-tutorial_slabbed_renderlet.spv delete mode 100644 crates/renderling/src/linkage/tutorial-tutorial_slabbed_vertices.spv delete mode 100644 crates/renderling/src/linkage/tutorial-tutorial_slabbed_vertices_no_instance.spv delete mode 100644 shaders/Cargo.lock delete mode 100644 shaders/Cargo.toml delete mode 100644 shaders/rust-toolchain.toml delete mode 100644 shaders/src/main.rs delete mode 100644 shaders/src/shader.rs diff --git a/Cargo.lock b/Cargo.lock index 468fc2f8..3a9952ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2150,6 +2150,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2563,8 +2569,12 @@ dependencies = [ "img-diff", "log", "naga 0.19.2", + "naga 22.1.0", + "pathdiff", "pretty_assertions", + "quote", "rustc-hash 1.1.0", + "serde", "serde_json", "snafu", "spirv-std", diff --git a/crates/renderling/Cargo.toml b/crates/renderling/Cargo.toml index f937b9de..41e7f7f8 100644 --- a/crates/renderling/Cargo.toml +++ b/crates/renderling/Cargo.toml @@ -8,6 +8,7 @@ license = "MIT OR Apache-2.0" keywords = ["game", "graphics", "shader", "rendering"] categories = ["rendering", "game-development", "graphics"] readme = "../../README.md" +build = "src/build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -90,6 +91,13 @@ wasm = ["wgpu/fragile-send-sync-non-atomic-wasm"] [patch.crates-io] spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu" } +[build-dependencies] +naga = { version = "22.1", features = ["spv-in", "wgsl-out", "wgsl-in", "msl-out"] } +pathdiff = "0.2.2" +quote = "1.0" +serde = {version = "1.0", features = ["derive"]} +serde_json = {workspace = true} + # dependencies for CPU and GPU code [dependencies] spirv-std = { version = "0.9" } diff --git a/crates/renderling/src/linkage/bloom-bloom_downsample_fragment.spv b/crates/renderling/src/linkage/bloom-bloom_downsample_fragment.spv deleted file mode 100644 index 7eee219c817aeff7e2a8896950761829b2f5ee98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4916 zcmZvfS!`BS6ooG>V$ z!NjP97)3?FiBTM1oaY(mc}50B{l5F(T~3<+#N%Cit+n^r``r5@R#pt}l6C5kWm(T` zj}O*ySw$xFxvx)_9g}s=-lQlgRy;D%d;a+YuTTA_>EKD z+2X9e)Ei7(&308258-L9d_Ov`%K0qok7k~+XB!VIV$U$Qny0hM_r_Jjvj)cV#eLws zqtSS+e*)WOY~2&{=x975k6WjVVQSAlsqpBlqOR}6Izz#}17rIb$+J7V#C6L~23x-a z+umatyUZC?g1L7PuF(ZQrr;w!h1fj%nN*zR%${eg?)%hZ?0xzUjbrZ9!1ghUzP*oe zYl%+-U;BSWiP&eSKQg@rSPo5)H)OFte)#Uz86<`CzZmwh$rW9Yi-1}CA}@K zE5+liR}J>tan|tfwy`YRJ%O%j0CBgz?}J2Bc%FmiJoRjIUA5Hn{-(0MD`P!pv%Ra$ z?8Mp8`##H&a48~1W4*t7I`m;P?%k>GEpk^cNG%_o*~mIZMBxz+yk#`&KD0;XKPEXpy4P|PthLhKSb1{1>xc%&F%H*zvlh+@8 ztp!81eLH>+={vuL*!QF_?)BC(wb#MP>yMdk13OcidqFg~oyl+dc6R9-F1=&9 z^=x}9{dP+4{Z3-NYSG_@GH2WkC$B%gnY+N=o4>=zy}wNEMmTx>apxP#ogOk@Ezxj<|ze87Wo4|6?!97rL6$$rX!TD!r z_%?&RLsxJQgS{J9%=QRauUhyX1)H0my9Lf%xyXGCtXC~^9|xP8_O}(zT)D{I2G*+< zxle%2P3L$L&Rn_3eG05sEpnd*`|e!fdj{-$YT?@s)~7XmJHXDO7QUTeeQD3T;Otv1 ze7nK=(*E|q*`r$co(22fU2*PSusy1U?>VqOt>JqfY>#T;djYI3?e9f6dsGYGONB4( z?`60>Y_;&c0$%8$tl(Y+w-j9T@*138weYr4CF2WO9J;rkrC+Cy1!?iXNtR14piV0~J{_Z8S4)x!5RSYO)T zH*of-7QSx_U)tYyaQoP5@%NGM!S*vb;eG&ncFO%o>^Uj-6R|br;@qFXjSj&I?iX-V z!NqL9!s%5D-)~@ZwFdV)*j%~D{R6C5Eqs51&GlY_+YdH3y{o_A^s0sL0N7mbD!7AS zbJP1f1gBRme22kn@wuYEzroI@7QTPL`m~1c2-sQF!uKy&U)uA3aQ3YhJ`3qf`|Ch# zk80to0Iz4e;@nDNdsGWw$HJ#Ie4PmFQ7wF(3t!q_7dU%V3t!j5m-g2U&K}j`jP2l! zE0^#^0-Y!SPT2_o_)et?xG;dhd3+XZgK{ z-lv`Jxqkbh_id-!gTI5&`z5;fT#IH;q4!U8?^oTPLLZRm-mAJjg+4IRy-#&}>dyZU zRe=W;`be<7)bR{$aH82qstrjrdq}maMDzR+)SS(E!*~uQ_DpMALvI~lW!FMG!rM55 F{XZm$q0s;U diff --git a/crates/renderling/src/linkage/bloom-bloom_mix_fragment.spv b/crates/renderling/src/linkage/bloom-bloom_mix_fragment.spv deleted file mode 100644 index a04b917bf09495398058e293c6743db359f9f41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmYk5TT7Ht6o$7m9+E^m*h$l7nljUnD3dTM0%@eI6wA(tW<}5>lovrlruWrVbzy&@ zi~dnRB050O^L(@S_-%M+o!_)NI52{R`*ouB8wZ_53E%$H)3`BaL%?zf5R?jGjw8G z>paGsMce*z$(igtmtVqo%Gb`v-NAT$kLGNreB5tg+&cNS^KrjTnspEHUhER^l&}vX zn}Ghku=HjA5cUzXPP+iK4@KKqtSuq!tA96HWn>wT{nfkiRglBv%6|lSwB+JbrWEi7{>G@SA$Ho!9T`NpatS zC&j&Ik9G;^JzF!z3n(My_IMY+*?9svLCpCsgY>P=Q}4c2;BMOHOaf>8MvZ&E0oJ+G zFFLIwJ%7nJwhG<>d#SI-UT@J;-S^0~hEINDf5?~1I_vYc{+~=`{|&GPl{~* z9_KLUDwqQDsbAtBO-Nxtt=wtMIA2ayuF&q7ehVN$ddCw{DR`j`Nnqdyz zx07c0gzno(GkiwZXI`4&3%dUN40o{gds4r<==$1VE*ogDrN4MTRlJ5b!_3n{; z57Di6j}Bg+yDxxE;GN6k_m(Hc7tvE(PUCW>_@i80e&g~_bANvCC14ME%pCw1xF!Ej K#{RM0S@0h#wQ+X< diff --git a/crates/renderling/src/linkage/bloom-bloom_upsample_fragment.spv b/crates/renderling/src/linkage/bloom-bloom_upsample_fragment.spv deleted file mode 100644 index 64a6fd88cfc90229c4508df28f9960ab014f6fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3324 zcmZ9OOKg=z7={N56eFP+Q4oZl3Z}KxN>re!6frTW3l zs4FBfMu-6y8YC_Zx=_5|!Mn!G!f4`ct)Pj~=lRckI60Gi%sbC~x0(6d(lUKnYnnMN zrPP+zIWf*j)05KqhxsX;oo1y0z~F`(HuO&J*xY;Ns+Ic9O)XB?wObz9-9~)8QQXacx+uDb(a=vYv^yB@vcjMPwKw?x$pY_{g$fFxp~i?%^kj; zCu*HX>|)k6%u!=~A+x^n^U1uV;wdd)&p6li<+?qu?a$a6v%SdA#jAt417dIL`7rNj z1-|BAjyYVL_u^`mQV(}(t?c);WIaq_8mAcX9pN83c z4A%~0Ry1Vgy9lqI%rDJ6*1fEav%jlyEpuAWwfnxOK5@<~(E4=Kr{`aVS#veBah@T3 z*Px9xm$kiHN1VT}v0T5HT>WUzrmy{b_YT*-qi-L5c>c9mO7->b*HC^7#zgM5I;Z-; zYEICBs+P>Y-)T;8GxN3V+3zh_+~olIypLNk&+b~EAMx&N(b{e9cWbvrt8xgWXiK)V;Y?nKKr zlFK{33p2mmbK1Lo+Hbj*dv0S!G2=W-C#LW9&`A@6`yOB7*^;4PI%T2I$=F^!Q zA2oMo&UA*|o0)xt->%Gjhv?&ev}dr7sQWM4Udp;2NUne6djK6jG{Nebm34P#W?k>Z zH`;@FPu_dfZ6&C=?rfM`|EMvAmOFy&Ma#s&9?Gmd@53#PZ3H#fod=WaANd|Z z%N@ZUMa#s&9?Q(SQDXrP%{3On?O2J9PH)H%J1M6m_M6-ukkzRRdgNmdkuEH(kc19273){yl)@u zb+qvZ3iby2ICijLZ=#L&&LZ|LwDI0qu(#31duLO8FTUG5nDKoDdlzkd$=+jaylhUI zUB$kS_W#J2Gw;LvyKlbO{{S8P{w%p~?%4mZ*x#S`trPuzgx-lw73>7s-?4iOb`re{ z^Y>1~evCH$P{BSy8-KW9pQ4TTn~vDe(8eDt*ym{D{T9OS3$*cm3&FlbdoSh)_7&Q@ zFh{Vj(VpKN@fP2pjradY!M?|v7yj=yTH%iloso}Rwj z+pFUB$CLLTPCn&CsnPw&x!_!IT>9mF(@A{T_?5<;yBKUXt`@%4xO}$)pY!ta`;Jpl zt@*0=t1ecL%Za@ZISzc|aOe2gS911JwU@FQpXqS@h?P?>?D(j0XT|GZy#DwXBE_>W zCd<{x^;i}o>060$HfyajtcBZ&{A_Y8M-BpZe!G&d^RGnbXWx(CJo@cTaXsKm@vKIw ztIunJujAJ%J3HFW*7R^A5X0Wt)*7F--E20oU7Vfc6Wg%%e>+@GIh+A;Y-Sxtnni81 z*tcEkzw2>5dMRgLJAS9~lAZ^3FB{=vfN#?0#CNyx|M~7UpZI^z-H*+gzkS2H^9Ql3 zDYqOTp3O`TBhBQ_%;ZgYuV%u%A@3F6iRNAO0-tyCBX{;FQmnVI8OVpbd;baiAlzHp z4%~moA4iw_b8_=P3B-6mhw;egUcSWdZ9EOc@PCj0S)}h*^7B0pb^?8oKO@E9e6Nyc z9Qh)UTQ0r0)7^kwUH6L9&0vq}?M3>!di&8|2J(~YiNX2Qv*Uw6p01vKA2z!hc8=5S S+g_$~$vHiXnSSRcc7s0yM?JCt diff --git a/crates/renderling/src/linkage/bloom_downsample_fragment.rs b/crates/renderling/src/linkage/bloom_downsample_fragment.rs index ae23eb0b..77638ca3 100644 --- a/crates/renderling/src/linkage/bloom_downsample_fragment.rs +++ b/crates/renderling/src/linkage/bloom_downsample_fragment.rs @@ -1,23 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [bloom::bloom_downsample_fragment](crate::bloom::bloom_downsample_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/bloom-bloom_downsample_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "bloom::bloom_downsample_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "bloombloom_downsample_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "bloom::bloom_downsample_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_downsample_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "bloombloom_downsample_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_downsample_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device - .create_shader_module(wgpu::include_spirv!("bloom-bloom_downsample_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/bloom_mix_fragment.rs b/crates/renderling/src/linkage/bloom_mix_fragment.rs index 4a3ea315..59df4831 100644 --- a/crates/renderling/src/linkage/bloom_mix_fragment.rs +++ b/crates/renderling/src/linkage/bloom_mix_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [bloom::bloom_mix_fragment](crate::bloom::bloom_mix_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/bloom-bloom_mix_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "bloom::bloom_mix_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "bloombloom_mix_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "bloom::bloom_mix_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_mix_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "bloombloom_mix_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_mix_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("bloom-bloom_mix_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/bloom_upsample_fragment.rs b/crates/renderling/src/linkage/bloom_upsample_fragment.rs index aefaaba8..5afea1ac 100644 --- a/crates/renderling/src/linkage/bloom_upsample_fragment.rs +++ b/crates/renderling/src/linkage/bloom_upsample_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [bloom::bloom_upsample_fragment](crate::bloom::bloom_upsample_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/bloom-bloom_upsample_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "bloom::bloom_upsample_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "bloombloom_upsample_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "bloom::bloom_upsample_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_upsample_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "bloombloom_upsample_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_upsample_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("bloom-bloom_upsample_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/bloom_vertex.rs b/crates/renderling/src/linkage/bloom_vertex.rs index 66a7896c..e7033323 100644 --- a/crates/renderling/src/linkage/bloom_vertex.rs +++ b/crates/renderling/src/linkage/bloom_vertex.rs @@ -1,21 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [bloom::bloom_vertex](crate::bloom::bloom_vertex). -//! -//! **source path**: `crates/renderling/src/linkage/bloom-bloom_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "bloom::bloom_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "bloombloom_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "bloom::bloom_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "bloombloom_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/bloom-bloom_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("bloom-bloom_vertex.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs b/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs index d7213047..b5e4df4d 100644 --- a/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs +++ b/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs @@ -1,23 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::brdf_lut_convolution_fragment](crate::convolution::brdf_lut_convolution_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/convolution-brdf_lut_convolution_fragment. -//! spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-brdf_lut_convolution_fragment.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs b/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs index 485ca607..bff53dad 100644 --- a/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs +++ b/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::brdf_lut_convolution_vertex](crate::convolution::brdf_lut_convolution_vertex). -//! -//! **source path**: -//! `crates/renderling/src/linkage/convolution-brdf_lut_convolution_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-brdf_lut_convolution_vertex.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/compute_frustum_culling.rs b/crates/renderling/src/linkage/compute_frustum_culling.rs index d704051f..a9b17f06 100644 --- a/crates/renderling/src/linkage/compute_frustum_culling.rs +++ b/crates/renderling/src/linkage/compute_frustum_culling.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [cull::compute_frustum_culling](crate::cull::compute_frustum_culling). -//! -//! **source path**: -//! `crates/renderling/src/linkage/cull-compute_frustum_culling.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "cull::compute_frustum_culling"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "cullcompute_frustum_culling"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "cull::compute_frustum_culling"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/cull-compute_frustum_culling.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "cullcompute_frustum_culling"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/cull-compute_frustum_culling.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("cull-compute_frustum_culling.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/convolution-brdf_lut_convolution_fragment.spv b/crates/renderling/src/linkage/convolution-brdf_lut_convolution_fragment.spv deleted file mode 100644 index 4dbda3721537d2c37020012958ca2a3f14d823a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5212 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 J{AI;e@DIJXM8g08 diff --git a/crates/renderling/src/linkage/convolution-generate_mipmap_fragment.spv b/crates/renderling/src/linkage/convolution-generate_mipmap_fragment.spv deleted file mode 100644 index e1f12d06d03210cf8ed1244398eb8c2ce42f6a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmYk2%}T>i5QVR;rTEuaD-{)_wQj7gMJl@W4Rl$8#8NOxDbe@!E!+rxUz!UJOy-_5 ze<#y!O}e486+%eDEnlr4T0zG6eH=nBv}@jP0=rE#|5g@X<;Q2WEQ{G}krmlGt+IK( zT;=I%{=QBZc~(@^wQzgw>)?kV`@8rvto#M8iLLpM?H%Lxm=|B-n%Mc~wTNSWNcArK z2tT2Ak0`cByx(9ojKBv(=gSYM>Ji5<3DNgy*g^khhI*V6O{_Vmzj@ZRXH*?E{Gj0@ z=DhWPsq2A0alG$2dxv26nNyp$QJ>gZzBREsqn5^<3f3 i6T9;ocis!L)G=*1>t5l!(M`iU>xpjl$^EkV9{&TY10D|m diff --git a/crates/renderling/src/linkage/convolution-generate_mipmap_vertex.spv b/crates/renderling/src/linkage/convolution-generate_mipmap_vertex.spv deleted file mode 100644 index 49223d8cd9acf869cc6f15868e76c2ff131481d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmZvaX-We@5QQrmjd4kg#>6FRV%#^}k%$WZ@fab9mUW|p>7{TUe>Fc|z>)+}X%AbU%^#cfy~8*w<{@T9}6u_R-VPyLu|+hKITj2Xqz zDFQT#!by30gU@N@(U3RGD@Gj{O>)QOSr4B0ggkN9AfA#Z4nM6bc3u)gugrIp!#Wum zdnyRy(St){O5X30ICJ!TeA>m~vsy#P9qQ7@jEuoL;9Q8FuXk<8^&I8Edv4a{^>cHM zL(k{UYYvXMWZ3tDa9)N6H5hqt?4=-2pX~2K*q>M95ugV$*|Y5c-Ab+(7?!#xVWuq?(c*>@qTz8F&UUQzXzetyR-;xpMZM-YKEzkH; zEwLThu8cLA->8l|*^{9~E$eVU`!aaep?5HI`r%B_Kagj5{X@-<1M|J!}8~ diff --git a/crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_fragment.spv b/crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_fragment.spv deleted file mode 100644 index efcb42aaa7c89b4ff99ad579c1081e434f64719b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6456 zcmZ9Qd$5*O6~cmVB!aR8Z| zYMLf5Q-4_un4&dSrkIFCFs7(fQ%ojhUeZ!)Y9>uH$9})>?C1Cn+p}2DTI<Ssq()qAVKE&HO5%R45lUH7>OQ>LCRZ&)=@ z)%tgM^}(tgY>H*8yRTina{aol)!j2@tm#?4qHE>43&AdH1@`W$TwN zU$taS=Zc;sSLkTvaQ+}YhCl{KaQQ8iXMgMLul~` ze5awumAt2e9ojYe3=Kx?Gh0^g?AT-b?1y8IYuVN8lgK+B>>AGM^R;Ywu73j3hKyw` z)}M$Z=3x&&W|q0`#gQ84^qF&FPwum)$alYoQ_yv>lYc7qdytXDJu}y%3}BY_ zG$h>VVC%;|7kn%t*W5D@&txXLMqKxJPSn^(5c?N7v+VUed?!}NRI|`E;#%!RhB+Me zZgw9m-1ce?w(-7wwO8jCyGFbJIcV>f9Bt#?FYWB%0x%(beRpSWBQ_7bkP+^D?469* z7h_Lm#Qqreumt$SGXJh|;TZp~o z&26(zX6=i>_RxLWC;R9aU!KK7G}Zg;ev|KTtI@r4b4E{Lzk5FKp4}htd)E`o{3EUT zd*{dg6ZX@?AD!u4dj;%Wb{!vP4X2`8bhOXg8(5z~p9k0T>qI;&?Haup@vJ_Mw?^N_ zp~-Q?x2^b4)z-q>j-g)}%FV8c?Ev#vO+w70$V;Bv!RB^-nR6#T{#tX4E9M!>s%rc@ z!ThzJ6}k6P-~HYNHfFE>!|orF#P~1!GIlre1H}D{-$cvN)_-H!$Ae&dZmw_Ovq!tZ zuG3g^p7UShNtd$+?6YQW`R2?%mzFrL{(db3>-V$EoGZ|-MQu($1Fk^4Ki0Vt+*M-M zy9%+Mv8&OE)!>zgeK58PZR~aW&|NU9RdY4knrhd23VID8s;-^=6(@;Ix-D$ zGI;At!2!7#B9gY4vVjXiB_gR?5o`#@}HP`Dt*0BE?y^jUhm;L3O4;I^Z)xP3;qTxGGd{5$& zYwVHYI|SB0uaWQ9*!sN>;r*uY<~M5m7N353sqs5(=Nrr1!(javH){MITfg56!h5Rl ze8*%TPvg@sFEx%}JKtF5{t>Ldqfz4-Z2i8|!~1jL`JPIR=kV#5mm1GwJKtF5z5v$m zJ1xC`5nKP%Mva#W&v#vF{0*Oed8zR-w)2hUY+nKE-^%&aa9;)MTL6ylU)YPWmH7UR z&wJtfX=Ax3&w!nq&->TG{Ix#sjhWLsm-rivxHXiqjrd!QxLnuf{5%W)!?uRJyhGjw z^Vj;kGoH0QOMPRh{Z8Te{z|NGZGG<|AExAyoBRWce;D)ZLHg0AA8}r|0}JyIl-J`MQJm=>-&swnGLCh`RoH@JGz{dIO_nlFE_9Fcni%-92nzQ%|SbzF6 z4xIjZ4(67VT4#Z+S9N+n1Yd3u##Wt6|3640ojW9Oo+Yfa_mMjg?~K^H zAV*t&?$CW;?~u82hwcZvM`O)-&d(is0PGzyw|sNvobSMI+!5bSus(Z{e%%H34jD^7 z?gpn{p0T;)CC?AR<}rQd+yl;>K?LNOXDI)NP@{i@7`In))juoWNq!7AuFvKiJ_sW4n+C5a)^Qqa1Dh>A`N+YyE{t*832?tk<|T!v8t; zVMI>&`@rEFpA0|e`wQ$Nh@9N1{b2bc5#z~y06Y$#@#cD6x947?A4FV_dy?;7{GDbz zdN>PRd{CFJf zTFfnX6aA^tParE1`S#zt=za12HEsQQ4xa>@&ogoza&uOPz~(e&-sI^8n^*lBzqk6` z{8z|CWK+?b(f%IWSL>M8Zy#4;PebIW<@g&$I8(q^BmVX)M=i%ShEs!AA#)KqYB{b| aj{EFFyFRtglWX%gsP5udzfFgyBmW0xRfrb= diff --git a/crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_vertex.spv b/crates/renderling/src/linkage/convolution-prefilter_environment_cubemap_vertex.spv deleted file mode 100644 index 8d2ee73228b1556c7302c626ed7186cf2c5c6413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12180 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 LzvkE5rnLVBWZsh_ diff --git a/crates/renderling/src/linkage/generate_mipmap_fragment.rs b/crates/renderling/src/linkage/generate_mipmap_fragment.rs index d82a32ca..596f84e6 100644 --- a/crates/renderling/src/linkage/generate_mipmap_fragment.rs +++ b/crates/renderling/src/linkage/generate_mipmap_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::generate_mipmap_fragment](crate::convolution::generate_mipmap_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/convolution-generate_mipmap_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::generate_mipmap_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::generate_mipmap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-generate_mipmap_fragment.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/generate_mipmap_vertex.rs b/crates/renderling/src/linkage/generate_mipmap_vertex.rs index ca323a1c..69e20019 100644 --- a/crates/renderling/src/linkage/generate_mipmap_vertex.rs +++ b/crates/renderling/src/linkage/generate_mipmap_vertex.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::generate_mipmap_vertex](crate::convolution::generate_mipmap_vertex). -//! -//! **source path**: -//! `crates/renderling/src/linkage/convolution-generate_mipmap_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::generate_mipmap_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::generate_mipmap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-generate_mipmap_vertex.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs b/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs index 950283aa..575cd660 100644 --- a/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs +++ b/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs @@ -1,23 +1,42 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::prefilter_environment_cubemap_fragment](crate::convolution::prefilter_environment_cubemap_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/ -//! convolution-prefilter_environment_cubemap_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!( + "../../shaders/convolution-prefilter_environment_cubemap_fragment.wgsl" + ) + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-prefilter_environment_cubemap_fragment.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs b/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs index 21714481..ecd1110a 100644 --- a/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs +++ b/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs @@ -1,23 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [convolution::prefilter_environment_cubemap_vertex](crate::convolution::prefilter_environment_cubemap_vertex). -//! -//! **source path**: -//! `crates/renderling/src/linkage/ -//! convolution-prefilter_environment_cubemap_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "convolution-prefilter_environment_cubemap_vertex.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/renderlet_fragment.rs b/crates/renderling/src/linkage/renderlet_fragment.rs index a68b04c6..db502e62 100644 --- a/crates/renderling/src/linkage/renderlet_fragment.rs +++ b/crates/renderling/src/linkage/renderlet_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [stage::renderlet_fragment](crate::stage::renderlet_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/stage-renderlet_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "stage::renderlet_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "stagerenderlet_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "stage::renderlet_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/stage-renderlet_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "stagerenderlet_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/stage-renderlet_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("stage-renderlet_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/renderlet_vertex.rs b/crates/renderling/src/linkage/renderlet_vertex.rs index 6e6013ed..df5c05bc 100644 --- a/crates/renderling/src/linkage/renderlet_vertex.rs +++ b/crates/renderling/src/linkage/renderlet_vertex.rs @@ -1,21 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [stage::renderlet_vertex](crate::stage::renderlet_vertex). -//! -//! **source path**: `crates/renderling/src/linkage/stage-renderlet_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "stage::renderlet_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "stagerenderlet_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "stage::renderlet_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/stage-renderlet_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "stagerenderlet_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/stage-renderlet_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("stage-renderlet_vertex.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/skybox-skybox_cubemap_fragment.spv b/crates/renderling/src/linkage/skybox-skybox_cubemap_fragment.spv deleted file mode 100644 index fb9e97a220ee7ec835cb5bb7855d23d8533e72fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 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 diff --git a/crates/renderling/src/linkage/skybox_cubemap_fragment.rs b/crates/renderling/src/linkage/skybox_cubemap_fragment.rs index 48e78a25..0cdd6d03 100644 --- a/crates/renderling/src/linkage/skybox_cubemap_fragment.rs +++ b/crates/renderling/src/linkage/skybox_cubemap_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [skybox::skybox_cubemap_fragment](crate::skybox::skybox_cubemap_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/skybox-skybox_cubemap_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("skybox-skybox_cubemap_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/skybox_cubemap_vertex.rs b/crates/renderling/src/linkage/skybox_cubemap_vertex.rs index 77067641..732f5c7c 100644 --- a/crates/renderling/src/linkage/skybox_cubemap_vertex.rs +++ b/crates/renderling/src/linkage/skybox_cubemap_vertex.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [skybox::skybox_cubemap_vertex](crate::skybox::skybox_cubemap_vertex). -//! -//! **source path**: -//! `crates/renderling/src/linkage/skybox-skybox_cubemap_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("skybox-skybox_cubemap_vertex.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs b/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs index c993c51c..41d63b60 100644 --- a/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs +++ b/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [skybox::skybox_equirectangular_fragment](crate::skybox::skybox_equirectangular_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/skybox-skybox_equirectangular_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "skybox::skybox_equirectangular_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "skyboxskybox_equirectangular_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "skybox::skybox_equirectangular_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_equirectangular_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "skyboxskybox_equirectangular_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_equirectangular_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "skybox-skybox_equirectangular_fragment.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/skybox_vertex.rs b/crates/renderling/src/linkage/skybox_vertex.rs index a5ce4286..d89c2a6a 100644 --- a/crates/renderling/src/linkage/skybox_vertex.rs +++ b/crates/renderling/src/linkage/skybox_vertex.rs @@ -1,21 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [skybox::skybox_vertex](crate::skybox::skybox_vertex). -//! -//! **source path**: `crates/renderling/src/linkage/skybox-skybox_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "skybox::skybox_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "skyboxskybox_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "skybox::skybox_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "skyboxskybox_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/skybox-skybox_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("skybox-skybox_vertex.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/stage-renderlet_fragment.spv b/crates/renderling/src/linkage/stage-renderlet_fragment.spv deleted file mode 100644 index 5fcbcf48898e22ee02f8df8cb9a5a6fa9e9c7cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74564 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 diff --git a/crates/renderling/src/linkage/stage-renderlet_vertex.spv b/crates/renderling/src/linkage/stage-renderlet_vertex.spv deleted file mode 100644 index a1b8d4e7917b1b260a107ffd4400b95c07dcb4b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43336 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 diff --git a/crates/renderling/src/linkage/tonemapping-tonemapping_vertex.spv b/crates/renderling/src/linkage/tonemapping-tonemapping_vertex.spv deleted file mode 100644 index cd32400debe50c38db80c405ef1e1204089cb51f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmYk5Nls%y42I1-lMXX9LqZq?1Q4j3Q4JCsSi%Wfy@(JC=m;Uik|S{g&cZ1eBqYA? z@d{GX|Los(xolUxmgY)Fv^7OUA$Iw?iqRZeluttu{n3)y{T5&@{Wt%wYM1}&^^2?X zy}btV_qKL@Q@dk#WIJ1t$I+VU)95a_{vNQLbK~T$lW2?1Pc zo|$?vz6?sh`cvF2x^Y6AaTTE58Kt;6baOSv&BL`jx3qU5=gzH4Mb@+kJlnkPQCAwf z#hKo36L5LoFHB1^!HcWi%u;J$$s;Jgl)kUsN2kjM8>1^S)MGyYYi>y5qo*1$UO z4D};kllQj)%;jF+l4m*ZO`tEu{X$Q1-eHRSjjqp{yf^t7HTf2|fO%ZWwvDdMzEA1S g|6vChtIxOPyv^rZ(DzEs_G9h#(8#sFlWhll0A`UkGXMYp diff --git a/crates/renderling/src/linkage/tonemapping_fragment.rs b/crates/renderling/src/linkage/tonemapping_fragment.rs index 2e359b33..1e3939a2 100644 --- a/crates/renderling/src/linkage/tonemapping_fragment.rs +++ b/crates/renderling/src/linkage/tonemapping_fragment.rs @@ -1,23 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tonemapping::tonemapping_fragment](crate::tonemapping::tonemapping_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/tonemapping-tonemapping_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tonemapping::tonemapping_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tonemappingtonemapping_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tonemapping::tonemapping_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tonemappingtonemapping_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device - .create_shader_module(wgpu::include_spirv!("tonemapping-tonemapping_fragment.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tonemapping_vertex.rs b/crates/renderling/src/linkage/tonemapping_vertex.rs index 9d8dc862..a4f9938c 100644 --- a/crates/renderling/src/linkage/tonemapping_vertex.rs +++ b/crates/renderling/src/linkage/tonemapping_vertex.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tonemapping::tonemapping_vertex](crate::tonemapping::tonemapping_vertex). -//! -//! **source path**: -//! `crates/renderling/src/linkage/tonemapping-tonemapping_vertex.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tonemapping::tonemapping_vertex"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tonemappingtonemapping_vertex"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tonemapping::tonemapping_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tonemappingtonemapping_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new( - device.create_shader_module(wgpu::include_spirv!("tonemapping-tonemapping_vertex.spv")), - ), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tutorial-tutorial_implicit_isosceles_vertex.spv b/crates/renderling/src/linkage/tutorial-tutorial_implicit_isosceles_vertex.spv deleted file mode 100644 index a8e4054515b7a3d81dabf26a09ffebb096f7db00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmYk4y-q?w5QRq&Q9%$9u`(DtLHq+H7=Jn%3KJiI7^Juf2Ex4>3kzc6b6NTvzJ-m6 z=UaCZH#s|VW@l#4&b{f>Ue+=TW>&P0c2>z!Mg;q{X_m7kYm4{#cl~CZJTzPFBk~HC z#<;y`8_uULc}ga;=ziSo25%5OPRG$ON(NCpiHD={C>}hIX36M!ht=W{&;c!OWlCZZGpGGilc*XKs2{Cx^bb{@thYxsS8(?ki1( Q*)S7)W=GzSzCcI#1+#rFGynhq diff --git a/crates/renderling/src/linkage/tutorial-tutorial_passthru_fragment.spv b/crates/renderling/src/linkage/tutorial-tutorial_passthru_fragment.spv deleted file mode 100644 index 14696161ec74a7bddaa81465f15e6a6e6943e466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmYj~%L>9!3`ApVsn4n?x|53kAX3q-pHaH-1-@u+KiI!;BRHp0Fqg^PBr}QcEkg?$ zW;W3K#mGFP1HUF_k@?ktjH)SS?n?K_FWEIo>R2|m~jGlmZsEjWZ z_S!;kE)dk{>Uydvx>%TL))G^5J63Ls@zWp6*%2?)>5BQI>4~|AX7lI4N6nm@XjT?f bKK=xI-kSEsTWQ%53Fvpa!w%|?+-uK diff --git a/crates/renderling/src/linkage/tutorial-tutorial_slabbed_renderlet.spv b/crates/renderling/src/linkage/tutorial-tutorial_slabbed_renderlet.spv deleted file mode 100644 index 1f0d74b8fd42516e3b73ed3f2d5640adaa507e75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19376 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 diff --git a/crates/renderling/src/linkage/tutorial-tutorial_slabbed_vertices.spv b/crates/renderling/src/linkage/tutorial-tutorial_slabbed_vertices.spv deleted file mode 100644 index 66dd71649d107c845cf2a0c074fa3e947d1320e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5860 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 wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_implicit_isosceles_vertex.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tutorialtutorial_implicit_isosceles_vertex"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "tutorial-tutorial_implicit_isosceles_vertex.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tutorial_passthru_fragment.rs b/crates/renderling/src/linkage/tutorial_passthru_fragment.rs index c3fd9c77..f9a00d0d 100644 --- a/crates/renderling/src/linkage/tutorial_passthru_fragment.rs +++ b/crates/renderling/src/linkage/tutorial_passthru_fragment.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tutorial::tutorial_passthru_fragment](crate::tutorial::tutorial_passthru_fragment). -//! -//! **source path**: -//! `crates/renderling/src/linkage/tutorial-tutorial_passthru_fragment.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tutorial::tutorial_passthru_fragment"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tutorialtutorial_passthru_fragment"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tutorial::tutorial_passthru_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_passthru_fragment.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tutorialtutorial_passthru_fragment"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_passthru_fragment.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "tutorial-tutorial_passthru_fragment.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs b/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs index 83b5de16..d451c544 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tutorial::tutorial_slabbed_renderlet](crate::tutorial::tutorial_slabbed_renderlet). -//! -//! **source path**: -//! `crates/renderling/src/linkage/tutorial-tutorial_slabbed_renderlet.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_renderlet"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_renderlet"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_renderlet"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_renderlet.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_renderlet"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_renderlet.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "tutorial-tutorial_slabbed_renderlet.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs b/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs index ab52f4c9..4b6177c5 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs @@ -1,22 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tutorial::tutorial_slabbed_vertices](crate::tutorial::tutorial_slabbed_vertices). -//! -//! **source path**: -//! `crates/renderling/src/linkage/tutorial-tutorial_slabbed_vertices.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "tutorial-tutorial_slabbed_vertices.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs b/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs index bd4e75ff..b282bbf4 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs @@ -1,23 +1,40 @@ #![allow(dead_code)] -//! Automatically generated with `cd shaders && cargo run --release`. -//! -//! Provides the shader linkage for -//! [tutorial::tutorial_slabbed_vertices_no_instance](crate::tutorial::tutorial_slabbed_vertices_no_instance). -//! -//! **source path**: -//! `crates/renderling/src/linkage/ -//! tutorial-tutorial_slabbed_vertices_no_instance.spv` -use super::ShaderLinkage; -use std::sync::Arc; -#[cfg(not(target_arch = "wasm32"))] -pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices_no_instance"; -#[cfg(target_arch = "wasm32")] -pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices_no_instance"; +//! Automatically generated by Renderling's `build.rs`. +use crate::linkage::ShaderLinkage; +mod native { + pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices_no_instance"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +mod web { + pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices_no_instance"; + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl") + } + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into(), + } + } +} +pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) +} +pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) +} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: Arc::new(device.create_shader_module(wgpu::include_spirv!( - "tutorial-tutorial_slabbed_vertices_no_instance.spv" - ))), - entry_point: ENTRY_POINT, + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) } } diff --git a/shaders/Cargo.lock b/shaders/Cargo.lock deleted file mode 100644 index 07d0f1d7..00000000 --- a/shaders/Cargo.lock +++ /dev/null @@ -1,966 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "anstream" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" - -[[package]] -name = "anstyle-parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" -dependencies = [ - "anstyle", - "windows-sys", -] - -[[package]] -name = "ar" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d67af77d68a931ecd5cbd8a3b5987d63a1d1d1278f7f6a60ae33db485cdebb69" - -[[package]] -name = "arrayvec" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bytemuck" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "4.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.107", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "elsa" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4b5d23ed6b6948d68240aafa4ac98e568c9a020efd9d4201a6288bc3006e09" -dependencies = [ - "indexmap 1.9.2", - "stable_deref_trait", -] - -[[package]] -name = "env_logger" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "getrandom" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "indexmap" -version = "1.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", -] - -[[package]] -name = "internal-iterator" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668ef46056a63366da9d74f48062da9ece1a27958f2f3704aa6f7421c4433f5" - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] - -[[package]] -name = "is-terminal" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" -dependencies = [ - "hermit-abi", - "io-lifetimes", - "rustix", - "windows-sys", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" - -[[package]] -name = "jobserver" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" -dependencies = [ - "libc", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.153" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "longest-increasing-subsequence" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "naga" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" -dependencies = [ - "bit-set", - "bitflags 2.6.0", - "codespan-reporting", - "hexf-parse", - "indexmap 2.5.0", - "log", - "num-traits", - "petgraph", - "rustc-hash", - "spirv 0.3.0+sdk-1.3.268.0", - "termcolor", - "thiserror", - "unicode-xid", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.5.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "raw-string" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0501e134c6905fee1f10fed25b0a7e1261bf676cffac9543a7d0730dec01af2" - -[[package]] -name = "regex" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "rspirv" -version = "0.11.0+1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1503993b59ca9ae4127365c3293517576d7ce56be9f3d8abb1625c85ddc583ba" -dependencies = [ - "fxhash", - "num-traits", - "spirv 0.2.0+1.5.4", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_codegen_spirv" -version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu#529aaf4f3fd1f40cb7dea4fbfd484d544b7b60ed" -dependencies = [ - "ar", - "either", - "hashbrown 0.11.2", - "indexmap 1.9.2", - "itertools", - "lazy_static", - "libc", - "num-traits", - "once_cell", - "regex", - "rspirv", - "rustc-demangle", - "rustc_codegen_spirv-types", - "sanitize-filename", - "smallvec", - "spirt", - "spirv-tools", - "syn 1.0.107", -] - -[[package]] -name = "rustc_codegen_spirv-types" -version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu#529aaf4f3fd1f40cb7dea4fbfd484d544b7b60ed" -dependencies = [ - "rspirv", - "serde", - "serde_json", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "ryu" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" - -[[package]] -name = "sanitize-filename" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c502bdb638f1396509467cb0580ef3b29aa2a45c5d43e5d84928241280296c" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "semver" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" - -[[package]] -name = "serde" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.107", -] - -[[package]] -name = "serde_json" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "shaders" -version = "0.1.0" -dependencies = [ - "clap", - "env_logger", - "log", - "naga", - "quote", - "spirv-builder", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" -dependencies = [ - "serde", -] - -[[package]] -name = "spirt" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e1f7903720ff818d6da824edf2c4082c6e7a029a99317fd10c39dd7c40c7ff" -dependencies = [ - "arrayvec", - "bytemuck", - "derive_more", - "elsa", - "indexmap 1.9.2", - "internal-iterator", - "itertools", - "lazy_static", - "longest-increasing-subsequence", - "rustc-hash", - "serde", - "serde_json", - "smallvec", -] - -[[package]] -name = "spirv" -version = "0.2.0+1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" -dependencies = [ - "bitflags 1.3.2", - "num-traits", -] - -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "spirv-builder" -version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu#529aaf4f3fd1f40cb7dea4fbfd484d544b7b60ed" -dependencies = [ - "memchr", - "raw-string", - "rustc_codegen_spirv", - "rustc_codegen_spirv-types", - "serde", - "serde_json", -] - -[[package]] -name = "spirv-tools" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcb3b0832881834994b7ec82b709ec5491043ceb4bf8101e27da6b5234b24261" -dependencies = [ - "spirv-tools-sys", -] - -[[package]] -name = "spirv-tools-sys" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e68b55a97aa6856e010a6f2477425875a97873e147bb0232160e73c45bdae7" -dependencies = [ - "cc", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "unicode-ident" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" diff --git a/shaders/Cargo.toml b/shaders/Cargo.toml deleted file mode 100644 index 97b15a5d..00000000 --- a/shaders/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "shaders" -version = "0.1.0" -edition = "2021" -description = "Generates shader .spv files from rust-gpu shader crates" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -clap = { version = "4.4.8", features = ["derive"] } -env_logger = "^0.10" -log = "^0.4" -naga = { version = "0.19", features = ["spv-in", "wgsl-out", "wgsl-in", "msl-out"] } -quote = "1.0" -spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu" } - -# Enable incremental by default in release mode. -[profile.release] -incremental = true -# HACK(eddyb) this is the default but without explicitly specifying it, Cargo -# will treat the identical settings in `[profile.release.build-override]` below -# as different sets of `rustc` flags and will not reuse artifacts between them. -codegen-units = 256 - -# Compile build-dependencies in release mode with the same settings -# as regular dependencies (including the incremental enabled above). -[profile.release.build-override] -opt-level = 3 -incremental = true -codegen-units = 256 diff --git a/shaders/rust-toolchain.toml b/shaders/rust-toolchain.toml deleted file mode 100644 index 92ae5010..00000000 --- a/shaders/rust-toolchain.toml +++ /dev/null @@ -1,12 +0,0 @@ -# If you see this, run `rustup self update` to get rustup 1.23 or newer. - -# NOTE: above comment is for older `rustup` (before TOML support was added), -# which will treat the first line as the toolchain name, and therefore show it -# to the user in the error, instead of "error: invalid channel name '[toolchain]'". - -[toolchain] -channel = "nightly-2024-04-24" -components = ["rust-src", "rustc-dev", "llvm-tools"] - -# Whenever changing the nightly channel, update the commit hash above, and make -# sure to change REQUIRED_TOOLCHAIN in crates/rustc_codegen_spirv/src/build.rs also. diff --git a/shaders/src/main.rs b/shaders/src/main.rs deleted file mode 100644 index 9d8ecd95..00000000 --- a/shaders/src/main.rs +++ /dev/null @@ -1,196 +0,0 @@ -//! This program builds the rust-gpu shaders and writes the spv files into the -//! main source repo. -use clap::Parser; -use spirv_builder::{CompileResult, MetadataPrintout, ModuleResult, SpirvBuilder}; - -mod shader; - -#[derive(Clone, Copy, Default)] -pub enum ShaderLang { - #[default] - Spv, - Wgsl, -} - -impl core::str::FromStr for ShaderLang { - type Err = String; - - fn from_str(s: &str) -> Result { - match s { - "spv" => Ok(ShaderLang::Spv), - "wgsl" => Ok(ShaderLang::Wgsl), - s => Err(format!("not a valid option '{s}'")), - } - } -} - -#[derive(Parser)] -#[clap(author, version, about)] -struct Cli { - /// Sets the verbosity level - #[clap(short, action = clap::ArgAction::Count)] - verbosity: u8, - - /// Directory containing the shader crate to compile. - #[clap(long, short, default_value = "renderling")] - shader_crate: std::path::PathBuf, - - /// Whether to write the spv or wgsl - #[clap(long, default_value = "spv")] - shader_lang: ShaderLang, - - /// Set cargo default-features. - #[clap(long)] - no_default_features: bool, - - /// Set cargo features. - #[clap(long)] - features: Vec, - - /// Path to the output directory for the compiled shaders. - #[clap(long, short, default_value = "../crates/renderling/src/linkage")] - output_dir: std::path::PathBuf, - - /// If set the shaders will be compiled but not put into place. - #[clap(long, short)] - dry_run: bool, -} - -fn wgsl(spv_filepath: impl AsRef, destination: impl AsRef) { - let bytes = std::fs::read(spv_filepath).unwrap(); - let opts = naga::front::spv::Options::default(); - let module = naga::front::spv::parse_u8_slice(&bytes, &opts).unwrap(); - let mut validator = - naga::valid::Validator::new(Default::default(), naga::valid::Capabilities::empty()); - let info = validator.validate(&module).unwrap(); - let wgsl = - naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::empty()) - .unwrap(); - let destination = destination.as_ref().with_extension("wgsl"); - std::fs::write(destination, wgsl).unwrap(); -} - -fn main() -> Result<(), Box> { - let Cli { - verbosity, - shader_crate, - shader_lang, - no_default_features, - features, - output_dir, - dry_run, - } = Cli::parse(); - let level = match verbosity { - 0 => log::LevelFilter::Warn, - 1 => log::LevelFilter::Info, - 2 => log::LevelFilter::Debug, - _ => log::LevelFilter::Trace, - }; - env_logger::builder() - .filter_level(level) - .try_init() - .unwrap(); - - std::fs::create_dir_all(&output_dir).unwrap(); - - let shader_crate = std::path::Path::new("../crates/").join(shader_crate); - assert!( - shader_crate.exists(), - "shader crate '{}' does not exist. Current dir is {}", - shader_crate.display(), - std::env::current_dir().unwrap().display() - ); - - let start = std::time::Instant::now(); - - let CompileResult { - entry_points, - module, - } = { - let mut builder = SpirvBuilder::new(shader_crate, "spirv-unknown-vulkan1.2") - //.shader_panic_strategy(spirv_builder::ShaderPanicStrategy::UNSOUND_DO_NOT_USE_UndefinedBehaviorViaUnreachable) - .print_metadata(MetadataPrintout::None) - .multimodule(true); - - if no_default_features { - println!("setting cargo --no-default-features"); - builder = builder.shader_crate_default_features(false); - } - if !features.is_empty() { - println!("setting --features {features:?}"); - builder = builder.shader_crate_features(features); - } - - builder.build()? - }; - - let dir = output_dir; - let mut shaders = vec![]; - match module { - ModuleResult::MultiModule(modules) => { - assert!(!modules.is_empty(), "No shader modules to compile"); - for (entry, filepath) in modules.into_iter() { - let path = dir.join(filepath.file_name().unwrap()); - if !dry_run { - match shader_lang { - ShaderLang::Spv => { - std::fs::copy(filepath, &path).unwrap(); - } - ShaderLang::Wgsl => { - wgsl(filepath, &path); - } - } - } - shaders.push(shader::Linkage { - entry_point: entry, - source_path: path, - }); - } - } - ModuleResult::SingleModule(filepath) => { - let path = dir.join(filepath.file_name().unwrap()); - if !dry_run { - std::fs::copy(filepath, &path).unwrap(); - } - for entry in entry_points { - shaders.push(shader::Linkage { - entry_point: entry, - source_path: path.clone(), - }); - } - } - } - - if dry_run { - println!("\nNot writing shaders.rs because --dry-run was set.\n"); - } else { - println!("\nWriting shaders..."); - }; - - let mut set = std::collections::HashSet::<&str>::default(); - - for linkage in shaders.iter() { - let fn_name = linkage.fn_name(); - - if set.contains(fn_name) { - panic!("Shader name '{fn_name}' is used for two or more shaders, aborting!"); - } - set.insert(fn_name); - - let filepath = dir.join(fn_name).with_extension("rs"); - let contents = linkage.to_string(shader_lang); - if !dry_run { - std::fs::write(&filepath, contents).unwrap(); - std::process::Command::new("rustfmt") - .args([&format!("{}", filepath.display())]) - .output() - .expect("could not format generated code"); - println!(" {}", filepath.display()); - } - } - - let end = std::time::Instant::now(); - println!("Finished in {:?}", (end - start)); - - Ok(()) -} diff --git a/shaders/src/shader.rs b/shaders/src/shader.rs deleted file mode 100644 index 4d018820..00000000 --- a/shaders/src/shader.rs +++ /dev/null @@ -1,68 +0,0 @@ -//! A shader source and entry point that can be used to create renderling -//! shader linkage. -use super::ShaderLang; -use quote::quote; - -pub struct Linkage { - pub source_path: std::path::PathBuf, - pub entry_point: String, -} - -impl Linkage { - pub fn fn_name(&self) -> &str { - self.entry_point.split("::").last().unwrap() - } - - pub fn to_string(&self, lang: ShaderLang) -> String { - let source_path = match lang { - ShaderLang::Spv => self.source_path.clone(), - ShaderLang::Wgsl => self.source_path.with_extension("wgsl"), - }; - - let source_path = source_path.file_name().unwrap().to_str().unwrap(); - let entry_point = self.entry_point.clone(); - - let wgsl_entry_point = entry_point.replace("::", ""); - let entry_point = match lang { - ShaderLang::Spv => entry_point, - ShaderLang::Wgsl => entry_point.replace("::", ""), - }; - - let create_module = match lang { - ShaderLang::Spv => quote! { - Arc::new(device.create_shader_module(wgpu::include_spirv!(#source_path))) - }, - ShaderLang::Wgsl => quote! { - Arc::new(device.create_shader_module(wgpu::include_wgsl!(#source_path))) - }, - }; - let quote = quote! { - use std::sync::Arc; - - use super::ShaderLinkage; - - #[cfg(not(target_arch = "wasm32"))] - pub const ENTRY_POINT: &str = #entry_point; - #[cfg(target_arch = "wasm32")] - pub const ENTRY_POINT: &str = #wgsl_entry_point; - - pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - ShaderLinkage { - module: #create_module, - entry_point: ENTRY_POINT, - } - } - }; - format!( - r#"#![allow(dead_code)] - //! Automatically generated with `cd shaders && cargo run --release`. - //! - //! Provides the shader linkage for - //! [{entry_point}](crate::{entry_point}). - //! - //! **source path**: `crates/renderling/src/linkage/{source_path}` - {quote} - "#, - ) - } -} From d955a8f114e04e37ff5376abaeca256b1b206ee2 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Wed, 6 Nov 2024 11:56:49 +1300 Subject: [PATCH 02/11] add shaders and shaders cargo alias, github workflow --- .cargo/config.toml | 3 + .github/workflows/push.yaml | 5 +- .../bloom-bloom_downsample_fragment.spv | Bin 0 -> 4916 bytes .../bloom-bloom_downsample_fragment.wgsl | 65 + .../shaders/bloom-bloom_mix_fragment.spv | Bin 0 -> 1776 bytes .../shaders/bloom-bloom_mix_fragment.wgsl | 52 + .../shaders/bloom-bloom_upsample_fragment.spv | Bin 0 -> 3324 bytes .../bloom-bloom_upsample_fragment.wgsl | 60 + .../renderling/shaders/bloom-bloom_vertex.spv | Bin 0 -> 1304 bytes .../shaders/bloom-bloom_vertex.wgsl | 46 + ...volution-brdf_lut_convolution_fragment.spv | Bin 0 -> 5212 bytes ...olution-brdf_lut_convolution_fragment.wgsl | 172 ++ ...onvolution-brdf_lut_convolution_vertex.spv | Bin 0 -> 1388 bytes ...nvolution-brdf_lut_convolution_vertex.wgsl | 38 + .../convolution-generate_mipmap_fragment.spv | Bin 0 -> 608 bytes .../convolution-generate_mipmap_fragment.wgsl | 21 + .../convolution-generate_mipmap_vertex.spv | Bin 0 -> 1172 bytes .../convolution-generate_mipmap_vertex.wgsl | 38 + ...prefilter_environment_cubemap_fragment.spv | Bin 0 -> 6456 bytes ...refilter_environment_cubemap_fragment.wgsl | 164 ++ ...n-prefilter_environment_cubemap_vertex.spv | Bin 0 -> 12180 bytes ...-prefilter_environment_cubemap_vertex.wgsl | 267 ++ .../shaders/cull-compute_frustum_culling.spv | Bin 0 -> 19688 bytes .../shaders/cull-compute_frustum_culling.wgsl | 862 ++++++ crates/renderling/shaders/manifest.json | 122 + .../skybox-skybox_cubemap_fragment.spv | Bin 0 -> 1100 bytes .../skybox-skybox_cubemap_fragment.wgsl | 30 + .../shaders/skybox-skybox_cubemap_vertex.spv | Bin 0 -> 11340 bytes .../shaders/skybox-skybox_cubemap_vertex.wgsl | 232 ++ ...skybox-skybox_equirectangular_fragment.spv | Bin 0 -> 1368 bytes ...kybox-skybox_equirectangular_fragment.wgsl | 30 + .../shaders/skybox-skybox_vertex.spv | Bin 0 -> 9888 bytes .../shaders/skybox-skybox_vertex.wgsl | 233 ++ .../shaders/stage-renderlet_fragment.spv | Bin 0 -> 74564 bytes .../shaders/stage-renderlet_fragment.wgsl | 2510 +++++++++++++++++ .../shaders/stage-renderlet_vertex.spv | Bin 0 -> 43336 bytes .../shaders/stage-renderlet_vertex.wgsl | 1183 ++++++++ .../tonemapping-tonemapping_fragment.spv | Bin 0 -> 5488 bytes .../tonemapping-tonemapping_fragment.wgsl | 86 + .../tonemapping-tonemapping_vertex.spv | Bin 0 -> 1148 bytes .../tonemapping-tonemapping_vertex.wgsl | 38 + ...ial-tutorial_implicit_isosceles_vertex.spv | Bin 0 -> 756 bytes ...al-tutorial_implicit_isosceles_vertex.wgsl | 26 + .../tutorial-tutorial_passthru_fragment.spv | Bin 0 -> 328 bytes .../tutorial-tutorial_passthru_fragment.wgsl | 16 + .../tutorial-tutorial_slabbed_renderlet.spv | Bin 0 -> 19376 bytes .../tutorial-tutorial_slabbed_renderlet.wgsl | 447 +++ .../tutorial-tutorial_slabbed_vertices.spv | Bin 0 -> 5860 bytes .../tutorial-tutorial_slabbed_vertices.wgsl | 218 ++ ...-tutorial_slabbed_vertices_no_instance.spv | Bin 0 -> 5236 bytes ...tutorial_slabbed_vertices_no_instance.wgsl | 193 ++ crates/renderling/src/build.rs | 170 ++ 52 files changed, 7325 insertions(+), 2 deletions(-) create mode 100644 crates/renderling/shaders/bloom-bloom_downsample_fragment.spv create mode 100644 crates/renderling/shaders/bloom-bloom_downsample_fragment.wgsl create mode 100644 crates/renderling/shaders/bloom-bloom_mix_fragment.spv create mode 100644 crates/renderling/shaders/bloom-bloom_mix_fragment.wgsl create mode 100644 crates/renderling/shaders/bloom-bloom_upsample_fragment.spv create mode 100644 crates/renderling/shaders/bloom-bloom_upsample_fragment.wgsl create mode 100644 crates/renderling/shaders/bloom-bloom_vertex.spv create mode 100644 crates/renderling/shaders/bloom-bloom_vertex.wgsl create mode 100644 crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv create mode 100644 crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.wgsl create mode 100644 crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.spv create mode 100644 crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl create mode 100644 crates/renderling/shaders/convolution-generate_mipmap_fragment.spv create mode 100644 crates/renderling/shaders/convolution-generate_mipmap_fragment.wgsl create mode 100644 crates/renderling/shaders/convolution-generate_mipmap_vertex.spv create mode 100644 crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl create mode 100644 crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv create mode 100644 crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl create mode 100644 crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv create mode 100644 crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.wgsl create mode 100644 crates/renderling/shaders/cull-compute_frustum_culling.spv create mode 100644 crates/renderling/shaders/cull-compute_frustum_culling.wgsl create mode 100644 crates/renderling/shaders/manifest.json create mode 100644 crates/renderling/shaders/skybox-skybox_cubemap_fragment.spv create mode 100644 crates/renderling/shaders/skybox-skybox_cubemap_fragment.wgsl create mode 100644 crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv create mode 100644 crates/renderling/shaders/skybox-skybox_cubemap_vertex.wgsl create mode 100644 crates/renderling/shaders/skybox-skybox_equirectangular_fragment.spv create mode 100644 crates/renderling/shaders/skybox-skybox_equirectangular_fragment.wgsl create mode 100644 crates/renderling/shaders/skybox-skybox_vertex.spv create mode 100644 crates/renderling/shaders/skybox-skybox_vertex.wgsl create mode 100644 crates/renderling/shaders/stage-renderlet_fragment.spv create mode 100644 crates/renderling/shaders/stage-renderlet_fragment.wgsl create mode 100644 crates/renderling/shaders/stage-renderlet_vertex.spv create mode 100644 crates/renderling/shaders/stage-renderlet_vertex.wgsl create mode 100644 crates/renderling/shaders/tonemapping-tonemapping_fragment.spv create mode 100644 crates/renderling/shaders/tonemapping-tonemapping_fragment.wgsl create mode 100644 crates/renderling/shaders/tonemapping-tonemapping_vertex.spv create mode 100644 crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl create mode 100644 crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.spv create mode 100644 crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl create mode 100644 crates/renderling/shaders/tutorial-tutorial_passthru_fragment.spv create mode 100644 crates/renderling/shaders/tutorial-tutorial_passthru_fragment.wgsl create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.wgsl create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv create mode 100644 crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl create mode 100644 crates/renderling/src/build.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index facd0f19..a0f7958c 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,6 @@ +[alias] +shaders = "gpu --output-dir crates/renderling/shaders --shader-crate crates/renderling/ --shader-manifest crates/renderling/shaders/manifest.json" + [build] rustflags = ["--cfg=web_sys_unstable_apis"] rustdocflags = ["--cfg=web_sys_unstable_apis"] diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index e5bf69b4..d92f4b53 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -20,8 +20,9 @@ jobs: with: workspaces: shaders # ensure the shader binaries were properly checked in - - run: rm -rf crates/renderling/src/linkage/*.spv - - run: cd shaders && cargo run --release && cd .. + - run: cargo +nightly-2024-04-24 install --git https://github.com/rust-gpu/cargo-gpu + - run: rm -rf crates/renderling/src/linkage/* + - run: RUST_LOG=trace cargo shaders - run: git diff --exit-code --no-ext-diff crates/renderling/src/linkage renderling-clippy: diff --git a/crates/renderling/shaders/bloom-bloom_downsample_fragment.spv b/crates/renderling/shaders/bloom-bloom_downsample_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..7eee219c817aeff7e2a8896950761829b2f5ee98 GIT binary patch literal 4916 zcmZvfS!`BS6ooG>V$ z!NjP97)3?FiBTM1oaY(mc}50B{l5F(T~3<+#N%Cit+n^r``r5@R#pt}l6C5kWm(T` zj}O*ySw$xFxvx)_9g}s=-lQlgRy;D%d;a+YuTTA_>EKD z+2X9e)Ei7(&308258-L9d_Ov`%K0qok7k~+XB!VIV$U$Qny0hM_r_Jjvj)cV#eLws zqtSS+e*)WOY~2&{=x975k6WjVVQSAlsqpBlqOR}6Izz#}17rIb$+J7V#C6L~23x-a z+umatyUZC?g1L7PuF(ZQrr;w!h1fj%nN*zR%${eg?)%hZ?0xzUjbrZ9!1ghUzP*oe zYl%+-U;BSWiP&eSKQg@rSPo5)H)OFte)#Uz86<`CzZmwh$rW9Yi-1}CA}@K zE5+liR}J>tan|tfwy`YRJ%O%j0CBgz?}J2Bc%FmiJoRjIUA5Hn{-(0MD`P!pv%Ra$ z?8Mp8`##H&a48~1W4*t7I`m;P?%k>GEpk^cNG%_o*~mIZMBxz+yk#`&KD0;XKPEXpy4P|PthLhKSb1{1>xc%&F%H*zvlh+@8 ztp!81eLH>+={vuL*!QF_?)BC(wb#MP>yMdk13OcidqFg~oyl+dc6R9-F1=&9 z^=x}9{dP+4{Z3-NYSG_@GH2WkC$B%gnY+N=o4>=zy}wNEMmTx>apxP#ogOk@Ezxj<|ze87Wo4|6?!97rL6$$rX!TD!r z_%?&RLsxJQgS{J9%=QRauUhyX1)H0my9Lf%xyXGCtXC~^9|xP8_O}(zT)D{I2G*+< zxle%2P3L$L&Rn_3eG05sEpnd*`|e!fdj{-$YT?@s)~7XmJHXDO7QUTeeQD3T;Otv1 ze7nK=(*E|q*`r$co(22fU2*PSusy1U?>VqOt>JqfY>#T;djYI3?e9f6dsGYGONB4( z?`60>Y_;&c0$%8$tl(Y+w-j9T@*138weYr4CF2WO9J;rkrC+Cy1!?iXNtR14piV0~J{_Z8S4)x!5RSYO)T zH*of-7QSx_U)tYyaQoP5@%NGM!S*vb;eG&ncFO%o>^Uj-6R|br;@qFXjSj&I?iX-V z!NqL9!s%5D-)~@ZwFdV)*j%~D{R6C5Eqs51&GlY_+YdH3y{o_A^s0sL0N7mbD!7AS zbJP1f1gBRme22kn@wuYEzroI@7QTPL`m~1c2-sQF!uKy&U)uA3aQ3YhJ`3qf`|Ch# zk80to0Iz4e;@nDNdsGWw$HJ#Ie4PmFQ7wF(3t!q_7dU%V3t!j5m-g2U&K}j`jP2l! zE0^#^0-Y!SPT2_o_)et?xG;dhd3+XZgK{ z-lv`Jxqkbh_id-!gTI5&`z5;fT#IH;q4!U8?^oTPLLZRm-mAJjg+4IRy-#&}>dyZU zRe=W;`be<7)bR{$aH82qstrjrdq}maMDzR+)SS(E!*~uQ_DpMALvI~lW!FMG!rM55 F{XZm$q0s;U literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/bloom-bloom_downsample_fragment.wgsl b/crates/renderling/shaders/bloom-bloom_downsample_fragment.wgsl new file mode 100644 index 00000000..fd80780e --- /dev/null +++ b/crates/renderling/shaders/bloom-bloom_downsample_fragment.wgsl @@ -0,0 +1,65 @@ +struct type_8 { + member: array, +} + +@group(0) @binding(0) +var global: type_8; +var global_1: vec2; +var global_2: u32; +@group(0) @binding(2) +var global_3: sampler; +@group(0) @binding(1) +var global_4: texture_2d; +var global_5: vec4; + +fn function() { + var phi_329_: bool; + var phi_80_: vec2; + + let _e20 = arrayLength((&global.member)); + let _e21 = global_1; + let _e22 = global_2; + if (_e20 >= 2u) { + phi_329_ = (_e22 <= (_e20 - 2u)); + } else { + phi_329_ = false; + } + let _e27 = phi_329_; + if _e27 { + let _e30 = global.member[_e22]; + let _e35 = global.member[(_e22 + 1u)]; + phi_80_ = vec2(bitcast(_e30), bitcast(_e35)); + } else { + phi_80_ = vec2(0f, 0f); + } + let _e39 = phi_80_; + let _e44 = fma(-2f, _e39.x, _e21.x); + let _e47 = fma(2f, _e39.y, _e21.y); + let _e49 = textureSample(global_4, global_3, vec2(_e44, _e47)); + let _e51 = textureSample(global_4, global_3, vec2(_e21.x, _e47)); + let _e52 = vec2((2f * _e39.x), (2f * _e39.y)); + let _e54 = textureSample(global_4, global_3, (_e21 + _e52)); + let _e56 = textureSample(global_4, global_3, vec2(_e44, _e21.y)); + let _e57 = textureSample(global_4, global_3, _e21); + let _e58 = fma(2f, _e39.x, _e21.x); + let _e60 = textureSample(global_4, global_3, vec2(_e58, _e21.y)); + let _e62 = textureSample(global_4, global_3, (_e21 - _e52)); + let _e63 = fma(-2f, _e39.y, _e21.y); + let _e65 = textureSample(global_4, global_3, vec2(_e21.x, _e63)); + let _e67 = textureSample(global_4, global_3, vec2(_e58, _e63)); + let _e71 = textureSample(global_4, global_3, vec2((_e21.x - _e39.x), (_e21.y + _e39.y))); + let _e73 = textureSample(global_4, global_3, (_e21 + _e39)); + let _e75 = textureSample(global_4, global_3, (_e21 - _e39)); + let _e79 = textureSample(global_4, global_3, vec2((_e21.x + _e39.x), (_e21.y - _e39.y))); + global_5 = vec4(max(fma((((_e49.x + _e54.x) + _e62.x) + _e67.x), 0.03125f, fma(0.125f, (_e57.x + (((_e71.x + _e73.x) + _e75.x) + _e79.x)), ((((_e51.x + _e56.x) + _e65.x) + _e60.x) * 0.0625f))), 0.00000011920929f), max(fma((((_e49.y + _e54.y) + _e62.y) + _e67.y), 0.03125f, fma(0.125f, (_e57.y + (((_e71.y + _e73.y) + _e75.y) + _e79.y)), ((((_e51.y + _e56.y) + _e65.y) + _e60.y) * 0.0625f))), 0.00000011920929f), max(fma((((_e49.z + _e54.z) + _e62.z) + _e67.z), 0.03125f, fma(0.125f, (_e57.z + (((_e71.z + _e73.z) + _e75.z) + _e79.z)), ((((_e51.z + _e56.z) + _e65.z) + _e60.z) * 0.0625f))), 0.00000011920929f), max(fma((((_e49.w + _e54.w) + _e62.w) + _e67.w), 0.03125f, fma(0.125f, (_e57.w + (((_e71.w + _e73.w) + _e75.w) + _e79.w)), ((((_e51.w + _e56.w) + _e65.w) + _e60.w) * 0.0625f))), 1f)); + return; +} + +@fragment +fn bloombloom_downsample_fragment(@location(0) param: vec2, @location(1) @interpolate(flat) param_1: u32) -> @location(0) vec4 { + global_1 = param; + global_2 = param_1; + function(); + let _e5 = global_5; + return _e5; +} diff --git a/crates/renderling/shaders/bloom-bloom_mix_fragment.spv b/crates/renderling/shaders/bloom-bloom_mix_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..a04b917bf09495398058e293c6743db359f9f41e GIT binary patch literal 1776 zcmYk5TT7Ht6o$7m9+E^m*h$l7nljUnD3dTM0%@eI6wA(tW<}5>lovrlruWrVbzy&@ zi~dnRB050O^L(@S_-%M+o!_)NI52{R`*ouB8wZ_53E%$H)3`BaL%?zf5R?jGjw8G z>paGsMce*z$(igtmtVqo%Gb`v-NAT$kLGNreB5tg+&cNS^KrjTnspEHUhER^l&}vX zn}Ghku=HjA5cUzXPP+iK4@KKqtSuq!tA96HWn>wT{nfkiRglBv%6|lSwB+JbrWEi7{>G@SA$Ho!9T`NpatS zC&j&Ik9G;^JzF!z3n(My_IMY+*?9svLCpCsgY>P=Q}4c2;BMOHOaf>8MvZ&E0oJ+G zFFLIwJ%7nJwhG<>d#SI-UT@J;-S^0~hEINDf5?~1I_vYc{+~=`{|&GPl{~* z9_KLUDwqQDsbAtBO-Nxtt=wtMIA2ayuF&q7ehVN$ddCw{DR`j`Nnqdyz zx07c0gzno(GkiwZXI`4&3%dUN40o{gds4r<==$1VE*ogDrN4MTRlJ5b!_3n{; z57Di6j}Bg+yDxxE;GN6k_m(Hc7tvE(PUCW>_@i80e&g~_bANvCC14ME%pCw1xF!Ej K#{RM0S@0h#wQ+X< literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/bloom-bloom_mix_fragment.wgsl b/crates/renderling/shaders/bloom-bloom_mix_fragment.wgsl new file mode 100644 index 00000000..ab6213fd --- /dev/null +++ b/crates/renderling/shaders/bloom-bloom_mix_fragment.wgsl @@ -0,0 +1,52 @@ +struct type_8 { + member: array, +} + +@group(0) @binding(0) +var global: type_8; +var global_1: vec2; +var global_2: u32; +@group(0) @binding(2) +var global_3: sampler; +@group(0) @binding(1) +var global_4: texture_2d; +@group(0) @binding(4) +var global_5: sampler; +@group(0) @binding(3) +var global_6: texture_2d; +var global_7: vec4; + +fn function() { + var phi_131_: bool; + var phi_80_: f32; + + let _e14 = arrayLength((&global.member)); + let _e15 = global_1; + let _e16 = global_2; + if (_e14 >= 1u) { + phi_131_ = (_e16 <= (_e14 - 1u)); + } else { + phi_131_ = false; + } + let _e21 = phi_131_; + if _e21 { + let _e24 = global.member[_e16]; + phi_80_ = bitcast(_e24); + } else { + phi_80_ = 0f; + } + let _e27 = phi_80_; + let _e28 = textureSample(global_4, global_3, _e15); + let _e32 = textureSample(global_6, global_5, _e15); + global_7 = vec4(fma((_e32.x - _e28.x), _e27, _e28.x), fma((_e32.y - _e28.y), _e27, _e28.y), fma((_e32.z - _e28.z), _e27, _e28.z), 1f); + return; +} + +@fragment +fn bloombloom_mix_fragment(@location(0) param: vec2, @location(1) @interpolate(flat) param_1: u32) -> @location(0) vec4 { + global_1 = param; + global_2 = param_1; + function(); + let _e5 = global_7; + return _e5; +} diff --git a/crates/renderling/shaders/bloom-bloom_upsample_fragment.spv b/crates/renderling/shaders/bloom-bloom_upsample_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..64a6fd88cfc90229c4508df28f9960ab014f6fc0 GIT binary patch literal 3324 zcmZ9OOKg=z7={N56eFP+Q4oZl3Z}KxN>re!6frTW3l zs4FBfMu-6y8YC_Zx=_5|!Mn!G!f4`ct)Pj~=lRckI60Gi%sbC~x0(6d(lUKnYnnMN zrPP+zIWf*j)05KqhxsX;oo1y0z~F`(HuO&J*xY;Ns+Ic9O)XB?wObz9-9~)8QQXacx+uDb(a=vYv^yB@vcjMPwKw?x$pY_{g$fFxp~i?%^kj; zCu*HX>|)k6%u!=~A+x^n^U1uV;wdd)&p6li<+?qu?a$a6v%SdA#jAt417dIL`7rNj z1-|BAjyYVL_u^`mQV(}(t?c);WIaq_8mAcX9pN83c z4A%~0Ry1Vgy9lqI%rDJ6*1fEav%jlyEpuAWwfnxOK5@<~(E4=Kr{`aVS#veBah@T3 z*Px9xm$kiHN1VT}v0T5HT>WUzrmy{b_YT*-qi-L5c>c9mO7->b*HC^7#zgM5I;Z-; zYEICBs+P>Y-)T;8GxN3V+3zh_+~olIypLNk&+b~EAMx&N(b{e9cWbvrt8xgWXiK)V;Y?nKKr zlFK{33p2mmbK1Lo+Hbj*dv0S!G2=W-C#LW9&`A@6`yOB7*^;4PI%T2I$=F^!Q zA2oMo&UA*|o0)xt->%Gjhv?&ev}dr7sQWM4Udp;2NUne6djK6jG{Nebm34P#W?k>Z zH`;@FPu_dfZ6&C=?rfM`|EMvAmOFy&Ma#s&9?Gmd@53#PZ3H#fod=WaANd|Z z%N@ZUMa#s&9?Q(SQDXrP%{3On?O2J9PH)H%J1M6m_M6-ukkzRRdgNmdkuEH(kc19273){yl)@u zb+qvZ3iby2ICijLZ=#L&&LZ|LwDI0qu(#31duLO8FTUG5nDKoDdlzkd$=+jaylhUI zUB$kS_W#J2Gw;LvyKlbO{{S8P{w%p~?%4mZ*x#S`trPuzgx-lw73>7s-?4iOb`re{ z^Y>1~evCH$P{BSy8-KW9pQ4TTn~vDe(8eDt*ym{D{T9OS3$*cm3&FlbdoSh)_7&Q@ zFh{Vj(VpKN@fP2pjradY!M?|v7yj=yTH%, +} + +@group(0) @binding(0) +var global: type_8; +var global_1: vec2; +@group(0) @binding(2) +var global_2: sampler; +@group(0) @binding(1) +var global_3: texture_2d; +var global_4: u32; +var global_5: vec4; + +fn function() { + var phi_235_: bool; + var phi_108_: vec2; + + let _e17 = arrayLength((&global.member)); + let _e18 = global_1; + let _e19 = global_4; + if (_e17 >= 2u) { + phi_235_ = (_e19 <= (_e17 - 2u)); + } else { + phi_235_ = false; + } + let _e24 = phi_235_; + if _e24 { + let _e27 = global.member[_e19]; + let _e32 = global.member[(_e19 + 1u)]; + phi_108_ = vec2(bitcast(_e27), bitcast(_e32)); + } else { + phi_108_ = vec2(0f, 0f); + } + let _e36 = phi_108_; + let _e40 = (_e18.x - _e36.x); + let _e42 = (_e18.y + _e36.y); + let _e44 = textureSample(global_3, global_2, vec2(_e40, _e42)); + let _e49 = textureSample(global_3, global_2, vec2(_e18.x, _e42)); + let _e54 = textureSample(global_3, global_2, (_e18 + _e36)); + let _e59 = textureSample(global_3, global_2, vec2(_e40, _e18.y)); + let _e63 = textureSample(global_3, global_2, _e18); + let _e67 = (_e18.x + _e36.x); + let _e69 = textureSample(global_3, global_2, vec2(_e67, _e18.y)); + let _e74 = textureSample(global_3, global_2, (_e18 - _e36)); + let _e78 = (_e18.y - _e36.y); + let _e80 = textureSample(global_3, global_2, vec2(_e18.x, _e78)); + let _e85 = textureSample(global_3, global_2, vec2(_e67, _e78)); + global_5 = vec4(((fma(_e63.x, 4f, ((((_e49.x + _e59.x) + _e69.x) + _e80.x) * 2f)) + (((_e44.x + _e54.x) + _e74.x) + _e85.x)) * 0.0625f), ((fma(_e63.y, 4f, ((((_e49.y + _e59.y) + _e69.y) + _e80.y) * 2f)) + (((_e44.y + _e54.y) + _e74.y) + _e85.y)) * 0.0625f), ((fma(_e63.z, 4f, ((((_e49.z + _e59.z) + _e69.z) + _e80.z) * 2f)) + (((_e44.z + _e54.z) + _e74.z) + _e85.z)) * 0.0625f), 0.5f); + return; +} + +@fragment +fn bloombloom_upsample_fragment(@location(0) param: vec2, @location(1) @interpolate(flat) param_1: u32) -> @location(0) vec4 { + global_1 = param; + global_4 = param_1; + function(); + let _e5 = global_5; + return _e5; +} diff --git a/crates/renderling/shaders/bloom-bloom_vertex.spv b/crates/renderling/shaders/bloom-bloom_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..0d08a095944e573f0a6f1c233ea404e07c31ef74 GIT binary patch literal 1304 zcmZwG*-n%}5Cz~K7#zoi5!s@m4&n-Uiloso}Rwj z+pFUB$CLLTPCn&CsnPw&x!_!IT>9mF(@A{T_?5<;yBKUXt`@%4xO}$)pY!ta`;Jpl zt@*0=t1ecL%Za@ZISzc|aOe2gS911JwU@FQpXqS@h?P?>?D(j0XT|GZy#DwXBE_>W zCd<{x^;i}o>060$HfyajtcBZ&{A_Y8M-BpZe!G&d^RGnbXWx(CJo@cTaXsKm@vKIw ztIunJujAJ%J3HFW*7R^A5X0Wt)*7F--E20oU7Vfc6Wg%%e>+@GIh+A;Y-Sxtnni81 z*tcEkzw2>5dMRgLJAS9~lAZ^3FB{=vfN#?0#CNyx|M~7UpZI^z-H*+gzkS2H^9Ql3 zDYqOTp3O`TBhBQ_%;ZgYuV%u%A@3F6iRNAO0-tyCBX{;FQmnVI8OVpbd;baiAlzHp z4%~moA4iw_b8_=P3B-6mhw;egUcSWdZ9EOc@PCj0S)}h*^7B0pb^?8oKO@E9e6Nyc z9Qh)UTQ0r0)7^kwUH6L9&0vq}?M3>!di&8|2J(~YiNX2Qv*Uw6p01vKA2z!hc8=5S S+g_$~$vHiXnSSRcc7s0yM?JCt literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/bloom-bloom_vertex.wgsl b/crates/renderling/shaders/bloom-bloom_vertex.wgsl new file mode 100644 index 00000000..799a7bf2 --- /dev/null +++ b/crates/renderling/shaders/bloom-bloom_vertex.wgsl @@ -0,0 +1,46 @@ +struct VertexOutput { + @location(0) member: vec2, + @location(1) @interpolate(flat) member_1: u32, + @builtin(position) member_2: vec4, +} + +var global: u32; +var global_1: u32; +var global_2: vec2; +var global_3: vec4 = vec4(0f, 0f, 0f, 1f); +var global_4: u32; + +fn function() { + var local: array, 6>; + var local_1: array, 6>; + + let _e22 = global; + let _e23 = global_1; + let _e24 = (_e22 % 6u); + local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); + let _e25 = (_e24 < 6u); + if _e25 { + let _e27 = local[_e24]; + global_2 = _e27; + local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); + if _e25 { + let _e29 = local_1[_e24]; + global_3 = _e29; + global_4 = _e23; + } + } + return; +} + +@vertex +fn bloombloom_vertex(@builtin(vertex_index) param: u32, @builtin(instance_index) param_1: u32) -> VertexOutput { + global = param; + global_1 = param_1; + function(); + let _e8 = global_3.y; + global_3.y = -(_e8); + let _e10 = global_2; + let _e11 = global_4; + let _e12 = global_3; + return VertexOutput(_e10, _e11, _e12); +} diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv b/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..4dbda3721537d2c37020012958ca2a3f14d823a8 GIT binary patch literal 5212 zcmZvgX^53&7>2*mTuO7S%q2Bv&S>RS+A>Ow%Zz1?l|O9z7f5ABP#R`MVJJk@uYS~@ zvI5ICZL_ivZK0?nvW+5&XpvT;#THwMx~?db*WXa`jTDiNQ%Mpf0YYH%~|TXfE%X;-dVI<0HQaq31?{T=+jwHjIN$8!L7 z(Te3)uej{0RhO<<-rarS%B9Pe5G<*oOO~y?;F8NPUcRboX0YE#Jo^s8`p9I?!!g^! zY7k@TZyn_s%yEjD!+t)~?@*#~#BG>uG+7Vh*@lgQ8_(0&x^2W0cv@Hd5YUM{+d<5y zKMHIT&!hLrYiyo&%$B&(jMny;+cCCa=AKnzYl$V_WPHccNloiasc}c(t8IZZ$B~7z z?ok-6H+84>$6d~`6JL$BQs-#=q1fT@uB&ULncMhSEZS-Ku4&@w_#-jb)bVGM5v;lA{aXq}Fq6Giuz)_~+50?IzwtOFWDCL|Wq6#5-w;=McBj63->x zO-tNE{4f6!_Yw;jJC=FI)!ONa=M!D?{FVCG1^8YHfGo9^#K$Uz?Tqv?gEmB<}0izu*E=DWzE_l z6ZqDWGoM`M{v^J`0kv0Ax$E^A!D*v$1ezGHs5?7@D#C5*k>UMkq&8um)T zhJdM++flHg_~PDM$#(#;xO*Diu%hd()i@ALTwQ96Ahy3;`nKYWd-tWrLB!&dYc&oo zI`72HV-%RUy3{z7*#2^H3!p#_Mw$?EWyq$7|`A|Iu}gb zI(|1fAK$*>?ZlbutpyX$dftX_e%I4Jn!2pT?S*$vYPXd6-GMJ>e(%1A@ojz%$gRWf z#Ju11y`$6^i{~tC#Bb2gT(^+h@o&O+4s!K=_V?~q^9a7*!OX4RoLQqK`0~8=Viy$5 zx#nyw1rtxdWkrKz@0wi;rp~?3I$npbRxInd8b9kO=ee?P`0H!DHRa6{{-zr5_~kwK z+0&cxtzjOu8OzfJ6Hl&Z@G}IhZT9?Ge7WrToA@^OT<$sS zdCWc5ckk2~i)YVw;y37LuI%|6@|aw`pZ&AvZ{fS==2mac?A;4YSl$-w#e%sO!Co$y z(yZYtV1AF2%No6k&#U>q@Ozv2)uqo4e7_T_3-&s`xOH>JPUZb;|KxoWpI0-lTJx$2 z|Mot-WAeLX&cQpx=CGF9)c$}8iD}98AsAt^mVGpJ;XkhN=F;qwbMQ&wJqK!Y4nD<~ zYX@(B@4>fu4&*+=c46+jzWe!8iN$jce#CFk&s;eNyYZc)T)m(Da}IvS_Z*m8y*abL z@6uPE7xU=<4*wn)ujYQqx7WD$Yn*Fc=RU1*?z7ysa{qlsY+fdl+I8-uULx{iB1 zzRhvVjm5@cj$7Y7P-85fy*muw{N}1_)Vfc8eoer)j(ODEKjZAcXZp>v={oK^&dKm< zGR~v$ZH`lJ3U&nMxbz)^8e{Q{^GJO2o2#x-n{iIXw~l$#+dq5Kitjws1pAzPo*VZs z*cbR}Ju|8OCBC@&8_H+;SNQIix}1rx@p(1ZOy1wv(SJj%UQO2STYO&4wUf8b1}yw{ z_`I6D{p9`q;QT$Ou90W69*bu^e#AG2Yh*vQ;dbL&U(TAzlixBv_f-2gzXSb@@85R( zz2np0IiB18TKhMD>-_@eZ#XqR)ojM1@f`h1?B7n*_*CN<>zY0Pqj9X!_?ziBV*j3G m9)CZX$5@SP;cscz#;51Z@vj#vxX-y9dcW(L>mOG6B global: vec2; +var global_1: vec2; + +fn function() { + var phi_417_: type_6; + var phi_418_: f32; + var phi_419_: f32; + var phi_432_: type_6; + var phi_433_: type_6; + var phi_684_: vec3; + var phi_719_: vec3; + var phi_754_: vec3; + var phi_796_: f32; + var phi_809_: f32; + var phi_495_: f32; + var phi_496_: f32; + var phi_498_: bool; + var phi_499_: type_6; + var phi_500_: f32; + var phi_501_: f32; + var phi_502_: vec2; + var local: vec2; + + let _e37 = global; + let _e40 = max(_e37.x, 0.00000011920929f); + let _e41 = -(_e40); + let _e43 = sqrt(fma(_e41, _e40, 1f)); + phi_417_ = type_6(1u, 1024u); + phi_418_ = 0f; + phi_419_ = 0f; + loop { + let _e45 = phi_417_; + let _e47 = phi_418_; + let _e49 = phi_419_; + if (_e45.member < _e45.member_1) { + phi_432_ = type_6((_e45.member + 1u), _e45.member_1); + phi_433_ = type_6(1u, _e45.member); + } else { + phi_432_ = _e45; + phi_433_ = type_6(0u, type_6().member_1); + } + let _e62 = phi_432_; + let _e64 = phi_433_; + switch bitcast(_e64.member) { + case 0: { + phi_498_ = false; + phi_499_ = type_6(); + phi_500_ = f32(); + phi_501_ = f32(); + phi_502_ = vec2((_e49 * 0.0009765625f), (_e47 * 0.0009765625f)); + break; + } + case 1: { + let _e76 = ((_e64.member_1 << bitcast(16u)) | (_e64.member_1 >> bitcast(16u))); + let _e83 = (((_e76 & 1431655765u) << bitcast(1u)) | ((_e76 & 2863311530u) >> bitcast(1u))); + let _e90 = (((_e83 & 858993459u) << bitcast(2u)) | ((_e83 & 3435973836u) >> bitcast(2u))); + let _e97 = (((_e90 & 252645135u) << bitcast(4u)) | ((_e90 & 4042322160u) >> bitcast(4u))); + let _e105 = f32((((_e97 & 16711935u) << bitcast(8u)) | ((_e97 & 4278255360u) >> bitcast(8u)))); + let _e107 = (_e37.y * _e37.y); + let _e108 = (f32(_e64.member_1) * 0.0061359233f); + let _e114 = sqrt((fma(-(_e105), 0.00000000023283064f, 1f) / fma(fma(_e107, _e107, -1f), (_e105 * 0.00000000023283064f), 1f))); + let _e117 = sqrt(fma(-(_e114), _e114, 1f)); + let _e119 = (cos(_e108) * _e117); + let _e121 = (sin(_e108) * _e117); + let _e125 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(1f) < 0.999f))); + let _e128 = -(_e125.x); + let _e132 = sqrt(fma(_e125.y, _e125.y, (_e128 * _e128))); + if (_e132 == 0f) { + phi_684_ = vec3(0f, 0f, 0f); + } else { + phi_684_ = (vec3(_e125.y, _e128, 0f) * (1f / _e132)); + } + let _e137 = phi_684_; + let _e144 = fma(_e137.x, _e119, (-(_e137.y) * _e121)); + let _e145 = fma(_e137.y, _e119, (_e137.x * _e121)); + let _e146 = fma(_e137.z, _e119, _e114); + let _e151 = sqrt(fma(_e146, _e146, fma(_e144, _e144, (_e145 * _e145)))); + if (_e151 == 0f) { + phi_719_ = vec3(0f, 0f, 0f); + } else { + phi_719_ = (vec3(_e144, _e145, _e146) * (1f / _e151)); + } + let _e156 = phi_719_; + let _e161 = fma(_e43, _e156.x, (_e40 * _e156.z)); + let _e162 = (2f * _e161); + let _e163 = (_e162 * _e156.y); + let _e165 = fma(_e162, _e156.x, -(_e43)); + let _e166 = fma(_e162, _e156.z, _e41); + let _e171 = sqrt(fma(_e166, _e166, fma(_e165, _e165, (_e163 * _e163)))); + if (_e171 == 0f) { + phi_754_ = vec3(0f, 0f, 0f); + } else { + phi_754_ = (vec3(_e165, _e163, _e166) * (1f / _e171)); + } + let _e176 = phi_754_; + let _e178 = max(_e176.z, 0f); + let _e180 = max(_e161, 0f); + if (_e178 > 0f) { + let _e182 = max(_e40, 0f); + let _e183 = (_e107 * 0.5f); + let _e185 = fma(-(_e107), 0.5f, 1f); + let _e186 = fma(_e182, _e185, _e183); + if (_e186 == 0f) { + phi_796_ = 0f; + } else { + phi_796_ = (_e182 / _e186); + } + let _e190 = phi_796_; + let _e191 = fma(_e178, _e185, _e183); + if (_e191 == 0f) { + phi_809_ = 0f; + } else { + phi_809_ = (_e178 / _e191); + } + let _e195 = phi_809_; + let _e199 = (((_e190 * _e195) * _e180) / (max(_e156.z, 0f) * _e40)); + let _e201 = pow((1f - _e180), 5f); + phi_495_ = fma(_e201, _e199, _e47); + phi_496_ = fma((1f - _e201), _e199, _e49); + } else { + phi_495_ = _e47; + phi_496_ = _e49; + } + let _e206 = phi_495_; + let _e208 = phi_496_; + phi_498_ = true; + phi_499_ = _e62; + phi_500_ = _e206; + phi_501_ = _e208; + phi_502_ = vec2(); + break; + } + default: { + phi_498_ = false; + phi_499_ = type_6(); + phi_500_ = f32(); + phi_501_ = f32(); + phi_502_ = vec2(); + break; + } + } + let _e210 = phi_498_; + let _e212 = phi_499_; + let _e214 = phi_500_; + let _e216 = phi_501_; + let _e218 = phi_502_; + local = _e218; + continue; + continuing { + phi_417_ = _e212; + phi_418_ = _e214; + phi_419_ = _e216; + break if !(_e210); + } + } + let _e221 = local; + global_1 = _e221; + return; +} + +@fragment +fn convolutionbrdf_lut_convolution_fragment(@location(0) param: vec2) -> @location(0) vec2 { + global = param; + function(); + let _e3 = global_1; + return _e3; +} diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.spv b/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..23afd6ddb76ad4d4e649926803a997c079cf212c GIT binary patch literal 1388 zcmZ9L%T8255Qd8ZBq}m0f})56qo^?P3IxGRbRjNWzy{q-qCi4on1mp4=_C0DK8sJ` zB{A{)=5&Pw@A*0|L?dLhKQ2X##bBTJ+k|zff9xF` z_db0-+V35#t$jG$+3VtTYi##;_wZ=wE?{^wrOTh2k5h?@&L3Jq0pf zE&Vq!9H;Re?aD-Q)+sj%Tt{mjZN&usIcy6!TKHpFbL1zfvf1Y&E~A}iu5YczdJ^^_ zuYM7$ZjI{WSatbvvfOhPW&-Pck(g?qtf|2|C;S!W4&z*Rs_&inSNs0g7whO*i~D8# zwMze<`%L3od-~Uz+pGEZt)`#4_v3o%_F`Z9)6BdNYcfXP`_Olf8GP@<7dV?(-yXHbdS>^qo>_HPLvg?O z?ycPp1UZ<$+zBe^Z+a;}rycHumyO-|2$`5iFdcy;gFJ^Vk^>Sy7Z J{AI;e@DIJXM8g08 literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl b/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl new file mode 100644 index 00000000..2ee9750b --- /dev/null +++ b/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl @@ -0,0 +1,38 @@ +struct type_10 { + member: array, + member_1: array, +} + +struct VertexOutput { + @location(0) member: vec2, + @builtin(position) member_1: vec4, +} + +var global: vec2; +var global_1: u32; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); + +fn function() { + var local: array; + + let _e25 = global_1; + local = array(type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, -1f, 0f), array(1f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, 1f, 0f), array(0f, 0f))); + if (_e25 < 6u) { + let _e29 = local[_e25].member; + let _e32 = local[_e25].member_1; + global = vec2(_e32[0], _e32[1]); + global_2 = vec4(_e29[0], _e29[1], _e29[2], 1f); + } + return; +} + +@vertex +fn convolutionbrdf_lut_convolution_vertex(@builtin(vertex_index) param: u32) -> VertexOutput { + global_1 = param; + function(); + let _e5 = global_2.y; + global_2.y = -(_e5); + let _e7 = global; + let _e8 = global_2; + return VertexOutput(_e7, _e8); +} diff --git a/crates/renderling/shaders/convolution-generate_mipmap_fragment.spv b/crates/renderling/shaders/convolution-generate_mipmap_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..e1f12d06d03210cf8ed1244398eb8c2ce42f6a47 GIT binary patch literal 608 zcmYk2%}T>i5QVR;rTEuaD-{)_wQj7gMJl@W4Rl$8#8NOxDbe@!E!+rxUz!UJOy-_5 ze<#y!O}e486+%eDEnlr4T0zG6eH=nBv}@jP0=rE#|5g@X<;Q2WEQ{G}krmlGt+IK( zT;=I%{=QBZc~(@^wQzgw>)?kV`@8rvto#M8iLLpM?H%Lxm=|B-n%Mc~wTNSWNcArK z2tT2Ak0`cByx(9ojKBv(=gSYM>Ji5<3DNgy*g^khhI*V6O{_Vmzj@ZRXH*?E{Gj0@ z=DhWPsq2A0alG$2dxv26nNyp$QJ>gZzBREsqn5^<3f3 i6T9;ocis!L)G=*1>t5l!(M`iU>xpjl$^EkV9{&TY10D|m literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/convolution-generate_mipmap_fragment.wgsl b/crates/renderling/shaders/convolution-generate_mipmap_fragment.wgsl new file mode 100644 index 00000000..47e27000 --- /dev/null +++ b/crates/renderling/shaders/convolution-generate_mipmap_fragment.wgsl @@ -0,0 +1,21 @@ +var global: vec2; +var global_1: vec4; +@group(0) @binding(1) +var global_2: sampler; +@group(0) @binding(0) +var global_3: texture_2d; + +fn function() { + let _e4 = global; + let _e5 = textureSample(global_3, global_2, _e4); + global_1 = _e5; + return; +} + +@fragment +fn convolutiongenerate_mipmap_fragment(@location(0) param: vec2) -> @location(0) vec4 { + global = param; + function(); + let _e3 = global_1; + return _e3; +} diff --git a/crates/renderling/shaders/convolution-generate_mipmap_vertex.spv b/crates/renderling/shaders/convolution-generate_mipmap_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..49223d8cd9acf869cc6f15868e76c2ff131481d2 GIT binary patch literal 1172 zcmZvaX-We@5QQrmjd4kg#>6FRV%#^}k%$WZ@fab9mUW|p>7{TUe>Fc|z>)+}X%AbU%^#cfy~8*w<{@T9}6u_R-VPyLu|+hKITj2Xqz zDFQT#!by30gU@N@(U3RGD@Gj{O>)QOSr4B0ggkN9AfA#Z4nM6bc3u)gugrIp!#Wum zdnyRy(St){O5X30ICJ!TeA>m~vsy#P9qQ7@jEuoL;9Q8FuXk<8^&I8Edv4a{^>cHM zL(k{UYYvXMWZ3tDa9)N6H5hqt?4=-2pX~2K*q>M95ugV$*|Y5c-Ab+(7?!#xVWuq?(c*>@qTz8F&UUQzXzetyR-;xpMZM-YKEzkH; zEwLThu8cLA->8l|*^{9~E$eVU`!aaep?5HI`r%B_Kagj5{X@-<1M|J!}8~ literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl b/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl new file mode 100644 index 00000000..47453d6e --- /dev/null +++ b/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl @@ -0,0 +1,38 @@ +struct VertexOutput { + @location(0) member: vec2, + @builtin(position) member_1: vec4, +} + +var global: vec2; +var global_1: u32; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); + +fn function() { + var local: array, 6>; + var local_1: array, 6>; + + let _e20 = global_1; + local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); + let _e21 = (_e20 < 6u); + if _e21 { + let _e23 = local[_e20]; + global = _e23; + local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); + if _e21 { + let _e25 = local_1[_e20]; + global_2 = _e25; + } + } + return; +} + +@vertex +fn convolutiongenerate_mipmap_vertex(@builtin(vertex_index) param: u32) -> VertexOutput { + global_1 = param; + function(); + let _e5 = global_2.y; + global_2.y = -(_e5); + let _e7 = global; + let _e8 = global_2; + return VertexOutput(_e7, _e8); +} diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..efcb42aaa7c89b4ff99ad579c1081e434f64719b GIT binary patch literal 6456 zcmZ9Qd$5*O6~cmVB!aR8Z| zYMLf5Q-4_un4&dSrkIFCFs7(fQ%ojhUeZ!)Y9>uH$9})>?C1Cn+p}2DTI<Ssq()qAVKE&HO5%R45lUH7>OQ>LCRZ&)=@ z)%tgM^}(tgY>H*8yRTina{aol)!j2@tm#?4qHE>43&AdH1@`W$TwN zU$taS=Zc;sSLkTvaQ+}YhCl{KaQQ8iXMgMLul~` ze5awumAt2e9ojYe3=Kx?Gh0^g?AT-b?1y8IYuVN8lgK+B>>AGM^R;Ywu73j3hKyw` z)}M$Z=3x&&W|q0`#gQ84^qF&FPwum)$alYoQ_yv>lYc7qdytXDJu}y%3}BY_ zG$h>VVC%;|7kn%t*W5D@&txXLMqKxJPSn^(5c?N7v+VUed?!}NRI|`E;#%!RhB+Me zZgw9m-1ce?w(-7wwO8jCyGFbJIcV>f9Bt#?FYWB%0x%(beRpSWBQ_7bkP+^D?469* z7h_Lm#Qqreumt$SGXJh|;TZp~o z&26(zX6=i>_RxLWC;R9aU!KK7G}Zg;ev|KTtI@r4b4E{Lzk5FKp4}htd)E`o{3EUT zd*{dg6ZX@?AD!u4dj;%Wb{!vP4X2`8bhOXg8(5z~p9k0T>qI;&?Haup@vJ_Mw?^N_ zp~-Q?x2^b4)z-q>j-g)}%FV8c?Ev#vO+w70$V;Bv!RB^-nR6#T{#tX4E9M!>s%rc@ z!ThzJ6}k6P-~HYNHfFE>!|orF#P~1!GIlre1H}D{-$cvN)_-H!$Ae&dZmw_Ovq!tZ zuG3g^p7UShNtd$+?6YQW`R2?%mzFrL{(db3>-V$EoGZ|-MQu($1Fk^4Ki0Vt+*M-M zy9%+Mv8&OE)!>zgeK58PZR~aW&|NU9RdY4knrhd23VID8s;-^=6(@;Ix-D$ zGI;At!2!7#B9gY4vVjXiB_gR?5o`#@}HP`Dt*0BE?y^jUhm;L3O4;I^Z)xP3;qTxGGd{5$& zYwVHYI|SB0uaWQ9*!sN>;r*uY<~M5m7N353sqs5(=Nrr1!(javH){MITfg56!h5Rl ze8*%TPvg@sFEx%}JKtF5{t>Ldqfz4-Z2i8|!~1jL`JPIR=kV#5mm1GwJKtF5z5v$m zJ1xC`5nKP%Mva#W&v#vF{0*Oed8zR-w)2hUY+nKE-^%&aa9;)MTL6ylU)YPWmH7UR z&wJtfX=Ax3&w!nq&->TG{Ix#sjhWLsm-rivxHXiqjrd!QxLnuf{5%W)!?uRJyhGjw z^Vj;kGoH0QOMPRh{Z8Te{z|NGZGG<|AExAyoBRWce;D)ZLHg0AA8}r|0}JyIl-J`MQJm=>-&swnGLCh`RoH@JGz{dIO_nlFE_9Fcni%-92nzQ%|SbzF6 z4xIjZ4(67VT4#Z+S9N+n1Yd3u##Wt6|3640ojW9Oo+Yfa_mMjg?~K^H zAV*t&?$CW;?~u82hwcZvM`O)-&d(is0PGzyw|sNvobSMI+!5bSus(Z{e%%H34jD^7 z?gpn{p0T;)CC?AR<}rQd+yl;>K?LNOXDI)NP@{i@7`In))juoWNq!7AuFvKiJ_sW4n+C5a)^Qqa1Dh>A`N+YyE{t*832?tk<|T!v8t; zVMI>&`@rEFpA0|e`wQ$Nh@9N1{b2bc5#z~y06Y$#@#cD6x947?A4FV_dy?;7{GDbz zdN>PRd{CFJf zTFfnX6aA^tParE1`S#zt=za12HEsQQ4xa>@&ogoza&uOPz~(e&-sI^8n^*lBzqk6` z{8z|CWK+?b(f%IWSL>M8Zy#4;PebIW<@g&$I8(q^BmVX)M=i%ShEs!AA#)KqYB{b| aj{EFFyFRtglWX%gsP5udzfFgyBmW0xRfrb= literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl new file mode 100644 index 00000000..cbff26f6 --- /dev/null +++ b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl @@ -0,0 +1,164 @@ +struct type_7 { + member: u32, + member_1: u32, +} + +@group(0) @binding(2) +var global: sampler; +var global_1: vec4; +var global_2: vec3; +var global_3: f32; +@group(0) @binding(1) +var global_4: texture_cube; + +fn function() { + var phi_446_: vec3; + var phi_103_: type_7; + var phi_106_: vec3; + var phi_108_: f32; + var phi_123_: type_7; + var phi_124_: type_7; + var phi_627_: vec3; + var phi_662_: vec3; + var phi_697_: vec3; + var phi_187_: f32; + var phi_206_: vec3; + var phi_207_: f32; + var phi_208_: bool; + var phi_104_: type_7; + var phi_107_: vec3; + var phi_109_: f32; + + let _e41 = global_2; + let _e42 = global_3; + let _e49 = sqrt(fma(_e41.z, _e41.z, fma(_e41.x, _e41.x, (_e41.y * _e41.y)))); + if (_e49 == 0f) { + phi_446_ = vec3(0f, 0f, 0f); + } else { + phi_446_ = (_e41 * (1f / _e49)); + } + let _e54 = phi_446_; + let _e56 = (_e54.y * -1f); + phi_103_ = type_7(0u, 1024u); + phi_106_ = vec3(0f, 0f, 0f); + phi_108_ = 0f; + loop { + let _e58 = phi_103_; + let _e60 = phi_106_; + let _e62 = phi_108_; + if (_e58.member < _e58.member_1) { + phi_123_ = type_7((_e58.member + 1u), _e58.member_1); + phi_124_ = type_7(1u, _e58.member); + } else { + phi_123_ = _e58; + phi_124_ = type_7(0u, type_7().member_1); + } + let _e75 = phi_123_; + let _e77 = phi_124_; + switch bitcast(_e77.member) { + case 0: { + global_1 = vec4((_e60.x / _e62), (_e60.y / _e62), (_e60.z / _e62), 1f); + phi_208_ = false; + phi_104_ = type_7(); + phi_107_ = vec3(); + phi_109_ = f32(); + break; + } + case 1: { + let _e93 = ((_e77.member_1 << bitcast(16u)) | (_e77.member_1 >> bitcast(16u))); + let _e100 = (((_e93 & 1431655765u) << bitcast(1u)) | ((_e93 & 2863311530u) >> bitcast(1u))); + let _e107 = (((_e100 & 858993459u) << bitcast(2u)) | ((_e100 & 3435973836u) >> bitcast(2u))); + let _e114 = (((_e107 & 252645135u) << bitcast(4u)) | ((_e107 & 4042322160u) >> bitcast(4u))); + let _e122 = f32((((_e114 & 16711935u) << bitcast(8u)) | ((_e114 & 4278255360u) >> bitcast(8u)))); + let _e124 = (_e42 * _e42); + let _e125 = (f32(_e77.member_1) * 0.0061359233f); + let _e131 = sqrt((fma(-(_e122), 0.00000000023283064f, 1f) / fma(fma(_e124, _e124, -1f), (_e122 * 0.00000000023283064f), 1f))); + let _e134 = sqrt(fma(-(_e131), _e131, 1f)); + let _e136 = (cos(_e125) * _e134); + let _e138 = (sin(_e125) * _e134); + let _e143 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(_e54.z) < 0.999f))); + let _e148 = fma(_e143.y, _e54.z, -((_e56 * _e143.z))); + let _e153 = fma(_e143.z, _e54.x, -((_e54.z * _e143.x))); + let _e156 = fma(_e143.x, _e56, -((_e54.x * _e143.y))); + let _e161 = sqrt(fma(_e156, _e156, fma(_e148, _e148, (_e153 * _e153)))); + if (_e161 == 0f) { + phi_627_ = vec3(0f, 0f, 0f); + } else { + phi_627_ = (vec3(_e148, _e153, _e156) * (1f / _e161)); + } + let _e166 = phi_627_; + let _e185 = fma(_e54.x, _e131, fma(_e166.x, _e136, (fma(_e56, _e166.z, -((_e166.y * _e54.z))) * _e138))); + let _e186 = fma(_e56, _e131, fma(_e166.y, _e136, (fma(_e54.z, _e166.x, -((_e166.z * _e54.x))) * _e138))); + let _e187 = fma(_e54.z, _e131, fma(_e166.z, _e136, (fma(_e54.x, _e166.y, -((_e166.x * _e56))) * _e138))); + let _e192 = sqrt(fma(_e187, _e187, fma(_e185, _e185, (_e186 * _e186)))); + if (_e192 == 0f) { + phi_662_ = vec3(0f, 0f, 0f); + } else { + phi_662_ = (vec3(_e185, _e186, _e187) * (1f / _e192)); + } + let _e197 = phi_662_; + let _e204 = (2f * fma(_e54.z, _e197.z, fma(_e54.x, _e197.x, (_e56 * _e197.y)))); + let _e206 = fma(_e204, _e197.x, -(_e54.x)); + let _e207 = fma(_e204, _e197.y, _e54.y); + let _e209 = fma(_e204, _e197.z, -(_e54.z)); + let _e214 = sqrt(fma(_e209, _e209, fma(_e206, _e206, (_e207 * _e207)))); + if (_e214 == 0f) { + phi_697_ = vec3(0f, 0f, 0f); + } else { + phi_697_ = (vec3(_e206, _e207, _e209) * (1f / _e214)); + } + let _e219 = phi_697_; + let _e226 = max(fma(_e54.z, _e219.z, fma(_e54.x, _e219.x, (_e56 * _e219.y))), 0f); + if (_e226 > 0f) { + if (_e42 == 0f) { + phi_187_ = 0f; + } else { + phi_187_ = (0.5f * log2((1572864f / max((1024f * max((_e226 * 0.31830987f), 0f)), 0.00000011920929f)))); + } + let _e237 = phi_187_; + let _e238 = textureSampleLevel(global_4, global, _e219, _e237); + phi_206_ = vec3(fma(_e238.x, _e226, _e60.x), fma(_e238.y, _e226, _e60.y), fma(_e238.z, _e226, _e60.z)); + phi_207_ = (_e62 + _e226); + } else { + phi_206_ = _e60; + phi_207_ = _e62; + } + let _e251 = phi_206_; + let _e253 = phi_207_; + phi_208_ = true; + phi_104_ = _e75; + phi_107_ = _e251; + phi_109_ = _e253; + break; + } + default: { + phi_208_ = false; + phi_104_ = type_7(); + phi_107_ = vec3(); + phi_109_ = f32(); + break; + } + } + let _e255 = phi_208_; + let _e257 = phi_104_; + let _e259 = phi_107_; + let _e261 = phi_109_; + continue; + continuing { + phi_103_ = _e257; + phi_106_ = _e259; + phi_108_ = _e261; + break if !(_e255); + } + } + return; +} + +@fragment +fn convolutionprefilter_environment_cubemap_fragment(@location(0) param: vec3, @location(1) param_1: f32) -> @location(0) vec4 { + global_2 = param; + global_3 = param_1; + function(); + let _e5 = global_1; + return _e5; +} diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..8d2ee73228b1556c7302c626ed7186cf2c5c6413 GIT binary patch literal 12180 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, +} + +struct type_20 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_21 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_22 { + member: type_20, + member_1: type_20, + member_2: type_21, + member_3: vec3, +} + +struct type_24 { + member: u32, + member_1: u32, +} + +struct VertexOutput { + @location(0) member: vec3, + @location(1) member_1: f32, + @builtin(position) member_2: vec4, +} + +@group(0) @binding(0) +var global: type_10; +var global_1: u32; +var global_2: u32; +var global_3: f32; +var global_4: vec3; +var global_5: vec4 = vec4(0f, 0f, 0f, 1f); + +fn function() { + var local: array, 8>; + var local_1: array, 6>; + var local_2: array, 36>; + var phi_768_: bool; + var phi_165_: type_24; + var phi_796_: bool; + var phi_326_: type_24; + var phi_342_: type_24; + var phi_343_: type_24; + var phi_356_: type_24; + var phi_372_: type_24; + var phi_373_: type_24; + var phi_399_: type_22; + var phi_400_: bool; + var phi_357_: type_24; + var phi_420_: type_22; + var phi_421_: bool; + var phi_327_: type_24; + var phi_426_: type_22; + var phi_828_: bool; + var phi_434_: f32; + var local_3: type_22; + var local_4: type_22; + + let _e80 = global_1; + let _e81 = global_2; + let _e83 = arrayLength((&global.member)); + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e81 < 36u) { + let _e86 = local_2[_e81]; + if (_e83 >= 2u) { + phi_768_ = (_e80 <= (_e83 - 2u)); + } else { + phi_768_ = false; + } + let _e91 = phi_768_; + if _e91 { + let _e94 = global.member[_e80]; + let _e98 = global.member[(_e80 + 1u)]; + phi_165_ = type_24(_e94, _e98); + } else { + phi_165_ = type_24(4294967295u, 4294967295u); + } + let _e101 = phi_165_; + if (_e83 >= 83u) { + phi_796_ = (_e101.member <= (_e83 - 83u)); + } else { + phi_796_ = false; + } + let _e108 = phi_796_; + if _e108 { + let _e111 = global.member[_e101.member]; + let _e116 = global.member[(_e101.member + 1u)]; + let _e121 = global.member[(_e101.member + 2u)]; + let _e126 = global.member[(_e101.member + 3u)]; + let _e132 = global.member[(_e101.member + 4u)]; + let _e137 = global.member[(_e101.member + 5u)]; + let _e142 = global.member[(_e101.member + 6u)]; + let _e147 = global.member[(_e101.member + 7u)]; + let _e153 = global.member[(_e101.member + 8u)]; + let _e158 = global.member[(_e101.member + 9u)]; + let _e163 = global.member[(_e101.member + 10u)]; + let _e168 = global.member[(_e101.member + 11u)]; + let _e174 = global.member[(_e101.member + 12u)]; + let _e179 = global.member[(_e101.member + 13u)]; + let _e184 = global.member[(_e101.member + 14u)]; + let _e189 = global.member[(_e101.member + 15u)]; + let _e196 = global.member[(_e101.member + 16u)]; + let _e201 = global.member[(_e101.member + 17u)]; + let _e206 = global.member[(_e101.member + 18u)]; + let _e211 = global.member[(_e101.member + 19u)]; + let _e217 = global.member[(_e101.member + 20u)]; + let _e222 = global.member[(_e101.member + 21u)]; + let _e227 = global.member[(_e101.member + 22u)]; + let _e232 = global.member[(_e101.member + 23u)]; + let _e238 = global.member[(_e101.member + 24u)]; + let _e243 = global.member[(_e101.member + 25u)]; + let _e248 = global.member[(_e101.member + 26u)]; + let _e253 = global.member[(_e101.member + 27u)]; + let _e259 = global.member[(_e101.member + 28u)]; + let _e264 = global.member[(_e101.member + 29u)]; + let _e269 = global.member[(_e101.member + 30u)]; + let _e274 = global.member[(_e101.member + 31u)]; + let _e281 = global.member[(_e101.member + 32u)]; + let _e286 = global.member[(_e101.member + 33u)]; + let _e291 = global.member[(_e101.member + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_326_ = type_24(0u, 6u); + loop { + let _e296 = phi_326_; + if (_e296.member < _e296.member_1) { + phi_342_ = type_24((_e296.member + 1u), _e296.member_1); + phi_343_ = type_24(1u, _e296.member); + } else { + phi_342_ = _e296; + phi_343_ = type_24(0u, type_24().member_1); + } + let _e309 = phi_342_; + let _e311 = phi_343_; + switch bitcast(_e311.member) { + case 0: { + let _e315 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_356_ = type_24(0u, 8u); + loop { + let _e318 = phi_356_; + if (_e318.member < _e318.member_1) { + phi_372_ = type_24((_e318.member + 1u), _e318.member_1); + phi_373_ = type_24(1u, _e318.member); + } else { + phi_372_ = _e318; + phi_373_ = type_24(0u, type_24().member_1); + } + let _e331 = phi_372_; + let _e333 = phi_373_; + switch bitcast(_e333.member) { + case 0: { + let _e337 = local; + phi_399_ = type_22(type_20(vec4(bitcast(_e111), bitcast(_e116), bitcast(_e121), bitcast(_e126)), vec4(bitcast(_e132), bitcast(_e137), bitcast(_e142), bitcast(_e147)), vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), vec4(bitcast(_e174), bitcast(_e179), bitcast(_e184), bitcast(_e189))), type_20(vec4(bitcast(_e196), bitcast(_e201), bitcast(_e206), bitcast(_e211)), vec4(bitcast(_e217), bitcast(_e222), bitcast(_e227), bitcast(_e232)), vec4(bitcast(_e238), bitcast(_e243), bitcast(_e248), bitcast(_e253)), vec4(bitcast(_e259), bitcast(_e264), bitcast(_e269), bitcast(_e274))), type_21(_e337, _e315), vec3(bitcast(_e281), bitcast(_e286), bitcast(_e291))); + phi_400_ = false; + phi_357_ = type_24(); + break; + } + case 1: { + let _e341 = ((_e101.member + 59u) + (_e333.member_1 * 3u)); + let _e344 = global.member[_e341]; + let _e349 = global.member[(_e341 + 1u)]; + let _e354 = global.member[(_e341 + 2u)]; + local[_e333.member_1] = vec3(bitcast(_e344), bitcast(_e349), bitcast(_e354)); + phi_399_ = type_22(); + phi_400_ = true; + phi_357_ = _e331; + break; + } + default: { + phi_399_ = type_22(); + phi_400_ = false; + phi_357_ = type_24(); + break; + } + } + let _e359 = phi_399_; + let _e361 = phi_400_; + let _e363 = phi_357_; + local_3 = _e359; + continue; + continuing { + phi_356_ = _e363; + break if !(_e361); + } + } + let _e548 = local_3; + phi_420_ = _e548; + phi_421_ = false; + phi_327_ = type_24(); + break; + } + case 1: { + let _e366 = ((_e101.member + 35u) + (_e311.member_1 * 4u)); + let _e369 = global.member[_e366]; + let _e374 = global.member[(_e366 + 1u)]; + let _e379 = global.member[(_e366 + 2u)]; + let _e384 = global.member[(_e366 + 3u)]; + local_1[_e311.member_1] = vec4(bitcast(_e369), bitcast(_e374), bitcast(_e379), bitcast(_e384)); + phi_420_ = type_22(); + phi_421_ = true; + phi_327_ = _e309; + break; + } + default: { + phi_420_ = type_22(); + phi_421_ = false; + phi_327_ = type_24(); + break; + } + } + let _e389 = phi_420_; + let _e391 = phi_421_; + let _e393 = phi_327_; + local_4 = _e389; + continue; + continuing { + phi_326_ = _e393; + break if !(_e391); + } + } + let _e553 = local_4; + phi_426_ = _e553; + } else { + phi_426_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e396 = phi_426_; + if (_e83 >= 1u) { + phi_828_ = (_e101.member_1 <= (_e83 - 1u)); + } else { + phi_828_ = false; + } + let _e403 = phi_828_; + if _e403 { + let _e406 = global.member[_e101.member_1]; + phi_434_ = bitcast(_e406); + } else { + phi_434_ = 0f; + } + let _e409 = phi_434_; + global_3 = _e409; + global_4 = _e86; + global_5 = vec4((fma(fma(_e396.member.member_3.x, _e396.member_1.member_2.w, fma(_e396.member.member_2.x, _e396.member_1.member_2.z, fma(_e396.member.member.x, _e396.member_1.member_2.x, (_e396.member.member_1.x * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.x, _e396.member_1.member.w, fma(_e396.member.member_2.x, _e396.member_1.member.z, fma(_e396.member.member.x, _e396.member_1.member.x, (_e396.member.member_1.x * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.x, _e396.member_1.member_1.w, fma(_e396.member.member_2.x, _e396.member_1.member_1.z, fma(_e396.member.member.x, _e396.member_1.member_1.x, (_e396.member.member_1.x * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.x, _e396.member_1.member_3.w, fma(_e396.member.member_2.x, _e396.member_1.member_3.z, fma(_e396.member.member.x, _e396.member_1.member_3.x, (_e396.member.member_1.x * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.y, _e396.member_1.member_2.w, fma(_e396.member.member_2.y, _e396.member_1.member_2.z, fma(_e396.member.member.y, _e396.member_1.member_2.x, (_e396.member.member_1.y * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.y, _e396.member_1.member.w, fma(_e396.member.member_2.y, _e396.member_1.member.z, fma(_e396.member.member.y, _e396.member_1.member.x, (_e396.member.member_1.y * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.y, _e396.member_1.member_1.w, fma(_e396.member.member_2.y, _e396.member_1.member_1.z, fma(_e396.member.member.y, _e396.member_1.member_1.x, (_e396.member.member_1.y * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.y, _e396.member_1.member_3.w, fma(_e396.member.member_2.y, _e396.member_1.member_3.z, fma(_e396.member.member.y, _e396.member_1.member_3.x, (_e396.member.member_1.y * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.z, _e396.member_1.member_2.w, fma(_e396.member.member_2.z, _e396.member_1.member_2.z, fma(_e396.member.member.z, _e396.member_1.member_2.x, (_e396.member.member_1.z * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.z, _e396.member_1.member.w, fma(_e396.member.member_2.z, _e396.member_1.member.z, fma(_e396.member.member.z, _e396.member_1.member.x, (_e396.member.member_1.z * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.z, _e396.member_1.member_1.w, fma(_e396.member.member_2.z, _e396.member_1.member_1.z, fma(_e396.member.member.z, _e396.member_1.member_1.x, (_e396.member.member_1.z * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.z, _e396.member_1.member_3.w, fma(_e396.member.member_2.z, _e396.member_1.member_3.z, fma(_e396.member.member.z, _e396.member_1.member_3.x, (_e396.member.member_1.z * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.w, _e396.member_1.member_2.w, fma(_e396.member.member_2.w, _e396.member_1.member_2.z, fma(_e396.member.member.w, _e396.member_1.member_2.x, (_e396.member.member_1.w * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.w, _e396.member_1.member.w, fma(_e396.member.member_2.w, _e396.member_1.member.z, fma(_e396.member.member.w, _e396.member_1.member.x, (_e396.member.member_1.w * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.w, _e396.member_1.member_1.w, fma(_e396.member.member_2.w, _e396.member_1.member_1.z, fma(_e396.member.member.w, _e396.member_1.member_1.x, (_e396.member.member_1.w * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.w, _e396.member_1.member_3.w, fma(_e396.member.member_2.w, _e396.member_1.member_3.z, fma(_e396.member.member.w, _e396.member_1.member_3.x, (_e396.member.member_1.w * _e396.member_1.member_3.y)))))); + } + return; +} + +@vertex +fn convolutionprefilter_environment_cubemap_vertex(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_1 = param; + global_2 = param_1; + function(); + let _e8 = global_5.y; + global_5.y = -(_e8); + let _e10 = global_4; + let _e11 = global_3; + let _e12 = global_5; + return VertexOutput(_e10, _e11, _e12); +} diff --git a/crates/renderling/shaders/cull-compute_frustum_culling.spv b/crates/renderling/shaders/cull-compute_frustum_culling.spv new file mode 100644 index 0000000000000000000000000000000000000000..3dc27c521ecab9a9df3fff14de7092bb56d40375 GIT binary patch literal 19688 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 LzvkE5rnLVBWZsh_ literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/cull-compute_frustum_culling.wgsl b/crates/renderling/shaders/cull-compute_frustum_culling.wgsl new file mode 100644 index 00000000..e4c981c2 --- /dev/null +++ b/crates/renderling/shaders/cull-compute_frustum_culling.wgsl @@ -0,0 +1,862 @@ +struct type_8 { + member: array, +} + +struct type_14 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_15 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_16 { + member: type_14, + member_1: type_14, + member_2: type_15, + member_3: vec3, +} + +struct type_18 { + member: u32, + member_1: u32, +} + +struct type_22 { + member: u32, + member_1: u32, + member_2: u32, + member_3: u32, +} + +struct type_24 { + member: array, +} + +struct type_29 { + member: vec3, + member_1: vec4, + member_2: vec3, +} + +struct type_30 { + member: bool, + member_1: u32, +} + +@group(0) @binding(0) +var global: type_8; +@group(0) @binding(1) +var global_1: type_24; +var global_2: vec3; + +fn function() { + var local: array, 6>; + var local_1: array, 8>; + var local_2: array; + var local_3: array; + var local_4: array; + var local_5: array; + var local_6: array, 8>; + var local_7: array, 6>; + var phi_1260_: bool; + var phi_461_: type_18; + var phi_477_: type_18; + var phi_478_: type_18; + var phi_491_: type_18; + var phi_507_: type_18; + var phi_508_: type_18; + var phi_534_: type_16; + var phi_535_: bool; + var phi_492_: type_18; + var phi_555_: type_16; + var phi_556_: bool; + var phi_462_: type_18; + var phi_561_: type_16; + var phi_1292_: bool; + var phi_612_: type_29; + var phi_744_: type_18; + var phi_760_: type_18; + var phi_761_: type_18; + var phi_1039_: type_30; + var phi_1041_: bool; + var phi_1042_: type_30; + var phi_1043_: bool; + var phi_1044_: bool; + var phi_1045_: type_30; + var phi_1046_: bool; + var phi_1051_: type_18; + var phi_1053_: type_30; + var phi_772_: type_18; + var phi_788_: type_18; + var phi_789_: type_18; + var phi_799_: type_18; + var phi_802_: i32; + var phi_817_: type_18; + var phi_818_: type_18; + var phi_962_: i32; + var phi_964_: type_18; + var phi_965_: i32; + var phi_966_: bool; + var phi_967_: type_18; + var phi_968_: i32; + var phi_969_: bool; + var phi_970_: type_18; + var phi_971_: i32; + var phi_832_: type_18; + var phi_835_: i32; + var phi_850_: type_18; + var phi_851_: type_18; + var phi_900_: i32; + var phi_902_: type_18; + var phi_903_: i32; + var phi_904_: bool; + var phi_905_: type_18; + var phi_906_: i32; + var phi_907_: bool; + var phi_908_: type_18; + var phi_909_: i32; + var phi_866_: type_18; + var phi_910_: bool; + var phi_911_: bool; + var phi_912_: bool; + var phi_913_: bool; + var phi_914_: type_18; + var phi_915_: bool; + var phi_833_: type_18; + var phi_836_: i32; + var phi_916_: bool; + var phi_917_: bool; + var phi_918_: bool; + var phi_919_: bool; + var phi_920_: type_18; + var phi_928_: type_18; + var phi_972_: bool; + var phi_973_: bool; + var phi_974_: bool; + var phi_975_: bool; + var phi_976_: type_18; + var phi_977_: bool; + var phi_800_: type_18; + var phi_803_: i32; + var phi_978_: bool; + var phi_979_: bool; + var phi_980_: bool; + var phi_981_: bool; + var phi_982_: type_18; + var phi_989_: type_18; + var phi_998_: type_30; + var phi_1000_: type_30; + var phi_773_: type_18; + var phi_1054_: bool; + var phi_1055_: type_30; + var phi_1056_: bool; + var phi_745_: type_18; + var phi_1057_: bool; + var phi_1058_: type_30; + var local_8: type_16; + var local_9: type_16; + var local_10: bool; + var local_11: bool; + var local_12: bool; + var local_13: bool; + var local_14: type_18; + var local_15: bool; + var local_16: bool; + var local_17: bool; + var local_18: bool; + var local_19: type_18; + var local_20: bool; + var local_21: type_30; + var local_22: bool; + var local_23: type_30; + + let _e81 = arrayLength((&global.member)); + let _e84 = global_2; + if (_e84.x >= arrayLength((&global_1.member))) { + } else { + let _e90 = global_1.member[_e84.x].member_3; + let _e93 = global.member[_e90]; + let _e98 = global.member[(_e90 + 2u)]; + let _e102 = global.member[(_e90 + 3u)]; + let _e103 = bitcast(_e102); + let _e107 = global.member[(_e90 + 4u)]; + let _e108 = bitcast(_e107); + let _e112 = global.member[(_e90 + 5u)]; + let _e113 = bitcast(_e112); + let _e117 = global.member[(_e90 + 6u)]; + let _e118 = bitcast(_e117); + let _e122 = global.member[(_e90 + 7u)]; + let _e126 = global.member[(_e90 + 8u)]; + let _e130 = global.member[(_e90 + 9u)]; + let _e134 = global.member[(_e90 + 10u)]; + global_1.member[_e84.x].member = select(_e126, _e98, (_e122 == 4294967295u)); + global_1.member[_e84.x].member_1 = select(0u, 1u, (_e93 == 1u)); + if (_e118 == 0f) { + } else { + if (_e81 >= 83u) { + phi_1260_ = (_e130 <= (_e81 - 83u)); + } else { + phi_1260_ = false; + } + let _e149 = phi_1260_; + if _e149 { + let _e152 = global.member[_e130]; + let _e157 = global.member[(_e130 + 1u)]; + let _e162 = global.member[(_e130 + 2u)]; + let _e167 = global.member[(_e130 + 3u)]; + let _e173 = global.member[(_e130 + 4u)]; + let _e178 = global.member[(_e130 + 5u)]; + let _e183 = global.member[(_e130 + 6u)]; + let _e188 = global.member[(_e130 + 7u)]; + let _e194 = global.member[(_e130 + 8u)]; + let _e199 = global.member[(_e130 + 9u)]; + let _e204 = global.member[(_e130 + 10u)]; + let _e209 = global.member[(_e130 + 11u)]; + let _e215 = global.member[(_e130 + 12u)]; + let _e220 = global.member[(_e130 + 13u)]; + let _e225 = global.member[(_e130 + 14u)]; + let _e230 = global.member[(_e130 + 15u)]; + let _e237 = global.member[(_e130 + 16u)]; + let _e242 = global.member[(_e130 + 17u)]; + let _e247 = global.member[(_e130 + 18u)]; + let _e252 = global.member[(_e130 + 19u)]; + let _e258 = global.member[(_e130 + 20u)]; + let _e263 = global.member[(_e130 + 21u)]; + let _e268 = global.member[(_e130 + 22u)]; + let _e273 = global.member[(_e130 + 23u)]; + let _e279 = global.member[(_e130 + 24u)]; + let _e284 = global.member[(_e130 + 25u)]; + let _e289 = global.member[(_e130 + 26u)]; + let _e294 = global.member[(_e130 + 27u)]; + let _e300 = global.member[(_e130 + 28u)]; + let _e305 = global.member[(_e130 + 29u)]; + let _e310 = global.member[(_e130 + 30u)]; + let _e315 = global.member[(_e130 + 31u)]; + let _e322 = global.member[(_e130 + 32u)]; + let _e327 = global.member[(_e130 + 33u)]; + let _e332 = global.member[(_e130 + 34u)]; + local_7 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_461_ = type_18(0u, 6u); + loop { + let _e337 = phi_461_; + if (_e337.member < _e337.member_1) { + phi_477_ = type_18((_e337.member + 1u), _e337.member_1); + phi_478_ = type_18(1u, _e337.member); + } else { + phi_477_ = _e337; + phi_478_ = type_18(0u, type_18().member_1); + } + let _e350 = phi_477_; + let _e352 = phi_478_; + switch bitcast(_e352.member) { + case 0: { + let _e379 = local_7; + local_6 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_491_ = type_18(0u, 8u); + loop { + let _e382 = phi_491_; + if (_e382.member < _e382.member_1) { + phi_507_ = type_18((_e382.member + 1u), _e382.member_1); + phi_508_ = type_18(1u, _e382.member); + } else { + phi_507_ = _e382; + phi_508_ = type_18(0u, type_18().member_1); + } + let _e395 = phi_507_; + let _e397 = phi_508_; + switch bitcast(_e397.member) { + case 0: { + let _e419 = local_6; + phi_534_ = type_16(type_14(vec4(bitcast(_e152), bitcast(_e157), bitcast(_e162), bitcast(_e167)), vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230))), type_14(vec4(bitcast(_e237), bitcast(_e242), bitcast(_e247), bitcast(_e252)), vec4(bitcast(_e258), bitcast(_e263), bitcast(_e268), bitcast(_e273)), vec4(bitcast(_e279), bitcast(_e284), bitcast(_e289), bitcast(_e294)), vec4(bitcast(_e300), bitcast(_e305), bitcast(_e310), bitcast(_e315))), type_15(_e419, _e379), vec3(bitcast(_e322), bitcast(_e327), bitcast(_e332))); + phi_535_ = false; + phi_492_ = type_18(); + break; + } + case 1: { + let _e402 = ((_e130 + 59u) + (_e397.member_1 * 3u)); + let _e405 = global.member[_e402]; + let _e410 = global.member[(_e402 + 1u)]; + let _e415 = global.member[(_e402 + 2u)]; + local_6[_e397.member_1] = vec3(bitcast(_e405), bitcast(_e410), bitcast(_e415)); + phi_534_ = type_16(); + phi_535_ = true; + phi_492_ = _e395; + break; + } + default: { + phi_534_ = type_16(); + phi_535_ = false; + phi_492_ = type_18(); + break; + } + } + let _e423 = phi_534_; + let _e425 = phi_535_; + let _e427 = phi_492_; + local_8 = _e423; + continue; + continuing { + phi_491_ = _e427; + break if !(_e425); + } + } + let _e907 = local_8; + phi_555_ = _e907; + phi_556_ = false; + phi_462_ = type_18(); + break; + } + case 1: { + let _e357 = ((_e130 + 35u) + (_e352.member_1 * 4u)); + let _e360 = global.member[_e357]; + let _e365 = global.member[(_e357 + 1u)]; + let _e370 = global.member[(_e357 + 2u)]; + let _e375 = global.member[(_e357 + 3u)]; + local_7[_e352.member_1] = vec4(bitcast(_e360), bitcast(_e365), bitcast(_e370), bitcast(_e375)); + phi_555_ = type_16(); + phi_556_ = true; + phi_462_ = _e350; + break; + } + default: { + phi_555_ = type_16(); + phi_556_ = false; + phi_462_ = type_18(); + break; + } + } + let _e430 = phi_555_; + let _e432 = phi_556_; + let _e434 = phi_462_; + local_9 = _e430; + continue; + continuing { + phi_461_ = _e434; + break if !(_e432); + } + } + let _e912 = local_9; + phi_561_ = _e912; + } else { + phi_561_ = type_16(type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_15(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e437 = phi_561_; + if (_e81 >= 10u) { + phi_1292_ = (_e134 <= (_e81 - 10u)); + } else { + phi_1292_ = false; + } + let _e443 = phi_1292_; + if _e443 { + let _e446 = global.member[_e134]; + let _e451 = global.member[(_e134 + 1u)]; + let _e456 = global.member[(_e134 + 2u)]; + let _e462 = global.member[(_e134 + 3u)]; + let _e467 = global.member[(_e134 + 4u)]; + let _e472 = global.member[(_e134 + 5u)]; + let _e477 = global.member[(_e134 + 6u)]; + let _e483 = global.member[(_e134 + 7u)]; + let _e488 = global.member[(_e134 + 8u)]; + let _e493 = global.member[(_e134 + 9u)]; + phi_612_ = type_29(vec3(bitcast(_e446), bitcast(_e451), bitcast(_e456)), vec4(bitcast(_e462), bitcast(_e467), bitcast(_e472), bitcast(_e477)), vec3(bitcast(_e483), bitcast(_e488), bitcast(_e493))); + } else { + phi_612_ = type_29(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e498 = phi_612_; + let _e506 = (_e498.member_1.x + _e498.member_1.x); + let _e507 = (_e498.member_1.y + _e498.member_1.y); + let _e508 = (_e498.member_1.z + _e498.member_1.z); + let _e510 = (_e498.member_1.z * _e508); + let _e511 = (_e498.member_1.w * _e506); + let _e512 = (_e498.member_1.w * _e507); + let _e513 = (_e498.member_1.w * _e508); + let _e533 = (vec4((1f - fma(_e498.member_1.y, _e507, _e510)), fma(_e498.member_1.x, _e507, _e513), fma(_e498.member_1.x, _e508, -(_e512)), 0f) * _e498.member_2.x); + let _e535 = (vec4(fma(_e498.member_1.x, _e507, -(_e513)), (1f - fma(_e498.member_1.x, _e506, _e510)), fma(_e498.member_1.y, _e508, _e511), 0f) * _e498.member_2.y); + let _e537 = (vec4(fma(_e498.member_1.x, _e508, _e512), fma(_e498.member_1.y, _e508, -(_e511)), (1f - fma(_e498.member_1.x, _e506, (_e498.member_1.y * _e507))), 0f) * _e498.member_2.z); + let _e559 = (_e498.member.x + fma(_e537.x, _e113, fma(_e535.x, _e108, (_e533.x * _e103)))); + let _e560 = (_e498.member.y + fma(_e537.y, _e113, fma(_e535.y, _e108, (_e533.y * _e103)))); + let _e561 = (_e498.member.z + fma(_e537.z, _e113, fma(_e535.z, _e108, (_e533.z * _e103)))); + let _e562 = vec3(_e559, _e560, _e561); + let _e565 = (max(_e498.member_2.x, max(_e498.member_2.y, _e498.member_2.z)) * _e118); + let _e567 = sqrt((_e565 * _e565)); + local_1 = _e437.member_2.member; + local = _e437.member_2.member_1; + let _e572 = local[0u][0u]; + let _e575 = local[0u][1u]; + let _e580 = local[0u][2u]; + let _e584 = local[0u][3u]; + let _e586 = -(_e567); + if ((fma(_e580, _e561, fma(_e572, _e559, (_e575 * _e560))) + _e584) < _e586) { + phi_1057_ = true; + phi_1058_ = type_30(true, 0u); + } else { + phi_744_ = type_18(0u, 6u); + loop { + let _e589 = phi_744_; + if (_e589.member < _e589.member_1) { + phi_760_ = type_18((_e589.member + 1u), _e589.member_1); + phi_761_ = type_18(1u, _e589.member); + } else { + phi_760_ = _e589; + phi_761_ = type_18(0u, type_18().member_1); + } + let _e602 = phi_760_; + let _e604 = phi_761_; + switch bitcast(_e604.member) { + case 0: { + let _e650 = vec3(_e567); + let _e651 = (_e562 - _e650); + let _e652 = (_e562 + _e650); + phi_772_ = type_18(0u, 3u); + loop { + let _e654 = phi_772_; + if (_e654.member < _e654.member_1) { + phi_788_ = type_18((_e654.member + 1u), _e654.member_1); + phi_789_ = type_18(1u, _e654.member); + } else { + phi_788_ = _e654; + phi_789_ = type_18(0u, type_18().member_1); + } + let _e667 = phi_788_; + let _e669 = phi_789_; + switch bitcast(_e669.member) { + case 0: { + phi_978_ = false; + phi_979_ = true; + phi_980_ = true; + phi_981_ = false; + phi_982_ = type_18(); + break; + } + case 1: { + phi_799_ = type_18(0u, 8u); + phi_802_ = 0i; + loop { + let _e674 = phi_799_; + let _e676 = phi_802_; + if (_e674.member < _e674.member_1) { + phi_817_ = type_18((_e674.member + 1u), _e674.member_1); + phi_818_ = type_18(1u, _e674.member); + } else { + phi_817_ = _e674; + phi_818_ = type_18(0u, type_18().member_1); + } + let _e689 = phi_817_; + let _e691 = phi_818_; + switch bitcast(_e691.member) { + case 0: { + if (_e676 == 8i) { + phi_916_ = true; + phi_917_ = false; + phi_918_ = false; + phi_919_ = false; + phi_920_ = type_18(); + } else { + phi_832_ = type_18(0u, 8u); + phi_835_ = 0i; + loop { + let _e738 = phi_832_; + let _e740 = phi_835_; + if (_e738.member < _e738.member_1) { + phi_850_ = type_18((_e738.member + 1u), _e738.member_1); + phi_851_ = type_18(1u, _e738.member); + } else { + phi_850_ = _e738; + phi_851_ = type_18(0u, type_18().member_1); + } + let _e753 = phi_850_; + let _e755 = phi_851_; + switch bitcast(_e755.member) { + case 0: { + let _e800 = (_e740 == 8i); + if _e800 { + phi_866_ = type_18(); + } else { + phi_866_ = _e667; + } + let _e802 = phi_866_; + phi_910_ = false; + phi_911_ = select(false, true, _e800); + phi_912_ = select(bool(), false, _e800); + phi_913_ = select(true, false, _e800); + phi_914_ = _e802; + phi_915_ = false; + phi_833_ = type_18(); + phi_836_ = i32(); + break; + } + case 1: { + if (_e755.member_1 < 8u) { + let _e762 = local_1[_e755.member_1][0u]; + let _e765 = local_1[_e755.member_1][1u]; + let _e768 = local_1[_e755.member_1][2u]; + local_4 = array(_e762, _e765, _e768); + let _e770 = (_e669.member_1 < 3u); + if _e770 { + let _e772 = local_4[_e669.member_1]; + local_5 = array(_e652.x, _e652.y, _e652.z); + if _e770 { + let _e778 = local_5[_e669.member_1]; + if (_e772 > _e778) { + phi_900_ = (_e740 + 1i); + } else { + phi_900_ = _e740; + } + let _e782 = phi_900_; + phi_902_ = _e753; + phi_903_ = _e782; + } else { + phi_902_ = type_18(); + phi_903_ = i32(); + } + let _e784 = phi_902_; + let _e786 = phi_903_; + phi_904_ = select(false, true, _e770); + phi_905_ = _e784; + phi_906_ = _e786; + } else { + phi_904_ = false; + phi_905_ = type_18(); + phi_906_ = i32(); + } + let _e789 = phi_904_; + let _e791 = phi_905_; + let _e793 = phi_906_; + phi_907_ = _e789; + phi_908_ = _e791; + phi_909_ = _e793; + } else { + phi_907_ = false; + phi_908_ = type_18(); + phi_909_ = i32(); + } + let _e795 = phi_907_; + let _e797 = phi_908_; + let _e799 = phi_909_; + phi_910_ = false; + phi_911_ = false; + phi_912_ = bool(); + phi_913_ = false; + phi_914_ = type_18(); + phi_915_ = _e795; + phi_833_ = _e797; + phi_836_ = _e799; + break; + } + default: { + phi_910_ = true; + phi_911_ = false; + phi_912_ = bool(); + phi_913_ = false; + phi_914_ = type_18(); + phi_915_ = false; + phi_833_ = type_18(); + phi_836_ = i32(); + break; + } + } + let _e807 = phi_910_; + let _e809 = phi_911_; + let _e811 = phi_912_; + let _e813 = phi_913_; + let _e815 = phi_914_; + let _e817 = phi_915_; + let _e819 = phi_833_; + let _e821 = phi_836_; + local_10 = _e809; + local_11 = _e811; + local_12 = _e807; + local_13 = _e813; + local_14 = _e815; + continue; + continuing { + phi_832_ = _e819; + phi_835_ = _e821; + break if !(_e817); + } + } + let _e967 = local_10; + phi_916_ = _e967; + let _e970 = local_11; + phi_917_ = _e970; + let _e973 = local_12; + phi_918_ = _e973; + let _e976 = local_13; + phi_919_ = _e976; + let _e979 = local_14; + phi_920_ = _e979; + } + let _e824 = phi_916_; + let _e826 = phi_917_; + let _e828 = phi_918_; + let _e830 = phi_919_; + let _e832 = phi_920_; + if _e824 { + phi_928_ = type_18(); + } else { + phi_928_ = _e832; + } + let _e834 = phi_928_; + phi_972_ = select(_e828, false, _e824); + phi_973_ = select(false, true, _e824); + phi_974_ = select(bool(), _e826, _e824); + phi_975_ = select(_e830, false, _e824); + phi_976_ = _e834; + phi_977_ = false; + phi_800_ = type_18(); + phi_803_ = i32(); + break; + } + case 1: { + if (_e691.member_1 < 8u) { + let _e698 = local_1[_e691.member_1][0u]; + let _e701 = local_1[_e691.member_1][1u]; + let _e704 = local_1[_e691.member_1][2u]; + local_2 = array(_e698, _e701, _e704); + let _e706 = (_e669.member_1 < 3u); + if _e706 { + let _e708 = local_2[_e669.member_1]; + local_3 = array(_e651.x, _e651.y, _e651.z); + if _e706 { + let _e714 = local_3[_e669.member_1]; + if (_e708 < _e714) { + phi_962_ = (_e676 + 1i); + } else { + phi_962_ = _e676; + } + let _e718 = phi_962_; + phi_964_ = _e689; + phi_965_ = _e718; + } else { + phi_964_ = type_18(); + phi_965_ = i32(); + } + let _e720 = phi_964_; + let _e722 = phi_965_; + phi_966_ = select(false, true, _e706); + phi_967_ = _e720; + phi_968_ = _e722; + } else { + phi_966_ = false; + phi_967_ = type_18(); + phi_968_ = i32(); + } + let _e725 = phi_966_; + let _e727 = phi_967_; + let _e729 = phi_968_; + phi_969_ = _e725; + phi_970_ = _e727; + phi_971_ = _e729; + } else { + phi_969_ = false; + phi_970_ = type_18(); + phi_971_ = i32(); + } + let _e731 = phi_969_; + let _e733 = phi_970_; + let _e735 = phi_971_; + phi_972_ = false; + phi_973_ = false; + phi_974_ = bool(); + phi_975_ = false; + phi_976_ = type_18(); + phi_977_ = _e731; + phi_800_ = _e733; + phi_803_ = _e735; + break; + } + default: { + phi_972_ = true; + phi_973_ = false; + phi_974_ = bool(); + phi_975_ = false; + phi_976_ = type_18(); + phi_977_ = false; + phi_800_ = type_18(); + phi_803_ = i32(); + break; + } + } + let _e840 = phi_972_; + let _e842 = phi_973_; + let _e844 = phi_974_; + let _e846 = phi_975_; + let _e848 = phi_976_; + let _e850 = phi_977_; + let _e852 = phi_800_; + let _e854 = phi_803_; + local_15 = _e840; + local_16 = _e842; + local_17 = _e844; + local_18 = _e846; + local_19 = _e848; + continue; + continuing { + phi_799_ = _e852; + phi_802_ = _e854; + break if !(_e850); + } + } + let _e991 = local_15; + phi_978_ = _e991; + let _e994 = local_16; + phi_979_ = _e994; + let _e997 = local_17; + phi_980_ = _e997; + let _e1000 = local_18; + phi_981_ = _e1000; + let _e1003 = local_19; + phi_982_ = _e1003; + break; + } + default: { + phi_978_ = true; + phi_979_ = false; + phi_980_ = bool(); + phi_981_ = false; + phi_982_ = type_18(); + break; + } + } + let _e857 = phi_978_; + let _e859 = phi_979_; + let _e861 = phi_980_; + let _e863 = phi_981_; + let _e865 = phi_982_; + if _e857 { + phi_989_ = type_18(); + } else { + phi_989_ = _e865; + } + let _e867 = phi_989_; + let _e868 = select(_e859, false, _e857); + if _e868 { + if select(_e861, bool(), _e857) { + phi_998_ = type_30(false, 0u); + } else { + phi_998_ = type_30(true, 0u); + } + let _e872 = phi_998_; + phi_1000_ = _e872; + phi_773_ = type_18(); + } else { + phi_1000_ = type_30(); + phi_773_ = _e867; + } + let _e874 = phi_1000_; + let _e876 = phi_773_; + local_20 = select(false, true, _e868); + local_21 = _e874; + continue; + continuing { + phi_772_ = _e876; + break if !(select(select(_e863, false, _e857), false, _e868)); + } + } + let _e1010 = local_20; + phi_1054_ = _e1010; + let _e1013 = local_21; + phi_1055_ = _e1013; + phi_1056_ = false; + phi_745_ = type_18(); + break; + } + case 1: { + if (_e604.member_1 != 0u) { + if (_e604.member_1 < 6u) { + let _e612 = local[_e604.member_1][0u]; + let _e615 = local[_e604.member_1][1u]; + let _e620 = local[_e604.member_1][2u]; + let _e624 = local[_e604.member_1][3u]; + let _e626 = ((fma(_e620, _e561, fma(_e612, _e559, (_e615 * _e560))) + _e624) < _e586); + if _e626 { + phi_1039_ = type_30(true, _e604.member_1); + } else { + phi_1039_ = type_30(); + } + let _e629 = phi_1039_; + phi_1041_ = select(false, true, _e626); + phi_1042_ = _e629; + phi_1043_ = select(true, false, _e626); + } else { + phi_1041_ = false; + phi_1042_ = type_30(); + phi_1043_ = false; + } + let _e633 = phi_1041_; + let _e635 = phi_1042_; + let _e637 = phi_1043_; + phi_1044_ = _e633; + phi_1045_ = _e635; + phi_1046_ = _e637; + } else { + phi_1044_ = false; + phi_1045_ = type_30(); + phi_1046_ = true; + } + let _e639 = phi_1044_; + let _e641 = phi_1045_; + let _e643 = phi_1046_; + if _e643 { + phi_1051_ = _e602; + phi_1053_ = type_30(); + } else { + phi_1051_ = type_18(); + phi_1053_ = _e641; + } + let _e645 = phi_1051_; + let _e647 = phi_1053_; + phi_1054_ = select(_e639, false, _e643); + phi_1055_ = _e647; + phi_1056_ = select(false, true, _e643); + phi_745_ = _e645; + break; + } + default: { + phi_1054_ = false; + phi_1055_ = type_30(); + phi_1056_ = false; + phi_745_ = type_18(); + break; + } + } + let _e881 = phi_1054_; + let _e883 = phi_1055_; + let _e885 = phi_1056_; + let _e887 = phi_745_; + local_22 = _e881; + local_23 = _e883; + continue; + continuing { + phi_744_ = _e887; + break if !(_e885); + } + } + let _e1018 = local_22; + phi_1057_ = _e1018; + let _e1021 = local_23; + phi_1058_ = _e1021; + } + let _e890 = phi_1057_; + let _e892 = phi_1058_; + if _e890 { + if (_e892.member != true) { + } else { + global_1.member[_e84.x].member_1 = 0u; + } + } + } + } + return; +} + +@compute @workgroup_size(32, 1, 1) +fn cullcompute_frustum_culling(@builtin(global_invocation_id) param: vec3) { + global_2 = param; + function(); +} diff --git a/crates/renderling/shaders/manifest.json b/crates/renderling/shaders/manifest.json new file mode 100644 index 00000000..150eea7c --- /dev/null +++ b/crates/renderling/shaders/manifest.json @@ -0,0 +1,122 @@ +[ + { + "source_path": "crates/renderling/shaders/bloom-bloom_downsample_fragment.spv", + "entry_point": "bloom::bloom_downsample_fragment", + "wgsl_entry_point": "bloombloom_downsample_fragment" + }, + { + "source_path": "crates/renderling/shaders/bloom-bloom_mix_fragment.spv", + "entry_point": "bloom::bloom_mix_fragment", + "wgsl_entry_point": "bloombloom_mix_fragment" + }, + { + "source_path": "crates/renderling/shaders/bloom-bloom_upsample_fragment.spv", + "entry_point": "bloom::bloom_upsample_fragment", + "wgsl_entry_point": "bloombloom_upsample_fragment" + }, + { + "source_path": "crates/renderling/shaders/bloom-bloom_vertex.spv", + "entry_point": "bloom::bloom_vertex", + "wgsl_entry_point": "bloombloom_vertex" + }, + { + "source_path": "crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv", + "entry_point": "convolution::brdf_lut_convolution_fragment", + "wgsl_entry_point": "convolutionbrdf_lut_convolution_fragment" + }, + { + "source_path": "crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.spv", + "entry_point": "convolution::brdf_lut_convolution_vertex", + "wgsl_entry_point": "convolutionbrdf_lut_convolution_vertex" + }, + { + "source_path": "crates/renderling/shaders/convolution-generate_mipmap_fragment.spv", + "entry_point": "convolution::generate_mipmap_fragment", + "wgsl_entry_point": "convolutiongenerate_mipmap_fragment" + }, + { + "source_path": "crates/renderling/shaders/convolution-generate_mipmap_vertex.spv", + "entry_point": "convolution::generate_mipmap_vertex", + "wgsl_entry_point": "convolutiongenerate_mipmap_vertex" + }, + { + "source_path": "crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv", + "entry_point": "convolution::prefilter_environment_cubemap_fragment", + "wgsl_entry_point": "convolutionprefilter_environment_cubemap_fragment" + }, + { + "source_path": "crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv", + "entry_point": "convolution::prefilter_environment_cubemap_vertex", + "wgsl_entry_point": "convolutionprefilter_environment_cubemap_vertex" + }, + { + "source_path": "crates/renderling/shaders/cull-compute_frustum_culling.spv", + "entry_point": "cull::compute_frustum_culling", + "wgsl_entry_point": "cullcompute_frustum_culling" + }, + { + "source_path": "crates/renderling/shaders/skybox-skybox_cubemap_fragment.spv", + "entry_point": "skybox::skybox_cubemap_fragment", + "wgsl_entry_point": "skyboxskybox_cubemap_fragment" + }, + { + "source_path": "crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv", + "entry_point": "skybox::skybox_cubemap_vertex", + "wgsl_entry_point": "skyboxskybox_cubemap_vertex" + }, + { + "source_path": "crates/renderling/shaders/skybox-skybox_equirectangular_fragment.spv", + "entry_point": "skybox::skybox_equirectangular_fragment", + "wgsl_entry_point": "skyboxskybox_equirectangular_fragment" + }, + { + "source_path": "crates/renderling/shaders/skybox-skybox_vertex.spv", + "entry_point": "skybox::skybox_vertex", + "wgsl_entry_point": "skyboxskybox_vertex" + }, + { + "source_path": "crates/renderling/shaders/stage-renderlet_fragment.spv", + "entry_point": "stage::renderlet_fragment", + "wgsl_entry_point": "stagerenderlet_fragment" + }, + { + "source_path": "crates/renderling/shaders/stage-renderlet_vertex.spv", + "entry_point": "stage::renderlet_vertex", + "wgsl_entry_point": "stagerenderlet_vertex" + }, + { + "source_path": "crates/renderling/shaders/tonemapping-tonemapping_fragment.spv", + "entry_point": "tonemapping::tonemapping_fragment", + "wgsl_entry_point": "tonemappingtonemapping_fragment" + }, + { + "source_path": "crates/renderling/shaders/tonemapping-tonemapping_vertex.spv", + "entry_point": "tonemapping::tonemapping_vertex", + "wgsl_entry_point": "tonemappingtonemapping_vertex" + }, + { + "source_path": "crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.spv", + "entry_point": "tutorial::tutorial_implicit_isosceles_vertex", + "wgsl_entry_point": "tutorialtutorial_implicit_isosceles_vertex" + }, + { + "source_path": "crates/renderling/shaders/tutorial-tutorial_passthru_fragment.spv", + "entry_point": "tutorial::tutorial_passthru_fragment", + "wgsl_entry_point": "tutorialtutorial_passthru_fragment" + }, + { + "source_path": "crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv", + "entry_point": "tutorial::tutorial_slabbed_renderlet", + "wgsl_entry_point": "tutorialtutorial_slabbed_renderlet" + }, + { + "source_path": "crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv", + "entry_point": "tutorial::tutorial_slabbed_vertices", + "wgsl_entry_point": "tutorialtutorial_slabbed_vertices" + }, + { + "source_path": "crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv", + "entry_point": "tutorial::tutorial_slabbed_vertices_no_instance", + "wgsl_entry_point": "tutorialtutorial_slabbed_vertices_no_instance" + } +] \ No newline at end of file diff --git a/crates/renderling/shaders/skybox-skybox_cubemap_fragment.spv b/crates/renderling/shaders/skybox-skybox_cubemap_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..fb9e97a220ee7ec835cb5bb7855d23d8533e72fa GIT binary patch literal 1100 zcmYk5T}xC^6o$7msYQ~Crm2;VN;kz2p(2WP>5Y+L>7_V2evqTmj9@o9UYK6>Yx+a| z2vLKe=h^NpZg|gH>s=pvt#!^R7RK5`YfA{BGhFcWbcaHaQU2)-;c;k-_WZ)qLb=}9 zC{IkjHSS3$D&n(~{0Ha-Q2+L$vVSx)b1PTZ4=dH$+QI7P_qDBBb*~ZQjco;OpbN&l zb}&yBeI+25?NM}(ws|k3b!*#&@%F4=`+mH4wLM*obxsSUY1N zJc={rICqmzOH#aREa}d#J&x3G%^_}hh16#s`rM^{ZFB9xqwOx-o!k_W&Y$mfAJDuK6ih`^i8DaFVpDT2M56U)o+l^WXoTqIgZi& z9<22X&U;RPed@cP*TlZ$4>0Bwlz_F3x28KCMVEdu2 global_1: vec3; +@group(0) @binding(1) +var global_2: texture_cube; +var global_3: vec4; + +fn function() { + var phi_129_: vec3; + + let _e7 = global_1; + let _e14 = sqrt(fma(_e7.z, _e7.z, fma(_e7.x, _e7.x, (_e7.y * _e7.y)))); + if (_e14 == 0f) { + phi_129_ = vec3(0f, 0f, 0f); + } else { + phi_129_ = (_e7 * (1f / _e14)); + } + let _e19 = phi_129_; + let _e20 = textureSample(global_2, global, _e19); + global_3 = vec4(_e20.x, _e20.y, _e20.z, 1f); + return; +} + +@fragment +fn skyboxskybox_cubemap_fragment(@location(0) param: vec3) -> @location(0) vec4 { + global_1 = param; + function(); + let _e3 = global_3; + return _e3; +} diff --git a/crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv b/crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..4cd01e1ec955d15a2e76531566d09e8d32d7b673 GIT binary patch literal 11340 zcmaKy2eehi6^0*O1;Ij5L_|@kA}XN4!b4C{Q4wrW6r^Mch^VMhV+?jpSJd=aQ^W*I zdNs|K*n1c3Xp9wW)O_E4^FJr7tenL-|K9(efA5*I&$;)$q+Q$ootiqdX=-Zf*7Q<4 zCa!gx+BWHNUeUd&sdH1urj>9LCQY3*Y|-(vhm9CH+_@C4+C-;ELR)5118~yk^Cw;Dq&zki0 zt9Z+P+bX7;M}^hIwmSiOyyz3Mo9iE9QYE_oMMzT}<30^|C?dDVLQqStb^?Hgy| z*?W0j-lx6|tHm~#{18SD_<_v*7+(Fb2QjOuzbE&?d)SZB3(hs#<}!9DvvulUpF6r0 z^QL%)F^h)~qt4b0?@=FY>o;DX8lGz>hW;I~&9A04bVqX==ICq-_R_YF?Hbl6_K1eP zcue?_E&Lesi~^g-+#8c&b7pJn3$_QfjoY5N3qzmvXuDs1sbeRw=QxmRt^zXsY=UF@A-?Q?`$G;ai@wIrPJac&^VX<@Vf`=wKlP}Xp7CS?QBl5!#u`_^=rG{ zJg#$gO*G_<()(4i+h7Qu6%19sVznXmjwtW`sl0Cu;^ zeh_=z%6KZ@O>vLD0lS=oG zW9;SFK2xz*U~gR6Ph9GZ%XvLp||Wp5QU?^TF=P=fK?A`%z%IQ(*_gEdc9VT zYC>CJ6iJ5Ivy++trNidqIDuzE#K>@>$BL= zl8@F&V7X|W4AwW9v-RD63fO&HuX*H?=W}55_<4~$r(!3MeDZuAESEf|f%Qe}3t+W; z_e5(kcC_T9bvjrsT4#V8zH(pA#8%69Xtd74j+T71&IZdx>m0DY)O9XcE#HCBIuAQq z^3ggUEElaWg7xJrzXW#Q)@vU50n0_}8(@9W`X*Q{KOds?E$nE?N9)^Q zxoCX{tS@KzU9kJMUh~K&&-cLQ@q0`1d>=b`uRuCes)G{DR#8vqje2fE?PeU z>&sdG6zsmO*F5raekLvh`wp;oJ#%AI!?j>*@cUqDxDGot$ft(u!E&kL2C%+p{S2&@ zpZ(GLId-(1$6MeBE9wfxQzt>0ru zOFmkE0Lw+|k6?W{=NrN9+j`9-pFDp8o5$}m$@6FIn7}I$w%vEuw1lm0qcv_tzfnM4i&B2u%jg(t-piiqV*53zG&SJR?F{S(YgaWTJq7l z6D$|4yTJN#mUn~QxAmGwK6&l|o5$Z5$#XAu^2jI8ePFrdxgV@AS`UEL@;hR*9>k88 ze6$_{%SG#9u)b(L0#?iKm(h9@J6iJ5dJHTVt;fOoqV)t=Ex(&a>q+cr$w%ucuw1m3 zgZ1SsSAgBO^_oXMd7cKFXL*(98SLbdPo8JNa>?@?SYNcB2dm}x<<$HFcC_T9^&(g< zS}Vc&qV*D3Ex&6=>t*a{$w%v-V7X|$0@fF;e}UEVdwR59#g3MIv|a24UHT^2cYwX?nH!rL-U3^LzYS8uD(uuCpBml<%cX{Q!1|)~E?6ypS48VQ z>}bhH>wU0Xv_1gqi`KuvYWbTaS|4IZOFmj3f#st0F<9T^^7kLUb~jn8IpmU~4SsX@ zJ7*WZx6c6k`_=FJ?cw~s?(Fw{e|L2N`#X6qaUH>(7;jV28U+*5Si2^+Yn}Hi-woFS zyWT6l&c%mZ({;r8o1zOoW99rUu{N`pza`|lGP*I;7iTZ)f?d~4>=gEGz3XA?Pu|Jo z(7%3(Gv2+LLp^n~wmaD0B~uw*b)4}zlOAC6Sc`eo2-g#AE;;q&viDwKd9V03C_c}_ zd+FbCHpFMFXVJUFe_&sOH!5}?X4h=Y>^}5cukqUQ_DX+Z`hvaBIk!!)?E!z=+5^+U z{vE^ho0av>*;9Y8f4fj~bH)}7dtl3gNzqt40NdQo+2260>%HO|RD9N-9vFU_ilM$Zd)XT7x@KZ?ABSV>Pu}#vHYLt@_i7IH)Xmy$!K?Q`;+%6P+kwqv zE#^@p+z7C_D%Xn>h zd%(XT?*#Tfdlvq^WoK-C_J;3F|K_p_co{LiJLQr1FFo^|Ri5oJVC(jGZ|+4iw!I~n z_t#i(dty9O`Mke&HHMM**Eq1gXpILO-^{vb?S>sK`DpD9mW$Q|u)b(b1glm5-roZ| zTJq7_6D$|4y} zd#|)TV`F?T?kkrVW@BbBC&u@h&!g`vb)1c{H;pm3&#JxP?6ah%&$iF5erMx)7u)wq z?(t->?U#BBd~@3g&V>6zJJd&U@NV`fw__Dn~7 z_KGpi#`IvQWA0AO_J*@Pqh@=?8pZEy+>z97+&t#m*6+K}KA%ghb-TvDjT`HG&+lkg zW6OKRx3u^OYdMof{3o9i^N62~Z#Q_~jq}TT>y$f+v4CM+;$6%0c{F$?>s;%-8_W8I z`1E`B{taH+I{aJQ?O<#1iti45)*PRIr@RxNv9<3mY-4NRJ;g`*hMsHhD?UTbq3?m> zGfnb7gwMS7+K2I(xAr}PZLHVXMek8;{l+K9V_@T4o4CiZ_1AGvlsKl=xF<36*Ktpk zIBSmHa(w!Y>%#wX>fTm>R}$oBfoJ5|Szq|4E8g>xx32KdRJ>;=Z$06kt$5E--a2xQ z&w)Khrq;7~9>a62eJ@}b>y)@#n^WGi2ygMxH^01Rk$ty?_ZhBhZ;!3tE46nmzWRAs z2cOT4TzYyvu+K>C>yFRoq4xE}XYcDvt-Zjh)!w%bbA;cZ;_ZET^M&8A;_ZETbBFI; z@%FyFb!3ly!0sEWb)^46J}27|4M zf30h_!$?i`j4{?3%@GxE&&XS6_>mQF&&XS6_)!&a&&XS6dS(akQU+9Oouje!d!_dA z#aH*t?)dB(x%A9Lusu`z_QYq;)V@jh>=}Kjb#HLa!k)1XbA;cg;_VrE^M&8H;_VrE zbBCW?@%D_ob!3lI!0sEWbWz&dFu>+SjF2j^41yt@QSx*Y{y|613~#Yj!|j4{?3&3P4X&&XS6`1uuY&&XS6_@gS`o{_iC^vuya?9^n>7-OB$ys+Z!8F}jrzog>r8F}jre^JHT zGxFA%nl1rb6aQM*T#AvJ>=|RMGn$uGygegto#8L9czZ_PI>TR4@%D_ob*83c@hxO{ z#dlos)t^_3iqFvW#}_bsPZ}TJ>0sZDweL)Pz7K2P+4x2kUur!EU(UkMY-=+|_;V}X z&un?~g+H(2KQ6qv!=GRA-UQcMNBAWbKNsFTTT}RpD&A*V-kQQ+T=723^41jol8X0P zmba$U%Xj3ldGF)95?g)mcYgC-g{`I, +} + +struct type_19 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_20 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_21 { + member: type_19, + member_1: type_19, + member_2: type_20, + member_3: vec3, +} + +struct type_23 { + member: u32, + member_1: u32, +} + +struct VertexOutput { + @location(0) member: vec3, + @builtin(position) member_1: vec4, +} + +var global: u32; +@group(0) @binding(0) +var global_1: type_10; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); +var global_3: vec3; +var global_4: u32; + +fn function() { + var local: array, 8>; + var local_1: array, 6>; + var local_2: array, 36>; + var phi_690_: bool; + var phi_517_: type_23; + var phi_533_: type_23; + var phi_534_: type_23; + var phi_547_: type_23; + var phi_563_: type_23; + var phi_564_: type_23; + var phi_590_: type_21; + var phi_591_: bool; + var phi_548_: type_23; + var phi_611_: type_21; + var phi_612_: bool; + var phi_518_: type_23; + var phi_617_: type_21; + var local_3: type_21; + var local_4: type_21; + + let _e77 = global_4; + let _e78 = global; + let _e80 = arrayLength((&global_1.member)); + if (_e80 >= 83u) { + phi_690_ = (_e77 <= (_e80 - 83u)); + } else { + phi_690_ = false; + } + let _e85 = phi_690_; + if _e85 { + let _e88 = global_1.member[_e77]; + let _e93 = global_1.member[(_e77 + 1u)]; + let _e98 = global_1.member[(_e77 + 2u)]; + let _e103 = global_1.member[(_e77 + 3u)]; + let _e109 = global_1.member[(_e77 + 4u)]; + let _e114 = global_1.member[(_e77 + 5u)]; + let _e119 = global_1.member[(_e77 + 6u)]; + let _e124 = global_1.member[(_e77 + 7u)]; + let _e130 = global_1.member[(_e77 + 8u)]; + let _e135 = global_1.member[(_e77 + 9u)]; + let _e140 = global_1.member[(_e77 + 10u)]; + let _e145 = global_1.member[(_e77 + 11u)]; + let _e151 = global_1.member[(_e77 + 12u)]; + let _e156 = global_1.member[(_e77 + 13u)]; + let _e161 = global_1.member[(_e77 + 14u)]; + let _e166 = global_1.member[(_e77 + 15u)]; + let _e173 = global_1.member[(_e77 + 16u)]; + let _e178 = global_1.member[(_e77 + 17u)]; + let _e183 = global_1.member[(_e77 + 18u)]; + let _e188 = global_1.member[(_e77 + 19u)]; + let _e194 = global_1.member[(_e77 + 20u)]; + let _e199 = global_1.member[(_e77 + 21u)]; + let _e204 = global_1.member[(_e77 + 22u)]; + let _e209 = global_1.member[(_e77 + 23u)]; + let _e215 = global_1.member[(_e77 + 24u)]; + let _e220 = global_1.member[(_e77 + 25u)]; + let _e225 = global_1.member[(_e77 + 26u)]; + let _e230 = global_1.member[(_e77 + 27u)]; + let _e236 = global_1.member[(_e77 + 28u)]; + let _e241 = global_1.member[(_e77 + 29u)]; + let _e246 = global_1.member[(_e77 + 30u)]; + let _e251 = global_1.member[(_e77 + 31u)]; + let _e258 = global_1.member[(_e77 + 32u)]; + let _e263 = global_1.member[(_e77 + 33u)]; + let _e268 = global_1.member[(_e77 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_517_ = type_23(0u, 6u); + loop { + let _e273 = phi_517_; + if (_e273.member < _e273.member_1) { + phi_533_ = type_23((_e273.member + 1u), _e273.member_1); + phi_534_ = type_23(1u, _e273.member); + } else { + phi_533_ = _e273; + phi_534_ = type_23(0u, type_23().member_1); + } + let _e286 = phi_533_; + let _e288 = phi_534_; + switch bitcast(_e288.member) { + case 0: { + let _e292 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_547_ = type_23(0u, 8u); + loop { + let _e295 = phi_547_; + if (_e295.member < _e295.member_1) { + phi_563_ = type_23((_e295.member + 1u), _e295.member_1); + phi_564_ = type_23(1u, _e295.member); + } else { + phi_563_ = _e295; + phi_564_ = type_23(0u, type_23().member_1); + } + let _e308 = phi_563_; + let _e310 = phi_564_; + switch bitcast(_e310.member) { + case 0: { + let _e314 = local; + phi_590_ = type_21(type_19(vec4(bitcast(_e88), bitcast(_e93), bitcast(_e98), bitcast(_e103)), vec4(bitcast(_e109), bitcast(_e114), bitcast(_e119), bitcast(_e124)), vec4(bitcast(_e130), bitcast(_e135), bitcast(_e140), bitcast(_e145)), vec4(bitcast(_e151), bitcast(_e156), bitcast(_e161), bitcast(_e166))), type_19(vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230)), vec4(bitcast(_e236), bitcast(_e241), bitcast(_e246), bitcast(_e251))), type_20(_e314, _e292), vec3(bitcast(_e258), bitcast(_e263), bitcast(_e268))); + phi_591_ = false; + phi_548_ = type_23(); + break; + } + case 1: { + let _e318 = ((_e77 + 59u) + (_e310.member_1 * 3u)); + let _e321 = global_1.member[_e318]; + let _e326 = global_1.member[(_e318 + 1u)]; + let _e331 = global_1.member[(_e318 + 2u)]; + local[_e310.member_1] = vec3(bitcast(_e321), bitcast(_e326), bitcast(_e331)); + phi_590_ = type_21(); + phi_591_ = true; + phi_548_ = _e308; + break; + } + default: { + phi_590_ = type_21(); + phi_591_ = false; + phi_548_ = type_23(); + break; + } + } + let _e336 = phi_590_; + let _e338 = phi_591_; + let _e340 = phi_548_; + local_3 = _e336; + continue; + continuing { + phi_547_ = _e340; + break if !(_e338); + } + } + let _e515 = local_3; + phi_611_ = _e515; + phi_612_ = false; + phi_518_ = type_23(); + break; + } + case 1: { + let _e343 = ((_e77 + 35u) + (_e288.member_1 * 4u)); + let _e346 = global_1.member[_e343]; + let _e351 = global_1.member[(_e343 + 1u)]; + let _e356 = global_1.member[(_e343 + 2u)]; + let _e361 = global_1.member[(_e343 + 3u)]; + local_1[_e288.member_1] = vec4(bitcast(_e346), bitcast(_e351), bitcast(_e356), bitcast(_e361)); + phi_611_ = type_21(); + phi_612_ = true; + phi_518_ = _e286; + break; + } + default: { + phi_611_ = type_21(); + phi_612_ = false; + phi_518_ = type_23(); + break; + } + } + let _e366 = phi_611_; + let _e368 = phi_612_; + let _e370 = phi_518_; + local_4 = _e366; + continue; + continuing { + phi_517_ = _e370; + break if !(_e368); + } + } + let _e520 = local_4; + phi_617_ = _e520; + } else { + phi_617_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e373 = phi_617_; + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e78 < 36u) { + let _e378 = local_2[_e78]; + global_3 = _e378; + global_2 = vec4((fma(fma(_e373.member.member_3.x, _e373.member_1.member_2.w, fma(_e373.member.member_2.x, _e373.member_1.member_2.z, fma(_e373.member.member.x, _e373.member_1.member_2.x, (_e373.member.member_1.x * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.x, _e373.member_1.member.w, fma(_e373.member.member_2.x, _e373.member_1.member.z, fma(_e373.member.member.x, _e373.member_1.member.x, (_e373.member.member_1.x * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.x, _e373.member_1.member_1.w, fma(_e373.member.member_2.x, _e373.member_1.member_1.z, fma(_e373.member.member.x, _e373.member_1.member_1.x, (_e373.member.member_1.x * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.x, _e373.member_1.member_3.w, fma(_e373.member.member_2.x, _e373.member_1.member_3.z, fma(_e373.member.member.x, _e373.member_1.member_3.x, (_e373.member.member_1.x * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.y, _e373.member_1.member_2.w, fma(_e373.member.member_2.y, _e373.member_1.member_2.z, fma(_e373.member.member.y, _e373.member_1.member_2.x, (_e373.member.member_1.y * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.y, _e373.member_1.member.w, fma(_e373.member.member_2.y, _e373.member_1.member.z, fma(_e373.member.member.y, _e373.member_1.member.x, (_e373.member.member_1.y * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.y, _e373.member_1.member_1.w, fma(_e373.member.member_2.y, _e373.member_1.member_1.z, fma(_e373.member.member.y, _e373.member_1.member_1.x, (_e373.member.member_1.y * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.y, _e373.member_1.member_3.w, fma(_e373.member.member_2.y, _e373.member_1.member_3.z, fma(_e373.member.member.y, _e373.member_1.member_3.x, (_e373.member.member_1.y * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.z, _e373.member_1.member_2.w, fma(_e373.member.member_2.z, _e373.member_1.member_2.z, fma(_e373.member.member.z, _e373.member_1.member_2.x, (_e373.member.member_1.z * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.z, _e373.member_1.member.w, fma(_e373.member.member_2.z, _e373.member_1.member.z, fma(_e373.member.member.z, _e373.member_1.member.x, (_e373.member.member_1.z * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.z, _e373.member_1.member_1.w, fma(_e373.member.member_2.z, _e373.member_1.member_1.z, fma(_e373.member.member.z, _e373.member_1.member_1.x, (_e373.member.member_1.z * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.z, _e373.member_1.member_3.w, fma(_e373.member.member_2.z, _e373.member_1.member_3.z, fma(_e373.member.member.z, _e373.member_1.member_3.x, (_e373.member.member_1.z * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.w, _e373.member_1.member_2.w, fma(_e373.member.member_2.w, _e373.member_1.member_2.z, fma(_e373.member.member.w, _e373.member_1.member_2.x, (_e373.member.member_1.w * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.w, _e373.member_1.member.w, fma(_e373.member.member_2.w, _e373.member_1.member.z, fma(_e373.member.member.w, _e373.member_1.member.x, (_e373.member.member_1.w * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.w, _e373.member_1.member_1.w, fma(_e373.member.member_2.w, _e373.member_1.member_1.z, fma(_e373.member.member.w, _e373.member_1.member_1.x, (_e373.member.member_1.w * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.w, _e373.member_1.member_3.w, fma(_e373.member.member_2.w, _e373.member_1.member_3.z, fma(_e373.member.member.w, _e373.member_1.member_3.x, (_e373.member.member_1.w * _e373.member_1.member_3.y)))))); + } + return; +} + +@vertex +fn skyboxskybox_cubemap_vertex(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_4 = param; + global = param_1; + function(); + let _e7 = global_2.y; + global_2.y = -(_e7); + let _e9 = global_3; + let _e10 = global_2; + return VertexOutput(_e9, _e10); +} diff --git a/crates/renderling/shaders/skybox-skybox_equirectangular_fragment.spv b/crates/renderling/shaders/skybox-skybox_equirectangular_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..a039280dca1a82e1174800c6e7b9469cbd1bdd59 GIT binary patch literal 1368 zcmYk5&2NlR6o;=Fogo^nXjDHi(~(A$5<#S5y6mQliiDj`)pQ6drqcw87@>4!>0^Pi zz{1DIKV)q!R3h;_@7ycB$?rYq{LaTc=e+Nm&sB<{Yf}iJCw%4U*%5L*V+_h@^&etS*!M!$9U0*`+0NcJwW`>{)) zAK&gwcJ9(1h_*eHum_ReC%==9hLB~LVWfH=+#ci@vDQuZBzqrR2<^#amohs{4uq}Q z4CXk8v!_ATf*SB7?jCv#c;`xtyN@m}y2F+%w~cPhF<>2GT&nW`y$0+jE#bTgIx ztN{JKQ)9nzzwiDr(C6-cG5rgq=MQt~djeL0^Qx~SjnS50jdMIhx3;yO!nyb7pa%49 z%rpNde~d9Nf$z`S##=MZ`3haXb0+R}kM*tq^NrW; +var global_2: vec3; +var global_3: vec4; + +fn function() { + var phi_153_: vec3; + + let _e10 = global_2; + let _e17 = sqrt(fma(_e10.z, _e10.z, fma(_e10.x, _e10.x, (_e10.y * _e10.y)))); + if (_e17 == 0f) { + phi_153_ = vec3(0f, 0f, 0f); + } else { + phi_153_ = (_e10 * (1f / _e17)); + } + let _e22 = phi_153_; + let _e31 = textureSample(global_1, global, vec2(fma(atan2(_e22.z, _e22.x), 0.1591f, 0.5f), fma(asin(_e22.y), 0.31830987f, 0.5f))); + global_3 = vec4(_e31.x, _e31.y, _e31.z, 1f); + return; +} + +@fragment +fn skyboxskybox_equirectangular_fragment(@location(0) param: vec3) -> @location(0) vec4 { + global_2 = param; + function(); + let _e3 = global_3; + return _e3; +} diff --git a/crates/renderling/shaders/skybox-skybox_vertex.spv b/crates/renderling/shaders/skybox-skybox_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..550db981d79875c4fb02c795212ea51112f1f345 GIT binary patch literal 9888 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 literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/skybox-skybox_vertex.wgsl b/crates/renderling/shaders/skybox-skybox_vertex.wgsl new file mode 100644 index 00000000..72837db8 --- /dev/null +++ b/crates/renderling/shaders/skybox-skybox_vertex.wgsl @@ -0,0 +1,233 @@ +struct type_10 { + member: array, +} + +struct type_19 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_20 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_21 { + member: type_19, + member_1: type_19, + member_2: type_20, + member_3: vec3, +} + +struct type_23 { + member: u32, + member_1: u32, +} + +struct VertexOutput { + @location(0) member: vec3, + @builtin(position) member_1: vec4, +} + +var global: u32; +@group(0) @binding(0) +var global_1: type_10; +var global_2: u32; +var global_3: vec3; +var global_4: vec4 = vec4(0f, 0f, 0f, 1f); + +fn function() { + var local: array, 8>; + var local_1: array, 6>; + var local_2: array, 36>; + var phi_726_: bool; + var phi_305_: type_23; + var phi_321_: type_23; + var phi_322_: type_23; + var phi_335_: type_23; + var phi_351_: type_23; + var phi_352_: type_23; + var phi_378_: type_21; + var phi_379_: bool; + var phi_336_: type_23; + var phi_399_: type_21; + var phi_400_: bool; + var phi_306_: type_23; + var phi_405_: type_21; + var local_3: type_21; + var local_4: type_21; + + let _e77 = global_2; + let _e78 = global; + let _e80 = arrayLength((&global_1.member)); + if (_e80 >= 83u) { + phi_726_ = (_e77 <= (_e80 - 83u)); + } else { + phi_726_ = false; + } + let _e85 = phi_726_; + if _e85 { + let _e88 = global_1.member[_e77]; + let _e93 = global_1.member[(_e77 + 1u)]; + let _e98 = global_1.member[(_e77 + 2u)]; + let _e103 = global_1.member[(_e77 + 3u)]; + let _e109 = global_1.member[(_e77 + 4u)]; + let _e114 = global_1.member[(_e77 + 5u)]; + let _e119 = global_1.member[(_e77 + 6u)]; + let _e124 = global_1.member[(_e77 + 7u)]; + let _e130 = global_1.member[(_e77 + 8u)]; + let _e135 = global_1.member[(_e77 + 9u)]; + let _e140 = global_1.member[(_e77 + 10u)]; + let _e145 = global_1.member[(_e77 + 11u)]; + let _e151 = global_1.member[(_e77 + 12u)]; + let _e156 = global_1.member[(_e77 + 13u)]; + let _e161 = global_1.member[(_e77 + 14u)]; + let _e166 = global_1.member[(_e77 + 15u)]; + let _e173 = global_1.member[(_e77 + 16u)]; + let _e178 = global_1.member[(_e77 + 17u)]; + let _e183 = global_1.member[(_e77 + 18u)]; + let _e188 = global_1.member[(_e77 + 19u)]; + let _e194 = global_1.member[(_e77 + 20u)]; + let _e199 = global_1.member[(_e77 + 21u)]; + let _e204 = global_1.member[(_e77 + 22u)]; + let _e209 = global_1.member[(_e77 + 23u)]; + let _e215 = global_1.member[(_e77 + 24u)]; + let _e220 = global_1.member[(_e77 + 25u)]; + let _e225 = global_1.member[(_e77 + 26u)]; + let _e230 = global_1.member[(_e77 + 27u)]; + let _e236 = global_1.member[(_e77 + 28u)]; + let _e241 = global_1.member[(_e77 + 29u)]; + let _e246 = global_1.member[(_e77 + 30u)]; + let _e251 = global_1.member[(_e77 + 31u)]; + let _e258 = global_1.member[(_e77 + 32u)]; + let _e263 = global_1.member[(_e77 + 33u)]; + let _e268 = global_1.member[(_e77 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_305_ = type_23(0u, 6u); + loop { + let _e273 = phi_305_; + if (_e273.member < _e273.member_1) { + phi_321_ = type_23((_e273.member + 1u), _e273.member_1); + phi_322_ = type_23(1u, _e273.member); + } else { + phi_321_ = _e273; + phi_322_ = type_23(0u, type_23().member_1); + } + let _e286 = phi_321_; + let _e288 = phi_322_; + switch bitcast(_e288.member) { + case 0: { + let _e292 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_335_ = type_23(0u, 8u); + loop { + let _e295 = phi_335_; + if (_e295.member < _e295.member_1) { + phi_351_ = type_23((_e295.member + 1u), _e295.member_1); + phi_352_ = type_23(1u, _e295.member); + } else { + phi_351_ = _e295; + phi_352_ = type_23(0u, type_23().member_1); + } + let _e308 = phi_351_; + let _e310 = phi_352_; + switch bitcast(_e310.member) { + case 0: { + let _e314 = local; + phi_378_ = type_21(type_19(vec4(bitcast(_e88), bitcast(_e93), bitcast(_e98), bitcast(_e103)), vec4(bitcast(_e109), bitcast(_e114), bitcast(_e119), bitcast(_e124)), vec4(bitcast(_e130), bitcast(_e135), bitcast(_e140), bitcast(_e145)), vec4(bitcast(_e151), bitcast(_e156), bitcast(_e161), bitcast(_e166))), type_19(vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230)), vec4(bitcast(_e236), bitcast(_e241), bitcast(_e246), bitcast(_e251))), type_20(_e314, _e292), vec3(bitcast(_e258), bitcast(_e263), bitcast(_e268))); + phi_379_ = false; + phi_336_ = type_23(); + break; + } + case 1: { + let _e318 = ((_e77 + 59u) + (_e310.member_1 * 3u)); + let _e321 = global_1.member[_e318]; + let _e326 = global_1.member[(_e318 + 1u)]; + let _e331 = global_1.member[(_e318 + 2u)]; + local[_e310.member_1] = vec3(bitcast(_e321), bitcast(_e326), bitcast(_e331)); + phi_378_ = type_21(); + phi_379_ = true; + phi_336_ = _e308; + break; + } + default: { + phi_378_ = type_21(); + phi_379_ = false; + phi_336_ = type_23(); + break; + } + } + let _e336 = phi_378_; + let _e338 = phi_379_; + let _e340 = phi_336_; + local_3 = _e336; + continue; + continuing { + phi_335_ = _e340; + break if !(_e338); + } + } + let _e462 = local_3; + phi_399_ = _e462; + phi_400_ = false; + phi_306_ = type_23(); + break; + } + case 1: { + let _e343 = ((_e77 + 35u) + (_e288.member_1 * 4u)); + let _e346 = global_1.member[_e343]; + let _e351 = global_1.member[(_e343 + 1u)]; + let _e356 = global_1.member[(_e343 + 2u)]; + let _e361 = global_1.member[(_e343 + 3u)]; + local_1[_e288.member_1] = vec4(bitcast(_e346), bitcast(_e351), bitcast(_e356), bitcast(_e361)); + phi_399_ = type_21(); + phi_400_ = true; + phi_306_ = _e286; + break; + } + default: { + phi_399_ = type_21(); + phi_400_ = false; + phi_306_ = type_23(); + break; + } + } + let _e366 = phi_399_; + let _e368 = phi_400_; + let _e370 = phi_306_; + local_4 = _e366; + continue; + continuing { + phi_305_ = _e370; + break if !(_e368); + } + } + let _e467 = local_4; + phi_405_ = _e467; + } else { + phi_405_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e373 = phi_405_; + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e78 < 36u) { + let _e381 = local_2[_e78]; + global_3 = _e381; + let _e448 = (fma(fma(_e373.member.member_2.w, _e373.member_1.member_2.z, fma(_e373.member.member.w, _e373.member_1.member_2.x, (_e373.member.member_1.w * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.w, _e373.member_1.member.z, fma(_e373.member.member.w, _e373.member_1.member.x, (_e373.member.member_1.w * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.w, _e373.member_1.member_1.z, fma(_e373.member.member.w, _e373.member_1.member_1.x, (_e373.member.member_1.w * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.w); + global_4 = vec4((fma(fma(_e373.member.member_2.x, _e373.member_1.member_2.z, fma(_e373.member.member.x, _e373.member_1.member_2.x, (_e373.member.member_1.x * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.x, _e373.member_1.member.z, fma(_e373.member.member.x, _e373.member_1.member.x, (_e373.member.member_1.x * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.x, _e373.member_1.member_1.z, fma(_e373.member.member.x, _e373.member_1.member_1.x, (_e373.member.member_1.x * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.x), (fma(fma(_e373.member.member_2.y, _e373.member_1.member_2.z, fma(_e373.member.member.y, _e373.member_1.member_2.x, (_e373.member.member_1.y * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.y, _e373.member_1.member.z, fma(_e373.member.member.y, _e373.member_1.member.x, (_e373.member.member_1.y * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.y, _e373.member_1.member_1.z, fma(_e373.member.member.y, _e373.member_1.member_1.x, (_e373.member.member_1.y * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.y), _e448, _e448); + } + return; +} + +@vertex +fn skyboxskybox_vertex(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_2 = param; + global = param_1; + function(); + let _e7 = global_4.y; + global_4.y = -(_e7); + let _e9 = global_3; + let _e10 = global_4; + return VertexOutput(_e9, _e10); +} diff --git a/crates/renderling/shaders/stage-renderlet_fragment.spv b/crates/renderling/shaders/stage-renderlet_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..5fcbcf48898e22ee02f8df8cb9a5a6fa9e9c7cbe GIT binary patch literal 74564 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 literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/stage-renderlet_fragment.wgsl b/crates/renderling/shaders/stage-renderlet_fragment.wgsl new file mode 100644 index 00000000..940fcab2 --- /dev/null +++ b/crates/renderling/shaders/stage-renderlet_fragment.wgsl @@ -0,0 +1,2510 @@ +struct type_11 { + member: array, +} + +struct type_20 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_21 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_22 { + member: type_20, + member_1: type_20, + member_2: type_21, + member_3: vec3, +} + +struct type_24 { + member: u32, + member_1: u32, +} + +struct type_28 { + member: vec3, + member_1: vec4, + member_2: vec3, +} + +struct type_30 { + member: vec2, + member_1: vec2, + member_2: type_24, + member_3: u32, + member_4: bool, + member_5: bool, +} + +struct type_32 { + member: vec3, + member_1: f32, + member_2: vec4, + member_3: f32, + member_4: f32, + member_5: u32, + member_6: u32, + member_7: u32, + member_8: u32, + member_9: u32, + member_10: u32, + member_11: u32, + member_12: u32, + member_13: u32, + member_14: u32, + member_15: bool, + member_16: f32, +} + +struct type_33 { + member: type_24, + member_1: vec2, + member_2: vec2, + member_3: u32, + member_4: u32, +} + +struct type_34 { + member: u32, + member_1: u32, + member_2: u32, +} + +struct type_35 { + member: vec3, + member_1: vec4, + member_2: f32, +} + +struct type_36 { + member: vec3, + member_1: vec3, + member_2: f32, + member_3: f32, + member_4: vec4, + member_5: f32, +} + +@group(0) @binding(0) +var global: type_11; +var global_1: u32; +var global_2: u32; +var global_3: u32; +var global_4: vec4; +var global_5: vec2; +var global_6: vec2; +var global_7: vec3; +var global_8: vec3; +var global_9: vec3; +var global_10: vec3; +@group(1) @binding(1) +var global_11: sampler; +@group(1) @binding(0) +var global_12: texture_2d_array; +@group(1) @binding(2) +var global_13: texture_cube; +@group(1) @binding(3) +var global_14: sampler; +@group(1) @binding(4) +var global_15: texture_cube; +@group(1) @binding(5) +var global_16: sampler; +@group(1) @binding(6) +var global_17: texture_2d; +@group(1) @binding(7) +var global_18: sampler; +var global_19: vec4; + +fn function() { + var local: array, 8>; + var local_1: array, 6>; + var phi_3787_: bool; + var phi_501_: u32; + var phi_527_: type_30; + var phi_3838_: bool; + var phi_646_: type_32; + var phi_650_: type_32; + var phi_3871_: bool; + var phi_690_: u32; + var phi_699_: u32; + var phi_712_: type_33; + var phi_3931_: f32; + var phi_3912_: f32; + var phi_3913_: bool; + var phi_766_: f32; + var phi_761_: f32; + var phi_767_: f32; + var phi_3893_: f32; + var phi_3894_: bool; + var phi_732_: f32; + var phi_771_: bool; + var phi_772_: f32; + var phi_3983_: f32; + var phi_3964_: f32; + var phi_3965_: bool; + var phi_830_: f32; + var phi_825_: f32; + var phi_831_: f32; + var phi_3945_: f32; + var phi_3946_: bool; + var phi_796_: f32; + var phi_835_: bool; + var phi_836_: f32; + var phi_4015_: bool; + var phi_922_: u32; + var phi_931_: u32; + var phi_944_: type_33; + var phi_4074_: f32; + var phi_4055_: f32; + var phi_4056_: bool; + var phi_998_: f32; + var phi_993_: f32; + var phi_999_: f32; + var phi_4036_: f32; + var phi_4037_: bool; + var phi_964_: f32; + var phi_1003_: bool; + var phi_1004_: f32; + var phi_4126_: f32; + var phi_4107_: f32; + var phi_4108_: bool; + var phi_1062_: f32; + var phi_1057_: f32; + var phi_1063_: f32; + var phi_4088_: f32; + var phi_4089_: bool; + var phi_1028_: f32; + var phi_1067_: bool; + var phi_1068_: f32; + var phi_4158_: bool; + var phi_1154_: u32; + var phi_1163_: u32; + var phi_1176_: type_33; + var phi_4217_: f32; + var phi_4198_: f32; + var phi_4199_: bool; + var phi_1230_: f32; + var phi_1225_: f32; + var phi_1231_: f32; + var phi_4179_: f32; + var phi_4180_: bool; + var phi_1196_: f32; + var phi_1235_: bool; + var phi_1236_: f32; + var phi_4269_: f32; + var phi_4250_: f32; + var phi_4251_: bool; + var phi_1294_: f32; + var phi_1289_: f32; + var phi_1295_: f32; + var phi_4231_: f32; + var phi_4232_: bool; + var phi_1260_: f32; + var phi_1299_: bool; + var phi_1300_: f32; + var phi_4301_: bool; + var phi_1386_: u32; + var phi_1395_: u32; + var phi_1408_: type_33; + var phi_4360_: f32; + var phi_4341_: f32; + var phi_4342_: bool; + var phi_1462_: f32; + var phi_1457_: f32; + var phi_1463_: f32; + var phi_4322_: f32; + var phi_4323_: bool; + var phi_1428_: f32; + var phi_1467_: bool; + var phi_1468_: f32; + var phi_4412_: f32; + var phi_4393_: f32; + var phi_4394_: bool; + var phi_1526_: f32; + var phi_1521_: f32; + var phi_1527_: f32; + var phi_4374_: f32; + var phi_4375_: bool; + var phi_1492_: f32; + var phi_1531_: bool; + var phi_1532_: f32; + var phi_4444_: bool; + var phi_1618_: u32; + var phi_1627_: u32; + var phi_1640_: type_33; + var phi_4503_: f32; + var phi_4484_: f32; + var phi_4485_: bool; + var phi_1694_: f32; + var phi_1689_: f32; + var phi_1695_: f32; + var phi_4465_: f32; + var phi_4466_: bool; + var phi_1660_: f32; + var phi_1699_: bool; + var phi_1700_: f32; + var phi_4555_: f32; + var phi_4536_: f32; + var phi_4537_: bool; + var phi_1758_: f32; + var phi_1753_: f32; + var phi_1759_: f32; + var phi_4517_: f32; + var phi_4518_: bool; + var phi_1724_: f32; + var phi_1763_: bool; + var phi_1764_: f32; + var phi_4609_: vec3; + var phi_4644_: vec3; + var phi_4679_: vec3; + var phi_4714_: vec3; + var phi_4749_: vec3; + var phi_1861_: vec3; + var phi_1862_: vec3; + var phi_4781_: bool; + var phi_2068_: type_24; + var phi_2084_: type_24; + var phi_2085_: type_24; + var phi_2098_: type_24; + var phi_2114_: type_24; + var phi_2115_: type_24; + var phi_2141_: type_22; + var phi_2142_: bool; + var phi_2099_: type_24; + var phi_2162_: type_22; + var phi_2163_: bool; + var phi_2069_: type_24; + var phi_2168_: type_22; + var phi_4853_: vec3; + var phi_4912_: vec3; + var phi_4986_: vec3; + var phi_6131_: vec3; + var phi_6082_: vec3; + var phi_6033_: vec3; + var phi_5984_: vec3; + var phi_5935_: vec3; + var phi_5886_: vec3; + var phi_5837_: vec3; + var phi_5036_: vec3; + var phi_5071_: vec3; + var phi_2208_: type_24; + var phi_2211_: vec3; + var phi_2226_: type_24; + var phi_2227_: type_24; + var phi_5088_: u32; + var phi_5107_: bool; + var phi_2244_: u32; + var phi_5139_: bool; + var phi_2261_: u32; + var phi_2271_: type_34; + var phi_5169_: bool; + var phi_2321_: type_28; + var phi_5598_: bool; + var phi_2824_: type_36; + var phi_5648_: vec3; + var phi_5683_: vec3; + var phi_5718_: vec3; + var phi_3076_: vec3; + var phi_5425_: bool; + var phi_2573_: type_35; + var phi_5471_: vec3; + var phi_5506_: vec3; + var phi_2762_: vec3; + var phi_5250_: bool; + var phi_2369_: type_35; + var phi_5298_: vec3; + var phi_5333_: vec3; + var phi_3077_: bool; + var phi_3078_: bool; + var phi_3079_: vec3; + var phi_3080_: bool; + var phi_3085_: type_24; + var phi_3093_: type_24; + var phi_3097_: bool; + var phi_3098_: type_24; + var phi_3099_: vec3; + var phi_3100_: bool; + var phi_3101_: bool; + var phi_3102_: bool; + var phi_3103_: bool; + var phi_3104_: type_24; + var phi_3105_: vec3; + var phi_3111_: type_24; + var phi_3215_: vec4; + var phi_2209_: type_24; + var phi_3232_: bool; + var phi_3233_: vec4; + var local_2: type_22; + var local_3: type_22; + var local_4: bool; + var local_5: vec4; + + let _e118 = arrayLength((&global.member)); + let _e119 = global_1; + let _e120 = global_2; + let _e121 = global_3; + let _e122 = global_4; + let _e123 = global_5; + let _e124 = global_6; + let _e125 = global_7; + let _e126 = global_8; + let _e127 = global_9; + let _e128 = global_10; + if (_e118 >= 9u) { + phi_3787_ = (_e121 <= (_e118 - 9u)); + } else { + phi_3787_ = false; + } + let _e133 = phi_3787_; + if _e133 { + let _e136 = global.member[_e121]; + let _e140 = global.member[(_e121 + 1u)]; + let _e145 = global.member[(_e121 + 2u)]; + let _e149 = global.member[(_e121 + 3u)]; + let _e154 = global.member[(_e121 + 4u)]; + switch bitcast(_e154) { + case 0: { + phi_501_ = 0u; + break; + } + case 1: { + phi_501_ = 1u; + break; + } + case 2: { + phi_501_ = 2u; + break; + } + case 3: { + phi_501_ = 3u; + break; + } + case 4: { + phi_501_ = 4u; + break; + } + case 5: { + phi_501_ = 5u; + break; + } + case 6: { + phi_501_ = 6u; + break; + } + case 7: { + phi_501_ = 7u; + break; + } + case 8: { + phi_501_ = 8u; + break; + } + case 9: { + phi_501_ = 9u; + break; + } + case 10: { + phi_501_ = 10u; + break; + } + case 11: { + phi_501_ = 11u; + break; + } + case 12: { + phi_501_ = 12u; + break; + } + case 13: { + phi_501_ = 13u; + break; + } + case 14: { + phi_501_ = 14u; + break; + } + case 15: { + phi_501_ = 15u; + break; + } + case 16: { + phi_501_ = 16u; + break; + } + case 17: { + phi_501_ = 17u; + break; + } + case 18: { + phi_501_ = 18u; + break; + } + case 19: { + phi_501_ = 19u; + break; + } + default: { + phi_501_ = 0u; + break; + } + } + let _e157 = phi_501_; + let _e161 = global.member[(_e121 + 5u)]; + let _e166 = global.member[(_e121 + 6u)]; + let _e171 = global.member[(_e121 + 7u)]; + let _e175 = global.member[(_e121 + 8u)]; + phi_527_ = type_30(vec2(_e136, _e140), vec2(_e145, _e149), type_24(_e171, _e175), _e157, (_e161 == 1u), (_e166 == 1u)); + } else { + phi_527_ = type_30(vec2(0u, 0u), vec2(1u, 1u), type_24(4294967295u, 0u), 0u, true, true); + } + let _e179 = phi_527_; + if (_e120 == 4294967295u) { + phi_650_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, false, 0f); + } else { + if (_e118 >= 22u) { + phi_3838_ = (_e120 <= (_e118 - 22u)); + } else { + phi_3838_ = false; + } + let _e192 = phi_3838_; + if _e192 { + let _e195 = global.member[_e120]; + let _e200 = global.member[(_e120 + 1u)]; + let _e205 = global.member[(_e120 + 2u)]; + let _e211 = global.member[(_e120 + 3u)]; + let _e216 = global.member[(_e120 + 4u)]; + let _e221 = global.member[(_e120 + 5u)]; + let _e226 = global.member[(_e120 + 6u)]; + let _e231 = global.member[(_e120 + 7u)]; + let _e237 = global.member[(_e120 + 8u)]; + let _e242 = global.member[(_e120 + 9u)]; + let _e247 = global.member[(_e120 + 10u)]; + let _e251 = global.member[(_e120 + 11u)]; + let _e255 = global.member[(_e120 + 12u)]; + let _e259 = global.member[(_e120 + 13u)]; + let _e263 = global.member[(_e120 + 14u)]; + let _e267 = global.member[(_e120 + 15u)]; + let _e271 = global.member[(_e120 + 16u)]; + let _e275 = global.member[(_e120 + 17u)]; + let _e279 = global.member[(_e120 + 18u)]; + let _e283 = global.member[(_e120 + 19u)]; + let _e287 = global.member[(_e120 + 20u)]; + let _e292 = global.member[(_e120 + 21u)]; + phi_646_ = type_32(vec3(bitcast(_e195), bitcast(_e200), bitcast(_e205)), bitcast(_e211), vec4(bitcast(_e216), bitcast(_e221), bitcast(_e226), bitcast(_e231)), bitcast(_e237), bitcast(_e242), _e247, _e251, _e255, _e259, _e263, _e267, _e271, _e275, _e279, _e283, (_e287 == 1u), bitcast(_e292)); + } else { + phi_646_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, true, 0f); + } + let _e296 = phi_646_; + phi_650_ = type_32(_e296.member, _e296.member_1, _e296.member_2, _e296.member_3, _e296.member_4, _e296.member_5, _e296.member_6, _e296.member_7, _e296.member_8, _e296.member_9, _e296.member_10, _e296.member_11, _e296.member_12, _e296.member_13, _e296.member_14, (_e296.member_15 && _e179.member_4), _e296.member_16); + } + let _e318 = phi_650_; + let _e322 = select(_e124, _e123, vec2((_e318.member_10 == 0u))); + let _e324 = (_e118 >= 8u); + if _e324 { + phi_3871_ = (_e318.member_5 <= (_e118 - 8u)); + } else { + phi_3871_ = false; + } + let _e328 = phi_3871_; + if _e328 { + let _e331 = global.member[_e318.member_5]; + let _e335 = global.member[(_e318.member_5 + 1u)]; + let _e340 = global.member[(_e318.member_5 + 2u)]; + let _e344 = global.member[(_e318.member_5 + 3u)]; + let _e349 = global.member[(_e318.member_5 + 4u)]; + let _e353 = global.member[(_e318.member_5 + 5u)]; + let _e357 = global.member[(_e318.member_5 + 6u)]; + switch bitcast(_e357) { + case 0: { + phi_690_ = 0u; + break; + } + case 1: { + phi_690_ = 1u; + break; + } + case 2: { + phi_690_ = 2u; + break; + } + default: { + phi_690_ = 0u; + break; + } + } + let _e360 = phi_690_; + let _e364 = global.member[(_e318.member_5 + 7u)]; + switch bitcast(_e364) { + case 0: { + phi_699_ = 0u; + break; + } + case 1: { + phi_699_ = 1u; + break; + } + case 2: { + phi_699_ = 2u; + break; + } + default: { + phi_699_ = 0u; + break; + } + } + let _e367 = phi_699_; + phi_712_ = type_33(type_24(_e360, _e367), vec2(_e331, _e335), vec2(_e340, _e344), _e349, _e353); + } else { + phi_712_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e371 = phi_712_; + switch bitcast(_e371.member.member) { + case 1: { + let _e412 = abs(_e322.x); + let _e414 = (_e412 % 1f); + if (_e412 >= 1f) { + let _e415 = (_e414 == 0f); + phi_3893_ = select(f32(), 1f, _e415); + phi_3894_ = select(true, false, _e415); + } else { + phi_3893_ = f32(); + phi_3894_ = true; + } + let _e419 = phi_3893_; + let _e421 = phi_3894_; + let _e422 = select(_e419, _e414, _e421); + if (select(-1f, 1f, (_e322.x >= 0f)) > 0f) { + phi_732_ = _e422; + } else { + phi_732_ = (1f - _e422); + } + let _e426 = phi_732_; + phi_771_ = true; + phi_772_ = _e426; + break; + } + case 2: { + let _e383 = abs(_e322.x); + let _e390 = ((select(select(u32(_e383), 0u, (_e383 < 0f)), 4294967295u, (_e383 > 4294967000f)) % 2u) == 0u); + let _e392 = (_e383 % 1f); + if (_e383 >= 1f) { + let _e393 = (_e392 == 0f); + phi_3912_ = select(f32(), 1f, _e393); + phi_3913_ = select(true, false, _e393); + } else { + phi_3912_ = f32(); + phi_3913_ = true; + } + let _e397 = phi_3912_; + let _e399 = phi_3913_; + let _e400 = select(_e397, _e392, _e399); + if (select(-1f, 1f, (_e322.x >= 0f)) > 0f) { + if _e390 { + phi_761_ = _e400; + } else { + phi_761_ = (1f - _e400); + } + let _e407 = phi_761_; + phi_767_ = _e407; + } else { + if _e390 { + phi_766_ = (1f - _e400); + } else { + phi_766_ = _e400; + } + let _e404 = phi_766_; + phi_767_ = _e404; + } + let _e409 = phi_767_; + phi_771_ = true; + phi_772_ = _e409; + break; + } + case 0: { + if (_e322.x > 1f) { + phi_3931_ = 0.9999999f; + } else { + phi_3931_ = select(_e322.x, 0.00000011920929f, (_e322.x < 0f)); + } + let _e380 = phi_3931_; + phi_771_ = true; + phi_772_ = _e380; + break; + } + default: { + phi_771_ = false; + phi_772_ = f32(); + break; + } + } + let _e428 = phi_771_; + let _e430 = phi_772_; + if _e428 { + switch bitcast(_e371.member.member_1) { + case 1: { + let _e471 = abs(_e322.y); + let _e473 = (_e471 % 1f); + if (_e471 >= 1f) { + let _e474 = (_e473 == 0f); + phi_3945_ = select(f32(), 1f, _e474); + phi_3946_ = select(true, false, _e474); + } else { + phi_3945_ = f32(); + phi_3946_ = true; + } + let _e478 = phi_3945_; + let _e480 = phi_3946_; + let _e481 = select(_e478, _e473, _e480); + if (select(-1f, 1f, (_e322.y >= 0f)) > 0f) { + phi_796_ = _e481; + } else { + phi_796_ = (1f - _e481); + } + let _e485 = phi_796_; + phi_835_ = true; + phi_836_ = _e485; + break; + } + case 2: { + let _e442 = abs(_e322.y); + let _e449 = ((select(select(u32(_e442), 0u, (_e442 < 0f)), 4294967295u, (_e442 > 4294967000f)) % 2u) == 0u); + let _e451 = (_e442 % 1f); + if (_e442 >= 1f) { + let _e452 = (_e451 == 0f); + phi_3964_ = select(f32(), 1f, _e452); + phi_3965_ = select(true, false, _e452); + } else { + phi_3964_ = f32(); + phi_3965_ = true; + } + let _e456 = phi_3964_; + let _e458 = phi_3965_; + let _e459 = select(_e456, _e451, _e458); + if (select(-1f, 1f, (_e322.y >= 0f)) > 0f) { + if _e449 { + phi_825_ = _e459; + } else { + phi_825_ = (1f - _e459); + } + let _e466 = phi_825_; + phi_831_ = _e466; + } else { + if _e449 { + phi_830_ = (1f - _e459); + } else { + phi_830_ = _e459; + } + let _e463 = phi_830_; + phi_831_ = _e463; + } + let _e468 = phi_831_; + phi_835_ = true; + phi_836_ = _e468; + break; + } + case 0: { + if (_e322.y > 1f) { + phi_3983_ = 0.9999999f; + } else { + phi_3983_ = select(_e322.y, 0.00000011920929f, (_e322.y < 0f)); + } + let _e439 = phi_3983_; + phi_835_ = true; + phi_836_ = _e439; + break; + } + default: { + phi_835_ = false; + phi_836_ = f32(); + break; + } + } + let _e487 = phi_835_; + let _e489 = phi_836_; + if _e487 { + let _e493 = (_e430 * f32(_e371.member_2.x)); + let _e502 = (_e489 * f32(_e371.member_2.y)); + let _e515 = f32(_e179.member.x); + let _e517 = f32(_e179.member.y); + let _e524 = vec3((f32((select(select(u32(_e493), 0u, (_e493 < 0f)), 4294967295u, (_e493 > 4294967000f)) + _e371.member_1.x)) / _e515), (f32((select(select(u32(_e502), 0u, (_e502 < 0f)), 4294967295u, (_e502 > 4294967000f)) + _e371.member_1.y)) / _e517), f32(_e371.member_3)); + let _e530 = textureSampleLevel(global_12, global_11, vec2(_e524.x, _e524.y), i32(_e524.z), 0f); + let _e533 = select(_e530, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_5 == 4294967295u))); + let _e537 = select(_e124, _e123, vec2((_e318.member_11 == 0u))); + if _e324 { + phi_4015_ = (_e318.member_6 <= (_e118 - 8u)); + } else { + phi_4015_ = false; + } + let _e542 = phi_4015_; + if _e542 { + let _e545 = global.member[_e318.member_6]; + let _e549 = global.member[(_e318.member_6 + 1u)]; + let _e554 = global.member[(_e318.member_6 + 2u)]; + let _e558 = global.member[(_e318.member_6 + 3u)]; + let _e563 = global.member[(_e318.member_6 + 4u)]; + let _e567 = global.member[(_e318.member_6 + 5u)]; + let _e571 = global.member[(_e318.member_6 + 6u)]; + switch bitcast(_e571) { + case 0: { + phi_922_ = 0u; + break; + } + case 1: { + phi_922_ = 1u; + break; + } + case 2: { + phi_922_ = 2u; + break; + } + default: { + phi_922_ = 0u; + break; + } + } + let _e574 = phi_922_; + let _e578 = global.member[(_e318.member_6 + 7u)]; + switch bitcast(_e578) { + case 0: { + phi_931_ = 0u; + break; + } + case 1: { + phi_931_ = 1u; + break; + } + case 2: { + phi_931_ = 2u; + break; + } + default: { + phi_931_ = 0u; + break; + } + } + let _e581 = phi_931_; + phi_944_ = type_33(type_24(_e574, _e581), vec2(_e545, _e549), vec2(_e554, _e558), _e563, _e567); + } else { + phi_944_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e585 = phi_944_; + switch bitcast(_e585.member.member) { + case 1: { + let _e626 = abs(_e537.x); + let _e628 = (_e626 % 1f); + if (_e626 >= 1f) { + let _e629 = (_e628 == 0f); + phi_4036_ = select(f32(), 1f, _e629); + phi_4037_ = select(true, false, _e629); + } else { + phi_4036_ = f32(); + phi_4037_ = true; + } + let _e633 = phi_4036_; + let _e635 = phi_4037_; + let _e636 = select(_e633, _e628, _e635); + if (select(-1f, 1f, (_e537.x >= 0f)) > 0f) { + phi_964_ = _e636; + } else { + phi_964_ = (1f - _e636); + } + let _e640 = phi_964_; + phi_1003_ = true; + phi_1004_ = _e640; + break; + } + case 2: { + let _e597 = abs(_e537.x); + let _e604 = ((select(select(u32(_e597), 0u, (_e597 < 0f)), 4294967295u, (_e597 > 4294967000f)) % 2u) == 0u); + let _e606 = (_e597 % 1f); + if (_e597 >= 1f) { + let _e607 = (_e606 == 0f); + phi_4055_ = select(f32(), 1f, _e607); + phi_4056_ = select(true, false, _e607); + } else { + phi_4055_ = f32(); + phi_4056_ = true; + } + let _e611 = phi_4055_; + let _e613 = phi_4056_; + let _e614 = select(_e611, _e606, _e613); + if (select(-1f, 1f, (_e537.x >= 0f)) > 0f) { + if _e604 { + phi_993_ = _e614; + } else { + phi_993_ = (1f - _e614); + } + let _e621 = phi_993_; + phi_999_ = _e621; + } else { + if _e604 { + phi_998_ = (1f - _e614); + } else { + phi_998_ = _e614; + } + let _e618 = phi_998_; + phi_999_ = _e618; + } + let _e623 = phi_999_; + phi_1003_ = true; + phi_1004_ = _e623; + break; + } + case 0: { + if (_e537.x > 1f) { + phi_4074_ = 0.9999999f; + } else { + phi_4074_ = select(_e537.x, 0.00000011920929f, (_e537.x < 0f)); + } + let _e594 = phi_4074_; + phi_1003_ = true; + phi_1004_ = _e594; + break; + } + default: { + phi_1003_ = false; + phi_1004_ = f32(); + break; + } + } + let _e642 = phi_1003_; + let _e644 = phi_1004_; + if _e642 { + switch bitcast(_e585.member.member_1) { + case 1: { + let _e685 = abs(_e537.y); + let _e687 = (_e685 % 1f); + if (_e685 >= 1f) { + let _e688 = (_e687 == 0f); + phi_4088_ = select(f32(), 1f, _e688); + phi_4089_ = select(true, false, _e688); + } else { + phi_4088_ = f32(); + phi_4089_ = true; + } + let _e692 = phi_4088_; + let _e694 = phi_4089_; + let _e695 = select(_e692, _e687, _e694); + if (select(-1f, 1f, (_e537.y >= 0f)) > 0f) { + phi_1028_ = _e695; + } else { + phi_1028_ = (1f - _e695); + } + let _e699 = phi_1028_; + phi_1067_ = true; + phi_1068_ = _e699; + break; + } + case 2: { + let _e656 = abs(_e537.y); + let _e663 = ((select(select(u32(_e656), 0u, (_e656 < 0f)), 4294967295u, (_e656 > 4294967000f)) % 2u) == 0u); + let _e665 = (_e656 % 1f); + if (_e656 >= 1f) { + let _e666 = (_e665 == 0f); + phi_4107_ = select(f32(), 1f, _e666); + phi_4108_ = select(true, false, _e666); + } else { + phi_4107_ = f32(); + phi_4108_ = true; + } + let _e670 = phi_4107_; + let _e672 = phi_4108_; + let _e673 = select(_e670, _e665, _e672); + if (select(-1f, 1f, (_e537.y >= 0f)) > 0f) { + if _e663 { + phi_1057_ = _e673; + } else { + phi_1057_ = (1f - _e673); + } + let _e680 = phi_1057_; + phi_1063_ = _e680; + } else { + if _e663 { + phi_1062_ = (1f - _e673); + } else { + phi_1062_ = _e673; + } + let _e677 = phi_1062_; + phi_1063_ = _e677; + } + let _e682 = phi_1063_; + phi_1067_ = true; + phi_1068_ = _e682; + break; + } + case 0: { + if (_e537.y > 1f) { + phi_4126_ = 0.9999999f; + } else { + phi_4126_ = select(_e537.y, 0.00000011920929f, (_e537.y < 0f)); + } + let _e653 = phi_4126_; + phi_1067_ = true; + phi_1068_ = _e653; + break; + } + default: { + phi_1067_ = false; + phi_1068_ = f32(); + break; + } + } + let _e701 = phi_1067_; + let _e703 = phi_1068_; + if _e701 { + let _e707 = (_e644 * f32(_e585.member_2.x)); + let _e716 = (_e703 * f32(_e585.member_2.y)); + let _e734 = vec3((f32((select(select(u32(_e707), 0u, (_e707 < 0f)), 4294967295u, (_e707 > 4294967000f)) + _e585.member_1.x)) / _e515), (f32((select(select(u32(_e716), 0u, (_e716 < 0f)), 4294967295u, (_e716 > 4294967000f)) + _e585.member_1.y)) / _e517), f32(_e585.member_3)); + let _e740 = textureSampleLevel(global_12, global_11, vec2(_e734.x, _e734.y), i32(_e734.z), 0f); + let _e743 = select(_e740, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_6 == 4294967295u))); + let _e747 = select(_e124, _e123, vec2((_e318.member_12 == 0u))); + if _e324 { + phi_4158_ = (_e318.member_7 <= (_e118 - 8u)); + } else { + phi_4158_ = false; + } + let _e752 = phi_4158_; + if _e752 { + let _e755 = global.member[_e318.member_7]; + let _e759 = global.member[(_e318.member_7 + 1u)]; + let _e764 = global.member[(_e318.member_7 + 2u)]; + let _e768 = global.member[(_e318.member_7 + 3u)]; + let _e773 = global.member[(_e318.member_7 + 4u)]; + let _e777 = global.member[(_e318.member_7 + 5u)]; + let _e781 = global.member[(_e318.member_7 + 6u)]; + switch bitcast(_e781) { + case 0: { + phi_1154_ = 0u; + break; + } + case 1: { + phi_1154_ = 1u; + break; + } + case 2: { + phi_1154_ = 2u; + break; + } + default: { + phi_1154_ = 0u; + break; + } + } + let _e784 = phi_1154_; + let _e788 = global.member[(_e318.member_7 + 7u)]; + switch bitcast(_e788) { + case 0: { + phi_1163_ = 0u; + break; + } + case 1: { + phi_1163_ = 1u; + break; + } + case 2: { + phi_1163_ = 2u; + break; + } + default: { + phi_1163_ = 0u; + break; + } + } + let _e791 = phi_1163_; + phi_1176_ = type_33(type_24(_e784, _e791), vec2(_e755, _e759), vec2(_e764, _e768), _e773, _e777); + } else { + phi_1176_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e795 = phi_1176_; + switch bitcast(_e795.member.member) { + case 1: { + let _e836 = abs(_e747.x); + let _e838 = (_e836 % 1f); + if (_e836 >= 1f) { + let _e839 = (_e838 == 0f); + phi_4179_ = select(f32(), 1f, _e839); + phi_4180_ = select(true, false, _e839); + } else { + phi_4179_ = f32(); + phi_4180_ = true; + } + let _e843 = phi_4179_; + let _e845 = phi_4180_; + let _e846 = select(_e843, _e838, _e845); + if (select(-1f, 1f, (_e747.x >= 0f)) > 0f) { + phi_1196_ = _e846; + } else { + phi_1196_ = (1f - _e846); + } + let _e850 = phi_1196_; + phi_1235_ = true; + phi_1236_ = _e850; + break; + } + case 2: { + let _e807 = abs(_e747.x); + let _e814 = ((select(select(u32(_e807), 0u, (_e807 < 0f)), 4294967295u, (_e807 > 4294967000f)) % 2u) == 0u); + let _e816 = (_e807 % 1f); + if (_e807 >= 1f) { + let _e817 = (_e816 == 0f); + phi_4198_ = select(f32(), 1f, _e817); + phi_4199_ = select(true, false, _e817); + } else { + phi_4198_ = f32(); + phi_4199_ = true; + } + let _e821 = phi_4198_; + let _e823 = phi_4199_; + let _e824 = select(_e821, _e816, _e823); + if (select(-1f, 1f, (_e747.x >= 0f)) > 0f) { + if _e814 { + phi_1225_ = _e824; + } else { + phi_1225_ = (1f - _e824); + } + let _e831 = phi_1225_; + phi_1231_ = _e831; + } else { + if _e814 { + phi_1230_ = (1f - _e824); + } else { + phi_1230_ = _e824; + } + let _e828 = phi_1230_; + phi_1231_ = _e828; + } + let _e833 = phi_1231_; + phi_1235_ = true; + phi_1236_ = _e833; + break; + } + case 0: { + if (_e747.x > 1f) { + phi_4217_ = 0.9999999f; + } else { + phi_4217_ = select(_e747.x, 0.00000011920929f, (_e747.x < 0f)); + } + let _e804 = phi_4217_; + phi_1235_ = true; + phi_1236_ = _e804; + break; + } + default: { + phi_1235_ = false; + phi_1236_ = f32(); + break; + } + } + let _e852 = phi_1235_; + let _e854 = phi_1236_; + if _e852 { + switch bitcast(_e795.member.member_1) { + case 1: { + let _e895 = abs(_e747.y); + let _e897 = (_e895 % 1f); + if (_e895 >= 1f) { + let _e898 = (_e897 == 0f); + phi_4231_ = select(f32(), 1f, _e898); + phi_4232_ = select(true, false, _e898); + } else { + phi_4231_ = f32(); + phi_4232_ = true; + } + let _e902 = phi_4231_; + let _e904 = phi_4232_; + let _e905 = select(_e902, _e897, _e904); + if (select(-1f, 1f, (_e747.y >= 0f)) > 0f) { + phi_1260_ = _e905; + } else { + phi_1260_ = (1f - _e905); + } + let _e909 = phi_1260_; + phi_1299_ = true; + phi_1300_ = _e909; + break; + } + case 2: { + let _e866 = abs(_e747.y); + let _e873 = ((select(select(u32(_e866), 0u, (_e866 < 0f)), 4294967295u, (_e866 > 4294967000f)) % 2u) == 0u); + let _e875 = (_e866 % 1f); + if (_e866 >= 1f) { + let _e876 = (_e875 == 0f); + phi_4250_ = select(f32(), 1f, _e876); + phi_4251_ = select(true, false, _e876); + } else { + phi_4250_ = f32(); + phi_4251_ = true; + } + let _e880 = phi_4250_; + let _e882 = phi_4251_; + let _e883 = select(_e880, _e875, _e882); + if (select(-1f, 1f, (_e747.y >= 0f)) > 0f) { + if _e873 { + phi_1289_ = _e883; + } else { + phi_1289_ = (1f - _e883); + } + let _e890 = phi_1289_; + phi_1295_ = _e890; + } else { + if _e873 { + phi_1294_ = (1f - _e883); + } else { + phi_1294_ = _e883; + } + let _e887 = phi_1294_; + phi_1295_ = _e887; + } + let _e892 = phi_1295_; + phi_1299_ = true; + phi_1300_ = _e892; + break; + } + case 0: { + if (_e747.y > 1f) { + phi_4269_ = 0.9999999f; + } else { + phi_4269_ = select(_e747.y, 0.00000011920929f, (_e747.y < 0f)); + } + let _e863 = phi_4269_; + phi_1299_ = true; + phi_1300_ = _e863; + break; + } + default: { + phi_1299_ = false; + phi_1300_ = f32(); + break; + } + } + let _e911 = phi_1299_; + let _e913 = phi_1300_; + if _e911 { + let _e917 = (_e854 * f32(_e795.member_2.x)); + let _e926 = (_e913 * f32(_e795.member_2.y)); + let _e944 = vec3((f32((select(select(u32(_e917), 0u, (_e917 < 0f)), 4294967295u, (_e917 > 4294967000f)) + _e795.member_1.x)) / _e515), (f32((select(select(u32(_e926), 0u, (_e926 < 0f)), 4294967295u, (_e926 > 4294967000f)) + _e795.member_1.y)) / _e517), f32(_e795.member_3)); + let _e950 = textureSampleLevel(global_12, global_11, vec2(_e944.x, _e944.y), i32(_e944.z), 0f); + let _e951 = (_e318.member_7 == 4294967295u); + let _e953 = select(_e950, vec4(1f, 1f, 1f, 1f), vec4(_e951)); + let _e957 = select(_e124, _e123, vec2((_e318.member_13 == 0u))); + if _e324 { + phi_4301_ = (_e318.member_8 <= (_e118 - 8u)); + } else { + phi_4301_ = false; + } + let _e962 = phi_4301_; + if _e962 { + let _e965 = global.member[_e318.member_8]; + let _e969 = global.member[(_e318.member_8 + 1u)]; + let _e974 = global.member[(_e318.member_8 + 2u)]; + let _e978 = global.member[(_e318.member_8 + 3u)]; + let _e983 = global.member[(_e318.member_8 + 4u)]; + let _e987 = global.member[(_e318.member_8 + 5u)]; + let _e991 = global.member[(_e318.member_8 + 6u)]; + switch bitcast(_e991) { + case 0: { + phi_1386_ = 0u; + break; + } + case 1: { + phi_1386_ = 1u; + break; + } + case 2: { + phi_1386_ = 2u; + break; + } + default: { + phi_1386_ = 0u; + break; + } + } + let _e994 = phi_1386_; + let _e998 = global.member[(_e318.member_8 + 7u)]; + switch bitcast(_e998) { + case 0: { + phi_1395_ = 0u; + break; + } + case 1: { + phi_1395_ = 1u; + break; + } + case 2: { + phi_1395_ = 2u; + break; + } + default: { + phi_1395_ = 0u; + break; + } + } + let _e1001 = phi_1395_; + phi_1408_ = type_33(type_24(_e994, _e1001), vec2(_e965, _e969), vec2(_e974, _e978), _e983, _e987); + } else { + phi_1408_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e1005 = phi_1408_; + switch bitcast(_e1005.member.member) { + case 1: { + let _e1046 = abs(_e957.x); + let _e1048 = (_e1046 % 1f); + if (_e1046 >= 1f) { + let _e1049 = (_e1048 == 0f); + phi_4322_ = select(f32(), 1f, _e1049); + phi_4323_ = select(true, false, _e1049); + } else { + phi_4322_ = f32(); + phi_4323_ = true; + } + let _e1053 = phi_4322_; + let _e1055 = phi_4323_; + let _e1056 = select(_e1053, _e1048, _e1055); + if (select(-1f, 1f, (_e957.x >= 0f)) > 0f) { + phi_1428_ = _e1056; + } else { + phi_1428_ = (1f - _e1056); + } + let _e1060 = phi_1428_; + phi_1467_ = true; + phi_1468_ = _e1060; + break; + } + case 2: { + let _e1017 = abs(_e957.x); + let _e1024 = ((select(select(u32(_e1017), 0u, (_e1017 < 0f)), 4294967295u, (_e1017 > 4294967000f)) % 2u) == 0u); + let _e1026 = (_e1017 % 1f); + if (_e1017 >= 1f) { + let _e1027 = (_e1026 == 0f); + phi_4341_ = select(f32(), 1f, _e1027); + phi_4342_ = select(true, false, _e1027); + } else { + phi_4341_ = f32(); + phi_4342_ = true; + } + let _e1031 = phi_4341_; + let _e1033 = phi_4342_; + let _e1034 = select(_e1031, _e1026, _e1033); + if (select(-1f, 1f, (_e957.x >= 0f)) > 0f) { + if _e1024 { + phi_1457_ = _e1034; + } else { + phi_1457_ = (1f - _e1034); + } + let _e1041 = phi_1457_; + phi_1463_ = _e1041; + } else { + if _e1024 { + phi_1462_ = (1f - _e1034); + } else { + phi_1462_ = _e1034; + } + let _e1038 = phi_1462_; + phi_1463_ = _e1038; + } + let _e1043 = phi_1463_; + phi_1467_ = true; + phi_1468_ = _e1043; + break; + } + case 0: { + if (_e957.x > 1f) { + phi_4360_ = 0.9999999f; + } else { + phi_4360_ = select(_e957.x, 0.00000011920929f, (_e957.x < 0f)); + } + let _e1014 = phi_4360_; + phi_1467_ = true; + phi_1468_ = _e1014; + break; + } + default: { + phi_1467_ = false; + phi_1468_ = f32(); + break; + } + } + let _e1062 = phi_1467_; + let _e1064 = phi_1468_; + if _e1062 { + switch bitcast(_e1005.member.member_1) { + case 1: { + let _e1105 = abs(_e957.y); + let _e1107 = (_e1105 % 1f); + if (_e1105 >= 1f) { + let _e1108 = (_e1107 == 0f); + phi_4374_ = select(f32(), 1f, _e1108); + phi_4375_ = select(true, false, _e1108); + } else { + phi_4374_ = f32(); + phi_4375_ = true; + } + let _e1112 = phi_4374_; + let _e1114 = phi_4375_; + let _e1115 = select(_e1112, _e1107, _e1114); + if (select(-1f, 1f, (_e957.y >= 0f)) > 0f) { + phi_1492_ = _e1115; + } else { + phi_1492_ = (1f - _e1115); + } + let _e1119 = phi_1492_; + phi_1531_ = true; + phi_1532_ = _e1119; + break; + } + case 2: { + let _e1076 = abs(_e957.y); + let _e1083 = ((select(select(u32(_e1076), 0u, (_e1076 < 0f)), 4294967295u, (_e1076 > 4294967000f)) % 2u) == 0u); + let _e1085 = (_e1076 % 1f); + if (_e1076 >= 1f) { + let _e1086 = (_e1085 == 0f); + phi_4393_ = select(f32(), 1f, _e1086); + phi_4394_ = select(true, false, _e1086); + } else { + phi_4393_ = f32(); + phi_4394_ = true; + } + let _e1090 = phi_4393_; + let _e1092 = phi_4394_; + let _e1093 = select(_e1090, _e1085, _e1092); + if (select(-1f, 1f, (_e957.y >= 0f)) > 0f) { + if _e1083 { + phi_1521_ = _e1093; + } else { + phi_1521_ = (1f - _e1093); + } + let _e1100 = phi_1521_; + phi_1527_ = _e1100; + } else { + if _e1083 { + phi_1526_ = (1f - _e1093); + } else { + phi_1526_ = _e1093; + } + let _e1097 = phi_1526_; + phi_1527_ = _e1097; + } + let _e1102 = phi_1527_; + phi_1531_ = true; + phi_1532_ = _e1102; + break; + } + case 0: { + if (_e957.y > 1f) { + phi_4412_ = 0.9999999f; + } else { + phi_4412_ = select(_e957.y, 0.00000011920929f, (_e957.y < 0f)); + } + let _e1073 = phi_4412_; + phi_1531_ = true; + phi_1532_ = _e1073; + break; + } + default: { + phi_1531_ = false; + phi_1532_ = f32(); + break; + } + } + let _e1121 = phi_1531_; + let _e1123 = phi_1532_; + if _e1121 { + let _e1127 = (_e1064 * f32(_e1005.member_2.x)); + let _e1136 = (_e1123 * f32(_e1005.member_2.y)); + let _e1154 = vec3((f32((select(select(u32(_e1127), 0u, (_e1127 < 0f)), 4294967295u, (_e1127 > 4294967000f)) + _e1005.member_1.x)) / _e515), (f32((select(select(u32(_e1136), 0u, (_e1136 < 0f)), 4294967295u, (_e1136 > 4294967000f)) + _e1005.member_1.y)) / _e517), f32(_e1005.member_3)); + let _e1160 = textureSampleLevel(global_12, global_11, vec2(_e1154.x, _e1154.y), i32(_e1154.z), 0f); + let _e1167 = select(_e124, _e123, vec2((_e318.member_14 == 0u))); + if _e324 { + phi_4444_ = (_e318.member_9 <= (_e118 - 8u)); + } else { + phi_4444_ = false; + } + let _e1172 = phi_4444_; + if _e1172 { + let _e1175 = global.member[_e318.member_9]; + let _e1179 = global.member[(_e318.member_9 + 1u)]; + let _e1184 = global.member[(_e318.member_9 + 2u)]; + let _e1188 = global.member[(_e318.member_9 + 3u)]; + let _e1193 = global.member[(_e318.member_9 + 4u)]; + let _e1197 = global.member[(_e318.member_9 + 5u)]; + let _e1201 = global.member[(_e318.member_9 + 6u)]; + switch bitcast(_e1201) { + case 0: { + phi_1618_ = 0u; + break; + } + case 1: { + phi_1618_ = 1u; + break; + } + case 2: { + phi_1618_ = 2u; + break; + } + default: { + phi_1618_ = 0u; + break; + } + } + let _e1204 = phi_1618_; + let _e1208 = global.member[(_e318.member_9 + 7u)]; + switch bitcast(_e1208) { + case 0: { + phi_1627_ = 0u; + break; + } + case 1: { + phi_1627_ = 1u; + break; + } + case 2: { + phi_1627_ = 2u; + break; + } + default: { + phi_1627_ = 0u; + break; + } + } + let _e1211 = phi_1627_; + phi_1640_ = type_33(type_24(_e1204, _e1211), vec2(_e1175, _e1179), vec2(_e1184, _e1188), _e1193, _e1197); + } else { + phi_1640_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e1215 = phi_1640_; + switch bitcast(_e1215.member.member) { + case 1: { + let _e1256 = abs(_e1167.x); + let _e1258 = (_e1256 % 1f); + if (_e1256 >= 1f) { + let _e1259 = (_e1258 == 0f); + phi_4465_ = select(f32(), 1f, _e1259); + phi_4466_ = select(true, false, _e1259); + } else { + phi_4465_ = f32(); + phi_4466_ = true; + } + let _e1263 = phi_4465_; + let _e1265 = phi_4466_; + let _e1266 = select(_e1263, _e1258, _e1265); + if (select(-1f, 1f, (_e1167.x >= 0f)) > 0f) { + phi_1660_ = _e1266; + } else { + phi_1660_ = (1f - _e1266); + } + let _e1270 = phi_1660_; + phi_1699_ = true; + phi_1700_ = _e1270; + break; + } + case 2: { + let _e1227 = abs(_e1167.x); + let _e1234 = ((select(select(u32(_e1227), 0u, (_e1227 < 0f)), 4294967295u, (_e1227 > 4294967000f)) % 2u) == 0u); + let _e1236 = (_e1227 % 1f); + if (_e1227 >= 1f) { + let _e1237 = (_e1236 == 0f); + phi_4484_ = select(f32(), 1f, _e1237); + phi_4485_ = select(true, false, _e1237); + } else { + phi_4484_ = f32(); + phi_4485_ = true; + } + let _e1241 = phi_4484_; + let _e1243 = phi_4485_; + let _e1244 = select(_e1241, _e1236, _e1243); + if (select(-1f, 1f, (_e1167.x >= 0f)) > 0f) { + if _e1234 { + phi_1689_ = _e1244; + } else { + phi_1689_ = (1f - _e1244); + } + let _e1251 = phi_1689_; + phi_1695_ = _e1251; + } else { + if _e1234 { + phi_1694_ = (1f - _e1244); + } else { + phi_1694_ = _e1244; + } + let _e1248 = phi_1694_; + phi_1695_ = _e1248; + } + let _e1253 = phi_1695_; + phi_1699_ = true; + phi_1700_ = _e1253; + break; + } + case 0: { + if (_e1167.x > 1f) { + phi_4503_ = 0.9999999f; + } else { + phi_4503_ = select(_e1167.x, 0.00000011920929f, (_e1167.x < 0f)); + } + let _e1224 = phi_4503_; + phi_1699_ = true; + phi_1700_ = _e1224; + break; + } + default: { + phi_1699_ = false; + phi_1700_ = f32(); + break; + } + } + let _e1272 = phi_1699_; + let _e1274 = phi_1700_; + if _e1272 { + switch bitcast(_e1215.member.member_1) { + case 1: { + let _e1315 = abs(_e1167.y); + let _e1317 = (_e1315 % 1f); + if (_e1315 >= 1f) { + let _e1318 = (_e1317 == 0f); + phi_4517_ = select(f32(), 1f, _e1318); + phi_4518_ = select(true, false, _e1318); + } else { + phi_4517_ = f32(); + phi_4518_ = true; + } + let _e1322 = phi_4517_; + let _e1324 = phi_4518_; + let _e1325 = select(_e1322, _e1317, _e1324); + if (select(-1f, 1f, (_e1167.y >= 0f)) > 0f) { + phi_1724_ = _e1325; + } else { + phi_1724_ = (1f - _e1325); + } + let _e1329 = phi_1724_; + phi_1763_ = true; + phi_1764_ = _e1329; + break; + } + case 2: { + let _e1286 = abs(_e1167.y); + let _e1293 = ((select(select(u32(_e1286), 0u, (_e1286 < 0f)), 4294967295u, (_e1286 > 4294967000f)) % 2u) == 0u); + let _e1295 = (_e1286 % 1f); + if (_e1286 >= 1f) { + let _e1296 = (_e1295 == 0f); + phi_4536_ = select(f32(), 1f, _e1296); + phi_4537_ = select(true, false, _e1296); + } else { + phi_4536_ = f32(); + phi_4537_ = true; + } + let _e1300 = phi_4536_; + let _e1302 = phi_4537_; + let _e1303 = select(_e1300, _e1295, _e1302); + if (select(-1f, 1f, (_e1167.y >= 0f)) > 0f) { + if _e1293 { + phi_1753_ = _e1303; + } else { + phi_1753_ = (1f - _e1303); + } + let _e1310 = phi_1753_; + phi_1759_ = _e1310; + } else { + if _e1293 { + phi_1758_ = (1f - _e1303); + } else { + phi_1758_ = _e1303; + } + let _e1307 = phi_1758_; + phi_1759_ = _e1307; + } + let _e1312 = phi_1759_; + phi_1763_ = true; + phi_1764_ = _e1312; + break; + } + case 0: { + if (_e1167.y > 1f) { + phi_4555_ = 0.9999999f; + } else { + phi_4555_ = select(_e1167.y, 0.00000011920929f, (_e1167.y < 0f)); + } + let _e1283 = phi_4555_; + phi_1763_ = true; + phi_1764_ = _e1283; + break; + } + default: { + phi_1763_ = false; + phi_1764_ = f32(); + break; + } + } + let _e1331 = phi_1763_; + let _e1333 = phi_1764_; + if _e1331 { + let _e1337 = (_e1274 * f32(_e1215.member_2.x)); + let _e1346 = (_e1333 * f32(_e1215.member_2.y)); + let _e1364 = vec3((f32((select(select(u32(_e1337), 0u, (_e1337 < 0f)), 4294967295u, (_e1337 > 4294967000f)) + _e1215.member_1.x)) / _e515), (f32((select(select(u32(_e1346), 0u, (_e1346 < 0f)), 4294967295u, (_e1346 > 4294967000f)) + _e1215.member_1.y)) / _e517), f32(_e1215.member_3)); + let _e1370 = textureSampleLevel(global_12, global_11, vec2(_e1364.x, _e1364.y), i32(_e1364.z), 0f); + let _e1373 = select(_e1370, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_9 == 4294967295u))); + if _e951 { + phi_1861_ = vec3(0f, 0f, 0f); + phi_1862_ = _e125; + } else { + let _e1377 = fma(_e953.x, 2f, -1f); + let _e1378 = fma(_e953.y, 2f, -1f); + let _e1379 = fma(_e953.z, 2f, -1f); + let _e1384 = sqrt(fma(_e1379, _e1379, fma(_e1377, _e1377, (_e1378 * _e1378)))); + if (_e1384 == 0f) { + phi_4609_ = vec3(0f, 0f, 0f); + } else { + phi_4609_ = (vec3(_e1377, _e1378, _e1379) * (1f / _e1384)); + } + let _e1389 = phi_4609_; + let _e1396 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); + if (_e1396 == 0f) { + phi_4644_ = vec3(0f, 0f, 0f); + } else { + phi_4644_ = (_e126 * (1f / _e1396)); + } + let _e1401 = phi_4644_; + let _e1408 = sqrt(fma(_e127.z, _e127.z, fma(_e127.x, _e127.x, (_e127.y * _e127.y)))); + if (_e1408 == 0f) { + phi_4679_ = vec3(0f, 0f, 0f); + } else { + phi_4679_ = (_e127 * (1f / _e1408)); + } + let _e1413 = phi_4679_; + let _e1420 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); + if (_e1420 == 0f) { + phi_4714_ = vec3(0f, 0f, 0f); + } else { + phi_4714_ = (_e125 * (1f / _e1420)); + } + let _e1425 = phi_4714_; + let _e1444 = fma(_e1425.x, _e1389.z, fma(_e1401.x, _e1389.x, (_e1413.x * _e1389.y))); + let _e1445 = fma(_e1425.y, _e1389.z, fma(_e1401.y, _e1389.x, (_e1413.y * _e1389.y))); + let _e1446 = fma(_e1425.z, _e1389.z, fma(_e1401.z, _e1389.x, (_e1413.z * _e1389.y))); + let _e1451 = sqrt(fma(_e1446, _e1446, fma(_e1444, _e1444, (_e1445 * _e1445)))); + if (_e1451 == 0f) { + phi_4749_ = vec3(0f, 0f, 0f); + } else { + phi_4749_ = (vec3(_e1444, _e1445, _e1446) * (1f / _e1451)); + } + let _e1456 = phi_4749_; + phi_1861_ = _e1389; + phi_1862_ = _e1456; + } + let _e1458 = phi_1861_; + let _e1460 = phi_1862_; + let _e1464 = (_e533.x * _e318.member_2.x); + let _e1467 = (_e533.y * _e318.member_2.y); + let _e1470 = (_e533.z * _e318.member_2.z); + let _e1475 = (_e1464 * _e122.x); + let _e1477 = (_e1467 * _e122.y); + let _e1479 = (_e1470 * _e122.z); + let _e1484 = (_e743.y * _e318.member_4); + let _e1487 = (_e743.z * _e318.member_3); + let _e1491 = fma(_e318.member_16, (select(_e1160, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_8 == 4294967295u))).x - 1f), 1f); + let _e1497 = (_e1373.x * _e318.member.x); + let _e1499 = (_e1373.y * _e318.member.y); + let _e1501 = (_e1373.z * _e318.member.z); + let _e1506 = textureSampleLevel(global_13, global_14, _e1460, 0f); + if (_e118 >= 83u) { + phi_4781_ = (_e119 <= (_e118 - 83u)); + } else { + phi_4781_ = false; + } + let _e1514 = phi_4781_; + if _e1514 { + let _e1517 = global.member[_e119]; + let _e1522 = global.member[(_e119 + 1u)]; + let _e1527 = global.member[(_e119 + 2u)]; + let _e1532 = global.member[(_e119 + 3u)]; + let _e1538 = global.member[(_e119 + 4u)]; + let _e1543 = global.member[(_e119 + 5u)]; + let _e1548 = global.member[(_e119 + 6u)]; + let _e1553 = global.member[(_e119 + 7u)]; + let _e1559 = global.member[(_e119 + 8u)]; + let _e1564 = global.member[(_e119 + 9u)]; + let _e1569 = global.member[(_e119 + 10u)]; + let _e1574 = global.member[(_e119 + 11u)]; + let _e1580 = global.member[(_e119 + 12u)]; + let _e1585 = global.member[(_e119 + 13u)]; + let _e1590 = global.member[(_e119 + 14u)]; + let _e1595 = global.member[(_e119 + 15u)]; + let _e1602 = global.member[(_e119 + 16u)]; + let _e1607 = global.member[(_e119 + 17u)]; + let _e1612 = global.member[(_e119 + 18u)]; + let _e1617 = global.member[(_e119 + 19u)]; + let _e1623 = global.member[(_e119 + 20u)]; + let _e1628 = global.member[(_e119 + 21u)]; + let _e1633 = global.member[(_e119 + 22u)]; + let _e1638 = global.member[(_e119 + 23u)]; + let _e1644 = global.member[(_e119 + 24u)]; + let _e1649 = global.member[(_e119 + 25u)]; + let _e1654 = global.member[(_e119 + 26u)]; + let _e1659 = global.member[(_e119 + 27u)]; + let _e1665 = global.member[(_e119 + 28u)]; + let _e1670 = global.member[(_e119 + 29u)]; + let _e1675 = global.member[(_e119 + 30u)]; + let _e1680 = global.member[(_e119 + 31u)]; + let _e1687 = global.member[(_e119 + 32u)]; + let _e1692 = global.member[(_e119 + 33u)]; + let _e1697 = global.member[(_e119 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_2068_ = type_24(0u, 6u); + loop { + let _e1702 = phi_2068_; + if (_e1702.member < _e1702.member_1) { + phi_2084_ = type_24((_e1702.member + 1u), _e1702.member_1); + phi_2085_ = type_24(1u, _e1702.member); + } else { + phi_2084_ = _e1702; + phi_2085_ = type_24(0u, type_24().member_1); + } + let _e1715 = phi_2084_; + let _e1717 = phi_2085_; + switch bitcast(_e1717.member) { + case 0: { + let _e1744 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_2098_ = type_24(0u, 8u); + loop { + let _e1747 = phi_2098_; + if (_e1747.member < _e1747.member_1) { + phi_2114_ = type_24((_e1747.member + 1u), _e1747.member_1); + phi_2115_ = type_24(1u, _e1747.member); + } else { + phi_2114_ = _e1747; + phi_2115_ = type_24(0u, type_24().member_1); + } + let _e1760 = phi_2114_; + let _e1762 = phi_2115_; + switch bitcast(_e1762.member) { + case 0: { + let _e1784 = local; + phi_2141_ = type_22(type_20(vec4(bitcast(_e1517), bitcast(_e1522), bitcast(_e1527), bitcast(_e1532)), vec4(bitcast(_e1538), bitcast(_e1543), bitcast(_e1548), bitcast(_e1553)), vec4(bitcast(_e1559), bitcast(_e1564), bitcast(_e1569), bitcast(_e1574)), vec4(bitcast(_e1580), bitcast(_e1585), bitcast(_e1590), bitcast(_e1595))), type_20(vec4(bitcast(_e1602), bitcast(_e1607), bitcast(_e1612), bitcast(_e1617)), vec4(bitcast(_e1623), bitcast(_e1628), bitcast(_e1633), bitcast(_e1638)), vec4(bitcast(_e1644), bitcast(_e1649), bitcast(_e1654), bitcast(_e1659)), vec4(bitcast(_e1665), bitcast(_e1670), bitcast(_e1675), bitcast(_e1680))), type_21(_e1784, _e1744), vec3(bitcast(_e1687), bitcast(_e1692), bitcast(_e1697))); + phi_2142_ = false; + phi_2099_ = type_24(); + break; + } + case 1: { + let _e1767 = ((_e119 + 59u) + (_e1762.member_1 * 3u)); + let _e1770 = global.member[_e1767]; + let _e1775 = global.member[(_e1767 + 1u)]; + let _e1780 = global.member[(_e1767 + 2u)]; + local[_e1762.member_1] = vec3(bitcast(_e1770), bitcast(_e1775), bitcast(_e1780)); + phi_2141_ = type_22(); + phi_2142_ = true; + phi_2099_ = _e1760; + break; + } + default: { + phi_2141_ = type_22(); + phi_2142_ = false; + phi_2099_ = type_24(); + break; + } + } + let _e1788 = phi_2141_; + let _e1790 = phi_2142_; + let _e1792 = phi_2099_; + local_2 = _e1788; + continue; + continuing { + phi_2098_ = _e1792; + break if !(_e1790); + } + } + let _e3177 = local_2; + phi_2162_ = _e3177; + phi_2163_ = false; + phi_2069_ = type_24(); + break; + } + case 1: { + let _e1722 = ((_e119 + 35u) + (_e1717.member_1 * 4u)); + let _e1725 = global.member[_e1722]; + let _e1730 = global.member[(_e1722 + 1u)]; + let _e1735 = global.member[(_e1722 + 2u)]; + let _e1740 = global.member[(_e1722 + 3u)]; + local_1[_e1717.member_1] = vec4(bitcast(_e1725), bitcast(_e1730), bitcast(_e1735), bitcast(_e1740)); + phi_2162_ = type_22(); + phi_2163_ = true; + phi_2069_ = _e1715; + break; + } + default: { + phi_2162_ = type_22(); + phi_2163_ = false; + phi_2069_ = type_24(); + break; + } + } + let _e1795 = phi_2162_; + let _e1797 = phi_2163_; + let _e1799 = phi_2069_; + local_3 = _e1795; + continue; + continuing { + phi_2068_ = _e1799; + break if !(_e1797); + } + } + let _e3182 = local_3; + phi_2168_ = _e3182; + } else { + phi_2168_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e1802 = phi_2168_; + let _e1804 = (_e1802.member_3 - _e128); + let _e1811 = sqrt(fma(_e1804.z, _e1804.z, fma(_e1804.x, _e1804.x, (_e1804.y * _e1804.y)))); + let _e1812 = (_e1811 == 0f); + if _e1812 { + phi_4853_ = vec3(0f, 0f, 0f); + } else { + phi_4853_ = (_e1804 * (1f / _e1811)); + } + let _e1816 = phi_4853_; + let _e1817 = -(_e1816); + let _e1824 = sqrt(fma(_e1460.z, _e1460.z, fma(_e1460.x, _e1460.x, (_e1460.y * _e1460.y)))); + let _e1825 = (_e1824 == 0f); + if _e1825 { + phi_4912_ = vec3(0f, 0f, 0f); + } else { + phi_4912_ = (_e1460 * (1f / _e1824)); + } + let _e1829 = phi_4912_; + let _e1839 = (2f * fma(_e1829.z, _e1817.z, fma(_e1829.x, _e1817.x, (_e1829.y * _e1817.y)))); + let _e1846 = textureSampleLevel(global_15, global_16, (_e1817 - vec3((_e1839 * _e1829.x), (_e1839 * _e1829.y), (_e1839 * _e1829.z))), (_e1484 * 4f)); + if _e1812 { + phi_4986_ = vec3(0f, 0f, 0f); + } else { + phi_4986_ = (_e1804 * (1f / _e1811)); + } + let _e1853 = phi_4986_; + let _e1862 = textureSampleLevel(global_17, global_18, vec2(max(fma(_e1460.z, _e1853.z, fma(_e1460.x, _e1853.x, (_e1460.y * _e1853.y))), 0f), _e1484), 0f); + switch bitcast(_e179.member_3) { + case 0: { + if _e318.member_15 { + if _e1825 { + phi_5036_ = vec3(0f, 0f, 0f); + } else { + phi_5036_ = (_e1460 * (1f / _e1824)); + } + let _e2031 = phi_5036_; + if _e1812 { + phi_5071_ = vec3(0f, 0f, 0f); + } else { + phi_5071_ = (_e1804 * (1f / _e1811)); + } + let _e2035 = phi_5071_; + phi_2208_ = type_24(0u, _e179.member_2.member_1); + phi_2211_ = vec3(0f, 0f, 0f); + loop { + let _e2038 = phi_2208_; + let _e2040 = phi_2211_; + if (_e2038.member < _e2038.member_1) { + phi_2226_ = type_24((_e2038.member + 1u), _e2038.member_1); + phi_2227_ = type_24(1u, _e2038.member); + } else { + phi_2226_ = _e2038; + phi_2227_ = type_24(0u, type_24().member_1); + } + let _e2053 = phi_2226_; + let _e2055 = phi_2227_; + switch bitcast(_e2055.member) { + case 0: { + phi_3101_ = false; + phi_3102_ = true; + phi_3103_ = false; + phi_3104_ = type_24(); + phi_3105_ = vec3(); + break; + } + case 1: { + if (_e2055.member_1 >= _e179.member_2.member_1) { + phi_5088_ = 4294967295u; + } else { + phi_5088_ = (_e179.member_2.member + _e2055.member_1); + } + let _e2062 = phi_5088_; + if (_e118 >= 1u) { + phi_5107_ = (_e2062 <= (_e118 - 1u)); + } else { + phi_5107_ = false; + } + let _e2067 = phi_5107_; + if _e2067 { + let _e2070 = global.member[_e2062]; + phi_2244_ = _e2070; + } else { + phi_2244_ = 4294967295u; + } + let _e2072 = phi_2244_; + let _e2073 = (_e2072 == 4294967295u); + if _e2073 { + phi_3097_ = false; + phi_3098_ = type_24(); + phi_3099_ = vec3(); + phi_3100_ = false; + } else { + if (_e118 >= 3u) { + phi_5139_ = (_e2072 <= (_e118 - 3u)); + } else { + phi_5139_ = false; + } + let _e2078 = phi_5139_; + if _e2078 { + let _e2081 = global.member[_e2072]; + switch bitcast(_e2081) { + case 0: { + phi_2261_ = 0u; + break; + } + case 1: { + phi_2261_ = 1u; + break; + } + case 2: { + phi_2261_ = 2u; + break; + } + default: { + phi_2261_ = 0u; + break; + } + } + let _e2084 = phi_2261_; + let _e2088 = global.member[(_e2072 + 1u)]; + let _e2092 = global.member[(_e2072 + 2u)]; + phi_2271_ = type_34(_e2084, _e2088, _e2092); + } else { + phi_2271_ = type_34(0u, 4294967295u, 4294967295u); + } + let _e2095 = phi_2271_; + if (_e118 >= 10u) { + phi_5169_ = (_e2095.member_2 <= (_e118 - 10u)); + } else { + phi_5169_ = false; + } + let _e2101 = phi_5169_; + if _e2101 { + let _e2104 = global.member[_e2095.member_2]; + let _e2109 = global.member[(_e2095.member_2 + 1u)]; + let _e2114 = global.member[(_e2095.member_2 + 2u)]; + let _e2120 = global.member[(_e2095.member_2 + 3u)]; + let _e2125 = global.member[(_e2095.member_2 + 4u)]; + let _e2130 = global.member[(_e2095.member_2 + 5u)]; + let _e2135 = global.member[(_e2095.member_2 + 6u)]; + let _e2141 = global.member[(_e2095.member_2 + 7u)]; + let _e2146 = global.member[(_e2095.member_2 + 8u)]; + let _e2151 = global.member[(_e2095.member_2 + 9u)]; + phi_2321_ = type_28(vec3(bitcast(_e2104), bitcast(_e2109), bitcast(_e2114)), vec4(bitcast(_e2120), bitcast(_e2125), bitcast(_e2130), bitcast(_e2135)), vec3(bitcast(_e2141), bitcast(_e2146), bitcast(_e2151))); + } else { + phi_2321_ = type_28(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e2156 = phi_2321_; + let _e2164 = (_e2156.member_1.x + _e2156.member_1.x); + let _e2165 = (_e2156.member_1.y + _e2156.member_1.y); + let _e2166 = (_e2156.member_1.z + _e2156.member_1.z); + let _e2168 = (_e2156.member_1.z * _e2166); + let _e2169 = (_e2156.member_1.w * _e2164); + let _e2170 = (_e2156.member_1.w * _e2165); + let _e2171 = (_e2156.member_1.w * _e2166); + let _e2191 = (vec4((1f - fma(_e2156.member_1.y, _e2165, _e2168)), fma(_e2156.member_1.x, _e2165, _e2171), fma(_e2156.member_1.x, _e2166, -(_e2170)), 0f) * _e2156.member_2.x); + let _e2193 = (vec4(fma(_e2156.member_1.x, _e2165, -(_e2171)), (1f - fma(_e2156.member_1.x, _e2164, _e2168)), fma(_e2156.member_1.y, _e2166, _e2169), 0f) * _e2156.member_2.y); + let _e2195 = (vec4(fma(_e2156.member_1.x, _e2166, _e2170), fma(_e2156.member_1.y, _e2166, -(_e2169)), (1f - fma(_e2156.member_1.x, _e2164, (_e2156.member_1.y * _e2165))), 0f) * _e2156.member_2.z); + switch bitcast(_e2095.member) { + case 0: { + if _e324 { + phi_5250_ = (_e2095.member_1 <= (_e118 - 8u)); + } else { + phi_5250_ = false; + } + let _e2693 = phi_5250_; + if _e2693 { + let _e2696 = global.member[_e2095.member_1]; + let _e2701 = global.member[(_e2095.member_1 + 1u)]; + let _e2706 = global.member[(_e2095.member_1 + 2u)]; + let _e2712 = global.member[(_e2095.member_1 + 3u)]; + let _e2717 = global.member[(_e2095.member_1 + 4u)]; + let _e2722 = global.member[(_e2095.member_1 + 5u)]; + let _e2727 = global.member[(_e2095.member_1 + 6u)]; + let _e2733 = global.member[(_e2095.member_1 + 7u)]; + phi_2369_ = type_35(vec3(bitcast(_e2696), bitcast(_e2701), bitcast(_e2706)), vec4(bitcast(_e2712), bitcast(_e2717), bitcast(_e2722), bitcast(_e2727)), bitcast(_e2733)); + } else { + phi_2369_ = type_35(vec3(0f, -1f, 0f), vec4(1f, 1f, 1f, 1f), 1f); + } + let _e2737 = phi_2369_; + let _e2759 = fma(_e2195.x, _e2737.member.z, fma(_e2193.x, _e2737.member.y, (_e2191.x * _e2737.member.x))); + let _e2760 = fma(_e2195.y, _e2737.member.z, fma(_e2193.y, _e2737.member.y, (_e2191.y * _e2737.member.x))); + let _e2761 = fma(_e2195.z, _e2737.member.z, fma(_e2193.z, _e2737.member.y, (_e2191.z * _e2737.member.x))); + let _e2766 = sqrt(fma(_e2761, _e2761, fma(_e2759, _e2759, (_e2760 * _e2760)))); + if (_e2766 == 0f) { + phi_5298_ = vec3(0f, 0f, 0f); + } else { + phi_5298_ = (vec3(_e2759, _e2760, _e2761) * (1f / _e2766)); + } + let _e2771 = phi_5298_; + let _e2773 = -(_e2771.x); + let _e2775 = -(_e2771.y); + let _e2777 = -(_e2771.z); + let _e2778 = -(_e2771); + let _e2782 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); + let _e2783 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); + let _e2784 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); + let _e2792 = (_e2035 + vec3(_e2773, _e2775, _e2777)); + let _e2799 = sqrt(fma(_e2792.z, _e2792.z, fma(_e2792.x, _e2792.x, (_e2792.y * _e2792.y)))); + if (_e2799 == 0f) { + phi_5333_ = vec3(0f, 0f, 0f); + } else { + phi_5333_ = (_e2792 * (1f / _e2799)); + } + let _e2804 = phi_5333_; + let _e2805 = (_e1484 * _e1484); + let _e2816 = max(fma(_e2031.z, _e2804.z, fma(_e2031.x, _e2804.x, (_e2031.y * _e2804.y))), 0f); + let _e2829 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); + let _e2836 = max(fma(_e2031.z, _e2778.z, fma(_e2031.x, _e2778.x, (_e2031.y * _e2778.y))), 0f); + let _e2837 = fma(_e743.y, _e318.member_4, 1f); + let _e2838 = (_e2837 * _e2837); + let _e2839 = (_e2838 * 0.125f); + let _e2841 = fma(-(_e2838), 0.125f, 1f); + let _e2854 = (1f - max(fma(_e2804.z, _e2035.z, fma(_e2804.x, _e2035.x, (_e2804.y * _e2035.y))), 0f)); + let _e2856 = select(_e2854, 0f, (_e2854 < 0f)); + let _e2859 = pow(select(_e2856, 1f, (_e2856 > 1f)), 5f); + let _e2860 = fma((1f - _e2782), _e2859, _e2782); + let _e2861 = fma((1f - _e2783), _e2859, _e2783); + let _e2862 = fma((1f - _e2784), _e2859, _e2784); + let _e2867 = fma(-(_e743.z), _e318.member_3, 1f); + let _e2871 = (((_e2805 * _e2805) / (pow(fma((_e2816 * _e2816), fma(_e2805, _e2805, -1f), 1f), 2f) * 3.1415927f)) * ((_e2829 / fma(_e2829, _e2841, _e2839)) * (_e2836 / fma(_e2836, _e2841, _e2839)))); + let _e2878 = max(fma(_e2031.z, _e2777, fma(_e2031.x, _e2773, (_e2031.y * _e2775))), 0f); + let _e2880 = fma((4f * _e2829), _e2878, 0.0001f); + phi_3077_ = false; + phi_3078_ = true; + phi_3079_ = vec3(fma((fma((((1f - _e2860) * _e2867) * _e1475), 0.31830987f, ((_e2871 * _e2860) / _e2880)) * (_e2737.member_1.x * _e2737.member_2)), _e2878, _e2040.x), fma((fma((((1f - _e2861) * _e2867) * _e1477), 0.31830987f, ((_e2871 * _e2861) / _e2880)) * (_e2737.member_1.y * _e2737.member_2)), _e2878, _e2040.y), fma((fma((((1f - _e2862) * _e2867) * _e1479), 0.31830987f, ((_e2871 * _e2862) / _e2880)) * (_e2737.member_1.z * _e2737.member_2)), _e2878, _e2040.z)); + phi_3080_ = false; + break; + } + case 1: { + if _e324 { + phi_5425_ = (_e2095.member_1 <= (_e118 - 8u)); + } else { + phi_5425_ = false; + } + let _e2481 = phi_5425_; + if _e2481 { + let _e2484 = global.member[_e2095.member_1]; + let _e2489 = global.member[(_e2095.member_1 + 1u)]; + let _e2494 = global.member[(_e2095.member_1 + 2u)]; + let _e2500 = global.member[(_e2095.member_1 + 3u)]; + let _e2505 = global.member[(_e2095.member_1 + 4u)]; + let _e2510 = global.member[(_e2095.member_1 + 5u)]; + let _e2515 = global.member[(_e2095.member_1 + 6u)]; + let _e2521 = global.member[(_e2095.member_1 + 7u)]; + phi_2573_ = type_35(vec3(bitcast(_e2484), bitcast(_e2489), bitcast(_e2494)), vec4(bitcast(_e2500), bitcast(_e2505), bitcast(_e2510), bitcast(_e2515)), bitcast(_e2521)); + } else { + phi_2573_ = type_35(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), 1f); + } + let _e2525 = phi_2573_; + let _e2554 = (vec3((_e2156.member.x + fma(_e2195.x, _e2525.member.z, fma(_e2193.x, _e2525.member.y, (_e2191.x * _e2525.member.x)))), (_e2156.member.y + fma(_e2195.y, _e2525.member.z, fma(_e2193.y, _e2525.member.y, (_e2191.y * _e2525.member.x)))), (_e2156.member.z + fma(_e2195.z, _e2525.member.z, fma(_e2193.z, _e2525.member.y, (_e2191.z * _e2525.member.x))))) - _e128); + let _e2561 = sqrt(fma(_e2554.z, _e2554.z, fma(_e2554.x, _e2554.x, (_e2554.y * _e2554.y)))); + let _e2562 = (_e2561 == 0f); + if _e2562 { + phi_2762_ = vec3(); + } else { + if _e2562 { + phi_5471_ = vec3(0f, 0f, 0f); + } else { + phi_5471_ = (_e2554 * (1f / _e2561)); + } + let _e2566 = phi_5471_; + let _e2568 = (_e2525.member_2 / (_e2561 * _e2561)); + let _e2572 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); + let _e2573 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); + let _e2574 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); + let _e2581 = (_e2035 + _e2566); + let _e2588 = sqrt(fma(_e2581.z, _e2581.z, fma(_e2581.x, _e2581.x, (_e2581.y * _e2581.y)))); + if (_e2588 == 0f) { + phi_5506_ = vec3(0f, 0f, 0f); + } else { + phi_5506_ = (_e2581 * (1f / _e2588)); + } + let _e2593 = phi_5506_; + let _e2594 = (_e1484 * _e1484); + let _e2605 = max(fma(_e2031.z, _e2593.z, fma(_e2031.x, _e2593.x, (_e2031.y * _e2593.y))), 0f); + let _e2618 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); + let _e2625 = max(fma(_e2031.z, _e2566.z, fma(_e2031.x, _e2566.x, (_e2031.y * _e2566.y))), 0f); + let _e2626 = fma(_e743.y, _e318.member_4, 1f); + let _e2627 = (_e2626 * _e2626); + let _e2628 = (_e2627 * 0.125f); + let _e2630 = fma(-(_e2627), 0.125f, 1f); + let _e2643 = (1f - max(fma(_e2593.z, _e2035.z, fma(_e2593.x, _e2035.x, (_e2593.y * _e2035.y))), 0f)); + let _e2645 = select(_e2643, 0f, (_e2643 < 0f)); + let _e2648 = pow(select(_e2645, 1f, (_e2645 > 1f)), 5f); + let _e2649 = fma((1f - _e2572), _e2648, _e2572); + let _e2650 = fma((1f - _e2573), _e2648, _e2573); + let _e2651 = fma((1f - _e2574), _e2648, _e2574); + let _e2656 = fma(-(_e743.z), _e318.member_3, 1f); + let _e2660 = (((_e2594 * _e2594) / (pow(fma((_e2605 * _e2605), fma(_e2594, _e2594, -1f), 1f), 2f) * 3.1415927f)) * ((_e2618 / fma(_e2618, _e2630, _e2628)) * (_e2625 / fma(_e2625, _e2630, _e2628)))); + let _e2665 = fma((4f * _e2618), _e2625, 0.0001f); + phi_2762_ = vec3(fma((fma((((1f - _e2649) * _e2656) * _e1475), 0.31830987f, ((_e2660 * _e2649) / _e2665)) * (_e2525.member_1.x * _e2568)), _e2625, _e2040.x), fma((fma((((1f - _e2650) * _e2656) * _e1477), 0.31830987f, ((_e2660 * _e2650) / _e2665)) * (_e2525.member_1.y * _e2568)), _e2625, _e2040.y), fma((fma((((1f - _e2651) * _e2656) * _e1479), 0.31830987f, ((_e2660 * _e2651) / _e2665)) * (_e2525.member_1.z * _e2568)), _e2625, _e2040.z)); + } + let _e2686 = phi_2762_; + phi_3077_ = false; + phi_3078_ = select(true, false, _e2562); + phi_3079_ = _e2686; + phi_3080_ = select(false, true, _e2562); + break; + } + case 2: { + if (_e118 >= 13u) { + phi_5598_ = (_e2095.member_1 <= (_e118 - 13u)); + } else { + phi_5598_ = false; + } + let _e2206 = phi_5598_; + if _e2206 { + let _e2209 = global.member[_e2095.member_1]; + let _e2214 = global.member[(_e2095.member_1 + 1u)]; + let _e2219 = global.member[(_e2095.member_1 + 2u)]; + let _e2225 = global.member[(_e2095.member_1 + 3u)]; + let _e2230 = global.member[(_e2095.member_1 + 4u)]; + let _e2235 = global.member[(_e2095.member_1 + 5u)]; + let _e2241 = global.member[(_e2095.member_1 + 6u)]; + let _e2246 = global.member[(_e2095.member_1 + 7u)]; + let _e2251 = global.member[(_e2095.member_1 + 8u)]; + let _e2256 = global.member[(_e2095.member_1 + 9u)]; + let _e2261 = global.member[(_e2095.member_1 + 10u)]; + let _e2266 = global.member[(_e2095.member_1 + 11u)]; + let _e2272 = global.member[(_e2095.member_1 + 12u)]; + phi_2824_ = type_36(vec3(bitcast(_e2209), bitcast(_e2214), bitcast(_e2219)), vec3(bitcast(_e2225), bitcast(_e2230), bitcast(_e2235)), bitcast(_e2241), bitcast(_e2246), vec4(bitcast(_e2251), bitcast(_e2256), bitcast(_e2261), bitcast(_e2266)), bitcast(_e2272)); + } else { + phi_2824_ = type_36(vec3(0f, 0f, 0f), vec3(0f, -1f, 0f), 1.0471976f, 1.5707964f, vec4(1f, 1f, 1f, 1f), 1f); + } + let _e2276 = phi_2824_; + let _e2308 = (vec3((_e2156.member.x + fma(_e2195.x, _e2276.member.z, fma(_e2193.x, _e2276.member.y, (_e2191.x * _e2276.member.x)))), (_e2156.member.y + fma(_e2195.y, _e2276.member.z, fma(_e2193.y, _e2276.member.y, (_e2191.y * _e2276.member.x)))), (_e2156.member.z + fma(_e2195.z, _e2276.member.z, fma(_e2193.z, _e2276.member.y, (_e2191.z * _e2276.member.x))))) - _e128); + let _e2315 = sqrt(fma(_e2308.z, _e2308.z, fma(_e2308.x, _e2308.x, (_e2308.y * _e2308.y)))); + let _e2316 = (_e2315 == 0f); + if _e2316 { + phi_3076_ = vec3(); + } else { + if _e2316 { + phi_5648_ = vec3(0f, 0f, 0f); + } else { + phi_5648_ = (_e2308 * (1f / _e2315)); + } + let _e2320 = phi_5648_; + let _e2330 = fma(_e2195.x, _e2276.member_1.z, fma(_e2193.x, _e2276.member_1.y, (_e2191.x * _e2276.member_1.x))); + let _e2331 = fma(_e2195.y, _e2276.member_1.z, fma(_e2193.y, _e2276.member_1.y, (_e2191.y * _e2276.member_1.x))); + let _e2332 = fma(_e2195.z, _e2276.member_1.z, fma(_e2193.z, _e2276.member_1.y, (_e2191.z * _e2276.member_1.x))); + let _e2337 = sqrt(fma(_e2332, _e2332, fma(_e2330, _e2330, (_e2331 * _e2331)))); + if (_e2337 == 0f) { + phi_5683_ = vec3(0f, 0f, 0f); + } else { + phi_5683_ = (vec3(_e2330, _e2331, _e2332) * (1f / _e2337)); + } + let _e2342 = phi_5683_; + let _e2354 = ((fma(_e2320.z, _e2342.z, fma(_e2320.x, _e2342.x, (_e2320.y * _e2342.y))) - _e2276.member_3) / (_e2276.member_2 - _e2276.member_3)); + let _e2356 = select(_e2354, 0f, (_e2354 < 0f)); + let _e2359 = (_e2276.member_5 * select(_e2356, 1f, (_e2356 > 1f))); + let _e2363 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); + let _e2364 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); + let _e2365 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); + let _e2372 = (_e2035 + _e2320); + let _e2379 = sqrt(fma(_e2372.z, _e2372.z, fma(_e2372.x, _e2372.x, (_e2372.y * _e2372.y)))); + if (_e2379 == 0f) { + phi_5718_ = vec3(0f, 0f, 0f); + } else { + phi_5718_ = (_e2372 * (1f / _e2379)); + } + let _e2384 = phi_5718_; + let _e2385 = (_e1484 * _e1484); + let _e2396 = max(fma(_e2031.z, _e2384.z, fma(_e2031.x, _e2384.x, (_e2031.y * _e2384.y))), 0f); + let _e2409 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); + let _e2413 = max(fma(_e2031.z, _e2320.z, fma(_e2031.x, _e2320.x, (_e2031.y * _e2320.y))), 0f); + let _e2414 = fma(_e743.y, _e318.member_4, 1f); + let _e2415 = (_e2414 * _e2414); + let _e2416 = (_e2415 * 0.125f); + let _e2418 = fma(-(_e2415), 0.125f, 1f); + let _e2431 = (1f - max(fma(_e2384.z, _e2035.z, fma(_e2384.x, _e2035.x, (_e2384.y * _e2035.y))), 0f)); + let _e2433 = select(_e2431, 0f, (_e2431 < 0f)); + let _e2436 = pow(select(_e2433, 1f, (_e2433 > 1f)), 5f); + let _e2437 = fma((1f - _e2363), _e2436, _e2363); + let _e2438 = fma((1f - _e2364), _e2436, _e2364); + let _e2439 = fma((1f - _e2365), _e2436, _e2365); + let _e2444 = fma(-(_e743.z), _e318.member_3, 1f); + let _e2448 = (((_e2385 * _e2385) / (pow(fma((_e2396 * _e2396), fma(_e2385, _e2385, -1f), 1f), 2f) * 3.1415927f)) * ((_e2409 / fma(_e2409, _e2418, _e2416)) * (_e2413 / fma(_e2413, _e2418, _e2416)))); + let _e2453 = fma((4f * _e2409), _e2413, 0.0001f); + phi_3076_ = vec3(fma((fma((((1f - _e2437) * _e2444) * _e1475), 0.31830987f, ((_e2448 * _e2437) / _e2453)) * (_e2276.member_4.x * _e2359)), _e2413, _e2040.x), fma((fma((((1f - _e2438) * _e2444) * _e1477), 0.31830987f, ((_e2448 * _e2438) / _e2453)) * (_e2276.member_4.y * _e2359)), _e2413, _e2040.y), fma((fma((((1f - _e2439) * _e2444) * _e1479), 0.31830987f, ((_e2448 * _e2439) / _e2453)) * (_e2276.member_4.z * _e2359)), _e2413, _e2040.z)); + } + let _e2474 = phi_3076_; + phi_3077_ = false; + phi_3078_ = select(true, false, _e2316); + phi_3079_ = _e2474; + phi_3080_ = select(false, true, _e2316); + break; + } + default: { + phi_3077_ = true; + phi_3078_ = false; + phi_3079_ = vec3(); + phi_3080_ = false; + break; + } + } + let _e2901 = phi_3077_; + let _e2903 = phi_3078_; + let _e2905 = phi_3079_; + let _e2907 = phi_3080_; + if _e2903 { + phi_3085_ = _e2053; + } else { + phi_3085_ = type_24(); + } + let _e2909 = phi_3085_; + let _e2914 = select(_e2907, false, _e2903); + if _e2914 { + phi_3093_ = _e2053; + } else { + phi_3093_ = _e2909; + } + let _e2916 = phi_3093_; + phi_3097_ = select(select(false, true, _e2903), true, _e2914); + phi_3098_ = _e2916; + phi_3099_ = select(select(vec3(), _e2905, vec3(_e2903)), _e2040, vec3(_e2914)); + phi_3100_ = select(select(_e2901, false, _e2903), false, _e2914); + } + let _e2922 = phi_3097_; + let _e2924 = phi_3098_; + let _e2926 = phi_3099_; + let _e2928 = phi_3100_; + phi_3101_ = _e2928; + phi_3102_ = select(false, true, _e2073); + phi_3103_ = _e2922; + phi_3104_ = _e2924; + phi_3105_ = _e2926; + break; + } + default: { + phi_3101_ = true; + phi_3102_ = false; + phi_3103_ = false; + phi_3104_ = type_24(); + phi_3105_ = vec3(); + break; + } + } + let _e2931 = phi_3101_; + let _e2933 = phi_3102_; + let _e2935 = phi_3103_; + let _e2937 = phi_3104_; + let _e2939 = phi_3105_; + if _e2931 { + phi_3111_ = type_24(); + } else { + phi_3111_ = _e2937; + } + let _e2941 = phi_3111_; + let _e2942 = select(_e2933, false, _e2931); + if _e2942 { + let _e2949 = fma(fma(_e1464, _e122.x, -0.04f), _e1487, 0.04f); + let _e2950 = fma(fma(_e1467, _e122.y, -0.04f), _e1487, 0.04f); + let _e2951 = fma(fma(_e1470, _e122.z, -0.04f), _e1487, 0.04f); + let _e2963 = fma(-(_e743.y), _e318.member_4, 1f); + let _e2970 = (1f - max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f)); + let _e2972 = select(_e2970, 0f, (_e2970 < 0f)); + let _e2975 = pow(select(_e2972, 1f, (_e2972 > 1f)), 5f); + let _e2976 = fma((max(_e2963, _e2949) - _e2949), _e2975, _e2949); + let _e2977 = fma((max(_e2963, _e2950) - _e2950), _e2975, _e2950); + let _e2978 = fma((max(_e2963, _e2951) - _e2951), _e2975, _e2951); + let _e2983 = fma(-(_e743.z), _e318.member_3, 1f); + phi_3215_ = vec4(fma(_e1497, _e318.member_1, fma(fma(((1f - _e2976) * _e2983), (_e1506.x * _e1475), (_e1846.x * fma(_e2976, _e1862.x, _e1862.y))), _e1491, _e2040.x)), fma(_e1499, _e318.member_1, fma(fma(((1f - _e2977) * _e2983), (_e1506.y * _e1477), (_e1846.y * fma(_e2977, _e1862.x, _e1862.y))), _e1491, _e2040.y)), fma(_e1501, _e318.member_1, fma(fma(((1f - _e2978) * _e2983), (_e1506.z * _e1479), (_e1846.z * fma(_e2978, _e1862.x, _e1862.y))), _e1491, _e2040.z)), 1f); + phi_2209_ = type_24(); + } else { + phi_3215_ = vec4(); + phi_2209_ = _e2941; + } + let _e3010 = phi_3215_; + let _e3012 = phi_2209_; + local_4 = select(false, true, _e2942); + local_5 = _e3010; + continue; + continuing { + phi_2208_ = _e3012; + phi_2211_ = select(select(_e2939, vec3(), vec3(_e2931)), vec3(), vec3(_e2942)); + break if !(select(select(_e2935, false, _e2931), false, _e2942)); + } + } + let _e3242 = local_4; + phi_3232_ = _e3242; + let _e3245 = local_5; + phi_3233_ = _e3245; + } else { + phi_3232_ = true; + phi_3233_ = (vec4((_e122.x * _e533.x), (_e122.y * _e533.y), (_e122.z * _e533.z), (_e122.w * _e533.w)) * _e318.member_2); + } + let _e3019 = phi_3232_; + let _e3021 = phi_3233_; + if _e3019 { + global_19 = _e3021; + } + break; + } + case 1: { + let _e2004 = sqrt(fma(_e123.x, _e123.x, (_e123.y * _e123.y))); + if (_e2004 == 0f) { + phi_5837_ = vec3(0f, 0f, 0f); + } else { + phi_5837_ = (vec3(_e123.x, _e123.y, 0f) * (1f / _e2004)); + } + let _e2009 = phi_5837_; + global_19 = vec4(((_e2009.x + 1f) * 0.5f), ((_e2009.y + 1f) * 0.5f), ((_e2009.z + 1f) * 0.5f), 1f); + break; + } + case 2: { + let _e1983 = sqrt(fma(_e124.x, _e124.x, (_e124.y * _e124.y))); + if (_e1983 == 0f) { + phi_5886_ = vec3(0f, 0f, 0f); + } else { + phi_5886_ = (vec3(_e124.x, _e124.y, 0f) * (1f / _e1983)); + } + let _e1988 = phi_5886_; + global_19 = vec4(((_e1988.x + 1f) * 0.5f), ((_e1988.y + 1f) * 0.5f), ((_e1988.z + 1f) * 0.5f), 1f); + break; + } + case 3: { + if _e1825 { + phi_5935_ = vec3(0f, 0f, 0f); + } else { + phi_5935_ = (_e1460 * (1f / _e1824)); + } + let _e1967 = phi_5935_; + global_19 = vec4(((_e1967.x + 1f) * 0.5f), ((_e1967.y + 1f) * 0.5f), ((_e1967.z + 1f) * 0.5f), 1f); + break; + } + case 4: { + global_19 = _e122; + break; + } + case 5: { + let _e1948 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); + if (_e1948 == 0f) { + phi_5984_ = vec3(0f, 0f, 0f); + } else { + phi_5984_ = (_e125 * (1f / _e1948)); + } + let _e1953 = phi_5984_; + global_19 = vec4(((_e1953.x + 1f) * 0.5f), ((_e1953.y + 1f) * 0.5f), ((_e1953.z + 1f) * 0.5f), 1f); + break; + } + case 6: { + let _e1926 = sqrt(fma(_e1458.z, _e1458.z, fma(_e1458.x, _e1458.x, (_e1458.y * _e1458.y)))); + if (_e1926 == 0f) { + phi_6033_ = vec3(0f, 0f, 0f); + } else { + phi_6033_ = (_e1458 * (1f / _e1926)); + } + let _e1931 = phi_6033_; + global_19 = vec4(((_e1931.x + 1f) * 0.5f), ((_e1931.y + 1f) * 0.5f), ((_e1931.z + 1f) * 0.5f), 1f); + break; + } + case 7: { + let _e1904 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); + if (_e1904 == 0f) { + phi_6082_ = vec3(0f, 0f, 0f); + } else { + phi_6082_ = (_e126 * (1f / _e1904)); + } + let _e1909 = phi_6082_; + global_19 = vec4(((_e1909.x + 1f) * 0.5f), ((_e1909.y + 1f) * 0.5f), ((_e1909.z + 1f) * 0.5f), 1f); + break; + } + case 8: { + let _e1882 = sqrt(fma(_e127.z, _e127.z, fma(_e127.x, _e127.x, (_e127.y * _e127.y)))); + if (_e1882 == 0f) { + phi_6131_ = vec3(0f, 0f, 0f); + } else { + phi_6131_ = (_e127 * (1f / _e1882)); + } + let _e1887 = phi_6131_; + global_19 = vec4(((_e1887.x + 1f) * 0.5f), ((_e1887.y + 1f) * 0.5f), ((_e1887.z + 1f) * 0.5f), 1f); + break; + } + case 9: { + global_19 = vec4(_e1506.x, _e1506.y, _e1506.z, 1f); + break; + } + case 10: { + global_19 = vec4(_e1846.x, _e1846.y, _e1846.z, 1f); + break; + } + case 11: { + global_19 = vec4(_e1862.x, _e1862.y, 1f, 1f); + break; + } + case 12: { + global_19 = (vec4(_e1464, _e1467, _e1470, (_e533.w * _e318.member_2.w)) * _e122); + break; + } + case 13: { + global_19 = vec4(_e1484, _e1484, _e1484, 1f); + break; + } + case 14: { + global_19 = vec4(_e1487, _e1487, _e1487, 1f); + break; + } + case 15: { + global_19 = vec4(_e1491, _e1491, _e1491, 1f); + break; + } + case 16: { + global_19 = vec4((_e1497 * _e318.member_1), (_e1499 * _e318.member_1), (_e1501 * _e318.member_1), 1f); + break; + } + case 17: { + global_19 = vec4(_e1373.x, _e1373.y, _e1373.z, 1f); + break; + } + case 18: { + global_19 = vec4(_e318.member.x, _e318.member.y, _e318.member.z, 1f); + break; + } + case 19: { + global_19 = vec4(_e318.member_1, _e318.member_1, _e318.member_1, 1f); + break; + } + default: { + break; + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + +@fragment +fn stagerenderlet_fragment(@location(0) @interpolate(flat) param: u32, @location(1) @interpolate(flat) param_1: u32, @location(2) @interpolate(flat) param_2: u32, @location(3) param_3: vec4, @location(4) param_4: vec2, @location(5) param_5: vec2, @location(6) param_6: vec3, @location(7) param_7: vec3, @location(8) param_8: vec3, @location(9) param_9: vec3) -> @location(0) vec4 { + global_1 = param; + global_2 = param_1; + global_3 = param_2; + global_4 = param_3; + global_5 = param_4; + global_6 = param_5; + global_7 = param_6; + global_8 = param_7; + global_9 = param_8; + global_10 = param_9; + function(); + let _e21 = global_19; + return _e21; +} diff --git a/crates/renderling/shaders/stage-renderlet_vertex.spv b/crates/renderling/shaders/stage-renderlet_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..a1b8d4e7917b1b260a107ffd4400b95c07dcb4b9 GIT binary patch literal 43336 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, +} + +struct type_20 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_21 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_22 { + member: type_20, + member_1: type_20, + member_2: type_21, + member_3: vec3, +} + +struct type_24 { + member: u32, + member_1: u32, +} + +struct type_27 { + member: vec3, + member_1: vec4, + member_2: vec3, +} + +struct type_28 { + member: vec3, + member_1: vec3, + member_2: vec3, +} + +struct type_31 { + member: vec3, + member_1: vec4, + member_2: vec3, + member_3: vec4, + member_4: array, + member_5: array, + member_6: vec2, + member_7: vec2, +} + +struct type_34 { + member: type_24, + member_1: type_24, +} + +struct VertexOutput { + @location(0) @interpolate(flat) member: u32, + @location(1) @interpolate(flat) member_1: u32, + @location(2) @interpolate(flat) member_2: u32, + @location(3) member_3: vec4, + @location(4) member_4: vec2, + @location(5) member_5: vec2, + @location(6) member_6: vec3, + @location(7) member_7: vec3, + @location(8) member_8: vec3, + @location(9) member_9: vec3, + @builtin(position) member_10: vec4, +} + +var global: u32; +var global_1: vec4 = vec4(0f, 0f, 0f, 1f); +@group(0) @binding(0) +var global_2: type_12; +var global_3: u32; +var global_4: u32; +var global_5: u32; +var global_6: u32; +var global_7: vec4; +var global_8: vec2; +var global_9: vec2; +var global_10: type_20 = type_20(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); +var global_11: vec3; +var global_12: vec3; +var global_13: vec3; +var global_14: vec3; + +fn function() { + var local: array; + var local_1: array; + var local_2: array, 8>; + var local_3: array, 6>; + var local_4: array; + var local_5: array; + var phi_742_: u32; + var phi_2870_: bool; + var phi_749_: u32; + var phi_750_: u32; + var phi_760_: u32; + var phi_842_: type_24; + var phi_858_: type_24; + var phi_859_: type_24; + var phi_872_: type_24; + var phi_888_: type_24; + var phi_889_: type_24; + var phi_902_: type_24; + var phi_905_: type_31; + var phi_920_: type_24; + var phi_921_: type_24; + var phi_2901_: bool; + var phi_1042_: type_34; + var phi_1045_: type_24; + var phi_1048_: type_20; + var phi_1063_: type_24; + var phi_1064_: type_24; + var phi_1098_: bool; + var phi_1100_: bool; + var phi_1101_: bool; + var phi_1102_: bool; + var phi_1103_: bool; + var phi_1137_: bool; + var phi_1139_: bool; + var phi_1140_: bool; + var phi_1141_: bool; + var phi_1142_: bool; + var phi_1176_: bool; + var phi_1178_: bool; + var phi_1179_: bool; + var phi_1180_: bool; + var phi_1181_: bool; + var phi_1215_: bool; + var phi_1217_: bool; + var phi_1218_: bool; + var phi_1219_: bool; + var phi_1220_: bool; + var phi_1225_: bool; + var phi_1227_: bool; + var phi_1228_: bool; + var phi_1229_: bool; + var phi_1230_: bool; + var phi_1238_: type_20; + var phi_3005_: bool; + var phi_3006_: bool; + var phi_3069_: vec4; + var phi_3099_: vec4; + var phi_3101_: vec4; + var phi_3112_: type_27; + var phi_3114_: type_27; + var phi_3116_: bool; + var phi_3117_: type_27; + var phi_3118_: type_27; + var phi_3122_: type_27; + var phi_1256_: u32; + var phi_3218_: bool; + var phi_1265_: u32; + var phi_3242_: bool; + var phi_1314_: type_27; + var phi_1324_: u32; + var phi_3267_: bool; + var phi_1397_: type_20; + var phi_1635_: type_24; + var phi_1636_: type_20; + var phi_1637_: bool; + var phi_1638_: type_24; + var phi_1639_: type_20; + var phi_1640_: bool; + var phi_1641_: type_27; + var phi_1642_: bool; + var phi_1046_: type_24; + var phi_1049_: type_20; + var phi_1643_: bool; + var phi_1644_: type_27; + var phi_1646_: bool; + var phi_1647_: type_27; + var phi_1648_: bool; + var phi_3334_: bool; + var phi_1701_: type_27; + var phi_1703_: type_27; + var phi_1750_: vec3; + var phi_3379_: vec3; + var phi_3461_: vec3; + var phi_3496_: vec3; + var phi_3509_: bool; + var phi_2074_: type_24; + var phi_2090_: type_24; + var phi_2091_: type_24; + var phi_2104_: type_24; + var phi_2120_: type_24; + var phi_2121_: type_24; + var phi_2147_: type_22; + var phi_2148_: bool; + var phi_2105_: type_24; + var phi_2168_: type_22; + var phi_2169_: bool; + var phi_2075_: type_24; + var phi_2174_: type_22; + var phi_2235_: u32; + var phi_3766_: bool; + var phi_2253_: type_24; + var phi_3792_: u32; + var phi_3811_: bool; + var phi_2303_: type_28; + var phi_2313_: u32; + var phi_3833_: bool; + var phi_2321_: f32; + var phi_2375_: bool; + var phi_903_: type_24; + var phi_906_: type_31; + var phi_2383_: bool; + var phi_873_: type_24; + var phi_2390_: bool; + var phi_843_: type_24; + var local_6: bool; + var local_7: type_27; + var local_8: type_22; + var local_9: type_22; + + let _e97 = global_3; + let _e98 = global; + let _e100 = arrayLength((&global_2.member)); + let _e103 = global_2.member[_e97]; + let _e108 = global_2.member[(_e97 + 1u)]; + let _e112 = global_2.member[(_e97 + 2u)]; + let _e116 = global_2.member[(_e97 + 7u)]; + let _e120 = global_2.member[(_e97 + 8u)]; + let _e124 = global_2.member[(_e97 + 9u)]; + let _e128 = global_2.member[(_e97 + 10u)]; + let _e132 = global_2.member[(_e97 + 11u)]; + let _e136 = global_2.member[(_e97 + 12u)]; + let _e140 = global_2.member[(_e97 + 13u)]; + let _e144 = global_2.member[(_e97 + 14u)]; + let _e148 = global_2.member[(_e97 + 15u)]; + let _e152 = global_2.member[(_e97 + 16u)]; + let _e156 = global_2.member[(_e97 + 17u)]; + if (_e103 == 1u) { + global_4 = _e124; + global_5 = _e132; + global_6 = _e156; + if (_e116 == 4294967295u) { + phi_750_ = _e98; + } else { + if (_e98 >= _e120) { + phi_742_ = 4294967295u; + } else { + phi_742_ = (_e116 + _e98); + } + let _e161 = phi_742_; + if (_e100 >= 1u) { + phi_2870_ = (_e161 <= (_e100 - 1u)); + } else { + phi_2870_ = false; + } + let _e166 = phi_2870_; + if _e166 { + let _e169 = global_2.member[_e161]; + phi_749_ = _e169; + } else { + phi_749_ = 0u; + } + let _e171 = phi_749_; + phi_750_ = _e171; + } + let _e173 = phi_750_; + if (_e173 >= _e112) { + phi_760_ = 4294967295u; + } else { + phi_760_ = (_e108 + (26u * _e173)); + } + let _e178 = phi_760_; + let _e181 = global_2.member[_e178]; + let _e186 = global_2.member[(_e178 + 1u)]; + let _e191 = global_2.member[(_e178 + 2u)]; + let _e197 = global_2.member[(_e178 + 3u)]; + let _e202 = global_2.member[(_e178 + 4u)]; + let _e207 = global_2.member[(_e178 + 5u)]; + let _e212 = global_2.member[(_e178 + 6u)]; + let _e218 = global_2.member[(_e178 + 7u)]; + let _e223 = global_2.member[(_e178 + 8u)]; + let _e229 = global_2.member[(_e178 + 9u)]; + let _e234 = global_2.member[(_e178 + 10u)]; + let _e240 = global_2.member[(_e178 + 11u)]; + let _e245 = global_2.member[(_e178 + 12u)]; + let _e250 = global_2.member[(_e178 + 13u)]; + let _e256 = global_2.member[(_e178 + 14u)]; + let _e261 = global_2.member[(_e178 + 15u)]; + let _e266 = global_2.member[(_e178 + 16u)]; + let _e271 = global_2.member[(_e178 + 17u)]; + local_5 = array(0u, 0u, 0u, 0u); + phi_842_ = type_24(0u, 4u); + loop { + let _e276 = phi_842_; + if (_e276.member < _e276.member_1) { + phi_858_ = type_24((_e276.member + 1u), _e276.member_1); + phi_859_ = type_24(1u, _e276.member); + } else { + phi_858_ = _e276; + phi_859_ = type_24(0u, type_24().member_1); + } + let _e289 = phi_858_; + let _e291 = phi_859_; + switch bitcast(_e291.member) { + case 0: { + let _e295 = local_5; + local_4 = array(0f, 0f, 0f, 0f); + phi_872_ = type_24(0u, 4u); + loop { + let _e298 = phi_872_; + if (_e298.member < _e298.member_1) { + phi_888_ = type_24((_e298.member + 1u), _e298.member_1); + phi_889_ = type_24(1u, _e298.member); + } else { + phi_888_ = _e298; + phi_889_ = type_24(0u, type_24().member_1); + } + let _e311 = phi_888_; + let _e313 = phi_889_; + switch bitcast(_e313.member) { + case 0: { + let _e317 = local_4; + phi_902_ = type_24(0u, _e144); + phi_905_ = type_31(vec3(bitcast(_e181), bitcast(_e186), bitcast(_e191)), vec4(bitcast(_e197), bitcast(_e202), bitcast(_e207), bitcast(_e212)), vec3(bitcast(_e240), bitcast(_e245), bitcast(_e250)), vec4(bitcast(_e256), bitcast(_e261), bitcast(_e266), bitcast(_e271)), _e295, _e317, vec2(bitcast(_e218), bitcast(_e223)), vec2(bitcast(_e229), bitcast(_e234))); + loop { + let _e321 = phi_902_; + let _e323 = phi_905_; + if (_e321.member < _e321.member_1) { + phi_920_ = type_24((_e321.member + 1u), _e321.member_1); + phi_921_ = type_24(1u, _e321.member); + } else { + phi_920_ = _e321; + phi_921_ = type_24(0u, type_24().member_1); + } + let _e336 = phi_920_; + let _e338 = phi_921_; + switch bitcast(_e338.member) { + case 0: { + global_7 = _e323.member_1; + global_8 = _e323.member_6; + global_9 = _e323.member_7; + let _e348 = global_2.member[(_e156 + 6u)]; + if (_e348 == 1u) { + let _e351 = ((_e136 == 4294967295u) != true); + if _e351 { + if (_e100 >= 4u) { + phi_2901_ = (_e136 <= (_e100 - 4u)); + } else { + phi_2901_ = false; + } + let _e356 = phi_2901_; + if _e356 { + let _e359 = global_2.member[_e136]; + let _e363 = global_2.member[(_e136 + 1u)]; + let _e367 = global_2.member[(_e136 + 2u)]; + let _e371 = global_2.member[(_e136 + 3u)]; + phi_1042_ = type_34(type_24(_e359, _e363), type_24(_e367, _e371)); + } else { + phi_1042_ = type_34(type_24(4294967295u, 0u), type_24(4294967295u, 0u)); + } + let _e376 = phi_1042_; + local = _e323.member_5; + phi_1045_ = type_24(0u, 4u); + phi_1048_ = type_20(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + loop { + let _e379 = phi_1045_; + let _e381 = phi_1048_; + if (_e379.member < _e379.member_1) { + phi_1063_ = type_24((_e379.member + 1u), _e379.member_1); + phi_1064_ = type_24(1u, _e379.member); + } else { + phi_1063_ = _e379; + phi_1064_ = type_24(0u, type_24().member_1); + } + let _e394 = phi_1063_; + let _e396 = phi_1064_; + switch bitcast(_e396.member) { + case 0: { + let _e404 = global_10.member[0u]; + if (_e381.member.x == _e404) { + let _e410 = global_10.member[1u]; + if (_e381.member.y == _e410) { + let _e416 = global_10.member[2u]; + let _e417 = (_e381.member.z == _e416); + if _e417 { + let _e422 = global_10.member[3u]; + phi_1098_ = (_e381.member.w == _e422); + } else { + phi_1098_ = bool(); + } + let _e425 = phi_1098_; + phi_1100_ = _e425; + phi_1101_ = select(true, false, _e417); + } else { + phi_1100_ = bool(); + phi_1101_ = true; + } + let _e428 = phi_1100_; + let _e430 = phi_1101_; + phi_1102_ = _e428; + phi_1103_ = _e430; + } else { + phi_1102_ = bool(); + phi_1103_ = true; + } + let _e432 = phi_1102_; + let _e434 = phi_1103_; + if select(_e432, false, _e434) { + let _e440 = global_10.member_1[0u]; + if (_e381.member_1.x == _e440) { + let _e446 = global_10.member_1[1u]; + if (_e381.member_1.y == _e446) { + let _e452 = global_10.member_1[2u]; + let _e453 = (_e381.member_1.z == _e452); + if _e453 { + let _e458 = global_10.member_1[3u]; + phi_1137_ = (_e381.member_1.w == _e458); + } else { + phi_1137_ = bool(); + } + let _e461 = phi_1137_; + phi_1139_ = _e461; + phi_1140_ = select(true, false, _e453); + } else { + phi_1139_ = bool(); + phi_1140_ = true; + } + let _e464 = phi_1139_; + let _e466 = phi_1140_; + phi_1141_ = _e464; + phi_1142_ = _e466; + } else { + phi_1141_ = bool(); + phi_1142_ = true; + } + let _e468 = phi_1141_; + let _e470 = phi_1142_; + if select(_e468, false, _e470) { + let _e476 = global_10.member_2[0u]; + if (_e381.member_2.x == _e476) { + let _e482 = global_10.member_2[1u]; + if (_e381.member_2.y == _e482) { + let _e488 = global_10.member_2[2u]; + let _e489 = (_e381.member_2.z == _e488); + if _e489 { + let _e494 = global_10.member_2[3u]; + phi_1176_ = (_e381.member_2.w == _e494); + } else { + phi_1176_ = bool(); + } + let _e497 = phi_1176_; + phi_1178_ = _e497; + phi_1179_ = select(true, false, _e489); + } else { + phi_1178_ = bool(); + phi_1179_ = true; + } + let _e500 = phi_1178_; + let _e502 = phi_1179_; + phi_1180_ = _e500; + phi_1181_ = _e502; + } else { + phi_1180_ = bool(); + phi_1181_ = true; + } + let _e504 = phi_1180_; + let _e506 = phi_1181_; + let _e507 = select(_e504, false, _e506); + if _e507 { + let _e512 = global_10.member_3[0u]; + if (_e381.member_3.x == _e512) { + let _e518 = global_10.member_3[1u]; + if (_e381.member_3.y == _e518) { + let _e524 = global_10.member_3[2u]; + let _e525 = (_e381.member_3.z == _e524); + if _e525 { + let _e530 = global_10.member_3[3u]; + phi_1215_ = (_e381.member_3.w == _e530); + } else { + phi_1215_ = bool(); + } + let _e533 = phi_1215_; + phi_1217_ = _e533; + phi_1218_ = select(true, false, _e525); + } else { + phi_1217_ = bool(); + phi_1218_ = true; + } + let _e536 = phi_1217_; + let _e538 = phi_1218_; + phi_1219_ = _e536; + phi_1220_ = _e538; + } else { + phi_1219_ = bool(); + phi_1220_ = true; + } + let _e540 = phi_1219_; + let _e542 = phi_1220_; + phi_1225_ = select(_e540, false, _e542); + } else { + phi_1225_ = bool(); + } + let _e545 = phi_1225_; + phi_1227_ = _e545; + phi_1228_ = select(true, false, _e507); + } else { + phi_1227_ = bool(); + phi_1228_ = true; + } + let _e548 = phi_1227_; + let _e550 = phi_1228_; + phi_1229_ = _e548; + phi_1230_ = _e550; + } else { + phi_1229_ = bool(); + phi_1230_ = true; + } + let _e552 = phi_1229_; + let _e554 = phi_1230_; + if select(_e552, false, _e554) { + phi_1238_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); + } else { + phi_1238_ = _e381; + } + let _e557 = phi_1238_; + let _e580 = fma(_e557.member_2.z, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.z))); + let _e583 = fma(_e557.member_2.y, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.y))); + let _e586 = fma(_e557.member_2.y, _e557.member_3.z, -((_e557.member_2.z * _e557.member_3.y))); + let _e589 = fma(_e557.member_2.x, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.x))); + let _e592 = fma(_e557.member_2.x, _e557.member_3.z, -((_e557.member_2.z * _e557.member_3.x))); + let _e595 = fma(_e557.member_2.x, _e557.member_3.y, -((_e557.member_2.y * _e557.member_3.x))); + let _e617 = fma(-(_e557.member.w), fma(_e557.member_1.z, _e595, fma(_e557.member_1.x, _e586, -((_e557.member_1.y * _e592)))), fma(_e557.member.z, fma(_e557.member_1.w, _e595, fma(_e557.member_1.x, _e583, -((_e557.member_1.y * _e589)))), fma(_e557.member.x, fma(_e557.member_1.w, _e586, fma(_e557.member_1.y, _e580, -((_e557.member_1.z * _e583)))), -((_e557.member.y * fma(_e557.member_1.w, _e592, fma(_e557.member_1.x, _e580, -((_e557.member_1.z * _e589))))))))); + if (_e617 == 0f) { + phi_3116_ = true; + phi_3117_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); + phi_3118_ = type_27(); + } else { + let _e626 = (sqrt(fma(_e557.member.w, _e557.member.w, fma(_e557.member.z, _e557.member.z, fma(_e557.member.x, _e557.member.x, (_e557.member.y * _e557.member.y))))) * select(-1f, 1f, (_e617 >= 0f))); + let _e631 = sqrt(fma(_e557.member_1.w, _e557.member_1.w, fma(_e557.member_1.z, _e557.member_1.z, fma(_e557.member_1.x, _e557.member_1.x, (_e557.member_1.y * _e557.member_1.y))))); + let _e636 = sqrt(fma(_e557.member_2.w, _e557.member_2.w, fma(_e557.member_2.z, _e557.member_2.z, fma(_e557.member_2.x, _e557.member_2.x, (_e557.member_2.y * _e557.member_2.y))))); + let _e639 = (_e631 != 0f); + if (_e626 != 0f) { + phi_3005_ = select(bool(), (_e636 != 0f), _e639); + phi_3006_ = select(true, false, _e639); + } else { + phi_3005_ = bool(); + phi_3006_ = true; + } + let _e644 = phi_3005_; + let _e646 = phi_3006_; + let _e647 = select(_e644, false, _e646); + if _e647 { + let _e648 = (1f / _e626); + let _e649 = (1f / _e631); + let _e650 = (1f / _e636); + let _e651 = (_e557.member.x * _e648); + let _e652 = (_e557.member.z * _e648); + let _e653 = (_e557.member_1.x * _e649); + let _e654 = (_e557.member_2.x * _e650); + let _e655 = (_e557.member_2.y * _e650); + if ((_e557.member_2.z * _e650) <= 0f) { + let _e659 = fma(_e557.member_1.y, _e649, -(_e651)); + let _e661 = fma(-(_e557.member_2.z), _e650, 1f); + if (_e659 <= 0f) { + let _e663 = (_e661 - _e659); + let _e665 = (0.5f / sqrt(_e663)); + phi_3069_ = vec4((_e663 * _e665), (fma(_e557.member.y, _e648, _e653) * _e665), (fma(_e557.member.z, _e648, _e654) * _e665), (fma(_e557.member_1.z, _e649, -(_e655)) * _e665)); + } else { + let _e675 = (_e661 + _e659); + let _e677 = (0.5f / sqrt(_e675)); + phi_3069_ = vec4((fma(_e557.member.y, _e648, _e653) * _e677), (_e675 * _e677), (fma(_e557.member_1.z, _e649, _e655) * _e677), (fma(_e557.member_2.x, _e650, -(_e652)) * _e677)); + } + let _e688 = phi_3069_; + phi_3101_ = _e688; + } else { + let _e689 = fma(_e557.member_1.y, _e649, _e651); + let _e690 = fma(_e557.member_2.z, _e650, 1f); + if (_e689 <= 0f) { + let _e692 = (_e690 - _e689); + let _e694 = (0.5f / sqrt(_e692)); + phi_3099_ = vec4((fma(_e557.member.z, _e648, _e654) * _e694), (fma(_e557.member_1.z, _e649, _e655) * _e694), (_e692 * _e694), (fma(_e557.member.y, _e648, -(_e653)) * _e694)); + } else { + let _e704 = (_e690 + _e689); + let _e706 = (0.5f / sqrt(_e704)); + phi_3099_ = vec4((fma(_e557.member_1.z, _e649, -(_e655)) * _e706), (fma(_e557.member_2.x, _e650, -(_e652)) * _e706), (fma(_e557.member.y, _e648, -(_e653)) * _e706), (_e704 * _e706)); + } + let _e719 = phi_3099_; + phi_3101_ = _e719; + } + let _e721 = phi_3101_; + phi_3112_ = type_27(vec3(_e626, _e631, _e636), _e721, vec3(_e557.member_3.x, _e557.member_3.y, _e557.member_3.z)); + phi_3114_ = type_27(); + } else { + phi_3112_ = type_27(); + phi_3114_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); + } + let _e725 = phi_3112_; + let _e727 = phi_3114_; + phi_3116_ = select(true, false, _e647); + phi_3117_ = _e727; + phi_3118_ = _e725; + } + let _e730 = phi_3116_; + let _e732 = phi_3117_; + let _e734 = phi_3118_; + if _e730 { + phi_3122_ = _e732; + } else { + phi_3122_ = _e734; + } + let _e736 = phi_3122_; + phi_1640_ = true; + phi_1641_ = type_27(_e736.member_2, _e736.member_1, _e736.member); + phi_1642_ = false; + phi_1046_ = type_24(); + phi_1049_ = type_20(); + break; + } + case 1: { + local_1 = _e323.member_4; + let _e742 = (_e396.member_1 < 4u); + if _e742 { + let _e744 = local_1[_e396.member_1]; + if (_e744 >= _e376.member.member_1) { + phi_1256_ = 4294967295u; + } else { + phi_1256_ = (_e376.member.member + _e744); + } + let _e752 = phi_1256_; + if (_e100 >= 1u) { + phi_3218_ = (_e752 <= (_e100 - 1u)); + } else { + phi_3218_ = false; + } + let _e757 = phi_3218_; + if _e757 { + let _e760 = global_2.member[_e752]; + phi_1265_ = _e760; + } else { + phi_1265_ = 4294967295u; + } + let _e762 = phi_1265_; + if (_e100 >= 10u) { + phi_3242_ = (_e762 <= (_e100 - 10u)); + } else { + phi_3242_ = false; + } + let _e767 = phi_3242_; + if _e767 { + let _e770 = global_2.member[_e762]; + let _e775 = global_2.member[(_e762 + 1u)]; + let _e780 = global_2.member[(_e762 + 2u)]; + let _e786 = global_2.member[(_e762 + 3u)]; + let _e791 = global_2.member[(_e762 + 4u)]; + let _e796 = global_2.member[(_e762 + 5u)]; + let _e801 = global_2.member[(_e762 + 6u)]; + let _e807 = global_2.member[(_e762 + 7u)]; + let _e812 = global_2.member[(_e762 + 8u)]; + let _e817 = global_2.member[(_e762 + 9u)]; + phi_1314_ = type_27(vec3(bitcast(_e770), bitcast(_e775), bitcast(_e780)), vec4(bitcast(_e786), bitcast(_e791), bitcast(_e796), bitcast(_e801)), vec3(bitcast(_e807), bitcast(_e812), bitcast(_e817))); + } else { + phi_1314_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e822 = phi_1314_; + if (_e744 >= _e376.member_1.member_1) { + phi_1324_ = 4294967295u; + } else { + phi_1324_ = (_e376.member_1.member + (16u * _e744)); + } + let _e831 = phi_1324_; + if (_e100 >= 16u) { + phi_3267_ = (_e831 <= (_e100 - 16u)); + } else { + phi_3267_ = false; + } + let _e836 = phi_3267_; + if _e836 { + let _e839 = global_2.member[_e831]; + let _e844 = global_2.member[(_e831 + 1u)]; + let _e849 = global_2.member[(_e831 + 2u)]; + let _e854 = global_2.member[(_e831 + 3u)]; + let _e860 = global_2.member[(_e831 + 4u)]; + let _e865 = global_2.member[(_e831 + 5u)]; + let _e870 = global_2.member[(_e831 + 6u)]; + let _e875 = global_2.member[(_e831 + 7u)]; + let _e881 = global_2.member[(_e831 + 8u)]; + let _e886 = global_2.member[(_e831 + 9u)]; + let _e891 = global_2.member[(_e831 + 10u)]; + let _e896 = global_2.member[(_e831 + 11u)]; + let _e902 = global_2.member[(_e831 + 12u)]; + let _e907 = global_2.member[(_e831 + 13u)]; + let _e912 = global_2.member[(_e831 + 14u)]; + let _e917 = global_2.member[(_e831 + 15u)]; + phi_1397_ = type_20(vec4(bitcast(_e839), bitcast(_e844), bitcast(_e849), bitcast(_e854)), vec4(bitcast(_e860), bitcast(_e865), bitcast(_e870), bitcast(_e875)), vec4(bitcast(_e881), bitcast(_e886), bitcast(_e891), bitcast(_e896)), vec4(bitcast(_e902), bitcast(_e907), bitcast(_e912), bitcast(_e917))); + } else { + phi_1397_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); + } + let _e922 = phi_1397_; + let _e930 = (_e822.member_1.x + _e822.member_1.x); + let _e931 = (_e822.member_1.y + _e822.member_1.y); + let _e932 = (_e822.member_1.z + _e822.member_1.z); + let _e934 = (_e822.member_1.z * _e932); + let _e935 = (_e822.member_1.w * _e930); + let _e936 = (_e822.member_1.w * _e931); + let _e937 = (_e822.member_1.w * _e932); + let _e957 = (vec4((1f - fma(_e822.member_1.y, _e931, _e934)), fma(_e822.member_1.x, _e931, _e937), fma(_e822.member_1.x, _e932, -(_e936)), 0f) * _e822.member_2.x); + let _e959 = (vec4(fma(_e822.member_1.x, _e931, -(_e937)), (1f - fma(_e822.member_1.x, _e930, _e934)), fma(_e822.member_1.y, _e932, _e935), 0f) * _e822.member_2.y); + let _e961 = (vec4(fma(_e822.member_1.x, _e932, _e936), fma(_e822.member_1.y, _e932, -(_e935)), (1f - fma(_e822.member_1.x, _e930, (_e822.member_1.y * _e931))), 0f) * _e822.member_2.z); + if _e742 { + let _e1066 = local[_e396.member_1]; + phi_1635_ = _e394; + phi_1636_ = type_20((_e381.member + (vec4(fma(_e822.member.x, _e922.member.w, fma(_e961.x, _e922.member.z, fma(_e957.x, _e922.member.x, (_e959.x * _e922.member.y)))), fma(_e822.member.y, _e922.member.w, fma(_e961.y, _e922.member.z, fma(_e957.y, _e922.member.x, (_e959.y * _e922.member.y)))), fma(_e822.member.z, _e922.member.w, fma(_e961.z, _e922.member.z, fma(_e957.z, _e922.member.x, (_e959.z * _e922.member.y)))), (fma(_e961.w, _e922.member.z, fma(_e957.w, _e922.member.x, (_e959.w * _e922.member.y))) + _e922.member.w)) * _e1066)), (_e381.member_1 + (vec4(fma(_e822.member.x, _e922.member_1.w, fma(_e961.x, _e922.member_1.z, fma(_e957.x, _e922.member_1.x, (_e959.x * _e922.member_1.y)))), fma(_e822.member.y, _e922.member_1.w, fma(_e961.y, _e922.member_1.z, fma(_e957.y, _e922.member_1.x, (_e959.y * _e922.member_1.y)))), fma(_e822.member.z, _e922.member_1.w, fma(_e961.z, _e922.member_1.z, fma(_e957.z, _e922.member_1.x, (_e959.z * _e922.member_1.y)))), (fma(_e961.w, _e922.member_1.z, fma(_e957.w, _e922.member_1.x, (_e959.w * _e922.member_1.y))) + _e922.member_1.w)) * _e1066)), (_e381.member_2 + (vec4(fma(_e822.member.x, _e922.member_2.w, fma(_e961.x, _e922.member_2.z, fma(_e957.x, _e922.member_2.x, (_e959.x * _e922.member_2.y)))), fma(_e822.member.y, _e922.member_2.w, fma(_e961.y, _e922.member_2.z, fma(_e957.y, _e922.member_2.x, (_e959.y * _e922.member_2.y)))), fma(_e822.member.z, _e922.member_2.w, fma(_e961.z, _e922.member_2.z, fma(_e957.z, _e922.member_2.x, (_e959.z * _e922.member_2.y)))), (fma(_e961.w, _e922.member_2.z, fma(_e957.w, _e922.member_2.x, (_e959.w * _e922.member_2.y))) + _e922.member_2.w)) * _e1066)), (_e381.member_3 + (vec4(fma(_e822.member.x, _e922.member_3.w, fma(_e961.x, _e922.member_3.z, fma(_e957.x, _e922.member_3.x, (_e959.x * _e922.member_3.y)))), fma(_e822.member.y, _e922.member_3.w, fma(_e961.y, _e922.member_3.z, fma(_e957.y, _e922.member_3.x, (_e959.y * _e922.member_3.y)))), fma(_e822.member.z, _e922.member_3.w, fma(_e961.z, _e922.member_3.z, fma(_e957.z, _e922.member_3.x, (_e959.z * _e922.member_3.y)))), (fma(_e961.w, _e922.member_3.z, fma(_e957.w, _e922.member_3.x, (_e959.w * _e922.member_3.y))) + _e922.member_3.w)) * _e1066))); + } else { + phi_1635_ = type_24(); + phi_1636_ = type_20(); + } + let _e1081 = phi_1635_; + let _e1083 = phi_1636_; + phi_1637_ = select(false, true, _e742); + phi_1638_ = _e1081; + phi_1639_ = _e1083; + } else { + phi_1637_ = false; + phi_1638_ = type_24(); + phi_1639_ = type_20(); + } + let _e1086 = phi_1637_; + let _e1088 = phi_1638_; + let _e1090 = phi_1639_; + phi_1640_ = false; + phi_1641_ = type_27(); + phi_1642_ = _e1086; + phi_1046_ = _e1088; + phi_1049_ = _e1090; + break; + } + default: { + phi_1640_ = false; + phi_1641_ = type_27(); + phi_1642_ = false; + phi_1046_ = type_24(); + phi_1049_ = type_20(); + break; + } + } + let _e1092 = phi_1640_; + let _e1094 = phi_1641_; + let _e1096 = phi_1642_; + let _e1098 = phi_1046_; + let _e1100 = phi_1049_; + local_6 = _e1092; + local_7 = _e1094; + continue; + continuing { + phi_1045_ = _e1098; + phi_1048_ = _e1100; + break if !(_e1096); + } + } + let _e2034 = local_6; + phi_1643_ = _e2034; + let _e2037 = local_7; + phi_1644_ = _e2037; + } else { + phi_1643_ = false; + phi_1644_ = type_27(); + } + let _e1103 = phi_1643_; + let _e1105 = phi_1644_; + phi_1646_ = _e1103; + phi_1647_ = _e1105; + phi_1648_ = select(true, false, _e351); + } else { + phi_1646_ = false; + phi_1647_ = type_27(); + phi_1648_ = true; + } + let _e1108 = phi_1646_; + let _e1110 = phi_1647_; + let _e1112 = phi_1648_; + if _e1112 { + if (_e100 >= 10u) { + phi_3334_ = (_e128 <= (_e100 - 10u)); + } else { + phi_3334_ = false; + } + let _e1117 = phi_3334_; + if _e1117 { + let _e1120 = global_2.member[_e128]; + let _e1125 = global_2.member[(_e128 + 1u)]; + let _e1130 = global_2.member[(_e128 + 2u)]; + let _e1136 = global_2.member[(_e128 + 3u)]; + let _e1141 = global_2.member[(_e128 + 4u)]; + let _e1146 = global_2.member[(_e128 + 5u)]; + let _e1151 = global_2.member[(_e128 + 6u)]; + let _e1157 = global_2.member[(_e128 + 7u)]; + let _e1162 = global_2.member[(_e128 + 8u)]; + let _e1167 = global_2.member[(_e128 + 9u)]; + phi_1701_ = type_27(vec3(bitcast(_e1120), bitcast(_e1125), bitcast(_e1130)), vec4(bitcast(_e1136), bitcast(_e1141), bitcast(_e1146), bitcast(_e1151)), vec3(bitcast(_e1157), bitcast(_e1162), bitcast(_e1167))); + } else { + phi_1701_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e1172 = phi_1701_; + phi_1703_ = _e1172; + } else { + phi_1703_ = _e1110; + } + let _e1174 = phi_1703_; + if select(_e1108, true, _e1112) { + let _e1190 = sqrt(fma(_e323.member_2.z, _e323.member_2.z, fma(_e323.member_2.x, _e323.member_2.x, (_e323.member_2.y * _e323.member_2.y)))); + if (_e1190 == 0f) { + phi_1750_ = vec3(0f, 0f, 0f); + } else { + phi_1750_ = (_e323.member_2 * (1f / _e1190)); + } + let _e1195 = phi_1750_; + let _e1204 = sqrt(fma(_e323.member_3.z, _e323.member_3.z, fma(_e323.member_3.x, _e323.member_3.x, (_e323.member_3.y * _e323.member_3.y)))); + if (_e1204 == 0f) { + phi_3379_ = vec3(0f, 0f, 0f); + } else { + phi_3379_ = (vec3(_e323.member_3.x, _e323.member_3.y, _e323.member_3.z) * (1f / _e1204)); + } + let _e1209 = phi_3379_; + let _e1216 = (_e1174.member_1.x + _e1174.member_1.x); + let _e1217 = (_e1174.member_1.y + _e1174.member_1.y); + let _e1218 = (_e1174.member_1.z + _e1174.member_1.z); + let _e1220 = (_e1174.member_1.z * _e1218); + let _e1221 = (_e1174.member_1.w * _e1216); + let _e1222 = (_e1174.member_1.w * _e1217); + let _e1223 = (_e1174.member_1.w * _e1218); + let _e1242 = (vec4((1f - fma(_e1174.member_1.y, _e1217, _e1220)), fma(_e1174.member_1.x, _e1217, _e1223), fma(_e1174.member_1.x, _e1218, -(_e1222)), 0f) * _e1174.member_2.x); + let _e1243 = (vec4(fma(_e1174.member_1.x, _e1217, -(_e1223)), (1f - fma(_e1174.member_1.x, _e1216, _e1220)), fma(_e1174.member_1.y, _e1218, _e1221), 0f) * _e1174.member_2.y); + let _e1244 = (vec4(fma(_e1174.member_1.x, _e1218, _e1222), fma(_e1174.member_1.y, _e1218, -(_e1221)), (1f - fma(_e1174.member_1.x, _e1216, (_e1174.member_1.y * _e1217))), 0f) * _e1174.member_2.z); + let _e1249 = (_e1195.x / (_e1174.member_2.x * _e1174.member_2.x)); + let _e1251 = (_e1195.y / (_e1174.member_2.y * _e1174.member_2.y)); + let _e1253 = (_e1195.z / (_e1174.member_2.z * _e1174.member_2.z)); + let _e1269 = fma(_e1244.x, _e1253, fma(_e1242.x, _e1249, (_e1243.x * _e1251))); + let _e1270 = fma(_e1244.y, _e1253, fma(_e1242.y, _e1249, (_e1243.y * _e1251))); + let _e1271 = fma(_e1244.z, _e1253, fma(_e1242.z, _e1249, (_e1243.z * _e1251))); + let _e1276 = sqrt(fma(_e1271, _e1271, fma(_e1269, _e1269, (_e1270 * _e1270)))); + if (_e1276 == 0f) { + phi_3461_ = vec3(0f, 0f, 0f); + } else { + phi_3461_ = (vec3(_e1269, _e1270, _e1271) * (1f / _e1276)); + } + let _e1281 = phi_3461_; + global_11 = _e1281; + let _e1291 = fma(_e1244.x, _e1209.z, fma(_e1242.x, _e1209.x, (_e1243.x * _e1209.y))); + let _e1292 = fma(_e1244.y, _e1209.z, fma(_e1242.y, _e1209.x, (_e1243.y * _e1209.y))); + let _e1293 = fma(_e1244.z, _e1209.z, fma(_e1242.z, _e1209.x, (_e1243.z * _e1209.y))); + let _e1298 = sqrt(fma(_e1293, _e1293, fma(_e1291, _e1291, (_e1292 * _e1292)))); + if (_e1298 == 0f) { + phi_3496_ = vec3(0f, 0f, 0f); + } else { + phi_3496_ = (vec3(_e1291, _e1292, _e1293) * (1f / _e1298)); + } + let _e1303 = phi_3496_; + global_12 = _e1303; + let _e1322 = select(-1f, 1f, (_e323.member_3.w >= 0f)); + global_13 = vec3((fma(_e1281.y, _e1303.z, -((_e1303.y * _e1281.z))) * _e1322), (fma(_e1281.z, _e1303.x, -((_e1303.z * _e1281.x))) * _e1322), (fma(_e1281.x, _e1303.y, -((_e1303.x * _e1281.y))) * _e1322)); + let _e1340 = (_e1174.member.x + fma(_e1244.x, _e323.member.z, fma(_e1243.x, _e323.member.y, (_e1242.x * _e323.member.x)))); + let _e1341 = (_e1174.member.y + fma(_e1244.y, _e323.member.z, fma(_e1243.y, _e323.member.y, (_e1242.y * _e323.member.x)))); + let _e1342 = (_e1174.member.z + fma(_e1244.z, _e323.member.z, fma(_e1243.z, _e323.member.y, (_e1242.z * _e323.member.x)))); + global_14 = vec3(_e1340, _e1341, _e1342); + if (_e100 >= 83u) { + phi_3509_ = (_e124 <= (_e100 - 83u)); + } else { + phi_3509_ = false; + } + let _e1348 = phi_3509_; + if _e1348 { + let _e1351 = global_2.member[_e124]; + let _e1356 = global_2.member[(_e124 + 1u)]; + let _e1361 = global_2.member[(_e124 + 2u)]; + let _e1366 = global_2.member[(_e124 + 3u)]; + let _e1372 = global_2.member[(_e124 + 4u)]; + let _e1377 = global_2.member[(_e124 + 5u)]; + let _e1382 = global_2.member[(_e124 + 6u)]; + let _e1387 = global_2.member[(_e124 + 7u)]; + let _e1393 = global_2.member[(_e124 + 8u)]; + let _e1398 = global_2.member[(_e124 + 9u)]; + let _e1403 = global_2.member[(_e124 + 10u)]; + let _e1408 = global_2.member[(_e124 + 11u)]; + let _e1414 = global_2.member[(_e124 + 12u)]; + let _e1419 = global_2.member[(_e124 + 13u)]; + let _e1424 = global_2.member[(_e124 + 14u)]; + let _e1429 = global_2.member[(_e124 + 15u)]; + let _e1436 = global_2.member[(_e124 + 16u)]; + let _e1441 = global_2.member[(_e124 + 17u)]; + let _e1446 = global_2.member[(_e124 + 18u)]; + let _e1451 = global_2.member[(_e124 + 19u)]; + let _e1457 = global_2.member[(_e124 + 20u)]; + let _e1462 = global_2.member[(_e124 + 21u)]; + let _e1467 = global_2.member[(_e124 + 22u)]; + let _e1472 = global_2.member[(_e124 + 23u)]; + let _e1478 = global_2.member[(_e124 + 24u)]; + let _e1483 = global_2.member[(_e124 + 25u)]; + let _e1488 = global_2.member[(_e124 + 26u)]; + let _e1493 = global_2.member[(_e124 + 27u)]; + let _e1499 = global_2.member[(_e124 + 28u)]; + let _e1504 = global_2.member[(_e124 + 29u)]; + let _e1509 = global_2.member[(_e124 + 30u)]; + let _e1514 = global_2.member[(_e124 + 31u)]; + let _e1521 = global_2.member[(_e124 + 32u)]; + let _e1526 = global_2.member[(_e124 + 33u)]; + let _e1531 = global_2.member[(_e124 + 34u)]; + local_3 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_2074_ = type_24(0u, 6u); + loop { + let _e1536 = phi_2074_; + if (_e1536.member < _e1536.member_1) { + phi_2090_ = type_24((_e1536.member + 1u), _e1536.member_1); + phi_2091_ = type_24(1u, _e1536.member); + } else { + phi_2090_ = _e1536; + phi_2091_ = type_24(0u, type_24().member_1); + } + let _e1549 = phi_2090_; + let _e1551 = phi_2091_; + switch bitcast(_e1551.member) { + case 0: { + let _e1555 = local_3; + local_2 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_2104_ = type_24(0u, 8u); + loop { + let _e1558 = phi_2104_; + if (_e1558.member < _e1558.member_1) { + phi_2120_ = type_24((_e1558.member + 1u), _e1558.member_1); + phi_2121_ = type_24(1u, _e1558.member); + } else { + phi_2120_ = _e1558; + phi_2121_ = type_24(0u, type_24().member_1); + } + let _e1571 = phi_2120_; + let _e1573 = phi_2121_; + switch bitcast(_e1573.member) { + case 0: { + let _e1577 = local_2; + phi_2147_ = type_22(type_20(vec4(bitcast(_e1351), bitcast(_e1356), bitcast(_e1361), bitcast(_e1366)), vec4(bitcast(_e1372), bitcast(_e1377), bitcast(_e1382), bitcast(_e1387)), vec4(bitcast(_e1393), bitcast(_e1398), bitcast(_e1403), bitcast(_e1408)), vec4(bitcast(_e1414), bitcast(_e1419), bitcast(_e1424), bitcast(_e1429))), type_20(vec4(bitcast(_e1436), bitcast(_e1441), bitcast(_e1446), bitcast(_e1451)), vec4(bitcast(_e1457), bitcast(_e1462), bitcast(_e1467), bitcast(_e1472)), vec4(bitcast(_e1478), bitcast(_e1483), bitcast(_e1488), bitcast(_e1493)), vec4(bitcast(_e1499), bitcast(_e1504), bitcast(_e1509), bitcast(_e1514))), type_21(_e1577, _e1555), vec3(bitcast(_e1521), bitcast(_e1526), bitcast(_e1531))); + phi_2148_ = false; + phi_2105_ = type_24(); + break; + } + case 1: { + let _e1581 = ((_e124 + 59u) + (_e1573.member_1 * 3u)); + let _e1584 = global_2.member[_e1581]; + let _e1589 = global_2.member[(_e1581 + 1u)]; + let _e1594 = global_2.member[(_e1581 + 2u)]; + local_2[_e1573.member_1] = vec3(bitcast(_e1584), bitcast(_e1589), bitcast(_e1594)); + phi_2147_ = type_22(); + phi_2148_ = true; + phi_2105_ = _e1571; + break; + } + default: { + phi_2147_ = type_22(); + phi_2148_ = false; + phi_2105_ = type_24(); + break; + } + } + let _e1599 = phi_2147_; + let _e1601 = phi_2148_; + let _e1603 = phi_2105_; + local_8 = _e1599; + continue; + continuing { + phi_2104_ = _e1603; + break if !(_e1601); + } + } + let _e2060 = local_8; + phi_2168_ = _e2060; + phi_2169_ = false; + phi_2075_ = type_24(); + break; + } + case 1: { + let _e1606 = ((_e124 + 35u) + (_e1551.member_1 * 4u)); + let _e1609 = global_2.member[_e1606]; + let _e1614 = global_2.member[(_e1606 + 1u)]; + let _e1619 = global_2.member[(_e1606 + 2u)]; + let _e1624 = global_2.member[(_e1606 + 3u)]; + local_3[_e1551.member_1] = vec4(bitcast(_e1609), bitcast(_e1614), bitcast(_e1619), bitcast(_e1624)); + phi_2168_ = type_22(); + phi_2169_ = true; + phi_2075_ = _e1549; + break; + } + default: { + phi_2168_ = type_22(); + phi_2169_ = false; + phi_2075_ = type_24(); + break; + } + } + let _e1629 = phi_2168_; + let _e1631 = phi_2169_; + let _e1633 = phi_2075_; + local_9 = _e1629; + continue; + continuing { + phi_2074_ = _e1633; + break if !(_e1631); + } + } + let _e2065 = local_9; + phi_2174_ = _e2065; + } else { + phi_2174_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e1636 = phi_2174_; + global_1 = vec4((fma(fma(_e1636.member.member_3.x, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_2.z, fma(_e1636.member.member.x, _e1636.member_1.member_2.x, (_e1636.member.member_1.x * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.x, _e1636.member_1.member.w, fma(_e1636.member.member_2.x, _e1636.member_1.member.z, fma(_e1636.member.member.x, _e1636.member_1.member.x, (_e1636.member.member_1.x * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.x, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_1.z, fma(_e1636.member.member.x, _e1636.member_1.member_1.x, (_e1636.member.member_1.x * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.x, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_3.z, fma(_e1636.member.member.x, _e1636.member_1.member_3.x, (_e1636.member.member_1.x * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.y, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_2.z, fma(_e1636.member.member.y, _e1636.member_1.member_2.x, (_e1636.member.member_1.y * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.y, _e1636.member_1.member.w, fma(_e1636.member.member_2.y, _e1636.member_1.member.z, fma(_e1636.member.member.y, _e1636.member_1.member.x, (_e1636.member.member_1.y * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.y, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_1.z, fma(_e1636.member.member.y, _e1636.member_1.member_1.x, (_e1636.member.member_1.y * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.y, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_3.z, fma(_e1636.member.member.y, _e1636.member_1.member_3.x, (_e1636.member.member_1.y * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.z, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_2.z, fma(_e1636.member.member.z, _e1636.member_1.member_2.x, (_e1636.member.member_1.z * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.z, _e1636.member_1.member.w, fma(_e1636.member.member_2.z, _e1636.member_1.member.z, fma(_e1636.member.member.z, _e1636.member_1.member.x, (_e1636.member.member_1.z * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.z, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_1.z, fma(_e1636.member.member.z, _e1636.member_1.member_1.x, (_e1636.member.member_1.z * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.z, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_3.z, fma(_e1636.member.member.z, _e1636.member_1.member_3.x, (_e1636.member.member_1.z * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.w, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_2.z, fma(_e1636.member.member.w, _e1636.member_1.member_2.x, (_e1636.member.member_1.w * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.w, _e1636.member_1.member.w, fma(_e1636.member.member_2.w, _e1636.member_1.member.z, fma(_e1636.member.member.w, _e1636.member_1.member.x, (_e1636.member.member_1.w * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.w, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_1.z, fma(_e1636.member.member.w, _e1636.member_1.member_1.x, (_e1636.member.member_1.w * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.w, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_3.z, fma(_e1636.member.member.w, _e1636.member_1.member_3.x, (_e1636.member.member_1.w * _e1636.member_1.member_3.y)))))); + } + phi_2375_ = false; + phi_903_ = type_24(); + phi_906_ = type_31(); + break; + } + case 1: { + if (_e338.member_1 >= _e144) { + phi_2235_ = 4294967295u; + } else { + phi_2235_ = (_e140 + (2u * _e338.member_1)); + } + let _e1764 = phi_2235_; + if (_e100 >= 2u) { + phi_3766_ = (_e1764 <= (_e100 - 2u)); + } else { + phi_3766_ = false; + } + let _e1769 = phi_3766_; + if _e1769 { + let _e1772 = global_2.member[_e1764]; + let _e1776 = global_2.member[(_e1764 + 1u)]; + phi_2253_ = type_24(_e1772, _e1776); + } else { + phi_2253_ = type_24(4294967295u, 0u); + } + let _e1779 = phi_2253_; + if (_e173 >= _e1779.member_1) { + phi_3792_ = 4294967295u; + } else { + phi_3792_ = (_e1779.member + (9u * _e173)); + } + let _e1786 = phi_3792_; + if (_e100 >= 9u) { + phi_3811_ = (_e1786 <= (_e100 - 9u)); + } else { + phi_3811_ = false; + } + let _e1791 = phi_3811_; + if _e1791 { + let _e1794 = global_2.member[_e1786]; + let _e1799 = global_2.member[(_e1786 + 1u)]; + let _e1804 = global_2.member[(_e1786 + 2u)]; + let _e1810 = global_2.member[(_e1786 + 3u)]; + let _e1815 = global_2.member[(_e1786 + 4u)]; + let _e1820 = global_2.member[(_e1786 + 5u)]; + let _e1826 = global_2.member[(_e1786 + 6u)]; + let _e1831 = global_2.member[(_e1786 + 7u)]; + let _e1836 = global_2.member[(_e1786 + 8u)]; + phi_2303_ = type_28(vec3(bitcast(_e1794), bitcast(_e1799), bitcast(_e1804)), vec3(bitcast(_e1810), bitcast(_e1815), bitcast(_e1820)), vec3(bitcast(_e1826), bitcast(_e1831), bitcast(_e1836))); + } else { + phi_2303_ = type_28(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + } + let _e1841 = phi_2303_; + if (_e338.member_1 >= _e152) { + phi_2313_ = 4294967295u; + } else { + phi_2313_ = (_e148 + _e338.member_1); + } + let _e1845 = phi_2313_; + if (_e100 >= 1u) { + phi_3833_ = (_e1845 <= (_e100 - 1u)); + } else { + phi_3833_ = false; + } + let _e1850 = phi_3833_; + if _e1850 { + let _e1853 = global_2.member[_e1845]; + phi_2321_ = bitcast(_e1853); + } else { + phi_2321_ = 0f; + } + let _e1856 = phi_2321_; + let _e1879 = type_31(vec3(fma(_e1856, _e1841.member.x, _e323.member.x), fma(_e1856, _e1841.member.y, _e323.member.y), fma(_e1856, _e1841.member.z, _e323.member.z)), _e323.member_1, _e323.member_2, _e323.member_3, _e323.member_4, _e323.member_5, _e323.member_6, _e323.member_7); + let _e1902 = type_31(_e1879.member, _e1879.member_1, vec3(fma(_e1856, _e1841.member_1.x, _e323.member_2.x), fma(_e1856, _e1841.member_1.y, _e323.member_2.y), fma(_e1856, _e1841.member_1.z, _e323.member_2.z)), _e1879.member_3, _e1879.member_4, _e1879.member_5, _e1879.member_6, _e1879.member_7); + phi_2375_ = true; + phi_903_ = _e336; + phi_906_ = type_31(_e1902.member, _e1902.member_1, _e1902.member_2, vec4(fma(_e1856, _e1841.member_2.x, _e323.member_3.x), fma(_e1856, _e1841.member_2.y, _e323.member_3.y), fma(_e1856, _e1841.member_2.z, _e323.member_3.z), _e323.member_3.w), _e1902.member_4, _e1902.member_5, _e1902.member_6, _e1902.member_7); + break; + } + default: { + phi_2375_ = false; + phi_903_ = type_24(); + phi_906_ = type_31(); + break; + } + } + let _e1929 = phi_2375_; + let _e1931 = phi_903_; + let _e1933 = phi_906_; + continue; + continuing { + phi_902_ = _e1931; + phi_905_ = _e1933; + break if !(_e1929); + } + } + phi_2383_ = false; + phi_873_ = type_24(); + break; + } + case 1: { + let _e1938 = global_2.member[((_e178 + 22u) + _e313.member_1)]; + local_4[_e313.member_1] = bitcast(_e1938); + phi_2383_ = true; + phi_873_ = _e311; + break; + } + default: { + phi_2383_ = false; + phi_873_ = type_24(); + break; + } + } + let _e1942 = phi_2383_; + let _e1944 = phi_873_; + continue; + continuing { + phi_872_ = _e1944; + break if !(_e1942); + } + } + phi_2390_ = false; + phi_843_ = type_24(); + break; + } + case 1: { + let _e1949 = global_2.member[((_e178 + 18u) + _e291.member_1)]; + local_5[_e291.member_1] = _e1949; + phi_2390_ = true; + phi_843_ = _e289; + break; + } + default: { + phi_2390_ = false; + phi_843_ = type_24(); + break; + } + } + let _e1952 = phi_2390_; + let _e1954 = phi_843_; + continue; + continuing { + phi_842_ = _e1954; + break if !(_e1952); + } + } + } else { + global_1 = vec4(10f, 10f, 10f, 1f); + } + return; +} + +@vertex +fn stagerenderlet_vertex(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_3 = param; + global = param_1; + function(); + let _e16 = global_1.y; + global_1.y = -(_e16); + let _e18 = global_4; + let _e19 = global_5; + let _e20 = global_6; + let _e21 = global_7; + let _e22 = global_8; + let _e23 = global_9; + let _e24 = global_11; + let _e25 = global_12; + let _e26 = global_13; + let _e27 = global_14; + let _e28 = global_1; + return VertexOutput(_e18, _e19, _e20, _e21, _e22, _e23, _e24, _e25, _e26, _e27, _e28); +} diff --git a/crates/renderling/shaders/tonemapping-tonemapping_fragment.spv b/crates/renderling/shaders/tonemapping-tonemapping_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..c13cc9f5b403bcf57e4dc814ac9ed5b1fd464676 GIT binary patch literal 5488 zcmZ9PeUOf26vkg`?IN``#74Fi`EDzrX0y8(T54%2E7|h3cGomM!XJuiDaA-WCaI8J z5>ZS=$y!EI)8r$~Xv-i**y_KcL}t2vulqdCywB{t_qon>zV7?EpYuF#{iL?3u?F>G zu~=H{e3B+zH^q`-XqZnmi^Z;srNnW5!J`FP)25eXb?$vRmwA*N5B zG=AckDN`m)D$CAxU{vYUF=Z3SPnsTluy3G|qLHd`qaxvtoUdqYHN#<-FRq;D~^Gc~xHtIGD8Gc{U>>!2A-P2i3Jlee?#WUak4$eE)VKh|KjxsvfE z7P+~{T&?8WTQh5cqh9uyi+%5_nKe>NS5*M+r@?;Nz>oXEIlwMMm@`0rd~MJ3CD*Ra z>}_~}@S-m-^fEk9__n#NBK{%aoW?EkjDJ|TQ*m0Z;R4~Qr_v*SknrhsD{_nmS7%CR{qOB8pceoIax{@*g3bHsafe zA1S=?$jpc@7T&YzcohFh;o09!i||vz)5;G-_M?P{rX8-a^^6vNaZpjU;jzNU&Zq7+ zJWjZK?ZU{vM7Uf1Ws!fWaKXtpBU~ojEbr?mUb%2e_58d};XIv8;+|i9o=-{U8RDK> zzSGh*J@7)5?^ofvt@WbyoDqKeWS?mN&I&Idc&WeDO)-|EKVl6E)j=s%CnCVEm#dTojt2xt}=B<#QUGRjwSJSDw3> z8a!iQp37MpJSSkDkHva`cs7cp?X7u6S=l|G4G`yQPxRV{g81NX8CRvs)$^y|-H)>{L!<_m*Vz-tL`X$6i^y6_U|o zSEw~|Z&zwi54nhg4fk!8X0FTnT41g3YEav14RTj%5W7kvS!0a``-vU`CLg`u;{WJ)Vw2DFwT>q?`QYb;Gxd`&>nD%tewNJo ziEX;0l373Tn&=F0ZjVXUU;I1}Crh$%CmcsS&z*D}ap4NX`}CYJaq-8Fczwm!N!DNd z8N#NYWP1kI1zuC6dq3##F}w9a$2qifyg@Sl*u!&<{W+`@w)_9Lf)xt0&!)R59q&%B zyCmJvptJjQSvvj2&k65p?j`Yz|IhKfyWxp#{1wL!4m^2`Ptl?TTV^S-50*MsDpUM-|Be2 zzu<{&d~3m^2`Z}0e0@zhUF<2yLMEb!zszN6#I15ZxtF`Wb7Q5?B^kLl_-@^~)G zapds*r-v|c@yE{kPfyA074L9teE-=b9XyxynhzzLkLf-NI!vwqY?h2a_V9`Qr%F1z zuTRU7K66&H=_Ur-n9ICpI}ezt{2fA9DEq@l^s(4$tpP;K||n{f;L#`Fwvl;CNz_&+`WzPi*q}{&Pr} zJtB|wn(rmEFT^(8VaerF4Y?Th4%X-Z=$>w9a&w>t9>p!1M#vgn5#Qw8J zI{P-;E}7mz58@fOeX3PJyN~w!gx|)-A9cL_F7f4Ebk#vejb^tq=;RvhMU7CGi&fHHh+QB5-rXg6r3SxSHfZpBgn2w(sJ literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/tonemapping-tonemapping_fragment.wgsl b/crates/renderling/shaders/tonemapping-tonemapping_fragment.wgsl new file mode 100644 index 00000000..7f52467a --- /dev/null +++ b/crates/renderling/shaders/tonemapping-tonemapping_fragment.wgsl @@ -0,0 +1,86 @@ +struct type_7 { + member: array, +} + +struct type_14 { + member: u32, + member_1: f32, +} + +@group(0) @binding(0) +var global: type_7; +var global_1: vec2; +@group(0) @binding(2) +var global_2: sampler; +@group(0) @binding(1) +var global_3: texture_2d; +var global_4: vec4; + +fn function() { + var phi_142_: type_14; + var phi_190_: vec4; + + let _e53 = global_1; + let _e54 = textureSample(global_3, global_2, _e53); + if select(false, true, (arrayLength((&global.member)) >= 2u)) { + let _e59 = global.member[0u]; + let _e62 = global.member[1u]; + phi_142_ = type_14(_e59, bitcast(_e62)); + } else { + phi_142_ = type_14(0u, 1f); + } + let _e66 = phi_142_; + let _e70 = (_e54.x * _e66.member_1); + let _e72 = (_e54.y * _e66.member_1); + let _e74 = (_e54.z * _e66.member_1); + let _e76 = (_e54.w * _e66.member_1); + switch bitcast(_e66.member) { + case 1: { + let _e98 = min(vec3(max(((_e70 * fma(2.51f, _e70, 0.03f)) / fma(_e70, fma(2.43f, _e70, 0.59f), 0.14f)), 0f), max(((_e72 * fma(2.51f, _e72, 0.03f)) / fma(_e72, fma(2.43f, _e72, 0.59f), 0.14f)), 0f), max(((_e74 * fma(2.51f, _e74, 0.03f)) / fma(_e74, fma(2.43f, _e74, 0.59f), 0.14f)), 0f)), vec3(1f, 1f, 1f)); + phi_190_ = vec4(_e98.x, _e98.y, _e98.z, _e76); + break; + } + case 2: { + let _e109 = fma(0.04823f, _e74, fma(0.59719f, _e70, (0.35458f * _e72))); + let _e110 = fma(0.01566f, _e74, fma(0.076f, _e70, (0.90834f * _e72))); + let _e111 = fma(0.83777f, _e74, fma(0.0284f, _e70, (0.13383f * _e72))); + let _e124 = (fma(_e109, (_e109 + 0.0245786f), -0.000090537f) / fma(_e109, fma(0.983729f, _e109, 0.432951f), 0.238081f)); + let _e125 = (fma(_e110, (_e110 + 0.0245786f), -0.000090537f) / fma(_e110, fma(0.983729f, _e110, 0.432951f), 0.238081f)); + let _e126 = (fma(_e111, (_e111 + 0.0245786f), -0.000090537f) / fma(_e111, fma(0.983729f, _e111, 0.432951f), 0.238081f)); + let _e140 = min(vec3(max(fma(-0.07367f, _e126, fma(1.60475f, _e124, (-0.53108f * _e125))), 0f), max(fma(-0.00605f, _e126, fma(-0.10208f, _e124, (1.10813f * _e125))), 0f), max(fma(1.07602f, _e126, fma(-0.00327f, _e124, (-0.07276f * _e125))), 0f)), vec3(1f, 1f, 1f)); + phi_190_ = vec4(_e140.x, _e140.y, _e140.z, _e76); + break; + } + case 3: { + let _e151 = fma(_e74, 0.08038333f, fma(_e70, 0.9953167f, (_e72 * 0.59096664f))); + let _e152 = fma(_e74, 0.026099999f, fma(_e70, 0.12666667f, (_e72 * 1.5138999f))); + let _e153 = fma(_e74, 1.3962833f, fma(_e70, 0.047333334f, (_e72 * 0.22304998f))); + let _e166 = (fma(_e151, (_e151 + 0.0245786f), -0.000090537f) / fma(_e151, fma(0.983729f, _e151, 0.432951f), 0.238081f)); + let _e167 = (fma(_e152, (_e152 + 0.0245786f), -0.000090537f) / fma(_e152, fma(0.983729f, _e152, 0.432951f), 0.238081f)); + let _e168 = (fma(_e153, (_e153 + 0.0245786f), -0.000090537f) / fma(_e153, fma(0.983729f, _e153, 0.432951f), 0.238081f)); + let _e182 = min(vec3(max(fma(-0.07367f, _e168, fma(1.60475f, _e166, (-0.53108f * _e167))), 0f), max(fma(-0.00605f, _e168, fma(-0.10208f, _e166, (1.10813f * _e167))), 0f), max(fma(1.07602f, _e168, fma(-0.00327f, _e166, (-0.07276f * _e167))), 0f)), vec3(1f, 1f, 1f)); + phi_190_ = vec4(_e182.x, _e182.y, _e182.z, _e76); + break; + } + case 4: { + let _e192 = (vec3(_e70, _e72, _e74) / vec3(fma(_e54.x, _e66.member_1, 1f), fma(_e54.y, _e66.member_1, 1f), fma(_e54.z, _e66.member_1, 1f))); + phi_190_ = vec4(_e192.x, _e192.y, _e192.z, _e76); + break; + } + default: { + phi_190_ = vec4(_e70, _e72, _e74, _e76); + break; + } + } + let _e198 = phi_190_; + global_4 = _e198; + return; +} + +@fragment +fn tonemappingtonemapping_fragment(@location(0) param: vec2) -> @location(0) vec4 { + global_1 = param; + function(); + let _e3 = global_4; + return _e3; +} diff --git a/crates/renderling/shaders/tonemapping-tonemapping_vertex.spv b/crates/renderling/shaders/tonemapping-tonemapping_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..cd32400debe50c38db80c405ef1e1204089cb51f GIT binary patch literal 1148 zcmYk5Nls%y42I1-lMXX9LqZq?1Q4j3Q4JCsSi%Wfy@(JC=m;Uik|S{g&cZ1eBqYA? z@d{GX|Los(xolUxmgY)Fv^7OUA$Iw?iqRZeluttu{n3)y{T5&@{Wt%wYM1}&^^2?X zy}btV_qKL@Q@dk#WIJ1t$I+VU)95a_{vNQLbK~T$lW2?1Pc zo|$?vz6?sh`cvF2x^Y6AaTTE58Kt;6baOSv&BL`jx3qU5=gzH4Mb@+kJlnkPQCAwf z#hKo36L5LoFHB1^!HcWi%u;J$$s;Jgl)kUsN2kjM8>1^S)MGyYYi>y5qo*1$UO z4D};kllQj)%;jF+l4m*ZO`tEu{X$Q1-eHRSjjqp{yf^t7HTf2|fO%ZWwvDdMzEA1S g|6vChtIxOPyv^rZ(DzEs_G9h#(8#sFlWhll0A`UkGXMYp literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl b/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl new file mode 100644 index 00000000..d1181607 --- /dev/null +++ b/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl @@ -0,0 +1,38 @@ +struct type_9 { + member: vec2, + member_1: vec2, +} + +struct VertexOutput { + @location(0) member: vec2, + @builtin(position) member_1: vec4, +} + +var global: vec2; +var global_1: u32; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); + +fn function() { + var local: array; + + let _e22 = global_1; + local = array(type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(-1f, -1f), vec2(0f, 1f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(1f, 1f), vec2(1f, 0f))); + if (_e22 < 6u) { + let _e26 = local[_e22].member; + let _e29 = local[_e22].member_1; + global = _e29; + global_2 = vec4(_e26.x, _e26.y, 0f, 1f); + } + return; +} + +@vertex +fn tonemappingtonemapping_vertex(@builtin(vertex_index) param: u32) -> VertexOutput { + global_1 = param; + function(); + let _e5 = global_2.y; + global_2.y = -(_e5); + let _e7 = global; + let _e8 = global_2; + return VertexOutput(_e7, _e8); +} diff --git a/crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.spv b/crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.spv new file mode 100644 index 0000000000000000000000000000000000000000..a8e4054515b7a3d81dabf26a09ffebb096f7db00 GIT binary patch literal 756 zcmYk4y-q?w5QRq&Q9%$9u`(DtLHq+H7=Jn%3KJiI7^Juf2Ex4>3kzc6b6NTvzJ-m6 z=UaCZH#s|VW@l#4&b{f>Ue+=TW>&P0c2>z!Mg;q{X_m7kYm4{#cl~CZJTzPFBk~HC z#<;y`8_uULc}ga;=ziSo25%5OPRG$ON(NCpiHD={C>}hIX36M!ht=W{&;c!OWlCZZGpGGilc*XKs2{Cx^bb{@thYxsS8(?ki1( Q*)S7)W=GzSzCcI#1+#rFGynhq literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl b/crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl new file mode 100644 index 00000000..4769c4d2 --- /dev/null +++ b/crates/renderling/shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl @@ -0,0 +1,26 @@ +struct VertexOutput { + @location(0) member: vec4, + @builtin(position) member_1: vec4, +} + +var global: u32; +var global_1: vec4 = vec4(0f, 0f, 0f, 1f); +var global_2: vec4; + +fn function() { + let _e11 = global; + global_2 = vec4(1f, 0f, 0f, 1f); + global_1 = vec4((f32((1i - bitcast(_e11))) * 0.5f), (fma(f32((_e11 & 1u)), 2f, -1f) * 0.5f), 0f, 1f); + return; +} + +@vertex +fn tutorialtutorial_implicit_isosceles_vertex(@builtin(vertex_index) param: u32) -> VertexOutput { + global = param; + function(); + let _e5 = global_1.y; + global_1.y = -(_e5); + let _e7 = global_2; + let _e8 = global_1; + return VertexOutput(_e7, _e8); +} diff --git a/crates/renderling/shaders/tutorial-tutorial_passthru_fragment.spv b/crates/renderling/shaders/tutorial-tutorial_passthru_fragment.spv new file mode 100644 index 0000000000000000000000000000000000000000..14696161ec74a7bddaa81465f15e6a6e6943e466 GIT binary patch literal 328 zcmYj~%L>9!3`ApVsn4n?x|53kAX3q-pHaH-1-@u+KiI!;BRHp0Fqg^PBr}QcEkg?$ zW;W3K#mGFP1HUF_k@?ktjH)SS?n?K_FWEIo>R2|m~jGlmZsEjWZ z_S!;kE)dk{>Uydvx>%TL))G^5J63Ls@zWp6*%2?)>5BQI>4~|AX7lI4N6nm@XjT?f bKK=xI-kSEsTWQ%53Fvpa!w%|?+-uK literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/tutorial-tutorial_passthru_fragment.wgsl b/crates/renderling/shaders/tutorial-tutorial_passthru_fragment.wgsl new file mode 100644 index 00000000..96ad6c46 --- /dev/null +++ b/crates/renderling/shaders/tutorial-tutorial_passthru_fragment.wgsl @@ -0,0 +1,16 @@ +var global: vec4; +var global_1: vec4; + +fn function() { + let _e2 = global_1; + global = _e2; + return; +} + +@fragment +fn tutorialtutorial_passthru_fragment(@location(0) param: vec4) -> @location(0) vec4 { + global_1 = param; + function(); + let _e3 = global; + return _e3; +} diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv new file mode 100644 index 0000000000000000000000000000000000000000..1f0d74b8fd42516e3b73ed3f2d5640adaa507e75 GIT binary patch literal 19376 zcmZ{q2e@8Um4KAm0n~J0;EtvNdXiELhnUv^xk_f(wn2w zi}Q>~5uFiGstkls=Y9X|57(1t<~%vs-&)_=-&%X0bjGj7e+~}28S<$%px_Ucw{vX&isDqt1?ciw# zPT6OVNvp3OwENUad+fRA_;I^W8GpdI@lz&^pJwnJoGSF;?917Ya}3rx4bR_fW9H@@ z+3a;0jdk7_6xL%@YZFw&9!t#{I=pcUajGru`I?($FInvM!D^dZz2S|EUVN@oUyZW{ zechai>)m{An7$<#J*u9*=uHP3*Ujir z!XSpw{`JZmwCq)pSOd)y*aJloUU(q&Y{>FF?Mr$bYpMKXs!Aeq%X&G z{9Rqc;5GqktD(JVv#rm$n=x9y{=r0T&e(%z3r6ws#HhO^r?oDI?R{drJ~h6_XwCZ9 zz_uPWt!W6FTQNq*wR>n=*ESvNU-q^gd-^(~xGvVdU5hc!T-!66%lwOzWnD(=8xCHN zQQNp380X>CXHD9!S)csQjOsWywe13SpGKl(&AW0M`vXSj)!5yzdvUs_yED2L*Bq^} z;5j+nuk{&?8Oy2O9*pMJKb&2)S6xp%hZDC%i*a9#>+X!RdRtCS_4Z;^PuqDtjMnPe zi>kE8ai+HM;IBAhPr!DcV^0Lvwb+O5UHE;#?nmr>!QP*vsKPZ&;`Dme)4tswUpHs3 z&e^+z4**B!K(NotQLNRqOy;Z_%TblrWlASzR<5aFd#1*v4j=aVDAGLH65%*PJ7sU)qBuu z6T5G-?XwNQUURRP_J)k+(H>3(OEcD7=5&s6o3zs!j|N+#e(htLZEWsu?-Q?M)_5#< zk&dr-C(jAs?B|K#tRthGdM9)GOsJ>#ehQ#FstJIEtsEYkLcBGNbvt z7G5LuonwD{y1yeB-)^y9zv&(SfX?&l9sKt1|8=IWcZsnspMU1|K7Oz1ng9PgoxcS9 z`@|Y=F4xtK?*p*C? z(PGbsy;!jaVlQ6o`LVrUvmXm!yZ5mNVRsjMFt$AxehBuG#U6^iRIwMtUITkou7a?Qf=^#jXgZhx?IeLc+FIq{jpx$>Di04$fe%YvP2 z|7GrS_%c^Mb4P;ZGItc%xjrv5cLjWzE1$We!E!gUUSAV-1G_KQGlSjPozde{X3LG` z+=J6=Bc9149hEg!yNJ)z=^WpMuq|&#besqc0!*pMm9~|8uau zX#E1LR(*#35<6P*(fSowE?Q@U^`+Kx!0PLd{<&cFeLc^k_cOXk7|c%l8$j>oV+U$w%vQuw1mR0PD;Bc_r9d%^{Z@ zSAospdzIw48ap}Ulj9n&Tyk6s))%eoz-swECtBBIM@v3hH-P1$bt70`v~B{cwQt$S zo3W!MAFW%!a?!dKtS?%(fz|T;R_eMPJ6iJ5x&tg1tvkW`a(~_hcHP!%9{J?C8*Com z$F0q4f$uqduk35cz4(0%aP&2#2mgIw-;eLZct7U@oF7xwgAEhXnfnm7a~-#7&zy(B z&i9D#k>(?9*UiNFI`t?%W958(dW_M-*C)BhIe){czBp_7E!cU!&TPvw-g7tmOPZ;&;Ad*7OqC9#Hd7oG)|Q1Ftkpiq70uv7PIf^}PmmzDIn2Za(Wz54?`g zSUK1I7e)_zK<=-c|HY}kIBWSE*m<=F-oVzMyy<~ATb%K()g0=nn;v)zJbMo$&M|xP zcd&V^#XM?+`v=%ua_Y%t?QetSJ>q+(`P`56z`OX2buZp)@%DiJ_nZ9zqjUbr=sNVf zF5|W3?ST!6`4H@N-nxBe{vYf^I8WfblGA5~ePZ01oW2HCEpuegKL*=F)}3e73~(Rv zxOeh-R(%4N%d=`GSl@cwmq!r$DcHKy>hvO`F*UdA`G`-oOB4SY_yk7R>Ka_5w)Gj~ z^W<}|?{|%HG-gVP=>glv<64ZPFh<$GsfHxFuHC>_e0Hl!4EdSqj7sTd*9h?{oWs5!@kV5Zs+*j zjj`SfzPId$U!E=Kte=l39bZ0E9jAkM-)DJmoT|-XO>)O`p2BIZ;(Vq$37mQPOm#B8 z(P+t8yIRh3ezo;myS;T9*m-KZm&RJh0BZKI4rAuRo|{uWar$5$aQeX9>4SOk%jG_q z53DaeH4tok{Y*7KzG%ruYXPuav<89oMQbovt@@d22)<~^M{6ipE?NtM_2oU=FtD|n zLoPWM0-IwZdy=&;j4wIllVcIETyiW5))%eCz-racREy(_mVC5^gXN;N1Xy3Ry1{DI z&s075q9q@#CBbshS_-T$S|h+})z4H*SwBv_>xCHd6oyuCC@0ZzG$rgR%>jzE~D{9OFmlPG?p`3D}wb!>s#_@)z42W;ft1h zw7w0Ni`L3ued(iBz}9LGIsGH3aaFKA=KdJted)dCedYaCZT;S-&RY%aT<<-<^EK9I zjNgNw$Neeqk>}3&&F6C`aThcnOYHc@FkXnySP$d$UDSM;tMB6Gt8*`DK2smn=3a_V zP0#o)1FPv7-{oL6J&)^}mG^3}F~-MtE!Y_211H#DDf=i#qduH!~< zpZ;9Cwoc>CaZIb>Ch)c`E^}@!b6l5m)IO5VP_r+3=1=@B;N&pg{Kn+oxE0$x>KeNZ z8qw-UoZ8X44P3R%ZA|#vXXD+Ix}H0*U5{~@b7z_3ep{b=n)>bno7cIo+d--3PV~wdJiZy?Z~leeQ8O*VNbG z2e939xx_sPHqIVT+(X!|T`qACgN?KA6ZZ(VHOM9IQLy)+M|_VpU%ihWZ$9<%9^gsm z;h4bSYwrt9$JbuDr#PSI^cf+}dw^%bnV0tf&*2-1mYmNLwVdbtYU|H?fEU5eQ@iuN ziqSgOY|j+yFlH_6wK>%j=XG!$aGsIo&NFgd{Bn6lt_Rka=k5Anrp87suYkbKgpFG=u<&tMxu)b(*2Ue@T57-`GwB)0;16VFvJA(B^ zYbUT;^?kt3_@X5rt?z^7qO}WHU$p)WtX6%k-xXi9B0 zf-iaGlV>VeE_tSb^+oGouv+!|)I;z^OFmkMg5{$1L$JPR{Rpg9{oeF2e9@AR){nt* z(fSEkU$hPft5v@@Jpx~}$Ak4n>jbb`_50Qn@kL8MS|@?!qIEJ@U$jmEtL1m9dH$V> zFIw`^It?rrt<%B!qICvXE&q-ltuygOOFmjZ1=p^UuJp+j`9-pFBSYo5#P; zC(keNC69da{1PmeJih|#i`Lm-wfx(Dw9dg7E%|7j3zm!4d0>6fIv=c--%UpA0({Yu zkJg1?xoBMk))%dd!D{&%gJ@lXFIw`^x)dxIt;@jrvX_^GUAOg`M?QJ30GsE)@+`d) zU-HN&&sAW#xCH zdF}?wCC@!zebM?gSS^1e60LjjMN2+f_krc2bw5~Nv>pJf~Fu;Vtk47Pn`b!14>CAlv+qsT@rr8Mpt6=AQ#P?eB`8g+l|M)XLW99rT@j9c2 zpC#n}!ueND^~G7se}kRpXM+3<<8RpdlQ)0=c%#J`?^?~Fp1PU)CV2M0e=zp)-?=w2*14h@O z-*p+UEpM-^L(D(r2+qEJh;0w}doFvx-)i~WJm-Jh<~wFhGr;~HPt8v_XL8yDpEgX2 z&fL%B(QwTAJ_kGBBfc-1&-&8?U*a>i!%@>$ZH_%4$I#V_Q+;vP(i`l&+5>&?=}+GD zKwo^u8Sh%np`ND zeRj(G45@nN$#2F6gROfa^KvbQVB1@Ad43HA^RKg~@_BwO2$sw9YZzExv=#yz@AZn- z!r1)lXvs%w5wKje76t2z)?#3_>gWB%vH920l8@GKuw1m30PD+hwHs`$=8*GmS9_t; z19pGi6YnW)W9$BTUHrRLH}Ok?{T;a1%zgJ-X}iby+tpHFzhg1R(U>VErU&f(IIhJw z8e?y&V{Y$Nd%@9rNlou#_`(f1SOQ z&t855ESJ4p7OXE?%Ylur*LWm0|2kUo(OMoX7p+lXebHJ0tX93oqp|td(UOnWH^Fkz zS`n--THgYzWp8JVD`E4mqa`1$Z-eEcwK7;=-lMDncHP!%9(j9ad$d*s`&@R9?HO(3 zy>7W4j_H~2z}X`{>+K(}ownC3J+m5qd&L+>W9*s4*fTHT8`okSjqx?j7<2m?Z*Mr- zGiv&t;N|9bG;YmiuRWWs-)CVr+G{b_x}D?iy^Zy`HyrK>-&eqS#P?+Lu`L~+-^sqq z_lf#FjMMiXKIePr8^icMK4U%N`vBY6>ie+ylEb+lH6O1oU(cP*X{q z-=+7)&Uf?fk$Y!-;rkTc{gSt?@O=yK-pN}}_ybU1yZP#V&)a-;?!e}AFH+Y6__A)b&FNl*A5?hr$h#Ne2N&L)^6o|WA%!=;ynB&# z4+XpK^pw4~AhzqSzG3)`^~kyxZoaziMVqg#d-3M0>s|t1)~&WV-HX)SU3l}zyBFbm z3U5w%_agj~g*U&vdy#dI0DBMD+LyuBU)Q)|^VR!dC4AmDa_Q-n!QLa)w<>0WA%)VfIrurt~vuCRB z0DSh0zSMdkID28wScf^nA5?gIM&5kkCl}tHkvDhvDTTLZ$XiFQ&$VFJU3=y>?9^n> z7-OB$yuI-DjJ$P*zoYQ>jJ$P*zq9c6jJ$QGrn|w`RD0%O?9^n>7-OB$e5CO9jJ$P* zf3)!SjJ$P*f2{EKjJ$QGruBFa>filqe{9}-wLiAR=QB|*{jn9;=V0}1gU@GQ^=*f5 z=jKaY+vCf+eSNkLbA;ca@ZF6!U-%sh-_v+=hu^92OE%s*vhMGLU3cw|JQlBpfbl^F~&NhIl1umioA7(pHg^x zMcz8YPc6K?B5$3k=}_=Pv-QVO%~$*57<~4JT>9fUu>DbeC*ZR`s_!Ix_J_XIbuzg2 zhjo}E{3(UEKjh69{?x+TAM)l7e_G+~4|(gzy3YW+?%E$`mpS%_G1eK)a|&;N$XjRl za|>^O$XjRl^9pZ&$XjP>x&UlVwLh*bbL9f)u>Dbe_v5oas_#L3_J_XI^$@uBhjo}E{KJK} zKjh69{*l7lAM)l7|7hXu4|(gzx*rF-?%E$umpS%_G1eK)X9{nB$XjRlXA5tCbaE8_ zxx(8Y^46J}UI1HD?T?qs9Q(r<>rBp93U7bNTW9!J3vYkOTW9#!3U7bNTW7BEdtk5o zW7HMj2l%}1)%PJjuY2`?}1#~5%_#286V#= zV4p+Pw=6!NJ=Hf7pU)e8*^lMH*>7J9t<4doRgbQ?A(tU~BNY$G0Kayk7VCHUgW= j>mJ|6VD-K3`A&8WSWPvYV~pRw(h^;AU+^u(YMlQITpo%P literal 0 HcmV?d00001 diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl new file mode 100644 index 00000000..8356cb8a --- /dev/null +++ b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl @@ -0,0 +1,447 @@ +struct type_11 { + member: array, +} + +struct type_18 { + member: vec4, + member_1: vec4, + member_2: vec4, + member_3: vec4, +} + +struct type_19 { + member: array, 8>, + member_1: array, 6>, +} + +struct type_20 { + member: type_18, + member_1: type_18, + member_2: type_19, + member_3: vec3, +} + +struct type_22 { + member: u32, + member_1: u32, +} + +struct type_25 { + member: vec3, + member_1: vec4, + member_2: vec3, +} + +struct type_28 { + member: vec3, + member_1: vec4, + member_2: vec3, + member_3: vec4, + member_4: array, + member_5: array, + member_6: vec2, + member_7: vec2, +} + +struct VertexOutput { + @location(0) member: vec4, + @builtin(position) member_1: vec4, +} + +var global: u32; +@group(0) @binding(0) +var global_1: type_11; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); +var global_3: vec4; +var global_4: u32; + +fn function() { + var local: array, 8>; + var local_1: array, 6>; + var local_2: array; + var local_3: array; + var phi_614_: u32; + var phi_1390_: bool; + var phi_700_: type_22; + var phi_716_: type_22; + var phi_717_: type_22; + var phi_730_: type_22; + var phi_746_: type_22; + var phi_747_: type_22; + var phi_763_: type_28; + var phi_764_: bool; + var phi_731_: type_22; + var phi_770_: type_28; + var phi_771_: bool; + var phi_701_: type_22; + var phi_773_: type_28; + var phi_1421_: bool; + var phi_824_: type_25; + var phi_1492_: bool; + var phi_985_: type_22; + var phi_1001_: type_22; + var phi_1002_: type_22; + var phi_1015_: type_22; + var phi_1031_: type_22; + var phi_1032_: type_22; + var phi_1058_: type_20; + var phi_1059_: bool; + var phi_1016_: type_22; + var phi_1079_: type_20; + var phi_1080_: bool; + var phi_986_: type_22; + var phi_1085_: type_20; + var local_4: type_28; + var local_5: type_28; + var local_6: type_20; + var local_7: type_20; + + let _e77 = global_4; + let _e78 = global; + let _e80 = arrayLength((&global_1.member)); + let _e84 = global_1.member[(_e77 + 1u)]; + let _e88 = global_1.member[(_e77 + 2u)]; + let _e92 = global_1.member[(_e77 + 9u)]; + let _e96 = global_1.member[(_e77 + 10u)]; + if (_e78 >= _e88) { + phi_614_ = 4294967295u; + } else { + phi_614_ = (_e84 + (26u * _e78)); + } + let _e101 = phi_614_; + if (_e80 >= 26u) { + phi_1390_ = (_e101 <= (_e80 - 26u)); + } else { + phi_1390_ = false; + } + let _e106 = phi_1390_; + if _e106 { + let _e109 = global_1.member[_e101]; + let _e114 = global_1.member[(_e101 + 1u)]; + let _e119 = global_1.member[(_e101 + 2u)]; + let _e125 = global_1.member[(_e101 + 3u)]; + let _e130 = global_1.member[(_e101 + 4u)]; + let _e135 = global_1.member[(_e101 + 5u)]; + let _e140 = global_1.member[(_e101 + 6u)]; + let _e146 = global_1.member[(_e101 + 7u)]; + let _e151 = global_1.member[(_e101 + 8u)]; + let _e157 = global_1.member[(_e101 + 9u)]; + let _e162 = global_1.member[(_e101 + 10u)]; + let _e168 = global_1.member[(_e101 + 11u)]; + let _e173 = global_1.member[(_e101 + 12u)]; + let _e178 = global_1.member[(_e101 + 13u)]; + let _e184 = global_1.member[(_e101 + 14u)]; + let _e189 = global_1.member[(_e101 + 15u)]; + let _e194 = global_1.member[(_e101 + 16u)]; + let _e199 = global_1.member[(_e101 + 17u)]; + local_3 = array(0u, 0u, 0u, 0u); + phi_700_ = type_22(0u, 4u); + loop { + let _e204 = phi_700_; + if (_e204.member < _e204.member_1) { + phi_716_ = type_22((_e204.member + 1u), _e204.member_1); + phi_717_ = type_22(1u, _e204.member); + } else { + phi_716_ = _e204; + phi_717_ = type_22(0u, type_22().member_1); + } + let _e217 = phi_716_; + let _e219 = phi_717_; + switch bitcast(_e219.member) { + case 0: { + let _e223 = local_3; + local_2 = array(0f, 0f, 0f, 0f); + phi_730_ = type_22(0u, 4u); + loop { + let _e226 = phi_730_; + if (_e226.member < _e226.member_1) { + phi_746_ = type_22((_e226.member + 1u), _e226.member_1); + phi_747_ = type_22(1u, _e226.member); + } else { + phi_746_ = _e226; + phi_747_ = type_22(0u, type_22().member_1); + } + let _e239 = phi_746_; + let _e241 = phi_747_; + switch bitcast(_e241.member) { + case 0: { + let _e245 = local_2; + phi_763_ = type_28(vec3(bitcast(_e109), bitcast(_e114), bitcast(_e119)), vec4(bitcast(_e125), bitcast(_e130), bitcast(_e135), bitcast(_e140)), vec3(bitcast(_e168), bitcast(_e173), bitcast(_e178)), vec4(bitcast(_e184), bitcast(_e189), bitcast(_e194), bitcast(_e199)), _e223, _e245, vec2(bitcast(_e146), bitcast(_e151)), vec2(bitcast(_e157), bitcast(_e162))); + phi_764_ = false; + phi_731_ = type_22(); + break; + } + case 1: { + let _e250 = global_1.member[((_e101 + 22u) + _e241.member_1)]; + local_2[_e241.member_1] = bitcast(_e250); + phi_763_ = type_28(); + phi_764_ = true; + phi_731_ = _e239; + break; + } + default: { + phi_763_ = type_28(); + phi_764_ = false; + phi_731_ = type_22(); + break; + } + } + let _e254 = phi_763_; + let _e256 = phi_764_; + let _e258 = phi_731_; + local_4 = _e254; + continue; + continuing { + phi_730_ = _e258; + break if !(_e256); + } + } + let _e886 = local_4; + phi_770_ = _e886; + phi_771_ = false; + phi_701_ = type_22(); + break; + } + case 1: { + let _e263 = global_1.member[((_e101 + 18u) + _e219.member_1)]; + local_3[_e219.member_1] = _e263; + phi_770_ = type_28(); + phi_771_ = true; + phi_701_ = _e217; + break; + } + default: { + phi_770_ = type_28(); + phi_771_ = false; + phi_701_ = type_22(); + break; + } + } + let _e266 = phi_770_; + let _e268 = phi_771_; + let _e270 = phi_701_; + local_5 = _e266; + continue; + continuing { + phi_700_ = _e270; + break if !(_e268); + } + } + let _e891 = local_5; + phi_773_ = _e891; + } else { + phi_773_ = type_28(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + } + let _e273 = phi_773_; + global_3 = _e273.member_1; + if (_e80 >= 10u) { + phi_1421_ = (_e96 <= (_e80 - 10u)); + } else { + phi_1421_ = false; + } + let _e279 = phi_1421_; + if _e279 { + let _e282 = global_1.member[_e96]; + let _e287 = global_1.member[(_e96 + 1u)]; + let _e292 = global_1.member[(_e96 + 2u)]; + let _e298 = global_1.member[(_e96 + 3u)]; + let _e303 = global_1.member[(_e96 + 4u)]; + let _e308 = global_1.member[(_e96 + 5u)]; + let _e313 = global_1.member[(_e96 + 6u)]; + let _e319 = global_1.member[(_e96 + 7u)]; + let _e324 = global_1.member[(_e96 + 8u)]; + let _e329 = global_1.member[(_e96 + 9u)]; + phi_824_ = type_25(vec3(bitcast(_e282), bitcast(_e287), bitcast(_e292)), vec4(bitcast(_e298), bitcast(_e303), bitcast(_e308), bitcast(_e313)), vec3(bitcast(_e319), bitcast(_e324), bitcast(_e329))); + } else { + phi_824_ = type_25(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e334 = phi_824_; + let _e342 = (_e334.member_1.x + _e334.member_1.x); + let _e343 = (_e334.member_1.y + _e334.member_1.y); + let _e344 = (_e334.member_1.z + _e334.member_1.z); + let _e346 = (_e334.member_1.z * _e344); + let _e347 = (_e334.member_1.w * _e342); + let _e348 = (_e334.member_1.w * _e343); + let _e349 = (_e334.member_1.w * _e344); + let _e369 = (vec4((1f - fma(_e334.member_1.y, _e343, _e346)), fma(_e334.member_1.x, _e343, _e349), fma(_e334.member_1.x, _e344, -(_e348)), 0f) * _e334.member_2.x); + let _e371 = (vec4(fma(_e334.member_1.x, _e343, -(_e349)), (1f - fma(_e334.member_1.x, _e342, _e346)), fma(_e334.member_1.y, _e344, _e347), 0f) * _e334.member_2.y); + let _e373 = (vec4(fma(_e334.member_1.x, _e344, _e348), fma(_e334.member_1.y, _e344, -(_e347)), (1f - fma(_e334.member_1.x, _e342, (_e334.member_1.y * _e343))), 0f) * _e334.member_2.z); + if (_e80 >= 83u) { + phi_1492_ = (_e92 <= (_e80 - 83u)); + } else { + phi_1492_ = false; + } + let _e381 = phi_1492_; + if _e381 { + let _e384 = global_1.member[_e92]; + let _e389 = global_1.member[(_e92 + 1u)]; + let _e394 = global_1.member[(_e92 + 2u)]; + let _e399 = global_1.member[(_e92 + 3u)]; + let _e405 = global_1.member[(_e92 + 4u)]; + let _e410 = global_1.member[(_e92 + 5u)]; + let _e415 = global_1.member[(_e92 + 6u)]; + let _e420 = global_1.member[(_e92 + 7u)]; + let _e426 = global_1.member[(_e92 + 8u)]; + let _e431 = global_1.member[(_e92 + 9u)]; + let _e436 = global_1.member[(_e92 + 10u)]; + let _e441 = global_1.member[(_e92 + 11u)]; + let _e447 = global_1.member[(_e92 + 12u)]; + let _e452 = global_1.member[(_e92 + 13u)]; + let _e457 = global_1.member[(_e92 + 14u)]; + let _e462 = global_1.member[(_e92 + 15u)]; + let _e469 = global_1.member[(_e92 + 16u)]; + let _e474 = global_1.member[(_e92 + 17u)]; + let _e479 = global_1.member[(_e92 + 18u)]; + let _e484 = global_1.member[(_e92 + 19u)]; + let _e490 = global_1.member[(_e92 + 20u)]; + let _e495 = global_1.member[(_e92 + 21u)]; + let _e500 = global_1.member[(_e92 + 22u)]; + let _e505 = global_1.member[(_e92 + 23u)]; + let _e511 = global_1.member[(_e92 + 24u)]; + let _e516 = global_1.member[(_e92 + 25u)]; + let _e521 = global_1.member[(_e92 + 26u)]; + let _e526 = global_1.member[(_e92 + 27u)]; + let _e532 = global_1.member[(_e92 + 28u)]; + let _e537 = global_1.member[(_e92 + 29u)]; + let _e542 = global_1.member[(_e92 + 30u)]; + let _e547 = global_1.member[(_e92 + 31u)]; + let _e554 = global_1.member[(_e92 + 32u)]; + let _e559 = global_1.member[(_e92 + 33u)]; + let _e564 = global_1.member[(_e92 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_985_ = type_22(0u, 6u); + loop { + let _e569 = phi_985_; + if (_e569.member < _e569.member_1) { + phi_1001_ = type_22((_e569.member + 1u), _e569.member_1); + phi_1002_ = type_22(1u, _e569.member); + } else { + phi_1001_ = _e569; + phi_1002_ = type_22(0u, type_22().member_1); + } + let _e582 = phi_1001_; + let _e584 = phi_1002_; + switch bitcast(_e584.member) { + case 0: { + let _e588 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_1015_ = type_22(0u, 8u); + loop { + let _e591 = phi_1015_; + if (_e591.member < _e591.member_1) { + phi_1031_ = type_22((_e591.member + 1u), _e591.member_1); + phi_1032_ = type_22(1u, _e591.member); + } else { + phi_1031_ = _e591; + phi_1032_ = type_22(0u, type_22().member_1); + } + let _e604 = phi_1031_; + let _e606 = phi_1032_; + switch bitcast(_e606.member) { + case 0: { + let _e610 = local; + phi_1058_ = type_20(type_18(vec4(bitcast(_e384), bitcast(_e389), bitcast(_e394), bitcast(_e399)), vec4(bitcast(_e405), bitcast(_e410), bitcast(_e415), bitcast(_e420)), vec4(bitcast(_e426), bitcast(_e431), bitcast(_e436), bitcast(_e441)), vec4(bitcast(_e447), bitcast(_e452), bitcast(_e457), bitcast(_e462))), type_18(vec4(bitcast(_e469), bitcast(_e474), bitcast(_e479), bitcast(_e484)), vec4(bitcast(_e490), bitcast(_e495), bitcast(_e500), bitcast(_e505)), vec4(bitcast(_e511), bitcast(_e516), bitcast(_e521), bitcast(_e526)), vec4(bitcast(_e532), bitcast(_e537), bitcast(_e542), bitcast(_e547))), type_19(_e610, _e588), vec3(bitcast(_e554), bitcast(_e559), bitcast(_e564))); + phi_1059_ = false; + phi_1016_ = type_22(); + break; + } + case 1: { + let _e614 = ((_e92 + 59u) + (_e606.member_1 * 3u)); + let _e617 = global_1.member[_e614]; + let _e622 = global_1.member[(_e614 + 1u)]; + let _e627 = global_1.member[(_e614 + 2u)]; + local[_e606.member_1] = vec3(bitcast(_e617), bitcast(_e622), bitcast(_e627)); + phi_1058_ = type_20(); + phi_1059_ = true; + phi_1016_ = _e604; + break; + } + default: { + phi_1058_ = type_20(); + phi_1059_ = false; + phi_1016_ = type_22(); + break; + } + } + let _e632 = phi_1058_; + let _e634 = phi_1059_; + let _e636 = phi_1016_; + local_6 = _e632; + continue; + continuing { + phi_1015_ = _e636; + break if !(_e634); + } + } + let _e906 = local_6; + phi_1079_ = _e906; + phi_1080_ = false; + phi_986_ = type_22(); + break; + } + case 1: { + let _e639 = ((_e92 + 35u) + (_e584.member_1 * 4u)); + let _e642 = global_1.member[_e639]; + let _e647 = global_1.member[(_e639 + 1u)]; + let _e652 = global_1.member[(_e639 + 2u)]; + let _e657 = global_1.member[(_e639 + 3u)]; + local_1[_e584.member_1] = vec4(bitcast(_e642), bitcast(_e647), bitcast(_e652), bitcast(_e657)); + phi_1079_ = type_20(); + phi_1080_ = true; + phi_986_ = _e582; + break; + } + default: { + phi_1079_ = type_20(); + phi_1080_ = false; + phi_986_ = type_22(); + break; + } + } + let _e662 = phi_1079_; + let _e664 = phi_1080_; + let _e666 = phi_986_; + local_7 = _e662; + continue; + continuing { + phi_985_ = _e666; + break if !(_e664); + } + } + let _e911 = local_7; + phi_1085_ = _e911; + } else { + phi_1085_ = type_20(type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e669 = phi_1085_; + let _e709 = fma(_e669.member.member_3.x, _e669.member_1.member.w, fma(_e669.member.member_2.x, _e669.member_1.member.z, fma(_e669.member.member.x, _e669.member_1.member.x, (_e669.member.member_1.x * _e669.member_1.member.y)))); + let _e710 = fma(_e669.member.member_3.y, _e669.member_1.member.w, fma(_e669.member.member_2.y, _e669.member_1.member.z, fma(_e669.member.member.y, _e669.member_1.member.x, (_e669.member.member_1.y * _e669.member_1.member.y)))); + let _e711 = fma(_e669.member.member_3.z, _e669.member_1.member.w, fma(_e669.member.member_2.z, _e669.member_1.member.z, fma(_e669.member.member.z, _e669.member_1.member.x, (_e669.member.member_1.z * _e669.member_1.member.y)))); + let _e712 = fma(_e669.member.member_3.w, _e669.member_1.member.w, fma(_e669.member.member_2.w, _e669.member_1.member.z, fma(_e669.member.member.w, _e669.member_1.member.x, (_e669.member.member_1.w * _e669.member_1.member.y)))); + let _e730 = fma(_e669.member.member_3.x, _e669.member_1.member_1.w, fma(_e669.member.member_2.x, _e669.member_1.member_1.z, fma(_e669.member.member.x, _e669.member_1.member_1.x, (_e669.member.member_1.x * _e669.member_1.member_1.y)))); + let _e731 = fma(_e669.member.member_3.y, _e669.member_1.member_1.w, fma(_e669.member.member_2.y, _e669.member_1.member_1.z, fma(_e669.member.member.y, _e669.member_1.member_1.x, (_e669.member.member_1.y * _e669.member_1.member_1.y)))); + let _e732 = fma(_e669.member.member_3.z, _e669.member_1.member_1.w, fma(_e669.member.member_2.z, _e669.member_1.member_1.z, fma(_e669.member.member.z, _e669.member_1.member_1.x, (_e669.member.member_1.z * _e669.member_1.member_1.y)))); + let _e733 = fma(_e669.member.member_3.w, _e669.member_1.member_1.w, fma(_e669.member.member_2.w, _e669.member_1.member_1.z, fma(_e669.member.member.w, _e669.member_1.member_1.x, (_e669.member.member_1.w * _e669.member_1.member_1.y)))); + let _e751 = fma(_e669.member.member_3.x, _e669.member_1.member_2.w, fma(_e669.member.member_2.x, _e669.member_1.member_2.z, fma(_e669.member.member.x, _e669.member_1.member_2.x, (_e669.member.member_1.x * _e669.member_1.member_2.y)))); + let _e752 = fma(_e669.member.member_3.y, _e669.member_1.member_2.w, fma(_e669.member.member_2.y, _e669.member_1.member_2.z, fma(_e669.member.member.y, _e669.member_1.member_2.x, (_e669.member.member_1.y * _e669.member_1.member_2.y)))); + let _e753 = fma(_e669.member.member_3.z, _e669.member_1.member_2.w, fma(_e669.member.member_2.z, _e669.member_1.member_2.z, fma(_e669.member.member.z, _e669.member_1.member_2.x, (_e669.member.member_1.z * _e669.member_1.member_2.y)))); + let _e754 = fma(_e669.member.member_3.w, _e669.member_1.member_2.w, fma(_e669.member.member_2.w, _e669.member_1.member_2.z, fma(_e669.member.member.w, _e669.member_1.member_2.x, (_e669.member.member_1.w * _e669.member_1.member_2.y)))); + let _e772 = fma(_e669.member.member_3.x, _e669.member_1.member_3.w, fma(_e669.member.member_2.x, _e669.member_1.member_3.z, fma(_e669.member.member.x, _e669.member_1.member_3.x, (_e669.member.member_1.x * _e669.member_1.member_3.y)))); + let _e773 = fma(_e669.member.member_3.y, _e669.member_1.member_3.w, fma(_e669.member.member_2.y, _e669.member_1.member_3.z, fma(_e669.member.member.y, _e669.member_1.member_3.x, (_e669.member.member_1.y * _e669.member_1.member_3.y)))); + let _e774 = fma(_e669.member.member_3.z, _e669.member_1.member_3.w, fma(_e669.member.member_2.z, _e669.member_1.member_3.z, fma(_e669.member.member.z, _e669.member_1.member_3.x, (_e669.member.member_1.z * _e669.member_1.member_3.y)))); + let _e775 = fma(_e669.member.member_3.w, _e669.member_1.member_3.w, fma(_e669.member.member_2.w, _e669.member_1.member_3.z, fma(_e669.member.member.w, _e669.member_1.member_3.x, (_e669.member.member_1.w * _e669.member_1.member_3.y)))); + global_2 = vec4((fma(fma(_e772, _e373.w, fma(_e751, _e373.z, fma(_e709, _e373.x, (_e730 * _e373.y)))), _e273.member.z, fma(fma(_e772, _e369.w, fma(_e751, _e369.z, fma(_e709, _e369.x, (_e730 * _e369.y)))), _e273.member.x, (fma(_e772, _e371.w, fma(_e751, _e371.z, fma(_e709, _e371.x, (_e730 * _e371.y)))) * _e273.member.y))) + (fma(_e751, _e334.member.z, fma(_e709, _e334.member.x, (_e730 * _e334.member.y))) + _e772)), (fma(fma(_e773, _e373.w, fma(_e752, _e373.z, fma(_e710, _e373.x, (_e731 * _e373.y)))), _e273.member.z, fma(fma(_e773, _e369.w, fma(_e752, _e369.z, fma(_e710, _e369.x, (_e731 * _e369.y)))), _e273.member.x, (fma(_e773, _e371.w, fma(_e752, _e371.z, fma(_e710, _e371.x, (_e731 * _e371.y)))) * _e273.member.y))) + (fma(_e752, _e334.member.z, fma(_e710, _e334.member.x, (_e731 * _e334.member.y))) + _e773)), (fma(fma(_e774, _e373.w, fma(_e753, _e373.z, fma(_e711, _e373.x, (_e732 * _e373.y)))), _e273.member.z, fma(fma(_e774, _e369.w, fma(_e753, _e369.z, fma(_e711, _e369.x, (_e732 * _e369.y)))), _e273.member.x, (fma(_e774, _e371.w, fma(_e753, _e371.z, fma(_e711, _e371.x, (_e732 * _e371.y)))) * _e273.member.y))) + (fma(_e753, _e334.member.z, fma(_e711, _e334.member.x, (_e732 * _e334.member.y))) + _e774)), (fma(fma(_e775, _e373.w, fma(_e754, _e373.z, fma(_e712, _e373.x, (_e733 * _e373.y)))), _e273.member.z, fma(fma(_e775, _e369.w, fma(_e754, _e369.z, fma(_e712, _e369.x, (_e733 * _e369.y)))), _e273.member.x, (fma(_e775, _e371.w, fma(_e754, _e371.z, fma(_e712, _e371.x, (_e733 * _e371.y)))) * _e273.member.y))) + (fma(_e754, _e334.member.z, fma(_e712, _e334.member.x, (_e733 * _e334.member.y))) + _e775))); + return; +} + +@vertex +fn tutorialtutorial_slabbed_renderlet(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_4 = param; + global = param_1; + function(); + let _e7 = global_2.y; + global_2.y = -(_e7); + let _e9 = global_3; + let _e10 = global_2; + return VertexOutput(_e9, _e10); +} diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv new file mode 100644 index 0000000000000000000000000000000000000000..66dd71649d107c845cf2a0c074fa3e947d1320e5 GIT binary patch literal 5860 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, +} + +struct type_13 { + member: u32, + member_1: u32, +} + +struct type_18 { + member: vec3, + member_1: vec4, + member_2: vec3, + member_3: vec4, + member_4: array, + member_5: array, + member_6: vec2, + member_7: vec2, +} + +struct VertexOutput { + @location(0) member: vec4, + @builtin(position) member_1: vec4, +} + +var global: u32; +@group(0) @binding(0) +var global_1: type_8; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); +var global_3: vec4; +var global_4: u32; + +fn function() { + var local: array; + var local_1: array; + var phi_369_: bool; + var phi_148_: type_13; + var phi_395_: u32; + var phi_414_: bool; + var phi_239_: type_13; + var phi_255_: type_13; + var phi_256_: type_13; + var phi_269_: type_13; + var phi_285_: type_13; + var phi_286_: type_13; + var phi_302_: type_18; + var phi_303_: bool; + var phi_270_: type_13; + var phi_309_: type_18; + var phi_310_: bool; + var phi_240_: type_13; + var phi_312_: type_18; + var local_2: type_18; + var local_3: type_18; + + let _e45 = global_4; + let _e46 = global; + let _e48 = arrayLength((&global_1.member)); + if (_e48 >= 2u) { + phi_369_ = (_e45 <= (_e48 - 2u)); + } else { + phi_369_ = false; + } + let _e53 = phi_369_; + if _e53 { + let _e56 = global_1.member[_e45]; + let _e60 = global_1.member[(_e45 + 1u)]; + phi_148_ = type_13(_e56, _e60); + } else { + phi_148_ = type_13(4294967295u, 0u); + } + let _e63 = phi_148_; + if (_e46 >= _e63.member_1) { + phi_395_ = 4294967295u; + } else { + phi_395_ = (_e63.member + (26u * _e46)); + } + let _e70 = phi_395_; + if (_e48 >= 26u) { + phi_414_ = (_e70 <= (_e48 - 26u)); + } else { + phi_414_ = false; + } + let _e75 = phi_414_; + if _e75 { + let _e78 = global_1.member[_e70]; + let _e83 = global_1.member[(_e70 + 1u)]; + let _e88 = global_1.member[(_e70 + 2u)]; + let _e94 = global_1.member[(_e70 + 3u)]; + let _e99 = global_1.member[(_e70 + 4u)]; + let _e104 = global_1.member[(_e70 + 5u)]; + let _e109 = global_1.member[(_e70 + 6u)]; + let _e115 = global_1.member[(_e70 + 7u)]; + let _e120 = global_1.member[(_e70 + 8u)]; + let _e126 = global_1.member[(_e70 + 9u)]; + let _e131 = global_1.member[(_e70 + 10u)]; + let _e137 = global_1.member[(_e70 + 11u)]; + let _e142 = global_1.member[(_e70 + 12u)]; + let _e147 = global_1.member[(_e70 + 13u)]; + let _e153 = global_1.member[(_e70 + 14u)]; + let _e158 = global_1.member[(_e70 + 15u)]; + let _e163 = global_1.member[(_e70 + 16u)]; + let _e168 = global_1.member[(_e70 + 17u)]; + local_1 = array(0u, 0u, 0u, 0u); + phi_239_ = type_13(0u, 4u); + loop { + let _e173 = phi_239_; + if (_e173.member < _e173.member_1) { + phi_255_ = type_13((_e173.member + 1u), _e173.member_1); + phi_256_ = type_13(1u, _e173.member); + } else { + phi_255_ = _e173; + phi_256_ = type_13(0u, type_13().member_1); + } + let _e186 = phi_255_; + let _e188 = phi_256_; + switch bitcast(_e188.member) { + case 0: { + let _e192 = local_1; + local = array(0f, 0f, 0f, 0f); + phi_269_ = type_13(0u, 4u); + loop { + let _e195 = phi_269_; + if (_e195.member < _e195.member_1) { + phi_285_ = type_13((_e195.member + 1u), _e195.member_1); + phi_286_ = type_13(1u, _e195.member); + } else { + phi_285_ = _e195; + phi_286_ = type_13(0u, type_13().member_1); + } + let _e208 = phi_285_; + let _e210 = phi_286_; + switch bitcast(_e210.member) { + case 0: { + let _e214 = local; + phi_302_ = type_18(vec3(bitcast(_e78), bitcast(_e83), bitcast(_e88)), vec4(bitcast(_e94), bitcast(_e99), bitcast(_e104), bitcast(_e109)), vec3(bitcast(_e137), bitcast(_e142), bitcast(_e147)), vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), _e192, _e214, vec2(bitcast(_e115), bitcast(_e120)), vec2(bitcast(_e126), bitcast(_e131))); + phi_303_ = false; + phi_270_ = type_13(); + break; + } + case 1: { + let _e219 = global_1.member[((_e70 + 22u) + _e210.member_1)]; + local[_e210.member_1] = bitcast(_e219); + phi_302_ = type_18(); + phi_303_ = true; + phi_270_ = _e208; + break; + } + default: { + phi_302_ = type_18(); + phi_303_ = false; + phi_270_ = type_13(); + break; + } + } + let _e223 = phi_302_; + let _e225 = phi_303_; + let _e227 = phi_270_; + local_2 = _e223; + continue; + continuing { + phi_269_ = _e227; + break if !(_e225); + } + } + let _e264 = local_2; + phi_309_ = _e264; + phi_310_ = false; + phi_240_ = type_13(); + break; + } + case 1: { + let _e232 = global_1.member[((_e70 + 18u) + _e188.member_1)]; + local_1[_e188.member_1] = _e232; + phi_309_ = type_18(); + phi_310_ = true; + phi_240_ = _e186; + break; + } + default: { + phi_309_ = type_18(); + phi_310_ = false; + phi_240_ = type_13(); + break; + } + } + let _e235 = phi_309_; + let _e237 = phi_310_; + let _e239 = phi_240_; + local_3 = _e235; + continue; + continuing { + phi_239_ = _e239; + break if !(_e237); + } + } + let _e269 = local_3; + phi_312_ = _e269; + } else { + phi_312_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + } + let _e242 = phi_312_; + global_2 = vec4(_e242.member.x, _e242.member.y, _e242.member.z, 1f); + global_3 = _e242.member_1; + return; +} + +@vertex +fn tutorialtutorial_slabbed_vertices(@builtin(instance_index) param: u32, @builtin(vertex_index) param_1: u32) -> VertexOutput { + global_4 = param; + global = param_1; + function(); + let _e7 = global_2.y; + global_2.y = -(_e7); + let _e9 = global_3; + let _e10 = global_2; + return VertexOutput(_e9, _e10); +} diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv new file mode 100644 index 0000000000000000000000000000000000000000..1ab9440df77aebe3b990f16ba5decd930b0098c3 GIT binary patch literal 5236 zcmZ9P35-_d6^8FDNQ(?HD0Z+-#Yi#?FclO*VO(mJB5tj= z?rW=c>E5~p6}7EVt5)cexOUOFFLjAlZBRj}KF|H{D>vTcaNe_g?>XQ3zx!RLrFmrk zqF+-{6a$NIs(1z!&4p0?!r-FVp=c@n{yVVPsl>+nPUu^{VoA@^Nt1%QS1#>Yu%LHQ z_ldnL`j#y0UD>^CdH0fKEBktuE$oG@D4AN({g4?&Yw6n-Jhrmi(Ayy9%piL>+I2Ho zA@&*BP-Wbnc1Gk9CnxrZD%bTxDxCH4xfgwnnyqDT_T(dv{$Zunu;tv^V{5rKwwyz& z+4}J4%zW$YOG5X8wW;b*j;?ssb z3T7LXB=8Qx#D-dH3pN@jvj~K zdgBovZR_k=T3hYCN_+K`cIIj?&cqyLSL(E(9ed;s5H`=+l zHoZ&$+viv^?QtSv?mlSO)pI9dHzCesGTPqdABOEYGgoQCtGzFhI{SgmjlDm(74f&3 zf^I|PZs(NA-GOA!>M>P+o#1wM;q0eYInFD&S${yyXWTtaL%V} z5FdedKlZ9U675>;Va0&*%-gHIM7zd3e>cUt2coU3Uwe9Go11ye0DlE>cD^^WknHnd zuzRSBG1t#VJWqA;+&KR!O%1>Ons5CMe3?~rd$DanTp8o8qc7Teh|#&H-lk^Hz;@4x&&2*h%{~bGi#2-|_JEpwFt+zm)*piHd5k?9d;6MwDE1CD`|H>P zYjzj*jx~D@_Mn=581|QH_BXJd;RJT+JB?XBzT+Pj&BeFSo*94J!x8tY?Qc7`viHOG z{2YNaBh%p0J`!m`e9o+V^T6hL4sOQhySN)g&DHk-E5=n#Y?c>13K@&ok9bYRH5#0C zYb&lX_^e@U6Zvwv&h>R$|3-FW{dTbHP|WqY_HZZmKw{zjs0z{u^eA&7*CDkz{XPJc(A^3tpLmAJDYx2g2QDz zTzz0;;W`1VFI*>rw(*GbsnG9Ipz!N$V%9k9M|odTB2_dHzR#SWM8aGeS^7OvAu z>>L~S_9|@mZNJtro;u$HTgUq&byj1ij`7qv9c(Oh)_@zn#(Q=Kwp`vl;W`sLT*kw7 z7T8$0&Iar2;!N&=J_nIse|r5sSbp!a@c#fi{Kmt7F4$Q3&jafV*AKyRc@Ku`N7&&q z9<0SYLX*5G=p`@LvR$-+MLu7h{Ltc=#^?8w>xXV141b3@n#-a=0$X4wvz8 zT>&;0t}DU%!gUo`F7NYj{TMr3#>4d!u(5Dm4c3?U^BS$hOJ{H}%Tci7=F9P4X?gG2sC%(JE`k*XsC9fU* zd&FF0exLq;_VN2QW{N~_xD(j6IJS z%idoC8~2ItWw1Wyku&fL*j#7vD%!_0p#MLmRTQtGUGqBPKJ>dU^RVG% zs=pQ91Rsm6Lasr)Gdw5eorCxds&iQ*Gk**08M5!(Rd0h^5NBsRch!Hv#&TD^1J>8c zdpQmLE@EGDc^0+Jsn>Qt8~JNvDEd8Q7UEvrgL~ArKXbfK{)bFN%u$=ui6mzT*mLZA zZjRab0zyd29l^{|$(, +} + +struct type_13 { + member: u32, + member_1: u32, +} + +struct type_18 { + member: vec3, + member_1: vec4, + member_2: vec3, + member_3: vec4, + member_4: array, + member_5: array, + member_6: vec2, + member_7: vec2, +} + +struct VertexOutput { + @location(0) member: vec4, + @builtin(position) member_1: vec4, +} + +var global: u32; +@group(0) @binding(0) +var global_1: type_8; +var global_2: vec4 = vec4(0f, 0f, 0f, 1f); +var global_3: vec4; + +fn function() { + var local: array; + var local_1: array; + var phi_300_: bool; + var phi_179_: type_13; + var phi_195_: type_13; + var phi_196_: type_13; + var phi_209_: type_13; + var phi_225_: type_13; + var phi_226_: type_13; + var phi_242_: type_18; + var phi_243_: bool; + var phi_210_: type_13; + var phi_249_: type_18; + var phi_250_: bool; + var phi_180_: type_13; + var phi_252_: type_18; + var local_2: type_18; + var local_3: type_18; + + let _e42 = global; + let _e44 = arrayLength((&global_1.member)); + let _e45 = (_e42 * 26u); + if (_e44 >= 26u) { + phi_300_ = (_e45 <= (_e44 - 26u)); + } else { + phi_300_ = false; + } + let _e50 = phi_300_; + if _e50 { + let _e53 = global_1.member[_e45]; + let _e58 = global_1.member[(_e45 + 1u)]; + let _e63 = global_1.member[(_e45 + 2u)]; + let _e69 = global_1.member[(_e45 + 3u)]; + let _e74 = global_1.member[(_e45 + 4u)]; + let _e79 = global_1.member[(_e45 + 5u)]; + let _e84 = global_1.member[(_e45 + 6u)]; + let _e90 = global_1.member[(_e45 + 7u)]; + let _e95 = global_1.member[(_e45 + 8u)]; + let _e101 = global_1.member[(_e45 + 9u)]; + let _e106 = global_1.member[(_e45 + 10u)]; + let _e112 = global_1.member[(_e45 + 11u)]; + let _e117 = global_1.member[(_e45 + 12u)]; + let _e122 = global_1.member[(_e45 + 13u)]; + let _e128 = global_1.member[(_e45 + 14u)]; + let _e133 = global_1.member[(_e45 + 15u)]; + let _e138 = global_1.member[(_e45 + 16u)]; + let _e143 = global_1.member[(_e45 + 17u)]; + local_1 = array(0u, 0u, 0u, 0u); + phi_179_ = type_13(0u, 4u); + loop { + let _e148 = phi_179_; + if (_e148.member < _e148.member_1) { + phi_195_ = type_13((_e148.member + 1u), _e148.member_1); + phi_196_ = type_13(1u, _e148.member); + } else { + phi_195_ = _e148; + phi_196_ = type_13(0u, type_13().member_1); + } + let _e161 = phi_195_; + let _e163 = phi_196_; + switch bitcast(_e163.member) { + case 0: { + let _e167 = local_1; + local = array(0f, 0f, 0f, 0f); + phi_209_ = type_13(0u, 4u); + loop { + let _e170 = phi_209_; + if (_e170.member < _e170.member_1) { + phi_225_ = type_13((_e170.member + 1u), _e170.member_1); + phi_226_ = type_13(1u, _e170.member); + } else { + phi_225_ = _e170; + phi_226_ = type_13(0u, type_13().member_1); + } + let _e183 = phi_225_; + let _e185 = phi_226_; + switch bitcast(_e185.member) { + case 0: { + let _e189 = local; + phi_242_ = type_18(vec3(bitcast(_e53), bitcast(_e58), bitcast(_e63)), vec4(bitcast(_e69), bitcast(_e74), bitcast(_e79), bitcast(_e84)), vec3(bitcast(_e112), bitcast(_e117), bitcast(_e122)), vec4(bitcast(_e128), bitcast(_e133), bitcast(_e138), bitcast(_e143)), _e167, _e189, vec2(bitcast(_e90), bitcast(_e95)), vec2(bitcast(_e101), bitcast(_e106))); + phi_243_ = false; + phi_210_ = type_13(); + break; + } + case 1: { + let _e194 = global_1.member[((_e45 + 22u) + _e185.member_1)]; + local[_e185.member_1] = bitcast(_e194); + phi_242_ = type_18(); + phi_243_ = true; + phi_210_ = _e183; + break; + } + default: { + phi_242_ = type_18(); + phi_243_ = false; + phi_210_ = type_13(); + break; + } + } + let _e198 = phi_242_; + let _e200 = phi_243_; + let _e202 = phi_210_; + local_2 = _e198; + continue; + continuing { + phi_209_ = _e202; + break if !(_e200); + } + } + let _e236 = local_2; + phi_249_ = _e236; + phi_250_ = false; + phi_180_ = type_13(); + break; + } + case 1: { + let _e207 = global_1.member[((_e45 + 18u) + _e163.member_1)]; + local_1[_e163.member_1] = _e207; + phi_249_ = type_18(); + phi_250_ = true; + phi_180_ = _e161; + break; + } + default: { + phi_249_ = type_18(); + phi_250_ = false; + phi_180_ = type_13(); + break; + } + } + let _e210 = phi_249_; + let _e212 = phi_250_; + let _e214 = phi_180_; + local_3 = _e210; + continue; + continuing { + phi_179_ = _e214; + break if !(_e212); + } + } + let _e241 = local_3; + phi_252_ = _e241; + } else { + phi_252_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + } + let _e217 = phi_252_; + global_2 = vec4(_e217.member.x, _e217.member.y, _e217.member.z, 1f); + global_3 = _e217.member_1; + return; +} + +@vertex +fn tutorialtutorial_slabbed_vertices_no_instance(@builtin(vertex_index) param: u32) -> VertexOutput { + global = param; + function(); + let _e5 = global_2.y; + global_2.y = -(_e5); + let _e7 = global_3; + let _e8 = global_2; + return VertexOutput(_e7, _e8); +} diff --git a/crates/renderling/src/build.rs b/crates/renderling/src/build.rs new file mode 100644 index 00000000..abdc75fc --- /dev/null +++ b/crates/renderling/src/build.rs @@ -0,0 +1,170 @@ +//! Generates linkage for shaders. +#![allow(unexpected_cfgs)] +use quote::quote; + +#[derive(Debug, serde::Deserialize)] +struct Linkage { + source_path: std::path::PathBuf, + entry_point: String, + wgsl_entry_point: String, +} + +impl core::fmt::Display for Linkage { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let spv_source_path = self.source_path.clone(); + let spv_source_filename = spv_source_path.file_name().unwrap().to_str().unwrap(); + let spv_include_source_path = format!("../../shaders/{spv_source_filename}"); + + let wgsl_source_path = self.source_path.with_extension("wgsl"); + let wgsl_source_filename = wgsl_source_path.file_name().unwrap().to_str().unwrap(); + let wgsl_include_source_path = format!("../../shaders/{wgsl_source_filename}"); + + let Linkage { + source_path: _, + entry_point, + wgsl_entry_point, + } = self; + + let quote = quote! { + use crate::linkage::ShaderLinkage; + + mod native { + pub const ENTRY_POINT: &str = #entry_point; + + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!(#spv_include_source_path) + } + + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into() + } + } + } + + mod web { + pub const ENTRY_POINT: &str = #wgsl_entry_point; + + pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { + wgpu::include_spirv!(#wgsl_include_source_path) + } + + pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + super::ShaderLinkage { + entry_point: ENTRY_POINT, + module: device.create_shader_module(descriptor()).into() + } + } + } + + pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { + native::linkage(device) + } + + pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { + web::linkage(device) + } + + pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { + if cfg!(feature = "wasm") { + web::linkage(device) + } else { + native::linkage(device) + } + } + }; + + f.write_fmt(format_args!( + r#"#![allow(dead_code)] + //! Automatically generated by Renderling's `build.rs`. + {quote} + "#, + )) + } +} + +impl Linkage { + pub fn fn_name(&self) -> &str { + self.entry_point.split("::").last().unwrap() + } +} + +fn wgsl(spv_filepath: impl AsRef, destination: impl AsRef) { + let bytes = std::fs::read(spv_filepath.as_ref()).unwrap_or_else(|e| { + panic!( + "could not read spv filepath '{}' while attempting to translate to wgsl: {e}", + spv_filepath.as_ref().display() + ); + }); + let opts = naga::front::spv::Options::default(); + let module = naga::front::spv::parse_u8_slice(&bytes, &opts).unwrap(); + let mut validator = + naga::valid::Validator::new(Default::default(), naga::valid::Capabilities::empty()); + let info = validator.validate(&module).unwrap(); + let wgsl = + naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::empty()) + .unwrap(); + let destination = destination.as_ref().with_extension("wgsl"); + std::fs::write(destination, wgsl).unwrap(); +} + +/// Generate linkage (Rust source) files for each shader in the manifest. +fn generate_linkage() { + println!("{:#?}", std::env::vars().collect::>()); + let cargo_manifest_dir = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); + let shader_dir = cargo_manifest_dir.join("shaders"); + assert!( + shader_dir.is_dir(), + "missing directory '{}', you must first compile the shaders", + shader_dir.display() + ); + println!("cargo:rerun-if-changed={}", shader_dir.display()); + + let shader_manifest = cargo_manifest_dir.join("shaders/manifest.json"); + assert!( + shader_manifest.is_file(), + "missing file '{}', you must first compile the shaders", + shader_manifest.display() + ); + let linkage_dir = cargo_manifest_dir.join("src/linkage"); + assert!( + linkage_dir.is_dir(), + "missing crates/renderling/src/linkage" + ); + + println!("cwd: {:?}", std::env::current_dir().unwrap()); + + let manifest_file = std::fs::File::open(&shader_manifest).unwrap(); + let manifest: Vec = serde_json::from_reader(manifest_file).unwrap(); + let mut set = std::collections::HashSet::new(); + for linkage in manifest.into_iter() { + println!("linkage: {linkage:#?}"); + let fn_name = linkage.fn_name(); + + if set.contains(fn_name) { + panic!("Shader name '{fn_name}' is used for two or more shaders, aborting!"); + } + set.insert(fn_name.to_string()); + + let absolute_source_path = shader_dir.join(linkage.source_path.file_name().unwrap()); + let wgsl_source_path = linkage.source_path.with_extension("wgsl"); + let absolute_wgsl_source_path = shader_dir.join(wgsl_source_path.file_name().unwrap()); + wgsl(absolute_source_path, absolute_wgsl_source_path); + + let filepath = linkage_dir.join(fn_name).with_extension("rs"); + println!("filepath: {}", filepath.display()); + let contents = linkage.to_string(); + std::fs::write(&filepath, contents).unwrap(); + std::process::Command::new("rustfmt") + .args([&format!("{}", filepath.display())]) + .output() + .expect("could not format generated code"); + } +} + +fn main() { + if std::env::var("CARGO_CFG_TARGET_ARCH").as_deref() != Ok("spirv") { + generate_linkage(); + } +} From 61fb6b70d54bb816b4a78e47f74e20433bcf319a Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Wed, 6 Nov 2024 12:00:25 +1300 Subject: [PATCH 03/11] ensure CI has nightly --- .github/workflows/push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index d92f4b53..244856b1 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -20,6 +20,7 @@ jobs: with: workspaces: shaders # ensure the shader binaries were properly checked in + - run: rustup toolchain add nightly-2024-04-24 - run: cargo +nightly-2024-04-24 install --git https://github.com/rust-gpu/cargo-gpu - run: rm -rf crates/renderling/src/linkage/* - run: RUST_LOG=trace cargo shaders From 938e5f232db5a16f4bccf95bdce2ddbd53cb0234 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Wed, 6 Nov 2024 12:11:38 +1300 Subject: [PATCH 04/11] ensure rustup components --- .github/workflows/push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 244856b1..bcbfe8e5 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -21,6 +21,7 @@ jobs: workspaces: shaders # ensure the shader binaries were properly checked in - run: rustup toolchain add nightly-2024-04-24 + - run: rustup component add rust-src rustc-dev llvm-tools - run: cargo +nightly-2024-04-24 install --git https://github.com/rust-gpu/cargo-gpu - run: rm -rf crates/renderling/src/linkage/* - run: RUST_LOG=trace cargo shaders From 2fbc4c570abd66533ef49aef8b90a50f49884825 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Wed, 6 Nov 2024 12:45:03 +1300 Subject: [PATCH 05/11] ensure CI has nightly and components --- .github/workflows/push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index bcbfe8e5..c28dcaab 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -21,7 +21,7 @@ jobs: workspaces: shaders # ensure the shader binaries were properly checked in - run: rustup toolchain add nightly-2024-04-24 - - run: rustup component add rust-src rustc-dev llvm-tools + - run: rustup component add --toolchain nightly-2024-04-24 rust-src rustc-dev llvm-tools - run: cargo +nightly-2024-04-24 install --git https://github.com/rust-gpu/cargo-gpu - run: rm -rf crates/renderling/src/linkage/* - run: RUST_LOG=trace cargo shaders From f80c02652e2e0986fce7d4c4a9145228fd78deb4 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Fri, 8 Nov 2024 14:45:56 +1300 Subject: [PATCH 06/11] web linkage on wasm32 only --- Cargo.lock | 53 +++---------------- Cargo.toml | 3 +- crates/renderling/Cargo.toml | 5 +- crates/renderling/src/build.rs | 27 ++++------ .../src/linkage/bloom_downsample_fragment.rs | 25 ++++----- .../src/linkage/bloom_mix_fragment.rs | 22 +++----- .../src/linkage/bloom_upsample_fragment.rs | 22 +++----- crates/renderling/src/linkage/bloom_vertex.rs | 22 +++----- .../linkage/brdf_lut_convolution_fragment.rs | 28 +++++----- .../linkage/brdf_lut_convolution_vertex.rs | 25 ++++----- .../src/linkage/compute_frustum_culling.rs | 22 +++----- .../src/linkage/generate_mipmap_fragment.rs | 22 +++----- .../src/linkage/generate_mipmap_vertex.rs | 22 +++----- .../prefilter_environment_cubemap_fragment.rs | 30 +++++------ .../prefilter_environment_cubemap_vertex.rs | 28 +++++----- .../src/linkage/renderlet_fragment.rs | 22 +++----- .../src/linkage/renderlet_vertex.rs | 22 +++----- .../src/linkage/skybox_cubemap_fragment.rs | 22 +++----- .../src/linkage/skybox_cubemap_vertex.rs | 22 +++----- .../skybox_equirectangular_fragment.rs | 28 +++++----- .../renderling/src/linkage/skybox_vertex.rs | 22 +++----- .../src/linkage/tonemapping_fragment.rs | 22 +++----- .../src/linkage/tonemapping_vertex.rs | 22 +++----- .../tutorial_implicit_isosceles_vertex.rs | 28 +++++----- .../src/linkage/tutorial_passthru_fragment.rs | 25 ++++----- .../src/linkage/tutorial_slabbed_renderlet.rs | 25 ++++----- .../src/linkage/tutorial_slabbed_vertices.rs | 25 ++++----- .../tutorial_slabbed_vertices_no_instance.rs | 28 +++++----- 28 files changed, 264 insertions(+), 405 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a9952ac..ec941949 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -285,30 +285,15 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec 0.6.3", -] - [[package]] name = "bit-set" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" dependencies = [ - "bit-vec 0.7.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bit-vec" version = "0.7.0" @@ -1757,27 +1742,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "naga" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" -dependencies = [ - "bit-set 0.5.3", - "bitflags 2.6.0", - "codespan-reporting", - "hexf-parse", - "indexmap", - "log", - "num-traits", - "petgraph", - "rustc-hash 1.1.0", - "spirv", - "termcolor", - "thiserror", - "unicode-xid", -] - [[package]] name = "naga" version = "22.1.0" @@ -1785,7 +1749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" dependencies = [ "arrayvec", - "bit-set 0.6.0", + "bit-set", "bitflags 2.6.0", "cfg_aliases 0.1.1", "codespan-reporting", @@ -2568,8 +2532,7 @@ dependencies = [ "image 0.24.9", "img-diff", "log", - "naga 0.19.2", - "naga 22.1.0", + "naga", "pathdiff", "pretty_assertions", "quote", @@ -3332,7 +3295,7 @@ dependencies = [ "document-features", "js-sys", "log", - "naga 22.1.0", + "naga", "parking_lot", "profiling", "raw-window-handle", @@ -3353,14 +3316,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" dependencies = [ "arrayvec", - "bit-vec 0.7.0", + "bit-vec", "bitflags 2.6.0", "bytemuck", "cfg_aliases 0.1.1", "document-features", "indexmap", "log", - "naga 22.1.0", + "naga", "once_cell", "parking_lot", "profiling", @@ -3381,7 +3344,7 @@ dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set 0.6.0", + "bit-set", "bitflags 2.6.0", "block", "cfg_aliases 0.1.1", @@ -3399,7 +3362,7 @@ dependencies = [ "libloading", "log", "metal", - "naga 22.1.0", + "naga", "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index a39b07f2..dce08e7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,7 @@ glam = { version = "0.24.2", default-features = false } gltf = { version = "1.4,1", features = ["KHR_lights_punctual", "KHR_materials_unlit", "KHR_materials_emissive_strength", "extras", "extensions"] } image = "0.24" log = "0.4" -naga = { version = "0.19", features = ["spv-in", "wgsl-out", "wgsl-in", "msl-out"] } +naga = { version = "22.1.0", features = ["spv-in", "wgsl-out", "wgsl-in", "msl-out"] } pretty_assertions = "1.4.0" proc-macro2 = { version = "1.0", features = ["span-locations"] } rustc-hash = "1.1" @@ -40,6 +40,7 @@ web-sys = "0.3" winit = { version = "0.30" } wgpu = "22.1.0" + [profile.dev] opt-level = 1 diff --git a/crates/renderling/Cargo.toml b/crates/renderling/Cargo.toml index 41e7f7f8..6d56210f 100644 --- a/crates/renderling/Cargo.toml +++ b/crates/renderling/Cargo.toml @@ -88,11 +88,8 @@ tutorial_slabbed_renderlet = [] wasm = ["wgpu/fragile-send-sync-non-atomic-wasm"] -[patch.crates-io] -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu" } - [build-dependencies] -naga = { version = "22.1", features = ["spv-in", "wgsl-out", "wgsl-in", "msl-out"] } +naga = {workspace = true} pathdiff = "0.2.2" quote = "1.0" serde = {version = "1.0", features = ["derive"]} diff --git a/crates/renderling/src/build.rs b/crates/renderling/src/build.rs index abdc75fc..c11bbd31 100644 --- a/crates/renderling/src/build.rs +++ b/crates/renderling/src/build.rs @@ -25,10 +25,13 @@ impl core::fmt::Display for Linkage { wgsl_entry_point, } = self; + let fn_name = self.fn_name(); + let quote = quote! { use crate::linkage::ShaderLinkage; - mod native { + #[cfg(not(target_arch = "wasm32"))] + mod target { pub const ENTRY_POINT: &str = #entry_point; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { @@ -36,21 +39,23 @@ impl core::fmt::Display for Linkage { } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", #fn_name); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into() } } } - - mod web { + #[cfg(target_arch = "wasm32")] + mod target { pub const ENTRY_POINT: &str = #wgsl_entry_point; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!(#wgsl_include_source_path) + wgpu::include_wgsl!(#wgsl_include_source_path) } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", #fn_name); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into() @@ -58,20 +63,8 @@ impl core::fmt::Display for Linkage { } } - pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) - } - - pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) - } - pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } }; diff --git a/crates/renderling/src/linkage/bloom_downsample_fragment.rs b/crates/renderling/src/linkage/bloom_downsample_fragment.rs index 77638ca3..2b09fdae 100644 --- a/crates/renderling/src/linkage/bloom_downsample_fragment.rs +++ b/crates/renderling/src/linkage/bloom_downsample_fragment.rs @@ -1,40 +1,37 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "bloom::bloom_downsample_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/bloom-bloom_downsample_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "bloom_downsample_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "bloombloom_downsample_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/bloom-bloom_downsample_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/bloom-bloom_downsample_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "bloom_downsample_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/bloom_mix_fragment.rs b/crates/renderling/src/linkage/bloom_mix_fragment.rs index 59df4831..a1691afe 100644 --- a/crates/renderling/src/linkage/bloom_mix_fragment.rs +++ b/crates/renderling/src/linkage/bloom_mix_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "bloom::bloom_mix_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/bloom-bloom_mix_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "bloom_mix_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "bloombloom_mix_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/bloom-bloom_mix_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/bloom-bloom_mix_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "bloom_mix_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/bloom_upsample_fragment.rs b/crates/renderling/src/linkage/bloom_upsample_fragment.rs index 5afea1ac..b564d3ab 100644 --- a/crates/renderling/src/linkage/bloom_upsample_fragment.rs +++ b/crates/renderling/src/linkage/bloom_upsample_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "bloom::bloom_upsample_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/bloom-bloom_upsample_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "bloom_upsample_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "bloombloom_upsample_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/bloom-bloom_upsample_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/bloom-bloom_upsample_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "bloom_upsample_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/bloom_vertex.rs b/crates/renderling/src/linkage/bloom_vertex.rs index e7033323..788c68d7 100644 --- a/crates/renderling/src/linkage/bloom_vertex.rs +++ b/crates/renderling/src/linkage/bloom_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "bloom::bloom_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/bloom-bloom_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "bloom_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "bloombloom_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/bloom-bloom_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/bloom-bloom_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "bloom_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs b/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs index b5e4df4d..70616eda 100644 --- a/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs +++ b/crates/renderling/src/linkage/brdf_lut_convolution_fragment.rs @@ -1,40 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "brdf_lut_convolution_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/convolution-brdf_lut_convolution_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "brdf_lut_convolution_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs b/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs index bff53dad..9b568294 100644 --- a/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs +++ b/crates/renderling/src/linkage/brdf_lut_convolution_vertex.rs @@ -1,40 +1,37 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::brdf_lut_convolution_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "brdf_lut_convolution_vertex" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutionbrdf_lut_convolution_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/convolution-brdf_lut_convolution_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/convolution-brdf_lut_convolution_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "brdf_lut_convolution_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/compute_frustum_culling.rs b/crates/renderling/src/linkage/compute_frustum_culling.rs index a9b17f06..9ef46a9a 100644 --- a/crates/renderling/src/linkage/compute_frustum_culling.rs +++ b/crates/renderling/src/linkage/compute_frustum_culling.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "cull::compute_frustum_culling"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/cull-compute_frustum_culling.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "compute_frustum_culling"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "cullcompute_frustum_culling"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/cull-compute_frustum_culling.wgsl") + wgpu::include_wgsl!("../../shaders/cull-compute_frustum_culling.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "compute_frustum_culling"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/generate_mipmap_fragment.rs b/crates/renderling/src/linkage/generate_mipmap_fragment.rs index 596f84e6..339c5ccd 100644 --- a/crates/renderling/src/linkage/generate_mipmap_fragment.rs +++ b/crates/renderling/src/linkage/generate_mipmap_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::generate_mipmap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "generate_mipmap_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/convolution-generate_mipmap_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "generate_mipmap_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/generate_mipmap_vertex.rs b/crates/renderling/src/linkage/generate_mipmap_vertex.rs index 69e20019..355550d8 100644 --- a/crates/renderling/src/linkage/generate_mipmap_vertex.rs +++ b/crates/renderling/src/linkage/generate_mipmap_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::generate_mipmap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "generate_mipmap_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutiongenerate_mipmap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/convolution-generate_mipmap_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/convolution-generate_mipmap_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "generate_mipmap_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs b/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs index 575cd660..e91964ec 100644 --- a/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs +++ b/crates/renderling/src/linkage/prefilter_environment_cubemap_fragment.rs @@ -1,42 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "prefilter_environment_cubemap_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!( - "../../shaders/convolution-prefilter_environment_cubemap_fragment.wgsl" - ) + wgpu::include_wgsl!("../../shaders/convolution-prefilter_environment_cubemap_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "prefilter_environment_cubemap_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs b/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs index ecd1110a..f5bd22ca 100644 --- a/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs +++ b/crates/renderling/src/linkage/prefilter_environment_cubemap_vertex.rs @@ -1,40 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "convolution::prefilter_environment_cubemap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "prefilter_environment_cubemap_vertex" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "convolutionprefilter_environment_cubemap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/convolution-prefilter_environment_cubemap_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/convolution-prefilter_environment_cubemap_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "prefilter_environment_cubemap_vertex" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/renderlet_fragment.rs b/crates/renderling/src/linkage/renderlet_fragment.rs index db502e62..9f261f3e 100644 --- a/crates/renderling/src/linkage/renderlet_fragment.rs +++ b/crates/renderling/src/linkage/renderlet_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "stage::renderlet_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/stage-renderlet_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "renderlet_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "stagerenderlet_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/stage-renderlet_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/stage-renderlet_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "renderlet_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/renderlet_vertex.rs b/crates/renderling/src/linkage/renderlet_vertex.rs index df5c05bc..e0715022 100644 --- a/crates/renderling/src/linkage/renderlet_vertex.rs +++ b/crates/renderling/src/linkage/renderlet_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "stage::renderlet_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/stage-renderlet_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "renderlet_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "stagerenderlet_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/stage-renderlet_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/stage-renderlet_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "renderlet_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/skybox_cubemap_fragment.rs b/crates/renderling/src/linkage/skybox_cubemap_fragment.rs index 0cdd6d03..1ecf4602 100644 --- a/crates/renderling/src/linkage/skybox_cubemap_fragment.rs +++ b/crates/renderling/src/linkage/skybox_cubemap_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "skybox_cubemap_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/skybox-skybox_cubemap_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "skybox_cubemap_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/skybox_cubemap_vertex.rs b/crates/renderling/src/linkage/skybox_cubemap_vertex.rs index 732f5c7c..2f792fe2 100644 --- a/crates/renderling/src/linkage/skybox_cubemap_vertex.rs +++ b/crates/renderling/src/linkage/skybox_cubemap_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "skybox::skybox_cubemap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "skybox_cubemap_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "skyboxskybox_cubemap_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/skybox-skybox_cubemap_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/skybox-skybox_cubemap_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "skybox_cubemap_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs b/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs index 41d63b60..9ef6fc56 100644 --- a/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs +++ b/crates/renderling/src/linkage/skybox_equirectangular_fragment.rs @@ -1,40 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "skybox::skybox_equirectangular_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/skybox-skybox_equirectangular_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "skybox_equirectangular_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "skyboxskybox_equirectangular_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/skybox-skybox_equirectangular_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/skybox-skybox_equirectangular_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "skybox_equirectangular_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/skybox_vertex.rs b/crates/renderling/src/linkage/skybox_vertex.rs index d89c2a6a..a7acf011 100644 --- a/crates/renderling/src/linkage/skybox_vertex.rs +++ b/crates/renderling/src/linkage/skybox_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "skybox::skybox_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/skybox-skybox_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "skybox_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "skyboxskybox_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/skybox-skybox_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/skybox-skybox_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "skybox_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tonemapping_fragment.rs b/crates/renderling/src/linkage/tonemapping_fragment.rs index 1e3939a2..29ae25d4 100644 --- a/crates/renderling/src/linkage/tonemapping_fragment.rs +++ b/crates/renderling/src/linkage/tonemapping_fragment.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tonemapping::tonemapping_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "tonemapping_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tonemappingtonemapping_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/tonemapping-tonemapping_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "tonemapping_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tonemapping_vertex.rs b/crates/renderling/src/linkage/tonemapping_vertex.rs index a4f9938c..dad930fc 100644 --- a/crates/renderling/src/linkage/tonemapping_vertex.rs +++ b/crates/renderling/src/linkage/tonemapping_vertex.rs @@ -1,40 +1,34 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tonemapping::tonemapping_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating native linkage for {}", "tonemapping_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tonemappingtonemapping_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tonemapping-tonemapping_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/tonemapping-tonemapping_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "tonemapping_vertex"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tutorial_implicit_isosceles_vertex.rs b/crates/renderling/src/linkage/tutorial_implicit_isosceles_vertex.rs index 4146cd8a..cc679ff2 100644 --- a/crates/renderling/src/linkage/tutorial_implicit_isosceles_vertex.rs +++ b/crates/renderling/src/linkage/tutorial_implicit_isosceles_vertex.rs @@ -1,40 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tutorial::tutorial_implicit_isosceles_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tutorial-tutorial_implicit_isosceles_vertex.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "tutorial_implicit_isosceles_vertex" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tutorialtutorial_implicit_isosceles_vertex"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl") + wgpu::include_wgsl!("../../shaders/tutorial-tutorial_implicit_isosceles_vertex.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "tutorial_implicit_isosceles_vertex" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tutorial_passthru_fragment.rs b/crates/renderling/src/linkage/tutorial_passthru_fragment.rs index f9a00d0d..30e6172a 100644 --- a/crates/renderling/src/linkage/tutorial_passthru_fragment.rs +++ b/crates/renderling/src/linkage/tutorial_passthru_fragment.rs @@ -1,40 +1,37 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tutorial::tutorial_passthru_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tutorial-tutorial_passthru_fragment.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "tutorial_passthru_fragment" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tutorialtutorial_passthru_fragment"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tutorial-tutorial_passthru_fragment.wgsl") + wgpu::include_wgsl!("../../shaders/tutorial-tutorial_passthru_fragment.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "tutorial_passthru_fragment"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs b/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs index d451c544..a2cf0d9f 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_renderlet.rs @@ -1,40 +1,37 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_renderlet"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_renderlet.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "tutorial_slabbed_renderlet" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_renderlet"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_renderlet.wgsl") + wgpu::include_wgsl!("../../shaders/tutorial-tutorial_slabbed_renderlet.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "tutorial_slabbed_renderlet"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs b/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs index 4b6177c5..a1a9f95a 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_vertices.rs @@ -1,40 +1,37 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "tutorial_slabbed_vertices" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices.wgsl") + wgpu::include_wgsl!("../../shaders/tutorial-tutorial_slabbed_vertices.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!("creating web linkage for {}", "tutorial_slabbed_vertices"); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } diff --git a/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs b/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs index b282bbf4..b6e0d949 100644 --- a/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs +++ b/crates/renderling/src/linkage/tutorial_slabbed_vertices_no_instance.rs @@ -1,40 +1,40 @@ #![allow(dead_code)] //! Automatically generated by Renderling's `build.rs`. use crate::linkage::ShaderLinkage; -mod native { +#[cfg(not(target_arch = "wasm32"))] +mod target { pub const ENTRY_POINT: &str = "tutorial::tutorial_slabbed_vertices_no_instance"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices_no_instance.spv") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating native linkage for {}", + "tutorial_slabbed_vertices_no_instance" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -mod web { +#[cfg(target_arch = "wasm32")] +mod target { pub const ENTRY_POINT: &str = "tutorialtutorial_slabbed_vertices_no_instance"; pub fn descriptor() -> wgpu::ShaderModuleDescriptor<'static> { - wgpu::include_spirv!("../../shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl") + wgpu::include_wgsl!("../../shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl") } pub fn linkage(device: &wgpu::Device) -> super::ShaderLinkage { + log::info!( + "creating web linkage for {}", + "tutorial_slabbed_vertices_no_instance" + ); super::ShaderLinkage { entry_point: ENTRY_POINT, module: device.create_shader_module(descriptor()).into(), } } } -pub fn linkage_native(device: &wgpu::Device) -> ShaderLinkage { - native::linkage(device) -} -pub fn linkage_web(device: &wgpu::Device) -> ShaderLinkage { - web::linkage(device) -} pub fn linkage(device: &wgpu::Device) -> ShaderLinkage { - if cfg!(feature = "wasm") { - web::linkage(device) - } else { - native::linkage(device) - } + target::linkage(device) } From 0eff30a8239f5e359d9b9819f2870988a27c40fc Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Mon, 11 Nov 2024 11:28:29 +1300 Subject: [PATCH 07/11] generate with cargo shaders --- .cargo/config.toml | 2 +- .github/workflows/push.yaml | 5 ++--- .gitignore | 1 + crates/renderling/Cargo.toml | 5 ----- .../renderling/shaders/bloom-bloom_vertex.spv | Bin 1304 -> 1336 bytes ...volution-brdf_lut_convolution_fragment.spv | Bin 5212 -> 5140 bytes ...onvolution-brdf_lut_convolution_vertex.spv | Bin 1388 -> 1420 bytes .../convolution-generate_mipmap_vertex.spv | Bin 1172 -> 1204 bytes ...prefilter_environment_cubemap_fragment.spv | Bin 6456 -> 6432 bytes ...n-prefilter_environment_cubemap_vertex.spv | Bin 12180 -> 12068 bytes .../shaders/cull-compute_frustum_culling.spv | Bin 19688 -> 18016 bytes .../shaders/skybox-skybox_cubemap_vertex.spv | Bin 11340 -> 11228 bytes .../shaders/skybox-skybox_vertex.spv | Bin 9888 -> 9776 bytes .../shaders/stage-renderlet_fragment.spv | Bin 74564 -> 71076 bytes .../shaders/stage-renderlet_vertex.spv | Bin 43336 -> 42688 bytes .../tonemapping-tonemapping_vertex.spv | Bin 1148 -> 1180 bytes .../tutorial-tutorial_slabbed_renderlet.spv | Bin 19376 -> 19076 bytes .../tutorial-tutorial_slabbed_vertices.spv | Bin 5860 -> 5716 bytes ...-tutorial_slabbed_vertices_no_instance.spv | Bin 5236 -> 5092 bytes crates/renderling/src/lib.rs | 2 +- 20 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index a0f7958c..13ccc194 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,5 @@ [alias] -shaders = "gpu --output-dir crates/renderling/shaders --shader-crate crates/renderling/ --shader-manifest crates/renderling/shaders/manifest.json" +shaders = "gpu build --output-dir crates/renderling/shaders --shader-crate crates/renderling/ --shader-manifest crates/renderling/shaders/manifest.json" [build] rustflags = ["--cfg=web_sys_unstable_apis"] diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index c28dcaab..0df8617d 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -20,10 +20,9 @@ jobs: with: workspaces: shaders # ensure the shader binaries were properly checked in - - run: rustup toolchain add nightly-2024-04-24 - - run: rustup component add --toolchain nightly-2024-04-24 rust-src rustc-dev llvm-tools - - run: cargo +nightly-2024-04-24 install --git https://github.com/rust-gpu/cargo-gpu + - run: cargo install --git https://github.com/rust-gpu/cargo-gpu - run: rm -rf crates/renderling/src/linkage/* + - run: rm -rf crates/renderling/shaders - run: RUST_LOG=trace cargo shaders - run: git diff --exit-code --no-ext-diff crates/renderling/src/linkage diff --git a/.gitignore b/.gitignore index aab88c29..1d787510 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /target/ shaders/target shaders/shader-crate/target +**/spirv-manifest.json # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html diff --git a/crates/renderling/Cargo.toml b/crates/renderling/Cargo.toml index 6d56210f..9cf273a6 100644 --- a/crates/renderling/Cargo.toml +++ b/crates/renderling/Cargo.toml @@ -139,8 +139,3 @@ winit.workspace = true [target.'cfg(not(target_arch = "spirv"))'.dev-dependencies] glam = { workspace = true, features = ["std", "debug-glam-assert"] } - - -# [[bench]] -# name = "benchmarks" -# harness = false diff --git a/crates/renderling/shaders/bloom-bloom_vertex.spv b/crates/renderling/shaders/bloom-bloom_vertex.spv index 0d08a095944e573f0a6f1c233ea404e07c31ef74..34d11cdaa3cce0c490ce7ba1d465934aabc33968 100644 GIT binary patch delta 116 zcmbQiwS$Y7nMs+Qft8Vgfq|dFaU<`2MoumuTLOp~Ha}&&&M5nxftkS`#07%iKsHFq y0f>JvFflkx-pL%zXgXPxMVZllvL%Z*qxIxgFncA7w+KiVNEL|w%fQHB0mJ}yvJ@%+ delta 92 zcmdnNHG_+nnMs+Qft8Vgfq|dFek1RF#?5~iFECDi!yLhAGTD_y8AxWbcr#i}-U?(} gO}@$EtzrdK{DXms0Yv`<(k4(oi2lpK$Y24)0N$1pXaE2J diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv b/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.spv index 4dbda3721537d2c37020012958ca2a3f14d823a8..1e418fafbef658bea69f63aceb1b82070067a3f2 100644 GIT binary patch literal 5140 zcmZvgX^53&7>2)@vCK4QDoxvT&e1H*G)qfoQpYkah_E6EB5biDC=JsV2ofsjSN&y&&q@rq9|MFPeE>#M5~rX*&cOWXWm;rq}TKK-Ov5p@AJIddCxi1(LQEiwOdBH?->S;QyUfS2ciVJ9fd6 z#aAx5bosJNmMre+Ie+P*ix%Q6tg#C(T6*5amtDAcS=Gv5zb=q{2V(QdWX@5T?WAfq z#?s%$lxH}{DQ6D*`Aomzc>CjbW48UsdH~OEYy`0bdForY8~-4l)|KBE_F$e381spT z!Hwp5_%3<%&C|ea@tZAg#cXps#x~5{y~VedT=I-koy*~l$o=6=-ZO^S|%H}!# zU9YXGW}@{hwt>~2hSvGFuWQorK1RaN_juDq7D& zV$ORA=fwEkCGNP@{=pdU;ptd??x3b;^j@&*XyK=@A4<#|E5Qw(#KJ)f4=yuc?w_PKj$Iuc-8A0ulwpQ zC%^ms8`!#UmUTql^1Z9xC|rAud#i9AaB7XcUAO^YdGDU&+Z|uteTi;h(e>1741$wa zml}KG+uvCF4hGA6f2GD=`0`_GHHH?Q_gd!B1t+gAHTK50zp>QV2Q2R$m>R?I<-OCR z8(wtYjj1sLPF`JVjKsIUvGm;^Ebl#<8VBOb`xz76K}FXGml~tsrb_Tq$y0*7y{VZ!@YnY?8kApWh7rcNw%g>y-n0)Nf@*UvB z5}SwC&pYo7_w)p`#vDtyQws;RbBz|j$y>+o6la0$E8oD+TyHL%eAe?8u=!n2`)KO2 z7PpqTb5gsy%Y*Xb7qas1{>$KlRKwy&NXN2TsZmkJHKd<>|C?uaO&LqtmBnnwQ^a< ztHD`EW1cJfCVovVZcXFnN&Na+-0>Ut+-Fa309(U6YBQE+3n!mk&w(=*`)KMCf3X%f zmu8>r`Aa44o~zBCuK^p&p1%vWx#z}S#@1r)vDm#+qc5L5e+S&8pSiN<>%h*@SiPV9 zv*+)D-E(uRH)r;44HGtQ3%9m#u0^<43a2z{_$r*=#f)W*UIX)L)$_ZT`PHS*>tKIh zs0;TdSl+rhW3zbw+CO>U2J>p=Rcl@~iLcuw?wI^Om~-$hzB#O=Hnl%uLULMieGG@& zs%0NdUE=F&adT<*$vN0i;+_MwIR_iT#v1Ux_rC|*JO{=$VVg1cUF?3U(U;FT*a~ja z&s;eN+rZAzSiPV9a}It0dk)O4-kjOr_vve#7xU=<9{vFwuh#c(uE##9 z#oT9OYs>w&9^brjuEEz}n`>Zf1NIf>oW&W--wX`5H5SiY1DrkVWS{*k?c$pdNZI0X6Fl;#HxW(>)8h!cf-F{&6o2#x- z>puDUH42DQt_t)yzZ2KRLHKOtE`5xcDpP0wL_n61O zp{Q{V{*HA{K0P1m@4>bg-e>mdC$Qu8?+4+2#&@1_{*LrF|1bDzjm_eH;`ckbf2y`> GI`$vA!1ELU literal 5212 zcmZvgX^53&7>2*mTuO7S%q2Bv&S>RS+A>Ow%Zz1?l|O9z7f5ABP#R`MVJJk@uYS~@ zvI5ICZL_ivZK0?nvW+5&XpvT;#THwMx~?db*WXa`jTDiNQ%Mpf0YYH%~|TXfE%X;-dVI<0HQaq31?{T=+jwHjIN$8!L7 z(Te3)uej{0RhO<<-rarS%B9Pe5G<*oOO~y?;F8NPUcRboX0YE#Jo^s8`p9I?!!g^! zY7k@TZyn_s%yEjD!+t)~?@*#~#BG>uG+7Vh*@lgQ8_(0&x^2W0cv@Hd5YUM{+d<5y zKMHIT&!hLrYiyo&%$B&(jMny;+cCCa=AKnzYl$V_WPHccNloiasc}c(t8IZZ$B~7z z?ok-6H+84>$6d~`6JL$BQs-#=q1fT@uB&ULncMhSEZS-Ku4&@w_#-jb)bVGM5v;lA{aXq}Fq6Giuz)_~+50?IzwtOFWDCL|Wq6#5-w;=McBj63->x zO-tNE{4f6!_Yw;jJC=FI)!ONa=M!D?{FVCG1^8YHfGo9^#K$Uz?Tqv?gEmB<}0izu*E=DWzE_l z6ZqDWGoM`M{v^J`0kv0Ax$E^A!D*v$1ezGHs5?7@D#C5*k>UMkq&8um)T zhJdM++flHg_~PDM$#(#;xO*Diu%hd()i@ALTwQ96Ahy3;`nKYWd-tWrLB!&dYc&oo zI`72HV-%RUy3{z7*#2^H3!p#_Mw$?EWyq$7|`A|Iu}gb zI(|1fAK$*>?ZlbutpyX$dftX_e%I4Jn!2pT?S*$vYPXd6-GMJ>e(%1A@ojz%$gRWf z#Ju11y`$6^i{~tC#Bb2gT(^+h@o&O+4s!K=_V?~q^9a7*!OX4RoLQqK`0~8=Viy$5 zx#nyw1rtxdWkrKz@0wi;rp~?3I$npbRxInd8b9kO=ee?P`0H!DHRa6{{-zr5_~kwK z+0&cxtzjOu8OzfJ6Hl&Z@G}IhZT9?Ge7WrToA@^OT<$sS zdCWc5ckk2~i)YVw;y37LuI%|6@|aw`pZ&AvZ{fS==2mac?A;4YSl$-w#e%sO!Co$y z(yZYtV1AF2%No6k&#U>q@Ozv2)uqo4e7_T_3-&s`xOH>JPUZb;|KxoWpI0-lTJx$2 z|Mot-WAeLX&cQpx=CGF9)c$}8iD}98AsAt^mVGpJ;XkhN=F;qwbMQ&wJqK!Y4nD<~ zYX@(B@4>fu4&*+=c46+jzWe!8iN$jce#CFk&s;eNyYZc)T)m(Da}IvS_Z*m8y*abL z@6uPE7xU=<4*wn)ujYQqx7WD$Yn*Fc=RU1*?z7ysa{qlsY+fdl+I8-uULx{iB1 zzRhvVjm5@cj$7Y7P-85fy*muw{N}1_)Vfc8eoer)j(ODEKjZAcXZp>v={oK^&dKm< zGR~v$ZH`lJ3U&nMxbz)^8e{Q{^GJO2o2#x-n{iIXw~l$#+dq5Kitjws1pAzPo*VZs z*cbR}Ju|8OCBC@&8_H+;SNQIix}1rx@p(1ZOy1wv(SJj%UQO2STYO&4wUf8b1}yw{ z_`I6D{p9`q;QT$Ou90W69*bu^e#AG2Yh*vQ;dbL&U(TAzlixBv_f-2gzXSb@@85R( zz2np0IiB18TKhMD>-_@eZ#XqR)ojM1@f`h1?B7n*_*CN<>zY0Pqj9X!_?ziBV*j3G m9)CZX$5@SP;cscz#;51Z@vj#vxX-y9dcW(L>mOG6BUW`+nL9|V2_*%ClH5{Q2=Ffl|<{>W_3 eXgXPwMVT>Tvo8xbqX59x LUj{}73m^snNq7nf diff --git a/crates/renderling/shaders/convolution-generate_mipmap_vertex.spv b/crates/renderling/shaders/convolution-generate_mipmap_vertex.spv index 49223d8cd9acf869cc6f15868e76c2ff131481d2..9920cd37c70cec9089a8af5590e83d5f81f0c78d 100644 GIT binary patch delta 137 zcmbQjxrLLLnMs+Qft8Vgfq|dFVk56SGp{xS3j+s`Zw|x^lQo&`Wxq2pGnj&SK=2#L z2FaKK@ec+j2D8bj%;t>RljkzWGa63*%Ph^Q1C;p*lrfzw$YQSo(g#v!1QUhwLE?WI J7#S>p7yv3`6k7lQ delta 115 zcmdnOIfav#nMs+Qft8Vgfq|dFbR(}k^JE)lo5?enO&GN%pJk3`G?=W*B0V{R#lpn^ jsOAR)6N3?u{t2XEd=L%dYeD68(D)$nzYL5F7C;ODs%{e% diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.spv index efcb42aaa7c89b4ff99ad579c1081e434f64719b..14d02e93b284f70c1ae102923642aa179c19a4d9 100644 GIT binary patch literal 6432 zcmZ9Qdytl88OGmT7RZUfl62G=`T#Rdf+!S%0ve2As8Gg~GX*QGgu*T^3!N|)h{--_3K~*L^+r{hZ$S z``kh8V~19Q+p4M>QN7eoM|*qKUdh-$J+i9aS`BIX7cczq!pZCUR!p8Y{cLr^t3h_n ze@9gBtUAD^Sl-jUp=b5_zEwTlGiR>t?Yer^>b|btrCr?{R`vFDuj%UUTe^JxRb6X3 z*Dk%fw{xXLGl$~`V?(f^*om;_6JJbr+7r2ca_$y`>E@y-$kr}*-l2?pw~_zrcP|F2LD>ueDWu;k~8Q>!@QebJQD6q z`iUj)d%!mR2K_i4TKw@%uYXSb2`&GD_!FCcHRm+)P69iJvszr!SLggEW9`@k=3@OR zSYjS_8#b$qbuG5knA&pZ#y_{^PgC!DJr~#PeoUip6hHZ=i}Xv}0yt?rZGS>V#?zegkvf?n|2a zZ0_USCaQ|Iqq-2^cx#Ov)kVc`(7PALy=!XpjeFPhvz~ciLU65nG`|*G0R9Lq+Dq_v z)8c;+|6E%9h4_!q;$MnCf)@WW{D0EoUylDK|HWT~FQMN6F4nL5r^LSk?^Am>4cxsY z_*-AwG5d7pekIsFbe(hQ-ACJ`@?0KnuPX1h>rK8RaO9ttb9oFuXW~5%|2VvUVi|w5 zIsR7*;{O@{*ocF(ymv2vy#vnUz0BbZ`lg)TXYWtyWsdV#~9blGmKd^ z;CF-hG@l!_Kcl|uy&Y`Kz4{NUzh4pUzpTsH9oU_i>leR9uSQ?~hO&NH&!3#_?LO=)$9fPe3@IlIkV2?B@Q*PUn{`!zQ@eDlHR%4o74BfCo%7jbyk6| zDKYC^i&@XuYWl<);5C^0V62_eQX>--ERpSp|C%6}G9r`|oXhWX5!v7ZC` zeEIIQ)phE#m+qf+oQrkLk=RDCwTzk1Sk`_$*tjj+=fQIB$41ucJ9rbO*1hPbx4q6e z%5QFZRkelQFm;LE$;(H$weOKLU#2q&*DH6Fuvys?aZ94zm**D_}m&_o*>+`hH9N)mq#d+JsvC^;%r5b8~#&m;b}JhPu3?-vIMzzE6y2 zZck9(SZcpnbbdc1)|y-EUC*O2kVkFuw-tUkvP=z z4hH)km(KVhI8f|vD}FCpzi)=Z8@mF$i1(P^yMM#vW4qv|5r477{GRtaJ@tlzjhR2( zI|@fPu&$GER^S`UUj7vIjHjjI0Ue}@~c~1trHe0w;;jC}V9-fBpSYxU6Bv?MR zP6wx!b27J@P9WA$;4&u@x#V87$dt=^nDyEDPY`3!L53g=#Azb3%Rd!{*yr@`{spNZh?pXXq1 zHK}zL*jl#aor%m#8V>ES%Z?477r8y?g$d(fK8Bv>O zWGmQMo{?{YZ9XH$zJP7Rd?v)+bv63(c}Bht_8Bo(o{?{WU8Ax3ILGH1`4-q`#N6u5 znS1+1c;mKkUjoay7ul~bgWZ2)*^jS)vtOQ_xzr`kSHb2nea74f&X~aj)R-rAZURrm z)aAZEhtB-T@oi$sq29V`693L|ap&y+M%*`>Hy2Nj;#m%KTCU%P<+Q&+cD}g=0UJyter9Yz^UWh9HTDpkB7j{#oTH) zvp)^`{n#2zz5DN7^uBoi>b`uQ!vkRRc}C7dZO-b~U~?KXZ}Rkm&1?TMf6w%{<7#Xs zwz>3M=*``#bwYD~-T3n{HTG((5skm`AI8qd)J(zD`1e#buHhPbYuo#*s9%Zo6y832 z`x|i1F!%W&oV@Fa?oiRS(MR_PSiY`%wCLJvy2D_3b&JZK{5{w@<}f}Uo6SugN^k59 IPIm_Oe=QD#3IG5A literal 6456 zcmZ9Qd$5*O6~cmVB!aR8Z| zYMLf5Q-4_un4&dSrkIFCFs7(fQ%ojhUeZ!)Y9>uH$9})>?C1Cn+p}2DTI<Ssq()qAVKE&HO5%R45lUH7>OQ>LCRZ&)=@ z)%tgM^}(tgY>H*8yRTina{aol)!j2@tm#?4qHE>43&AdH1@`W$TwN zU$taS=Zc;sSLkTvaQ+}YhCl{KaQQ8iXMgMLul~` ze5awumAt2e9ojYe3=Kx?Gh0^g?AT-b?1y8IYuVN8lgK+B>>AGM^R;Ywu73j3hKyw` z)}M$Z=3x&&W|q0`#gQ84^qF&FPwum)$alYoQ_yv>lYc7qdytXDJu}y%3}BY_ zG$h>VVC%;|7kn%t*W5D@&txXLMqKxJPSn^(5c?N7v+VUed?!}NRI|`E;#%!RhB+Me zZgw9m-1ce?w(-7wwO8jCyGFbJIcV>f9Bt#?FYWB%0x%(beRpSWBQ_7bkP+^D?469* z7h_Lm#Qqreumt$SGXJh|;TZp~o z&26(zX6=i>_RxLWC;R9aU!KK7G}Zg;ev|KTtI@r4b4E{Lzk5FKp4}htd)E`o{3EUT zd*{dg6ZX@?AD!u4dj;%Wb{!vP4X2`8bhOXg8(5z~p9k0T>qI;&?Haup@vJ_Mw?^N_ zp~-Q?x2^b4)z-q>j-g)}%FV8c?Ev#vO+w70$V;Bv!RB^-nR6#T{#tX4E9M!>s%rc@ z!ThzJ6}k6P-~HYNHfFE>!|orF#P~1!GIlre1H}D{-$cvN)_-H!$Ae&dZmw_Ovq!tZ zuG3g^p7UShNtd$+?6YQW`R2?%mzFrL{(db3>-V$EoGZ|-MQu($1Fk^4Ki0Vt+*M-M zy9%+Mv8&OE)!>zgeK58PZR~aW&|NU9RdY4knrhd23VID8s;-^=6(@;Ix-D$ zGI;At!2!7#B9gY4vVjXiB_gR?5o`#@}HP`Dt*0BE?y^jUhm;L3O4;I^Z)xP3;qTxGGd{5$& zYwVHYI|SB0uaWQ9*!sN>;r*uY<~M5m7N353sqs5(=Nrr1!(javH){MITfg56!h5Rl ze8*%TPvg@sFEx%}JKtF5{t>Ldqfz4-Z2i8|!~1jL`JPIR=kV#5mm1GwJKtF5z5v$m zJ1xC`5nKP%Mva#W&v#vF{0*Oed8zR-w)2hUY+nKE-^%&aa9;)MTL6ylU)YPWmH7UR z&wJtfX=Ax3&w!nq&->TG{Ix#sjhWLsm-rivxHXiqjrd!QxLnuf{5%W)!?uRJyhGjw z^Vj;kGoH0QOMPRh{Z8Te{z|NGZGG<|AExAyoBRWce;D)ZLHg0AA8}r|0}JyIl-J`MQJm=>-&swnGLCh`RoH@JGz{dIO_nlFE_9Fcni%-92nzQ%|SbzF6 z4xIjZ4(67VT4#Z+S9N+n1Yd3u##Wt6|3640ojW9Oo+Yfa_mMjg?~K^H zAV*t&?$CW;?~u82hwcZvM`O)-&d(is0PGzyw|sNvobSMI+!5bSus(Z{e%%H34jD^7 z?gpn{p0T;)CC?AR<}rQd+yl;>K?LNOXDI)NP@{i@7`In))juoWNq!7AuFvKiJ_sW4n+C5a)^Qqa1Dh>A`N+YyE{t*832?tk<|T!v8t; zVMI>&`@rEFpA0|e`wQ$Nh@9N1{b2bc5#z~y06Y$#@#cD6x947?A4FV_dy?;7{GDbz zdN>PRd{CFJf zTFfnX6aA^tParE1`S#zt=za12HEsQQ4xa>@&ogoza&uOPz~(e&-sI^8n^*lBzqk6` z{8z|CWK+?b(f%IWSL>M8Zy#4;PebIW<@g&$I8(q^BmVX)M=i%ShEs!AA#)KqYB{b| aj{EFFyFRtglWX%gsP5udzfFgyBmW0xRfrb= diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.spv index 8d2ee73228b1556c7302c626ed7186cf2c5c6413..7b350164e002fe7105c24e8acaf842a38da8a428 100644 GIT binary patch literal 12068 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 T-&6Ac;W)qE>coGC@6`G)cpGmi literal 12180 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 literal 19688 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 LzvkE5rnLVBWZsh_ diff --git a/crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv b/crates/renderling/shaders/skybox-skybox_cubemap_vertex.spv index 4cd01e1ec955d15a2e76531566d09e8d32d7b673..ef4a3cdf11e6a3ce643be575d11d62331a635947 100644 GIT binary patch literal 11228 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 literal 11340 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 diff --git a/crates/renderling/shaders/stage-renderlet_fragment.spv b/crates/renderling/shaders/stage-renderlet_fragment.spv index 5fcbcf48898e22ee02f8df8cb9a5a6fa9e9c7cbe..1cd8a79d9042fe9598e5f13e18f0aea3a8f46910 100644 GIT binary patch literal 71076 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 diff --git a/crates/renderling/shaders/stage-renderlet_vertex.spv b/crates/renderling/shaders/stage-renderlet_vertex.spv index a1b8d4e7917b1b260a107ffd4400b95c07dcb4b9..23ffd2d9837afbdb44620b65eb9c74867cce040e 100644 GIT binary patch literal 42688 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

x%eLAO@ww-0(fP6}4PxYl=ausV3t)z{w@J~e&o z>oua>>FJx3*Mo9rrq8F(ey=5GrSHCR^j`ST#F=xsvnOu67v3Fj&p$`+>)q1Fd)?~T z_XLaM*SPnlkN3LOxZQ)r$}r8ut7H$x_s3SA9VAg%hP&~ z40e4TFVw4)|tU_@DbZ}`grQa zY4y4=Tx&5#6IcBcgU(AcrmtIWSZA0*z1oN zeSG)h7iREWufA@5F`PNl#&O2?b?f?IuUovu^Yrhx<>T@!TCdrM;X!|={YjUn`ez5- z9#j7(2K}l*x5wymcKp?YZjaIB>>j%zSPnj7JO6KHEpb}Cz7?)>HAWLx{gy%Jr5V#b zcI%|uV`96(QZ$>Bh8+I?G-Wl`0lZLXYgFF?y;YSGe_Du&iL-J z`-1H;-r{-MV>!*Dbw7PIKK9(WpKc5%W_(tDed5NrZ%kvyefQ09VrhL%+%KUZX^R{U$t-1D(55Bo>4{k0s@fK5$?@gRK>Ty7Hd_C?C zu7_OaC#Ju1_x<$y-rjq`{w(|l;c2tO`Tomm?AaNI_nJQbEc~8u)`i~M?oD6)Blpwv z)r0GP|5^IRi>JHJeys;@{k$K(FIbI^uIVqr;T_HStMuLTv~s@*-e(@}cj>#g#ntcr zV1CxBYxm&P_gd$9Bu0+v4-L9!6J5UQe;stsDZ1Rv`S)Ns$Jem`rr+yzWUv@@)YJcr zv-<2wS4Z{v2K|^xS4ZEwFA&{(C3(s%7|weo-sK)0?7b4dUaN(IjTcXMt#T=6;V;j% zIx_gz8RL7!j|6*m{E=@C&kove(*BU6w5tU4A=jSh8)SuFj<)A+&t-fxNEeqSSZzpq&`Jgwi?EESCFcRx!9iyyy_ zTqaz-==EAQm{zalf^qd)KA6||edG$^>P4^DiovvctrU!_*UG`X=49@j<72|ri(ao) zf@$?yH5k|T?yCixw|eEFH_z(9@|-v1StDHY(3@w?U|RF66^yIb+QGcW?#@POdOa?f*Z7^}H=VLvNmqf@#gOaWJl4PYvcZekb{~aP^|sYm;DFy`CP7 ztJkK%yvBb&>KWncMX%Rp!L)j99*nEkGlO~EJnWY(!qtmjuPx!UdTkYq>smf5*u2#% z550M|4wmQqAOsm%mf^qeFVKA>- z2Co-|s~5dqFAk>FYujL4y(;^RrQzyDuh+|hY4zGJ7}vFYd9Zn_R~|ae?=x>7 z>=|J1T63|j;T6GZxL~N^mEl?gy*0clnARFz9gM5jYl3;*HhBF{xO&m+_1a)syz%>4dc7-{ z*DD9FcZaJNyE8_6){#E%ypGZ}rMUZ=St_ z<+)_IX8VL|9(wb)2pkhYw!Ig{v36ULOdi)$4=7xOyEQ%x6LiqSx!hU|PLS z3dYszno^9X?CYK9%-+xv5_~z}u{eSfoC*EA;;K#RPuL<^h6662Nw{gy06YC(4TIAtT z?b=|uX#8lM`*p!|N4d{Uob_-mFU!><;`Qlc zUtIrP<1Yux>$61H@`m*74O(9lzY^TNNAKSIYA~&P@5W$Uy}lMKe*CQV_4MmSuh%z% zY4!SMFs@$T3g$I_R=X+vdeQ53b1y}_%b29JF@z(U~MX%Rw!L)ka9*pa= z=Z;|WRbiDyuTCdzOu&dF@5pl^>Cf~Z-?9&d{M@^hCWlfc79jMH8aLN=bAdZ zCuZV<-Gg{%b?=!m-wl?#bG|Em_xrKa{l0VX3#R-1`_p*m?%y8-za%=(AEx~%&Heu4 z2`9x&O+QIrZs+dhdxDL3l)HE0#{2!J;l$GH@t@`FFgMzLX+KZn4|guV3^s1O-+z@p zzIl7U|9XlOZw=+($G7+UZ-VE&-y7%LHL(uzs6`$g)qWc+7mXjSbN^j1-BIrM6F1)P z_lFZ}E&edYyWjDDoca&sY|Ni>HV?dciPxu(eQ~|t{~RpuoQ&^U{v~~TgVuZD!QkEt z^xg{(1=D&j{52R?ufGM0AMf|Sr(Z96z5WqQtJgn+arJsQnAdo}|114^(d+f^U|PNY z6O8L?;D3YFDhJK|d3M&o|3J!pU`^bg`eMiRv#z~A=Zk((hFNp>r?qx}T4Q6}Bd&q7 zJuKcm<(|Pit9hS{c| z>_Uk*Ud|WgJ{D{5c~A6kzWAj(%KdBN>@A$%g;+Qo-cfFm^o=j)`|3s07dvu`r7w2m zmYBHaFm|bl%Tmnbz%4UzzKU+%<-*B3j$J-|c}H%A^u;>*-Smp-QSsy}7W<)>SV&U?dP^X{Iq2R2IIyhm>1^u;RS%F{Bc|R-IJv`RFP5St8 zj@wS0xbEMVhI8N0%54|y9vQjq(|13N+$+a4!=pxc*p zb+)EmgVi+dncdTGP4a4!!pxZNabynYN(CrzzI=g4~3ASg(y}fVx zct>kLY~sc}b3{0MhSoiERIoiWa!03c&y3u$>Dx27)_PoU*TSArhaA;EFzEISUB2oc z9CUkzE_e0g2i=~btD|!~G1$DvJ#$w2t;wDdqt1GMXwdB$x;m?$J?QofU7gj>8FYJw zuFlqUZm^ohJ#%6Dt;wDdqt1F>H0bsWU7gi09&~$#uFmS047xo-S7-OkrNQ>h_$<9V zef+p*u9>)T&s-PIo}qQmd_LHo8M!Z}Z_kX}_37I)xYqjR;I4%|qYgQ$-!SO*3|+qJ zUm0|JhAwyYuMWCBLsv(y&)0&@d)za(rr(p+@AArtAyKY;+k*OaGlTQ(H4lW9MxAF^k+`GeAQPU^erY`?&@m{ z`j(Tfj_T_Ty8H3b$*-pB>kqp7k*=od8w|Spk*=odPaJgjBVA4XU4o|vtHE_Gw`uzF zx|Zdhk-l86U%AcF=kJ>JyN%7$=gGquF+L|PnH!qsv&bFUCinKkesi=c>rNJddnL~;@&8ju{tOi&ON1j!(hGbjj>%mb)^B47@vh`6r1 z=74J?n-K*hi0M1OJAK^x=GlIx=u_vsb>6qCtNS1B9cI3HS6OJ*0`tt8HEXe1mn@c3 zj>TuqI}77{$C9&VEi!Atnf}(>@3#FKhaJA}8tbjUmbk~yn$KzGzl+U!@(i9g|2^#R zefHmPsj;9IxJ`7aQeKAS#9d$^&RxXa~3ad>tsJ7XZ5`}6~K;F=A349b(w{+ z@KgS+&FMdN=pPx}TKLT@NVxiyvyM2ml~V(5<$;@T;`oSLJ7>q}hpXR-!Q$4**)hi9 z8n;DoYR=|{-z0tY@}DPd$#|ZYbA3(^cId0)jG5m5_RpN@pSXGTv*z?~Z2#;z z@tezgPO!Xck@v)$-B0GTLjLQyruG$sJ;(Hodt1(~5zaV$*BD1XFK52Sw(j$Tt?_E{ zGM{&*iM=pqYOeR0m_sV4E4Oc-D9OM~qNYkOqQG@ST%<*XL`in#*rH}f6a ziiz{g6XP0)^K28V(RlKEPtN@GjaxTowQKXFO8xhywYK*M|0_rPA4q?tXUx^y4_Ag;Ic=VqHs8$Lt_p6BtAn4MwtD7m zULQ>xeV&!vuGuv+F>`W#EZANf<66hH6F=(Jt{cWwuXg>Q@ukzu`{QYH^5!A7^?xqd zv&Z%Me9jA{*)!F@5Nv<0nE!5&vpHHXXX}c)A+7WOQn1`@V$A=>G#*|rjBT^;yk6J? zuAlzVIjcc`#Z!t;OP3skNw9? z{jSH&=`WjRUh4XKTJL|)(2n&iw60^{Yl?ooz7Z^6`~MZpqy7I5Hm3b=278{j|E*xp z^Y*_T?0Me)cY+rm`ri%qKCSxqf|p2hFK(Q(`%mk>xh2?rF*fV^KjEyKy|qcMsXkwv zF=Bo)^<78nb4kwb#jc0Gxr}{t8T;na_2To(w775CJ->beaBcP+?WmkLh<19;V_QA7 zn%{<#cG(nfzib@tjGV{T_)VgD7V)yr?fK`0bFaIXzBKV0=Dg{|)3nBK7G9kAIsC#i z&&$oje>mL#)tY~c#K?V0+UnU6N9MfcTzQ&rJR9%%yH#Sv%Vm8$pPwJ>xuDVK)HG*( zUYNdom!@^EY#;7PL;r~MmmK;>roYtCKPvsDhyKy&FEjLyNq@Pa|CaQZANt3pzrxUe zYx*k={o~SKY3LuH{>nrDg!G>>^iNFxsYCyy^j8`BC#Szj`qs?7aEkuaHVAi8IIqEu zlhYna?{y*U?VHkHJhAR&{jcV{$k2aR`uiug`l;!^e&`#2z|c4Tz^T7!{5%^EP2auH z{$c5Rt$RUgqaTsJ=d@$X>{0Ixj+{8x()f-&Dwy_>jPPteIvD4@!-#-2ZnJudx@rFZP{!L*LOFxXhn#^${!{f?z~?8U*fj=dz31x>V?Pi~>)6YJjs4s(_VV;Qmfo>f1k*b9L&3&+ z);I5m)9+Y%$6gss>)5Mg=8vb}vGk7pL@=#mKND=M*Q$>FZ2BEb@7T`;(>nI^!Nz`Y82g3vJC@$DHw4o< z_Qqgiy(TvASJLlTddJ=rOnW$Y+z)ehJUT1yOM-utc1xQ3AKol63r4pmVE4G|1bgqm ztM}PYgY8+bCA@zY?BGrNdD<`1c*B3qS&TmZ+Eja5;%^Oh|Gz7Z&uuw7_|R@oyCcmw zn2#8JeAndeVD<1CW5hm~nRu@JI#|7Y#2eo_)>vfDbH_769qXs>PzPDg-=fX zJl6^KyfW?+)11}~Cl^gEyo@t`?BmsD9X1Fyj`us$7pson#>b%!F~3Xy_i6m#UjIJ? z_xj7->wix$O zX!oZ*kft73J!16nr%vnpVDQZu$E(-+q2OcFXyZ8JTiYYSt~GD*JiAtZ4enZr>smb; zOnYl;^d9YR!MNuAd$9QNb>tuE*Na}Se+JX)^{-%Dy|N@TUgPV^JmKm^uh+c6w0g}K zjN3VPtIrbi2dh;MT5~KAtlrs)>D(6#*BtcbSSXm*9FGac)obBkUY8ACj}2EZdc772 zrqyfFU|hW(7tG7&vDWqYaP^|sYq4Njy`B(^tJmVeyiOUso*1rP^m;83Osm(D!ML4s z5BeOoRIqugR~~xvJSkY7@wI&EaLq$+o+k&>nrE3{T)mbJ<~6>yFBh&}^m;8HOsm%l z!ML3h?X%*F!Tj;{Un!XX`1-$cxcbxU|CC@_{hu0)tJf;QyvFwfPYYKsdcB?=Osm&3 zf^n^N)nNYk`ad(6|M;HaS>ftWum5VnwE90g7+0^=gLz#(?1krqs~5dqYXsBkwPrA` zUTX#O`sU!ZcDQ=c>$OfWtzPQ}<9dIt7pzt}Xw9*HupHxij}5{#2faBq45l^5M!~px zJvW%w_+Dh=aP^|sYm;DFy`C40tJkK%ygoS0eY0@&qStHlU|PMl2*%ZG%V1vPdzG!i z)r(%Q=Lgg3^@3nr@6Q(oo40!9p*PQqg5~*cYW9A`XAYm6y*_M1o6cSzd~V)0oX^f) zGqwxfKJB4d^UvC0!U>rfyJPysI`5LIz2@%}Y`mk~&J#CJxa$*l8ZDeyn%BTxb9Q(Q zr0tfrdm4YZbJ-)96}%z4jnVy(qqQ~cj@J@9)^{e5ya<~2E+ z2VTA6_38GD??ql4>^gVd_7#)9&-eC#&!N5xF@FDPymROD`e1v2=Nr=Am}U;c*#X@{oqhdY|xyr$hZ}-4a!E^6{#yNLQjt-VbE%NZFc1*BbG=8+s{Vl^kq9?~*o3|K#-NPg^Q&y)@4Z`$XJ| zXUj@*QLSos6`$g)!r2>7mXjSbANX*-BIp66F2Uk_l6T|E#5c9+dugC zPyG+%Y|QMO%>!><;`Qlrc+YoPua~Mb4F>SXr`nh=5aO$GD9=wb*e(dAz8FjxT*f`!k7mHQLpHrhl9b)cF|Ng0dxNH4DaMxPy zuJvES(|VmA45nM_j(untOYhi+gJ~W6w_sz(&vJhc*Sz$O{YNmZWB(a!?Cc@$zruAa zy<;=gS+w4_FUf0{d8nt{9^vE=i}U^OOT&q!S!Zi!-L2Qy$6I$}o|y5*Sxes^i?!!H zbDx;Ldq$1+yzh%~yq3&3-p;-6mkRbe%l}EiOHZ1gxjZ@emYiwJOqyrtvJ;LpoeM2x0yu5GBxp`>^q#c+hFWkIu3U1zU?;jMtd1uF{ zd;j3@wB~(tFb}-_Bd;8CjeUIg%pt+Xsl$E}+dXr7_Jn%Jy>AV9S~s5UJJ<8DV7~J3 z6kF}^V7@eav_AF(U;BV>`_3JEL@;l;_=>G|WH4_UUs~sJM)J|kgNJK!Y|ajQkp9;6 zk4sYn+-q_|uxnx;IJ);w4Ck8I2jkv9DLk#$5-n|Iv%XNIRW?^(e-@baFWbMw;9NqbwGym0frJ-B(ty?<`_<{kI`dEsfz`;K59 zczMsyxp`?9q`fmuUbuNL3~t_W?_U(Yd1uF{d;j9_wC24emL+f~iK`!Ovxyu1whX5pM{{g7aiib!CvNn6!NiSzTZc23(eK3*H~MWeaiib16F2(p z5Y9S`emhRw=(p3vjea{%9KX}1_1iU^JmOEtb+<0Bj6Z(S{6>uaZo$0QNmC~uG4*&! z`aIN8k5@&<*JF?1dYC^CG4*&^`n*SvS4YR!F!y2`YJ)`66@v7i@ zxHjq#Q;$8sK0RvL((_DvCe&?>=$>_&F|FleldcxA{r!wbLwB|cM zJY7B>?w3`wb`Eo(-yHtw;nV=1IlV@HZ3fR-zjFUEan`fk*C)>Ub`Sh_u={~Wx$gwK z2S)A(;p|Jkjr&=!{lT}~FM{o-k-IgVeS-VqbX{)?#`k(HAH8#>-JbT(G;@Xf3_2j| zpyuwkJA!-fxTn-7rtt>`%iZ`phj?1oq;=gDooDO%dvNQb-JSO5GOxNm7SqJw= zJ^mV8kKPMn>hWlFF+93fe+yQln&g;?8P>|0d1joD`TZl<+S+TzSx4*YezC6Zk=F9B z;MUT6VZ2uo_;0=Uqu0;w{duDE=-yv8eTU}{ZQiuUr^yR<@6Q*^+t}{?`P1+9r1yF* z5bS!=Tla!ftn2xI?b(H*i!rui9y5&T9v!dU!qLST(`)hAV71_SJ>QsX<({hVBGI~r z-CJVnv1oKLJbFDJ7pz7(^q?e%FfLwOTybTG3nY{;9=0 zTkjL6vDU8ZAg1*$5nT+gdb~dRxQCY56~lYgoL$qW&(+7vW!y7^jg|j~^u<-_kh zqwj~Ed3Zm(dhj(ld(UjlnEN@=_|oJWwKdXL4^53U?=#lU+2KCty=K~4Y32!=w-|l= z*vEHn>jcYhj9g-UN8$J5*A1pS`hCfI6KC%?ZvBb#y@2auJvRu47tcrj)$<+AOnuXL zH+~oK@tL>ZiSYH!%UW4@BH)~>Z6^L_Kr05!2R8#bAvms zzgu)(IJszQ;bolhV;|qWd_k~ryzP6j>iB(p9O@ABhxG4B;|KTmgZ>!2K;nGQFL$rc zy}>kjc^PN?*vEH`?h7`Cx3v=6HM%_c&GmEP)pm9I4ztDgNdI`eyc|A}1YL$c5 z9Pa}1nFVBkByHL3Nnen36>oLK!dMzA`tJhuZVlb}zXr*Aa%0cVv&C0>{nDr6kzI3m-uiRf_AMZZ( zI`!1V8tdNk_xZ*4`MpYb&u^~{^Uf>c)9vKydlpT&o#bk{%ZOTHPgPBc2k-f z;XV&<4DPr-55E#lE}B|+8E5?1$M<=7bFgu|JrBjIV~zMY)FEcg^w&z`2lqZ+J2-!4 z_KV!zFY5%;x?k1}#&zA+3l={<57$pWe`dVs_1YkqR<8|%arN3LnAi9`d~W*rGvh_C z*T%uLdTkPntJm{_dCkt)&T-T9^Jm73Ua!sIw0dnGjO#ODi(vCsuRQeT*)mw3@tL?) z`uQ`Hhu%ET52iKG3xaX=dSNiH@tOFd^z&!Ni(ap-gK718aWJl4+XV9(pNZS1pFcBR z^m=U*sM>$OubtzJ6^>d<)JsvuEFw*&&1u* z&!3q*^yb+;nASWm3C7iHk6>QoGx4SA=g*86y*sM>vc#ltzL%)Rl%KbQ)r`GQ*eikf7 ze7Ro)ixFS$m%(z&Rqob_8^_)@amMyLo!f)W%Xd1>B}cz+yCc~5cH%nb&S8vs$-%qd z`MfOeN91q(UBS&EUVbs%BX_4S4_~pq6Rg+E6UVz=zX~3`8pX(xCevXhmLX&O`II%9-g?~N9sE&_pbZf(YRyM$B*1w(l?ipd+WrFIgX#W=5YU> zIC1XP<~Svs9OKwi)3*+e-dm@I!;A0O)2BFN8+S%H{1|uU6sMNPofQs0#+^OIsjqS8 zgu{#LetBE4obF%iVV%@h{q2KpZRqN%e(s=KC%Ss7pEu~%jINH(`}|;QHm>aj>Dv>I z#$7mZYyUv7 zIgT}5m40io*Ttx_o>vdLeNR_s^^Xj?dw{Oaz8-uuSY7zu=hp6*+XK~STFJ+x{#dx+LO^sHceXyl$9&K?@M z=Y+F|aGl#4!Q&oMhaA<{9CUk#E?@Pv2HhT_%Uyl#LAQtK>gXKT4L0v_4?Qpa)?^Qf zQD;3j9dvt$uFmS44Z1xx{=YF|`&oP6VBXgMib?Cwk>8p1cAc&X@B2~ye%2|UpKp$R ze7{%SFJ8u~!8oz4<#plILsLsNbKF0idT45Cj{c0+`N8~O9Zrk(`o!>lPB`_goxQ0) zr;deZzDIvUVs4mXHi#}pzcGB?IQSSZM*WRhH{6qwL#=W-i!qPJsC}7eY8K-x#(czB zr=@eYZqD|(9AP4OXihwB|T1 zSdQ75XXk!;xaOcY#~H!2<~TDLSFf{zd0jSmogJ=T^m?5WOsm)1f^qeFdoZu@X9MSk zs~5dq=LOU1^^Ra%z0MEjb;?lJ1>x#Nuh%<+Y4y4=7}wXwi-OHtz4FkT=i*>_#-AHp z60UjZ&2womt$E%RjH}nXgL#cV8+cE+deQ6k-e6k2-WQCk*ZYHcjXxXsK)8C*>oq%= zR1x~o`LTDt8#X@_vu%s|B*C#V6W?bPwAtZGrfF=G37KW+}D^><0X z7VNP8wEsx^dYbizU1u@+`2G&$k7n>3FYgy!qg%qMlQxbs-u@8t&;s{Piy8{Y!K|8a`YN(IC10JJ~te`aqg*&CvJ?}Wa7sA;&~J2ntDHO?55#( zYUMTy=Bbt2Jea4}Yxn$MG2+X;Fj$QEaxV&&Tds0jPuw{6#S>?2uk|*;-3!enM}Mxc zZLps!i0hc`hB4+P2k-uDfE>hnmu^kQ`Rts&`H1V7U4}8%Kz-J<_3augud!m)*Ri{$Kh|Tcxwrm9QX8+v?>@vg zmze4=8FXuh$^a*>CUe znZEnR(Pz(I6KBrl_MW)$Ubr>ho_~(s*SDpQ_qx@ww+D;k*SI^<$9vss+?~PVEpd_HSSlz=IkiH9Fd@ZlkRm(Y+tty4W_woyiYqd*x_}Hc39fsX$G66TfD{d^tGD*6#-Q6{>X)Gqh|?y-x4X=jAD$F2-^ z%zPFIzBuiYGgXeg4k9|0tInu^)#&?fh6>N|37SGcj%V`#^`)U37 z*mL84+8~^m@maai#Eo&!oyLy)ZsTxbX?;yRG_QB~uIVPhU32;66VsYDO<#UTxh=w} z)6wg>b$pCr%ypI6OMO9@_-hLoV|ZcMrt@0Pyt;_0rle}@cj z{k$LEJy?y7uIV1(@Q&tuS^DmITDeyQyU$1NRpH#*xccoG%+FeN?e?4cUh6!M#K=+o zb%XBNM3=An{)6s0MVGrd-w-V4_!{=+^n1NLU&N@Ro`(#&=L=mO)ejwX&lkEn`riGB zVDFXWDR)$`_e#9W9TV)m62D%nw*(t6p6*)ZQqIC(n`?Di@W(R7cak3n_U!mn`VP+y z+O=t)O!KUO`(5V8gFCL@Wqu;u2jWHZtl(vw@nawF*&+X@gN@_uyG*g_I4(6h)FI~h z^iN3R2lxBD6NCF*kKFyP=cMqoe%Ety@C=t|e`n~F^u>?gWu6+YUi5mM7EG(x>A|>u z2X#g;ukpLgGsD%3Uazx)Y4tig7+0@zf_cqOjh*A$!qtmjueS%&>UC}~uJ7H?3pQ`{ z%0q9ScLd9G*^uY_aLq$+o(qC$&GXJ+T)i#~<~4qwc~Q7}(d%__Fs)vf1mo&;X)v!- zhPvJru3q$dy*rpzulEGw>h<1WUf&qJ-WRT3^m@HNm{zY31mn7vvxCiBz4FkT=Q91| z8NbiGJY4h8o9BvPTJwA`7+0?k1@jue&-`$>deQ53WiYK?R|Vthb#*YW@pqj+60TnK zdVMsQRVGr-=p=3-mJ*MimX z!J&r#2-h0ut>NpzwAS#S!MJ*TBbe9t@2~tk*SEvf zi(aqq1k>vE-C$h3z8B2vdxO{a!_|vkuO9@{>h;55T-W(W!RD=AdFah^ORzjg>r0~9(wcqPcW@{eiDqU*H43a9XWXYEL^?l_4;`*tzN$f#?|YW!MwH~ylxFwFM7Rh z3#QfU_F!DS?g-{})ZlezxO&m+byqO0UUvuMx|Y8RHgEOHLvNm62g`HyaLs-bu6gLq z^V?ur^ZYItSFhg(^YU-0_PYEbT)pV^x+j=cuRjLk>UD20ubYRu{uHiW^m_d{m{za* zf^qe_KbV())3tRy5UyVIdi^DsR<8$xab3%Yg3VjK^3a>-;b3|ETd~daNVw*qH_u;# zY0dL!Fs@#I3+CnDnXT8~!_|vkuYUy7>h;fHT)qAk%=|J1T63|jVc}pk96!|X z*l?|Z-WnDOrnQDegK_nGTre;H9&hLK_;B^2*K4t0TD_hSjH}n;!MyxizV&)yxO&m+ zwL~zjUP}h!`dMPBV71CYYmO%c%i-S#_W9!V!J7wrzrRd0@7JBZ-(NTDxNPti(T~p> zE*HFfntzL7g$XBQX6%aT8|&=zm-p-|1sm@uxAMgK4A%b-!c)SDrTHxJ)SMkYOVCzH zds-TQxN~_%uyH;U^xsohHGO>Z_TOT7<`gI1T;<@$w_~3be0se6ZjNJ&6W=viEm$74 z$it)BvxDWL@uPL_s|V8^<(@Nf*2A^DGUqkIiM1AMPVxRN2K-u6f9;%SKF8*49(eVN z*QeVnhsAH*VAr|pwqE-7fPWL(9`J8BZ#nIO4X5$Wozq6aFO1IfxoI1x*#nzQI4Ndw zKQDc`ojboxgN=8T+ic>-J+OH=u{87EB4>v^K-)5Ht2F*_=kkJJBC=hw@EarJt6u=w%w{wvb27rkDu z45roVRl&G=y*ilJ_<4WN^y@{h*IvQ2dhH#I>vMIVV71CY+cGZi$r`*S*!o%%_msZa zas6BuzjtV@UmJW?&aRntcdhiTaep^)-(cUdh;bI!4s><261w{d&>s_2yt&y$%V+)$7n;Ub8dr&hfDH z>qW2E;lZ?e9TAM{dz2%C&0D?l(CwLX;(b)G=dv}nXY|F7*TZ$`o;f=Bs*GDJXZy#s z(|66fXO0QBSHw7rv1b}%&ny?tUJ>IgX0zY2@QEu6Z^IXH7kn?x*eInjb?t9^u893jce?Od9 zhdA61(iiI}_oInx4sk!8xLl5Z$NgmDd^O&@KMN=CIQHk^-X4q2g~UiStDzwzUsdkbn8V| zSM^^Hy0xRLr}}RO-8$0M(RKW7uyq{Q`*-22C^3bhC^?3(fPP(FVfpTq)SRU9*mPX8Ntkz7(U*>dzW<`;xBC>Z=X9eMwhm z^=A*deMwhmYkE$wn#Mh|LHe!9o)M$YdTu!A_6%K})i)Y+dxoyg>dzf?dxoyg?wL)3 z?U`|JZyFBoXzg21+_-1931`pHx@Wcvwr56ehj8}H$n6x)p24-&orAj;_KZ5@sJ_df z+cR|es_#1J_6%L_>bniPJwsPV=lGIf^B(uip6RzHdq#{p>$%sU+cR`^R^NNj?HRf{ ztM4=D_6%K}t?9MFY8v;-nZZw`b_;tbWj-+cR`^RzG;q?HRf{yJrpw zwr9p?>0#mUJC5LO6Sd);)7lust(!r-ZX-M((t5_6)AIo*vw_uxHdENA)uX z-JYS#SN+UEw`b^bS3hge?HRf{dVS6bHt%uIT$p}qvS-Aovz`|Xx;;ZzXZ4E*-JYSV zv-%~2ZqLxw*_z%Jtfq0#T%LYwvS-Aovz}KBx;;ZzXY~&bx;;ZzXY~&ax;;ZzXRq-& zc@OGYcU0b+mV0|R&$p2~FPvxE$ekbVxf9oX7liA4yzU+mUpcD3bI|9Rbor`ZIOtw? zjhDOnMT0)yq^qO)2L|2!cudBtsru|ecR$kARQ<9+cR$kARQ>WncR$kA)ZcBmCRh!w zYq^i5FRyD^?%MR_a{bC(mp*^jte>H-PoF0bW5oEp^n~2dG@m{EeF~pN{2hw1kJseu+N>mPR!>H-+g{Q z+;#D#jpK~>*+|R{!Tz6iyv6fuZP#Z0eqV#H+CH7WLv6I{(ms`@7P!CX@rmG$>+gAd zGMrpAweT{|__2>y+iA)3nPB61`y44&9bbx%Lmgtioc@hz{NR3G{z`B^FU#G}%Qpqn zx=vpWrjOqN+?;;L(mVER!L)v#_l;nFc=J%3I@B}v@%?V@+rh@Eb(6eKi1lo8J-!o6 zca;0?#JQh)ZT>U!zBku~W=+1EzQdZ(zLEA{X=;JhB1RwIee+$Vy>Y$C| zjPJhrUa)<`TRhL!_VZxZpRd~POy8k4+Aq@XNK*^keRErI$93P_9!@TrT6h^}{Mg5L z-`o{!9B=zZtU7))t*bi3+>-u})A+&NH~$mdYcF@N{ZGQv`aR1}gK=HAp9PB__tDS8 z)r(%QUj)1QWHGY?LTey1B>velDtzLHo-EQA zTD|TK#&zz03RbHewC4D8upFlh_1+h*Iq1!Ce=w~%9tg(O>o38)zA<<`7_MIQdOZ|O ztJlN9xOzPj%xnC;pudKz7rkDO2Gi>Gw_sf7{`X+D%0a_#m>T~PY)@DlG43PxhWo(% zF!u58E93qZY^-}_(>%At_MV?-;W@88H{`x|ug#mj!@WkEFKzxbIbb=&=;J&8g@Qj9 z53gfmjMzSV77q68;UnJo)^T6f&NIY4sE$X{cc_DQf7-)o^1^-gJQ&<@efB&QPA-~S zco}E>*vI$T^VeYGczgDURmURnai~MgqUk>_jUU|m@A1LC)^hh+FBVMewSGb{P941Y z@EiMhb@_g0@nB=*IwO6tUSIs~?GuAtTSwm`FA)wua!XB|*P+HOJ#ks`aC3f#c$skh zU0&n+o^9FieNU<$ImC9{^1&S^uH#k+KaNv}*p6Fi7^jYoTY0W=Y8Bi2V~6ZvHSrhg z=WiQj{8NHyt)=Vq)bQ46oc}7}@Q$v@(TXo{bb$V7fIdG2Fy;}HjzH*4|d{-aF ziR-xM%r#COVmoflVcfV*Yt1!Itzx@QJ7z7^#9wUJY3*Q|^_nxUIs0jy^sQ4l`)}QF zct_W1y@?ywY5j?tGj`5?+Blqb%Ac8|^W7x;xK472?R+;K#*OQ=*<9n)A-3bT7{-n3 zwB=mm)GD^)oVTygbBp4PO{cx0c4ZfBQMXxj$3cI=bh{`@=c=OyOrL zbMEnlXMRuOjA(wABF0(FrNND{x6e-h>r;%g7&VBI`^@N`CC;8z@}3ra&cr*5J8tTq zm~)@q+az}1^p8#J^K9F2eV)<#Jligq*5}#w!MH6G{rS|jL+}Avd|p0h>5Cb2tD)<& zQ#9*xd^l%yS|9a^SvU9%!PZ5LvzVjP#PEG%&gSlH?mYJoK49XV#qBlqUz2m^zDr_X zl>V#JI`>_}b?)@eeYaqmxt^Cgb`L%UW(G?j9|V2_*`h$&3W$F&Ffmw74rDfG e)SKMNd|m~l1|+5rq<;cw7#~FcWng5m0Ac_K#}94* delta 69 zcmbQk`GbY8pa3F Le;F7VEPxmQy8a8c diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.spv index 1f0d74b8fd42516e3b73ed3f2d5640adaa507e75..cd614e1e6bdd092eef24e1317c6782add68eb8b3 100644 GIT binary patch literal 19076 zcmZ{q2iR8Cm4$zL6)Y$=;71^eU`v@8O%xQxC@PlBBt|I$0*WOFwpb8QV~V}^-g|Fp zme|r}qNdEmXsl!G9RZ#9{kY5QhbQwrT<+RyowN2n=kEKp|LfFoNVm2w9opL3`nL7y z#)-#DZ5`WWJU`#Bt*uvE*S5u7+uFvC+il#22hW+h;g`R%vE%x*b@J5uzi->hE$qBG zbLSj5d*n{5^}@!(mL_uhNj)QPjF9WZs;>{-+1IJhH+4xKr=aFC*HEYX$?Ua^TC z(~D#MCLYDvvCbQd!)VTWZHJ54$B<>GmhQOKIrJ6}{#;uYuT$c!z>(p>=nA{-FKB}Kw{N{lj*Us5T9oJ5raihQ)m%Q@|m%Njh;JCqPKB}Kw z{M;AE4RsKYI!-R*vR=95Z3nxz?wi-ihq2c*`)9m0@jtIy=e98=Huo@MA2qk!^10<| z?#%7f%*|dqu5-hU;+%0^8g6{ytjoNU3g_)0H-p3a&FT6^aI8wa4d-?aAMM23a<*3a z)#%HyExxU-KiYO+V?B(&*~Hf8-0eAAzx*nU+JW<6m~ouNBN(IajvUsyHnI1KAp9LaUD_T8E>jx*QpoXuta0c07) z+4=^8M{_oI+_yOQ=8&@{W7jOF{%y|sI5)NJ0d}9($IF`coSj$4P9W~U;hs+9 z>{?uNye5IWbGTnyadylk4*e!`Hn;phcGX^WJ@pvKxIxVr_tkOjt@EhuD2iJRMxuVjsG9(Px6)kHq_ey+21%g=?6_;q|JA zeY-zgJ4c7sv22eI01qdd`+XosJP!i<+&PkUyRO+B)i1dYhPP+_mFAPZeAP2=ZkZE3 z+95^Dd^NArp&aJaTMx&k#v{O~L(i<`C~!{>uhr3Sn%F+u8tgUqdKr)5Y#!r*R4|Nl&1FvKIBvV_3zWBJ$6LeS;IgkdkK`HA^*o0*o3r`c zf3J)F&atOG+|!|)Uued9&E~cE9xCl7T!lJ7NQ^G)K&9={If^-lZ-vDYc_o5Vdz{1)-D*NtV*;cpYK zQ1o|*`;_=y;=Uz*k9egLFCt#K#GeqaR^rcyS1GZ@^(%1);#EuBk+^?}I}xu@;?Bft zmADJ>+9mEvJfOtgh`mR%AKi)F`@}tn+e_S&*q)2ti+G(9_a+`v;uVNDC;m6Cg0GDo zIDCxb_?TCY4^+uvDRC#_G2~YN zjJPvrAM+Zn6BC>_0d6!s@9S1)ILFyb>hbF$&yl%Z!OrzHFmt;(rkSgrx!u8PnY%97 zx%OY?t_PR7>X|zntd_YWz|QqKGIK}5Wv+VWZU9!hiS_z=u@~5Vv7V3Eoe7+Me8OzC zi5!zSyf)%RoE>8`f!R*Tm` zV7YjG53E=1$=Ss5QjgccV6}M70n3f&KJYbfF4$Vlp_UwnfXy+TF*Z@#yuMEyFZFmG308~OQDTmG9SzpY=lpmbLmV&lc+CT=#p_tGT)gIk z_42hVUJHohr5>+^V6}K12bLR8U-^FFc(CiXUh}9Y&k11j__~xlKOjyX_2fAbtd=}K z1k1(iM_|1sm70G{953~F{RFHQuam%XI0@lAiXPrtMfA#pE23Cvz z>0r5dodMRXK8Kx2953~Fods5l*V$mX)OrqBfBE>I3)bJ)^X%(+#PL^;|M_6G_+J2) zi`RuhZc5tQN0Jz;f}r6s(u;D^k~G#PL#(*X3ZfcwGUO%l&yJ*jmk@ zmK;}s&Eb2Mxtu~9c5 z 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�R_`o%@JXVk4D*XL5O>#jX>9dT;1XB=al@w~q1_Kdo9M!%ux_Kdo9 zM!&J>_Kdo9rly<0)>M1u9^%ww&p5_9<9Tn5n79_DAK8hO<8^HxJJKkV{?1f@^+f#qT3(p){%7|4|d(PKTa-l><`CSXFN|Sy8WSUozYJ%y8WSUozYJ#y8WSUovG;z zur<~GxUkHzKOAG7@w}+$_J_K4M!&e|_J_K4M!%%!_J_K4rlu>v{;sC>$4w1a`{Nck z`$H}LaU0nFsN5ZJ_DALJg0ny5QrF$!+8@?oj_CIk-TqKFU-Wy6ZhxqoJNkV^w?EXa zBkO(u?7C}zJW}S^AC9rkc>b#B_J_K4Mt`*E_D3s6(H|?i{h@B1sp$!@HP!z3Lz!cL zIL11Y^QofSAL`Z_{pq6HAL`Z_{h6ZMAL`bbYy2|U>+Wx=!o3RTb+6oOa9;Pyy$l&k5 zQ}m@pZ(U<_Yl{A9(OcIT-J0_I%O1qm;I$0b6VAL|zi_?a%;hx;*BefMuaiCFZ&3Td zwHk&~`lv5li!a=Y4d*?baVs^P_du@gT5vumIX>I~u+Kx48wBTbPvr)~`Ftan{a6Q_ z>+NfywV5OOkfP6Mbn`_YT6A9vop0{w!-~FdqgzMx4U6u*$~D^zYzva$Jb+Ea-?%}=x*5B)%zm;qO)>9AXIL7Z? PX^A$qrF=`VDaZc-^+Vt- literal 19376 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 diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.spv index 66dd71649d107c845cf2a0c074fa3e947d1320e5..cdd8bffd584d0055c079172c0bf35092aea9cd96 100644 GIT binary patch literal 5716 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 literal 5236 zcmZ9P35-_d6^8FDNQ(?HD0Z+-#Yi#?FclO*VO(mJB5tj= z?rW=c>E5~p6}7EVt5)cexOUOFFLjAlZBRj}KF|H{D>vTcaNe_g?>XQ3zx!RLrFmrk zqF+-{6a$NIs(1z!&4p0?!r-FVp=c@n{yVVPsl>+nPUu^{VoA@^Nt1%QS1#>Yu%LHQ z_ldnL`j#y0UD>^CdH0fKEBktuE$oG@D4AN({g4?&Yw6n-Jhrmi(Ayy9%piL>+I2Ho zA@&*BP-Wbnc1Gk9CnxrZD%bTxDxCH4xfgwnnyqDT_T(dv{$Zunu;tv^V{5rKwwyz& z+4}J4%zW$YOG5X8wW;b*j;?ssb z3T7LXB=8Qx#D-dH3pN@jvj~K zdgBovZR_k=T3hYCN_+K`cIIj?&cqyLSL(E(9ed;s5H`=+l zHoZ&$+viv^?QtSv?mlSO)pI9dHzCesGTPqdABOEYGgoQCtGzFhI{SgmjlDm(74f&3 zf^I|PZs(NA-GOA!>M>P+o#1wM;q0eYInFD&S${yyXWTtaL%V} z5FdedKlZ9U675>;Va0&*%-gHIM7zd3e>cUt2coU3Uwe9Go11ye0DlE>cD^^WknHnd zuzRSBG1t#VJWqA;+&KR!O%1>Ons5CMe3?~rd$DanTp8o8qc7Teh|#&H-lk^Hz;@4x&&2*h%{~bGi#2-|_JEpwFt+zm)*piHd5k?9d;6MwDE1CD`|H>P zYjzj*jx~D@_Mn=581|QH_BXJd;RJT+JB?XBzT+Pj&BeFSo*94J!x8tY?Qc7`viHOG z{2YNaBh%p0J`!m`e9o+V^T6hL4sOQhySN)g&DHk-E5=n#Y?c>13K@&ok9bYRH5#0C zYb&lX_^e@U6Zvwv&h>R$|3-FW{dTbHP|WqY_HZZmKw{zjs0z{u^eA&7*CDkz{XPJc(A^3tpLmAJDYx2g2QDz zTzz0;;W`1VFI*>rw(*GbsnG9Ipz!N$V%9k9M|odTB2_dHzR#SWM8aGeS^7OvAu z>>L~S_9|@mZNJtro;u$HTgUq&byj1ij`7qv9c(Oh)_@zn#(Q=Kwp`vl;W`sLT*kw7 z7T8$0&Iar2;!N&=J_nIse|r5sSbp!a@c#fi{Kmt7F4$Q3&jafV*AKyRc@Ku`N7&&q z9<0SYLX*5G=p`@LvR$-+MLu7h{Ltc=#^?8w>xXV141b3@n#-a=0$X4wvz8 zT>&;0t}DU%!gUo`F7NYj{TMr3#>4d!u(5Dm4c3?U^BS$hOJ{H}%Tci7=F9P4X?gG2sC%(JE`k*XsC9fU* zd&FF0exLq;_VN2QW{N~_xD(j6IJS z%idoC8~2ItWw1Wyku&fL*j#7vD%!_0p#MLmRTQtGUGqBPKJ>dU^RVG% zs=pQ91Rsm6Lasr)Gdw5eorCxds&iQ*Gk**08M5!(Rd0h^5NBsRch!Hv#&TD^1J>8c zdpQmLE@EGDc^0+Jsn>Qt8~JNvDEd8Q7UEvrgL~ArKXbfK{)bFN%u$=ui6mzT*mLZA zZjRab0zyd29l^{|$( Date: Mon, 11 Nov 2024 15:46:00 +1300 Subject: [PATCH 08/11] gen shaders --- .../shaders/bloom-bloom_vertex.wgsl | 35 +- ...olution-brdf_lut_convolution_fragment.wgsl | 227 +- ...nvolution-brdf_lut_convolution_vertex.wgsl | 21 +- .../convolution-generate_mipmap_vertex.wgsl | 29 +- ...refilter_environment_cubemap_fragment.wgsl | 211 +- ...-prefilter_environment_cubemap_vertex.wgsl | 369 +- .../shaders/cull-compute_frustum_culling.wgsl | 1245 +++-- .../shaders/skybox-skybox_cubemap_vertex.wgsl | 299 +- .../shaders/skybox-skybox_vertex.wgsl | 301 +- .../shaders/stage-renderlet_fragment.wgsl | 4008 ++++++++--------- .../shaders/stage-renderlet_vertex.wgsl | 2066 +++++---- .../tonemapping-tonemapping_vertex.wgsl | 21 +- .../tutorial-tutorial_slabbed_renderlet.wgsl | 584 ++- .../tutorial-tutorial_slabbed_vertices.wgsl | 178 +- ...tutorial_slabbed_vertices_no_instance.wgsl | 162 +- 15 files changed, 4576 insertions(+), 5180 deletions(-) diff --git a/crates/renderling/shaders/bloom-bloom_vertex.wgsl b/crates/renderling/shaders/bloom-bloom_vertex.wgsl index 799a7bf2..08fba408 100644 --- a/crates/renderling/shaders/bloom-bloom_vertex.wgsl +++ b/crates/renderling/shaders/bloom-bloom_vertex.wgsl @@ -14,19 +14,28 @@ fn function() { var local: array, 6>; var local_1: array, 6>; - let _e22 = global; - let _e23 = global_1; - let _e24 = (_e22 % 6u); - local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); - let _e25 = (_e24 < 6u); - if _e25 { - let _e27 = local[_e24]; - global_2 = _e27; - local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); - if _e25 { - let _e29 = local_1[_e24]; - global_3 = _e29; - global_4 = _e23; + switch bitcast(0u) { + default: { + let _e24 = global; + let _e25 = global_1; + let _e26 = (_e24 % 6u); + local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); + let _e27 = (_e26 < 6u); + if _e27 { + } else { + break; + } + let _e29 = local[_e26]; + global_2 = _e29; + local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); + if _e27 { + } else { + break; + } + let _e31 = local_1[_e26]; + global_3 = _e31; + global_4 = _e25; + break; } } return; diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.wgsl b/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.wgsl index f692963b..99b2a287 100644 --- a/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.wgsl +++ b/crates/renderling/shaders/convolution-brdf_lut_convolution_fragment.wgsl @@ -7,159 +7,152 @@ var global: vec2; var global_1: vec2; fn function() { - var phi_417_: type_6; - var phi_418_: f32; - var phi_419_: f32; - var phi_432_: type_6; - var phi_433_: type_6; - var phi_684_: vec3; - var phi_719_: vec3; - var phi_754_: vec3; - var phi_796_: f32; - var phi_809_: f32; - var phi_495_: f32; - var phi_496_: f32; - var phi_498_: bool; - var phi_499_: type_6; - var phi_500_: f32; - var phi_501_: f32; - var phi_502_: vec2; - var local: vec2; + var phi_415_: type_6; + var phi_416_: f32; + var phi_417_: f32; + var phi_430_: type_6; + var phi_431_: type_6; + var phi_680_: vec3; + var phi_715_: vec3; + var phi_750_: vec3; + var phi_792_: f32; + var phi_805_: f32; + var phi_488_: f32; + var phi_489_: f32; + var phi_491_: f32; + var phi_492_: f32; + var phi_493_: bool; + var local: f32; + var local_1: f32; let _e37 = global; let _e40 = max(_e37.x, 0.00000011920929f); let _e41 = -(_e40); let _e43 = sqrt(fma(_e41, _e40, 1f)); - phi_417_ = type_6(1u, 1024u); - phi_418_ = 0f; - phi_419_ = 0f; + phi_415_ = type_6(1u, 1024u); + phi_416_ = 0f; + phi_417_ = 0f; loop { - let _e45 = phi_417_; - let _e47 = phi_418_; - let _e49 = phi_419_; + let _e45 = phi_415_; + let _e47 = phi_416_; + let _e49 = phi_417_; + local = _e49; + local_1 = _e47; if (_e45.member < _e45.member_1) { - phi_432_ = type_6((_e45.member + 1u), _e45.member_1); - phi_433_ = type_6(1u, _e45.member); + phi_430_ = type_6((_e45.member + 1u), _e45.member_1); + phi_431_ = type_6(1u, _e45.member); } else { - phi_432_ = _e45; - phi_433_ = type_6(0u, type_6().member_1); + phi_430_ = _e45; + phi_431_ = type_6(0u, type_6().member_1); } - let _e62 = phi_432_; - let _e64 = phi_433_; + let _e62 = phi_430_; + let _e64 = phi_431_; switch bitcast(_e64.member) { case 0: { - phi_498_ = false; - phi_499_ = type_6(); - phi_500_ = f32(); - phi_501_ = f32(); - phi_502_ = vec2((_e49 * 0.0009765625f), (_e47 * 0.0009765625f)); + phi_491_ = f32(); + phi_492_ = f32(); + phi_493_ = false; break; } case 1: { - let _e76 = ((_e64.member_1 << bitcast(16u)) | (_e64.member_1 >> bitcast(16u))); - let _e83 = (((_e76 & 1431655765u) << bitcast(1u)) | ((_e76 & 2863311530u) >> bitcast(1u))); - let _e90 = (((_e83 & 858993459u) << bitcast(2u)) | ((_e83 & 3435973836u) >> bitcast(2u))); - let _e97 = (((_e90 & 252645135u) << bitcast(4u)) | ((_e90 & 4042322160u) >> bitcast(4u))); - let _e105 = f32((((_e97 & 16711935u) << bitcast(8u)) | ((_e97 & 4278255360u) >> bitcast(8u)))); - let _e107 = (_e37.y * _e37.y); - let _e108 = (f32(_e64.member_1) * 0.0061359233f); - let _e114 = sqrt((fma(-(_e105), 0.00000000023283064f, 1f) / fma(fma(_e107, _e107, -1f), (_e105 * 0.00000000023283064f), 1f))); - let _e117 = sqrt(fma(-(_e114), _e114, 1f)); - let _e119 = (cos(_e108) * _e117); - let _e121 = (sin(_e108) * _e117); - let _e125 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(1f) < 0.999f))); - let _e128 = -(_e125.x); - let _e132 = sqrt(fma(_e125.y, _e125.y, (_e128 * _e128))); - if (_e132 == 0f) { - phi_684_ = vec3(0f, 0f, 0f); + let _e73 = ((_e64.member_1 << bitcast(16u)) | (_e64.member_1 >> bitcast(16u))); + let _e80 = (((_e73 & 1431655765u) << bitcast(1u)) | ((_e73 & 2863311530u) >> bitcast(1u))); + let _e87 = (((_e80 & 858993459u) << bitcast(2u)) | ((_e80 & 3435973836u) >> bitcast(2u))); + let _e94 = (((_e87 & 252645135u) << bitcast(4u)) | ((_e87 & 4042322160u) >> bitcast(4u))); + let _e102 = f32((((_e94 & 16711935u) << bitcast(8u)) | ((_e94 & 4278255360u) >> bitcast(8u)))); + let _e104 = (_e37.y * _e37.y); + let _e105 = (f32(_e64.member_1) * 0.0061359233f); + let _e111 = sqrt((fma(-(_e102), 0.00000000023283064f, 1f) / fma(fma(_e104, _e104, -1f), (_e102 * 0.00000000023283064f), 1f))); + let _e114 = sqrt(fma(-(_e111), _e111, 1f)); + let _e116 = (cos(_e105) * _e114); + let _e118 = (sin(_e105) * _e114); + let _e122 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(1f) < 0.999f))); + let _e125 = -(_e122.x); + let _e129 = sqrt(fma(_e122.y, _e122.y, (_e125 * _e125))); + if (_e129 == 0f) { + phi_680_ = vec3(0f, 0f, 0f); } else { - phi_684_ = (vec3(_e125.y, _e128, 0f) * (1f / _e132)); + phi_680_ = (vec3(_e122.y, _e125, 0f) * (1f / _e129)); } - let _e137 = phi_684_; - let _e144 = fma(_e137.x, _e119, (-(_e137.y) * _e121)); - let _e145 = fma(_e137.y, _e119, (_e137.x * _e121)); - let _e146 = fma(_e137.z, _e119, _e114); - let _e151 = sqrt(fma(_e146, _e146, fma(_e144, _e144, (_e145 * _e145)))); - if (_e151 == 0f) { - phi_719_ = vec3(0f, 0f, 0f); + let _e134 = phi_680_; + let _e141 = fma(_e134.x, _e116, (-(_e134.y) * _e118)); + let _e142 = fma(_e134.y, _e116, (_e134.x * _e118)); + let _e143 = fma(_e134.z, _e116, _e111); + let _e148 = sqrt(fma(_e143, _e143, fma(_e141, _e141, (_e142 * _e142)))); + if (_e148 == 0f) { + phi_715_ = vec3(0f, 0f, 0f); } else { - phi_719_ = (vec3(_e144, _e145, _e146) * (1f / _e151)); + phi_715_ = (vec3(_e141, _e142, _e143) * (1f / _e148)); } - let _e156 = phi_719_; - let _e161 = fma(_e43, _e156.x, (_e40 * _e156.z)); - let _e162 = (2f * _e161); - let _e163 = (_e162 * _e156.y); - let _e165 = fma(_e162, _e156.x, -(_e43)); - let _e166 = fma(_e162, _e156.z, _e41); - let _e171 = sqrt(fma(_e166, _e166, fma(_e165, _e165, (_e163 * _e163)))); - if (_e171 == 0f) { - phi_754_ = vec3(0f, 0f, 0f); + let _e153 = phi_715_; + let _e158 = fma(_e43, _e153.x, (_e40 * _e153.z)); + let _e159 = (2f * _e158); + let _e160 = (_e159 * _e153.y); + let _e162 = fma(_e159, _e153.x, -(_e43)); + let _e163 = fma(_e159, _e153.z, _e41); + let _e168 = sqrt(fma(_e163, _e163, fma(_e162, _e162, (_e160 * _e160)))); + if (_e168 == 0f) { + phi_750_ = vec3(0f, 0f, 0f); } else { - phi_754_ = (vec3(_e165, _e163, _e166) * (1f / _e171)); + phi_750_ = (vec3(_e162, _e160, _e163) * (1f / _e168)); } - let _e176 = phi_754_; - let _e178 = max(_e176.z, 0f); - let _e180 = max(_e161, 0f); - if (_e178 > 0f) { - let _e182 = max(_e40, 0f); - let _e183 = (_e107 * 0.5f); - let _e185 = fma(-(_e107), 0.5f, 1f); - let _e186 = fma(_e182, _e185, _e183); - if (_e186 == 0f) { - phi_796_ = 0f; + let _e173 = phi_750_; + let _e175 = max(_e173.z, 0f); + let _e177 = max(_e158, 0f); + if (_e175 > 0f) { + let _e179 = max(_e40, 0f); + let _e180 = (_e104 * 0.5f); + let _e182 = fma(-(_e104), 0.5f, 1f); + let _e183 = fma(_e179, _e182, _e180); + if (_e183 == 0f) { + phi_792_ = 0f; } else { - phi_796_ = (_e182 / _e186); + phi_792_ = (_e179 / _e183); } - let _e190 = phi_796_; - let _e191 = fma(_e178, _e185, _e183); - if (_e191 == 0f) { - phi_809_ = 0f; + let _e187 = phi_792_; + let _e188 = fma(_e175, _e182, _e180); + if (_e188 == 0f) { + phi_805_ = 0f; } else { - phi_809_ = (_e178 / _e191); + phi_805_ = (_e175 / _e188); } - let _e195 = phi_809_; - let _e199 = (((_e190 * _e195) * _e180) / (max(_e156.z, 0f) * _e40)); - let _e201 = pow((1f - _e180), 5f); - phi_495_ = fma(_e201, _e199, _e47); - phi_496_ = fma((1f - _e201), _e199, _e49); + let _e192 = phi_805_; + let _e196 = (((_e187 * _e192) * _e177) / (max(_e153.z, 0f) * _e40)); + let _e198 = pow((1f - _e177), 5f); + phi_488_ = fma(_e198, _e196, _e47); + phi_489_ = fma((1f - _e198), _e196, _e49); } else { - phi_495_ = _e47; - phi_496_ = _e49; + phi_488_ = _e47; + phi_489_ = _e49; } - let _e206 = phi_495_; - let _e208 = phi_496_; - phi_498_ = true; - phi_499_ = _e62; - phi_500_ = _e206; - phi_501_ = _e208; - phi_502_ = vec2(); + let _e203 = phi_488_; + let _e205 = phi_489_; + phi_491_ = _e203; + phi_492_ = _e205; + phi_493_ = true; break; } default: { - phi_498_ = false; - phi_499_ = type_6(); - phi_500_ = f32(); - phi_501_ = f32(); - phi_502_ = vec2(); + phi_491_ = f32(); + phi_492_ = f32(); + phi_493_ = bool(); break; } } - let _e210 = phi_498_; - let _e212 = phi_499_; - let _e214 = phi_500_; - let _e216 = phi_501_; - let _e218 = phi_502_; - local = _e218; + let _e207 = phi_491_; + let _e209 = phi_492_; + let _e211 = phi_493_; continue; continuing { - phi_417_ = _e212; - phi_418_ = _e214; - phi_419_ = _e216; - break if !(_e210); + phi_415_ = _e62; + phi_416_ = _e207; + phi_417_ = _e209; + break if !(_e211); } } - let _e221 = local; - global_1 = _e221; + let _e214 = local; + let _e217 = local_1; + global_1 = vec2((_e214 * 0.0009765625f), (_e217 * 0.0009765625f)); return; } diff --git a/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl b/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl index 2ee9750b..b2cdaae9 100644 --- a/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl +++ b/crates/renderling/shaders/convolution-brdf_lut_convolution_vertex.wgsl @@ -15,13 +15,20 @@ var global_2: vec4 = vec4(0f, 0f, 0f, 1f); fn function() { var local: array; - let _e25 = global_1; - local = array(type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, -1f, 0f), array(1f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, 1f, 0f), array(0f, 0f))); - if (_e25 < 6u) { - let _e29 = local[_e25].member; - let _e32 = local[_e25].member_1; - global = vec2(_e32[0], _e32[1]); - global_2 = vec4(_e29[0], _e29[1], _e29[2], 1f); + switch bitcast(0u) { + default: { + let _e26 = global_1; + local = array(type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, -1f, 0f), array(1f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, -1f, 0f), array(0f, 1f)), type_10(array(1f, 1f, 0f), array(1f, 0f)), type_10(array(-1f, 1f, 0f), array(0f, 0f))); + if (_e26 < 6u) { + } else { + break; + } + let _e30 = local[_e26].member; + let _e33 = local[_e26].member_1; + global = vec2(_e33[0], _e33[1]); + global_2 = vec4(_e30[0], _e30[1], _e30[2], 1f); + break; + } } return; } diff --git a/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl b/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl index 47453d6e..4df4b270 100644 --- a/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl +++ b/crates/renderling/shaders/convolution-generate_mipmap_vertex.wgsl @@ -11,16 +11,25 @@ fn function() { var local: array, 6>; var local_1: array, 6>; - let _e20 = global_1; - local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); - let _e21 = (_e20 < 6u); - if _e21 { - let _e23 = local[_e20]; - global = _e23; - local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); - if _e21 { - let _e25 = local_1[_e20]; - global_2 = _e25; + switch bitcast(0u) { + default: { + let _e22 = global_1; + local = array, 6>(vec2(0f, 1f), vec2(1f, 1f), vec2(1f, 0f), vec2(1f, 0f), vec2(0f, 0f), vec2(0f, 1f)); + let _e23 = (_e22 < 6u); + if _e23 { + } else { + break; + } + let _e25 = local[_e22]; + global = _e25; + local_1 = array, 6>(vec4(-1f, -1f, 0.5f, 1f), vec4(1f, -1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(1f, 1f, 0.5f, 1f), vec4(-1f, 1f, 0.5f, 1f), vec4(-1f, -1f, 0.5f, 1f)); + if _e23 { + } else { + break; + } + let _e27 = local_1[_e22]; + global_2 = _e27; + break; } } return; diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl index cbff26f6..29e5c0d7 100644 --- a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl +++ b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_fragment.wgsl @@ -13,144 +13,157 @@ var global_4: texture_cube; fn function() { var phi_446_: vec3; - var phi_103_: type_7; - var phi_106_: vec3; - var phi_108_: f32; - var phi_123_: type_7; + var phi_104_: type_7; + var phi_107_: vec3; + var phi_109_: f32; + var phi_105_: type_7; var phi_124_: type_7; var phi_627_: vec3; var phi_662_: vec3; var phi_697_: vec3; - var phi_187_: f32; - var phi_206_: vec3; - var phi_207_: f32; - var phi_208_: bool; - var phi_104_: type_7; - var phi_107_: vec3; - var phi_109_: f32; + var phi_178_: f32; + var phi_197_: vec3; + var phi_198_: f32; + var phi_108_: vec3; + var phi_110_: f32; + var phi_199_: bool; + var local: vec3; + var local_1: f32; + var local_2: vec3; + var local_3: f32; + var local_4: vec3; + var local_5: f32; - let _e41 = global_2; - let _e42 = global_3; - let _e49 = sqrt(fma(_e41.z, _e41.z, fma(_e41.x, _e41.x, (_e41.y * _e41.y)))); - if (_e49 == 0f) { + let _e42 = global_2; + let _e43 = global_3; + let _e50 = sqrt(fma(_e42.z, _e42.z, fma(_e42.x, _e42.x, (_e42.y * _e42.y)))); + if (_e50 == 0f) { phi_446_ = vec3(0f, 0f, 0f); } else { - phi_446_ = (_e41 * (1f / _e49)); + phi_446_ = (_e42 * (1f / _e50)); } - let _e54 = phi_446_; - let _e56 = (_e54.y * -1f); - phi_103_ = type_7(0u, 1024u); - phi_106_ = vec3(0f, 0f, 0f); - phi_108_ = 0f; + let _e55 = phi_446_; + let _e57 = (_e55.y * -1f); + phi_104_ = type_7(0u, 1024u); + phi_107_ = vec3(0f, 0f, 0f); + phi_109_ = 0f; loop { - let _e58 = phi_103_; - let _e60 = phi_106_; - let _e62 = phi_108_; - if (_e58.member < _e58.member_1) { - phi_123_ = type_7((_e58.member + 1u), _e58.member_1); - phi_124_ = type_7(1u, _e58.member); + let _e59 = phi_104_; + let _e61 = phi_107_; + let _e63 = phi_109_; + local = _e61; + local_1 = _e63; + local_2 = _e61; + local_3 = _e63; + local_4 = _e61; + local_5 = _e63; + if (_e59.member < _e59.member_1) { + phi_105_ = type_7((_e59.member + 1u), _e59.member_1); + phi_124_ = type_7(1u, _e59.member); } else { - phi_123_ = _e58; + phi_105_ = _e59; phi_124_ = type_7(0u, type_7().member_1); } - let _e75 = phi_123_; - let _e77 = phi_124_; - switch bitcast(_e77.member) { + let _e76 = phi_105_; + let _e78 = phi_124_; + switch bitcast(_e78.member) { case 0: { - global_1 = vec4((_e60.x / _e62), (_e60.y / _e62), (_e60.z / _e62), 1f); - phi_208_ = false; - phi_104_ = type_7(); - phi_107_ = vec3(); - phi_109_ = f32(); + phi_108_ = vec3(); + phi_110_ = f32(); + phi_199_ = false; break; } case 1: { - let _e93 = ((_e77.member_1 << bitcast(16u)) | (_e77.member_1 >> bitcast(16u))); - let _e100 = (((_e93 & 1431655765u) << bitcast(1u)) | ((_e93 & 2863311530u) >> bitcast(1u))); - let _e107 = (((_e100 & 858993459u) << bitcast(2u)) | ((_e100 & 3435973836u) >> bitcast(2u))); - let _e114 = (((_e107 & 252645135u) << bitcast(4u)) | ((_e107 & 4042322160u) >> bitcast(4u))); - let _e122 = f32((((_e114 & 16711935u) << bitcast(8u)) | ((_e114 & 4278255360u) >> bitcast(8u)))); - let _e124 = (_e42 * _e42); - let _e125 = (f32(_e77.member_1) * 0.0061359233f); - let _e131 = sqrt((fma(-(_e122), 0.00000000023283064f, 1f) / fma(fma(_e124, _e124, -1f), (_e122 * 0.00000000023283064f), 1f))); - let _e134 = sqrt(fma(-(_e131), _e131, 1f)); - let _e136 = (cos(_e125) * _e134); - let _e138 = (sin(_e125) * _e134); - let _e143 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(_e54.z) < 0.999f))); - let _e148 = fma(_e143.y, _e54.z, -((_e56 * _e143.z))); - let _e153 = fma(_e143.z, _e54.x, -((_e54.z * _e143.x))); - let _e156 = fma(_e143.x, _e56, -((_e54.x * _e143.y))); - let _e161 = sqrt(fma(_e156, _e156, fma(_e148, _e148, (_e153 * _e153)))); - if (_e161 == 0f) { + let _e87 = ((_e78.member_1 << bitcast(16u)) | (_e78.member_1 >> bitcast(16u))); + let _e94 = (((_e87 & 1431655765u) << bitcast(1u)) | ((_e87 & 2863311530u) >> bitcast(1u))); + let _e101 = (((_e94 & 858993459u) << bitcast(2u)) | ((_e94 & 3435973836u) >> bitcast(2u))); + let _e108 = (((_e101 & 252645135u) << bitcast(4u)) | ((_e101 & 4042322160u) >> bitcast(4u))); + let _e116 = f32((((_e108 & 16711935u) << bitcast(8u)) | ((_e108 & 4278255360u) >> bitcast(8u)))); + let _e118 = (_e43 * _e43); + let _e119 = (f32(_e78.member_1) * 0.0061359233f); + let _e125 = sqrt((fma(-(_e116), 0.00000000023283064f, 1f) / fma(fma(_e118, _e118, -1f), (_e116 * 0.00000000023283064f), 1f))); + let _e128 = sqrt(fma(-(_e125), _e125, 1f)); + let _e130 = (cos(_e119) * _e128); + let _e132 = (sin(_e119) * _e128); + let _e137 = select(vec3(1f, 0f, 0f), vec3(0f, 0f, 1f), vec3((abs(_e55.z) < 0.999f))); + let _e142 = fma(_e137.y, _e55.z, -((_e57 * _e137.z))); + let _e147 = fma(_e137.z, _e55.x, -((_e55.z * _e137.x))); + let _e150 = fma(_e137.x, _e57, -((_e55.x * _e137.y))); + let _e155 = sqrt(fma(_e150, _e150, fma(_e142, _e142, (_e147 * _e147)))); + if (_e155 == 0f) { phi_627_ = vec3(0f, 0f, 0f); } else { - phi_627_ = (vec3(_e148, _e153, _e156) * (1f / _e161)); + phi_627_ = (vec3(_e142, _e147, _e150) * (1f / _e155)); } - let _e166 = phi_627_; - let _e185 = fma(_e54.x, _e131, fma(_e166.x, _e136, (fma(_e56, _e166.z, -((_e166.y * _e54.z))) * _e138))); - let _e186 = fma(_e56, _e131, fma(_e166.y, _e136, (fma(_e54.z, _e166.x, -((_e166.z * _e54.x))) * _e138))); - let _e187 = fma(_e54.z, _e131, fma(_e166.z, _e136, (fma(_e54.x, _e166.y, -((_e166.x * _e56))) * _e138))); - let _e192 = sqrt(fma(_e187, _e187, fma(_e185, _e185, (_e186 * _e186)))); - if (_e192 == 0f) { + let _e160 = phi_627_; + let _e179 = fma(_e55.x, _e125, fma(_e160.x, _e130, (fma(_e57, _e160.z, -((_e160.y * _e55.z))) * _e132))); + let _e180 = fma(_e57, _e125, fma(_e160.y, _e130, (fma(_e55.z, _e160.x, -((_e160.z * _e55.x))) * _e132))); + let _e181 = fma(_e55.z, _e125, fma(_e160.z, _e130, (fma(_e55.x, _e160.y, -((_e160.x * _e57))) * _e132))); + let _e186 = sqrt(fma(_e181, _e181, fma(_e179, _e179, (_e180 * _e180)))); + if (_e186 == 0f) { phi_662_ = vec3(0f, 0f, 0f); } else { - phi_662_ = (vec3(_e185, _e186, _e187) * (1f / _e192)); + phi_662_ = (vec3(_e179, _e180, _e181) * (1f / _e186)); } - let _e197 = phi_662_; - let _e204 = (2f * fma(_e54.z, _e197.z, fma(_e54.x, _e197.x, (_e56 * _e197.y)))); - let _e206 = fma(_e204, _e197.x, -(_e54.x)); - let _e207 = fma(_e204, _e197.y, _e54.y); - let _e209 = fma(_e204, _e197.z, -(_e54.z)); - let _e214 = sqrt(fma(_e209, _e209, fma(_e206, _e206, (_e207 * _e207)))); - if (_e214 == 0f) { + let _e191 = phi_662_; + let _e198 = (2f * fma(_e55.z, _e191.z, fma(_e55.x, _e191.x, (_e57 * _e191.y)))); + let _e200 = fma(_e198, _e191.x, -(_e55.x)); + let _e201 = fma(_e198, _e191.y, _e55.y); + let _e203 = fma(_e198, _e191.z, -(_e55.z)); + let _e208 = sqrt(fma(_e203, _e203, fma(_e200, _e200, (_e201 * _e201)))); + if (_e208 == 0f) { phi_697_ = vec3(0f, 0f, 0f); } else { - phi_697_ = (vec3(_e206, _e207, _e209) * (1f / _e214)); + phi_697_ = (vec3(_e200, _e201, _e203) * (1f / _e208)); } - let _e219 = phi_697_; - let _e226 = max(fma(_e54.z, _e219.z, fma(_e54.x, _e219.x, (_e56 * _e219.y))), 0f); - if (_e226 > 0f) { - if (_e42 == 0f) { - phi_187_ = 0f; + let _e213 = phi_697_; + let _e220 = max(fma(_e55.z, _e213.z, fma(_e55.x, _e213.x, (_e57 * _e213.y))), 0f); + if (_e220 > 0f) { + if (_e43 == 0f) { + phi_178_ = 0f; } else { - phi_187_ = (0.5f * log2((1572864f / max((1024f * max((_e226 * 0.31830987f), 0f)), 0.00000011920929f)))); + phi_178_ = (0.5f * log2((1572864f / max((1024f * max((_e220 * 0.31830987f), 0f)), 0.00000011920929f)))); } - let _e237 = phi_187_; - let _e238 = textureSampleLevel(global_4, global, _e219, _e237); - phi_206_ = vec3(fma(_e238.x, _e226, _e60.x), fma(_e238.y, _e226, _e60.y), fma(_e238.z, _e226, _e60.z)); - phi_207_ = (_e62 + _e226); + let _e231 = phi_178_; + let _e232 = textureSampleLevel(global_4, global, _e213, _e231); + phi_197_ = vec3(fma(_e232.x, _e220, _e61.x), fma(_e232.y, _e220, _e61.y), fma(_e232.z, _e220, _e61.z)); + phi_198_ = (_e63 + _e220); } else { - phi_206_ = _e60; - phi_207_ = _e62; + phi_197_ = _e61; + phi_198_ = _e63; } - let _e251 = phi_206_; - let _e253 = phi_207_; - phi_208_ = true; - phi_104_ = _e75; - phi_107_ = _e251; - phi_109_ = _e253; + let _e245 = phi_197_; + let _e247 = phi_198_; + phi_108_ = _e245; + phi_110_ = _e247; + phi_199_ = true; break; } default: { - phi_208_ = false; - phi_104_ = type_7(); - phi_107_ = vec3(); - phi_109_ = f32(); + phi_108_ = vec3(); + phi_110_ = f32(); + phi_199_ = bool(); break; } } - let _e255 = phi_208_; - let _e257 = phi_104_; - let _e259 = phi_107_; - let _e261 = phi_109_; + let _e249 = phi_108_; + let _e251 = phi_110_; + let _e253 = phi_199_; continue; continuing { - phi_103_ = _e257; - phi_106_ = _e259; - phi_108_ = _e261; - break if !(_e255); + phi_104_ = _e76; + phi_107_ = _e249; + phi_109_ = _e251; + break if !(_e253); } } + let _e256 = local; + let _e259 = local_1; + let _e262 = local_2; + let _e265 = local_3; + let _e268 = local_4; + let _e271 = local_5; + global_1 = vec4((_e256.x / _e259), (_e262.y / _e265), (_e268.z / _e271), 1f); return; } diff --git a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.wgsl b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.wgsl index 316c0686..98c2226a 100644 --- a/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.wgsl +++ b/crates/renderling/shaders/convolution-prefilter_environment_cubemap_vertex.wgsl @@ -44,211 +44,192 @@ fn function() { var local: array, 8>; var local_1: array, 6>; var local_2: array, 36>; - var phi_768_: bool; + var phi_767_: bool; var phi_165_: type_24; - var phi_796_: bool; + var phi_795_: bool; var phi_326_: type_24; - var phi_342_: type_24; - var phi_343_: type_24; - var phi_356_: type_24; - var phi_372_: type_24; - var phi_373_: type_24; - var phi_399_: type_22; - var phi_400_: bool; - var phi_357_: type_24; - var phi_420_: type_22; - var phi_421_: bool; var phi_327_: type_24; - var phi_426_: type_22; - var phi_828_: bool; - var phi_434_: f32; - var local_3: type_22; - var local_4: type_22; + var phi_342_: type_24; + var phi_369_: bool; + var phi_375_: type_24; + var phi_376_: type_24; + var phi_391_: type_24; + var phi_414_: bool; + var phi_422_: type_22; + var phi_827_: bool; + var phi_430_: f32; - let _e80 = global_1; - let _e81 = global_2; - let _e83 = arrayLength((&global.member)); - local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); - if (_e81 < 36u) { - let _e86 = local_2[_e81]; - if (_e83 >= 2u) { - phi_768_ = (_e80 <= (_e83 - 2u)); - } else { - phi_768_ = false; - } - let _e91 = phi_768_; - if _e91 { - let _e94 = global.member[_e80]; - let _e98 = global.member[(_e80 + 1u)]; - phi_165_ = type_24(_e94, _e98); - } else { - phi_165_ = type_24(4294967295u, 4294967295u); - } - let _e101 = phi_165_; - if (_e83 >= 83u) { - phi_796_ = (_e101.member <= (_e83 - 83u)); - } else { - phi_796_ = false; - } - let _e108 = phi_796_; - if _e108 { - let _e111 = global.member[_e101.member]; - let _e116 = global.member[(_e101.member + 1u)]; - let _e121 = global.member[(_e101.member + 2u)]; - let _e126 = global.member[(_e101.member + 3u)]; - let _e132 = global.member[(_e101.member + 4u)]; - let _e137 = global.member[(_e101.member + 5u)]; - let _e142 = global.member[(_e101.member + 6u)]; - let _e147 = global.member[(_e101.member + 7u)]; - let _e153 = global.member[(_e101.member + 8u)]; - let _e158 = global.member[(_e101.member + 9u)]; - let _e163 = global.member[(_e101.member + 10u)]; - let _e168 = global.member[(_e101.member + 11u)]; - let _e174 = global.member[(_e101.member + 12u)]; - let _e179 = global.member[(_e101.member + 13u)]; - let _e184 = global.member[(_e101.member + 14u)]; - let _e189 = global.member[(_e101.member + 15u)]; - let _e196 = global.member[(_e101.member + 16u)]; - let _e201 = global.member[(_e101.member + 17u)]; - let _e206 = global.member[(_e101.member + 18u)]; - let _e211 = global.member[(_e101.member + 19u)]; - let _e217 = global.member[(_e101.member + 20u)]; - let _e222 = global.member[(_e101.member + 21u)]; - let _e227 = global.member[(_e101.member + 22u)]; - let _e232 = global.member[(_e101.member + 23u)]; - let _e238 = global.member[(_e101.member + 24u)]; - let _e243 = global.member[(_e101.member + 25u)]; - let _e248 = global.member[(_e101.member + 26u)]; - let _e253 = global.member[(_e101.member + 27u)]; - let _e259 = global.member[(_e101.member + 28u)]; - let _e264 = global.member[(_e101.member + 29u)]; - let _e269 = global.member[(_e101.member + 30u)]; - let _e274 = global.member[(_e101.member + 31u)]; - let _e281 = global.member[(_e101.member + 32u)]; - let _e286 = global.member[(_e101.member + 33u)]; - let _e291 = global.member[(_e101.member + 34u)]; - local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_326_ = type_24(0u, 6u); - loop { - let _e296 = phi_326_; - if (_e296.member < _e296.member_1) { - phi_342_ = type_24((_e296.member + 1u), _e296.member_1); - phi_343_ = type_24(1u, _e296.member); - } else { - phi_342_ = _e296; - phi_343_ = type_24(0u, type_24().member_1); - } - let _e309 = phi_342_; - let _e311 = phi_343_; - switch bitcast(_e311.member) { - case 0: { - let _e315 = local_1; - local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_356_ = type_24(0u, 8u); - loop { - let _e318 = phi_356_; - if (_e318.member < _e318.member_1) { - phi_372_ = type_24((_e318.member + 1u), _e318.member_1); - phi_373_ = type_24(1u, _e318.member); - } else { - phi_372_ = _e318; - phi_373_ = type_24(0u, type_24().member_1); - } - let _e331 = phi_372_; - let _e333 = phi_373_; - switch bitcast(_e333.member) { - case 0: { - let _e337 = local; - phi_399_ = type_22(type_20(vec4(bitcast(_e111), bitcast(_e116), bitcast(_e121), bitcast(_e126)), vec4(bitcast(_e132), bitcast(_e137), bitcast(_e142), bitcast(_e147)), vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), vec4(bitcast(_e174), bitcast(_e179), bitcast(_e184), bitcast(_e189))), type_20(vec4(bitcast(_e196), bitcast(_e201), bitcast(_e206), bitcast(_e211)), vec4(bitcast(_e217), bitcast(_e222), bitcast(_e227), bitcast(_e232)), vec4(bitcast(_e238), bitcast(_e243), bitcast(_e248), bitcast(_e253)), vec4(bitcast(_e259), bitcast(_e264), bitcast(_e269), bitcast(_e274))), type_21(_e337, _e315), vec3(bitcast(_e281), bitcast(_e286), bitcast(_e291))); - phi_400_ = false; - phi_357_ = type_24(); - break; - } - case 1: { - let _e341 = ((_e101.member + 59u) + (_e333.member_1 * 3u)); - let _e344 = global.member[_e341]; - let _e349 = global.member[(_e341 + 1u)]; - let _e354 = global.member[(_e341 + 2u)]; - local[_e333.member_1] = vec3(bitcast(_e344), bitcast(_e349), bitcast(_e354)); - phi_399_ = type_22(); - phi_400_ = true; - phi_357_ = _e331; - break; - } - default: { - phi_399_ = type_22(); - phi_400_ = false; - phi_357_ = type_24(); - break; - } - } - let _e359 = phi_399_; - let _e361 = phi_400_; - let _e363 = phi_357_; - local_3 = _e359; - continue; - continuing { - phi_356_ = _e363; - break if !(_e361); - } - } - let _e548 = local_3; - phi_420_ = _e548; - phi_421_ = false; - phi_327_ = type_24(); - break; + switch bitcast(0u) { + default: { + let _e81 = global_1; + let _e82 = global_2; + let _e84 = arrayLength((&global.member)); + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e82 < 36u) { + } else { + break; + } + let _e87 = local_2[_e82]; + if (_e84 >= 2u) { + phi_767_ = (_e81 <= (_e84 - 2u)); + } else { + phi_767_ = false; + } + let _e92 = phi_767_; + if _e92 { + let _e95 = global.member[_e81]; + let _e99 = global.member[(_e81 + 1u)]; + phi_165_ = type_24(_e95, _e99); + } else { + phi_165_ = type_24(4294967295u, 4294967295u); + } + let _e102 = phi_165_; + if (_e84 >= 83u) { + phi_795_ = (_e102.member <= (_e84 - 83u)); + } else { + phi_795_ = false; + } + let _e109 = phi_795_; + if _e109 { + let _e112 = global.member[_e102.member]; + let _e117 = global.member[(_e102.member + 1u)]; + let _e122 = global.member[(_e102.member + 2u)]; + let _e127 = global.member[(_e102.member + 3u)]; + let _e133 = global.member[(_e102.member + 4u)]; + let _e138 = global.member[(_e102.member + 5u)]; + let _e143 = global.member[(_e102.member + 6u)]; + let _e148 = global.member[(_e102.member + 7u)]; + let _e154 = global.member[(_e102.member + 8u)]; + let _e159 = global.member[(_e102.member + 9u)]; + let _e164 = global.member[(_e102.member + 10u)]; + let _e169 = global.member[(_e102.member + 11u)]; + let _e175 = global.member[(_e102.member + 12u)]; + let _e180 = global.member[(_e102.member + 13u)]; + let _e185 = global.member[(_e102.member + 14u)]; + let _e190 = global.member[(_e102.member + 15u)]; + let _e197 = global.member[(_e102.member + 16u)]; + let _e202 = global.member[(_e102.member + 17u)]; + let _e207 = global.member[(_e102.member + 18u)]; + let _e212 = global.member[(_e102.member + 19u)]; + let _e218 = global.member[(_e102.member + 20u)]; + let _e223 = global.member[(_e102.member + 21u)]; + let _e228 = global.member[(_e102.member + 22u)]; + let _e233 = global.member[(_e102.member + 23u)]; + let _e239 = global.member[(_e102.member + 24u)]; + let _e244 = global.member[(_e102.member + 25u)]; + let _e249 = global.member[(_e102.member + 26u)]; + let _e254 = global.member[(_e102.member + 27u)]; + let _e260 = global.member[(_e102.member + 28u)]; + let _e265 = global.member[(_e102.member + 29u)]; + let _e270 = global.member[(_e102.member + 30u)]; + let _e275 = global.member[(_e102.member + 31u)]; + let _e282 = global.member[(_e102.member + 32u)]; + let _e287 = global.member[(_e102.member + 33u)]; + let _e292 = global.member[(_e102.member + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_326_ = type_24(0u, 6u); + loop { + let _e297 = phi_326_; + if (_e297.member < _e297.member_1) { + phi_327_ = type_24((_e297.member + 1u), _e297.member_1); + phi_342_ = type_24(1u, _e297.member); + } else { + phi_327_ = _e297; + phi_342_ = type_24(0u, type_24().member_1); } - case 1: { - let _e366 = ((_e101.member + 35u) + (_e311.member_1 * 4u)); - let _e369 = global.member[_e366]; - let _e374 = global.member[(_e366 + 1u)]; - let _e379 = global.member[(_e366 + 2u)]; - let _e384 = global.member[(_e366 + 3u)]; - local_1[_e311.member_1] = vec4(bitcast(_e369), bitcast(_e374), bitcast(_e379), bitcast(_e384)); - phi_420_ = type_22(); - phi_421_ = true; - phi_327_ = _e309; - break; + let _e310 = phi_327_; + let _e312 = phi_342_; + switch bitcast(_e312.member) { + case 0: { + phi_369_ = false; + break; + } + case 1: { + let _e317 = ((_e102.member + 35u) + (_e312.member_1 * 4u)); + let _e320 = global.member[_e317]; + let _e325 = global.member[(_e317 + 1u)]; + let _e330 = global.member[(_e317 + 2u)]; + let _e335 = global.member[(_e317 + 3u)]; + local_1[_e312.member_1] = vec4(bitcast(_e320), bitcast(_e325), bitcast(_e330), bitcast(_e335)); + phi_369_ = true; + break; + } + default: { + phi_369_ = bool(); + break; + } } - default: { - phi_420_ = type_22(); - phi_421_ = false; - phi_327_ = type_24(); - break; + let _e340 = phi_369_; + continue; + continuing { + phi_326_ = _e310; + break if !(_e340); } } - let _e389 = phi_420_; - let _e391 = phi_421_; - let _e393 = phi_327_; - local_4 = _e389; - continue; - continuing { - phi_326_ = _e393; - break if !(_e391); + let _e342 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_375_ = type_24(0u, 8u); + loop { + let _e345 = phi_375_; + if (_e345.member < _e345.member_1) { + phi_376_ = type_24((_e345.member + 1u), _e345.member_1); + phi_391_ = type_24(1u, _e345.member); + } else { + phi_376_ = _e345; + phi_391_ = type_24(0u, type_24().member_1); + } + let _e358 = phi_376_; + let _e360 = phi_391_; + switch bitcast(_e360.member) { + case 0: { + phi_414_ = false; + break; + } + case 1: { + let _e365 = ((_e102.member + 59u) + (_e360.member_1 * 3u)); + let _e368 = global.member[_e365]; + let _e373 = global.member[(_e365 + 1u)]; + let _e378 = global.member[(_e365 + 2u)]; + local[_e360.member_1] = vec3(bitcast(_e368), bitcast(_e373), bitcast(_e378)); + phi_414_ = true; + break; + } + default: { + phi_414_ = bool(); + break; + } + } + let _e383 = phi_414_; + continue; + continuing { + phi_375_ = _e358; + break if !(_e383); + } } + let _e385 = local; + phi_422_ = type_22(type_20(vec4(bitcast(_e112), bitcast(_e117), bitcast(_e122), bitcast(_e127)), vec4(bitcast(_e133), bitcast(_e138), bitcast(_e143), bitcast(_e148)), vec4(bitcast(_e154), bitcast(_e159), bitcast(_e164), bitcast(_e169)), vec4(bitcast(_e175), bitcast(_e180), bitcast(_e185), bitcast(_e190))), type_20(vec4(bitcast(_e197), bitcast(_e202), bitcast(_e207), bitcast(_e212)), vec4(bitcast(_e218), bitcast(_e223), bitcast(_e228), bitcast(_e233)), vec4(bitcast(_e239), bitcast(_e244), bitcast(_e249), bitcast(_e254)), vec4(bitcast(_e260), bitcast(_e265), bitcast(_e270), bitcast(_e275))), type_21(_e385, _e342), vec3(bitcast(_e282), bitcast(_e287), bitcast(_e292))); + } else { + phi_422_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } - let _e553 = local_4; - phi_426_ = _e553; - } else { - phi_426_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e396 = phi_426_; - if (_e83 >= 1u) { - phi_828_ = (_e101.member_1 <= (_e83 - 1u)); - } else { - phi_828_ = false; - } - let _e403 = phi_828_; - if _e403 { - let _e406 = global.member[_e101.member_1]; - phi_434_ = bitcast(_e406); - } else { - phi_434_ = 0f; + let _e389 = phi_422_; + if (_e84 >= 1u) { + phi_827_ = (_e102.member_1 <= (_e84 - 1u)); + } else { + phi_827_ = false; + } + let _e396 = phi_827_; + if _e396 { + let _e399 = global.member[_e102.member_1]; + phi_430_ = bitcast(_e399); + } else { + phi_430_ = 0f; + } + let _e402 = phi_430_; + global_3 = _e402; + global_4 = _e87; + global_5 = vec4((fma(fma(_e389.member.member_3.x, _e389.member_1.member_2.w, fma(_e389.member.member_2.x, _e389.member_1.member_2.z, fma(_e389.member.member.x, _e389.member_1.member_2.x, (_e389.member.member_1.x * _e389.member_1.member_2.y)))), _e87.z, fma(fma(_e389.member.member_3.x, _e389.member_1.member.w, fma(_e389.member.member_2.x, _e389.member_1.member.z, fma(_e389.member.member.x, _e389.member_1.member.x, (_e389.member.member_1.x * _e389.member_1.member.y)))), _e87.x, (fma(_e389.member.member_3.x, _e389.member_1.member_1.w, fma(_e389.member.member_2.x, _e389.member_1.member_1.z, fma(_e389.member.member.x, _e389.member_1.member_1.x, (_e389.member.member_1.x * _e389.member_1.member_1.y)))) * _e87.y))) + fma(_e389.member.member_3.x, _e389.member_1.member_3.w, fma(_e389.member.member_2.x, _e389.member_1.member_3.z, fma(_e389.member.member.x, _e389.member_1.member_3.x, (_e389.member.member_1.x * _e389.member_1.member_3.y))))), (fma(fma(_e389.member.member_3.y, _e389.member_1.member_2.w, fma(_e389.member.member_2.y, _e389.member_1.member_2.z, fma(_e389.member.member.y, _e389.member_1.member_2.x, (_e389.member.member_1.y * _e389.member_1.member_2.y)))), _e87.z, fma(fma(_e389.member.member_3.y, _e389.member_1.member.w, fma(_e389.member.member_2.y, _e389.member_1.member.z, fma(_e389.member.member.y, _e389.member_1.member.x, (_e389.member.member_1.y * _e389.member_1.member.y)))), _e87.x, (fma(_e389.member.member_3.y, _e389.member_1.member_1.w, fma(_e389.member.member_2.y, _e389.member_1.member_1.z, fma(_e389.member.member.y, _e389.member_1.member_1.x, (_e389.member.member_1.y * _e389.member_1.member_1.y)))) * _e87.y))) + fma(_e389.member.member_3.y, _e389.member_1.member_3.w, fma(_e389.member.member_2.y, _e389.member_1.member_3.z, fma(_e389.member.member.y, _e389.member_1.member_3.x, (_e389.member.member_1.y * _e389.member_1.member_3.y))))), (fma(fma(_e389.member.member_3.z, _e389.member_1.member_2.w, fma(_e389.member.member_2.z, _e389.member_1.member_2.z, fma(_e389.member.member.z, _e389.member_1.member_2.x, (_e389.member.member_1.z * _e389.member_1.member_2.y)))), _e87.z, fma(fma(_e389.member.member_3.z, _e389.member_1.member.w, fma(_e389.member.member_2.z, _e389.member_1.member.z, fma(_e389.member.member.z, _e389.member_1.member.x, (_e389.member.member_1.z * _e389.member_1.member.y)))), _e87.x, (fma(_e389.member.member_3.z, _e389.member_1.member_1.w, fma(_e389.member.member_2.z, _e389.member_1.member_1.z, fma(_e389.member.member.z, _e389.member_1.member_1.x, (_e389.member.member_1.z * _e389.member_1.member_1.y)))) * _e87.y))) + fma(_e389.member.member_3.z, _e389.member_1.member_3.w, fma(_e389.member.member_2.z, _e389.member_1.member_3.z, fma(_e389.member.member.z, _e389.member_1.member_3.x, (_e389.member.member_1.z * _e389.member_1.member_3.y))))), (fma(fma(_e389.member.member_3.w, _e389.member_1.member_2.w, fma(_e389.member.member_2.w, _e389.member_1.member_2.z, fma(_e389.member.member.w, _e389.member_1.member_2.x, (_e389.member.member_1.w * _e389.member_1.member_2.y)))), _e87.z, fma(fma(_e389.member.member_3.w, _e389.member_1.member.w, fma(_e389.member.member_2.w, _e389.member_1.member.z, fma(_e389.member.member.w, _e389.member_1.member.x, (_e389.member.member_1.w * _e389.member_1.member.y)))), _e87.x, (fma(_e389.member.member_3.w, _e389.member_1.member_1.w, fma(_e389.member.member_2.w, _e389.member_1.member_1.z, fma(_e389.member.member.w, _e389.member_1.member_1.x, (_e389.member.member_1.w * _e389.member_1.member_1.y)))) * _e87.y))) + fma(_e389.member.member_3.w, _e389.member_1.member_3.w, fma(_e389.member.member_2.w, _e389.member_1.member_3.z, fma(_e389.member.member.w, _e389.member_1.member_3.x, (_e389.member.member_1.w * _e389.member_1.member_3.y)))))); + break; } - let _e409 = phi_434_; - global_3 = _e409; - global_4 = _e86; - global_5 = vec4((fma(fma(_e396.member.member_3.x, _e396.member_1.member_2.w, fma(_e396.member.member_2.x, _e396.member_1.member_2.z, fma(_e396.member.member.x, _e396.member_1.member_2.x, (_e396.member.member_1.x * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.x, _e396.member_1.member.w, fma(_e396.member.member_2.x, _e396.member_1.member.z, fma(_e396.member.member.x, _e396.member_1.member.x, (_e396.member.member_1.x * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.x, _e396.member_1.member_1.w, fma(_e396.member.member_2.x, _e396.member_1.member_1.z, fma(_e396.member.member.x, _e396.member_1.member_1.x, (_e396.member.member_1.x * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.x, _e396.member_1.member_3.w, fma(_e396.member.member_2.x, _e396.member_1.member_3.z, fma(_e396.member.member.x, _e396.member_1.member_3.x, (_e396.member.member_1.x * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.y, _e396.member_1.member_2.w, fma(_e396.member.member_2.y, _e396.member_1.member_2.z, fma(_e396.member.member.y, _e396.member_1.member_2.x, (_e396.member.member_1.y * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.y, _e396.member_1.member.w, fma(_e396.member.member_2.y, _e396.member_1.member.z, fma(_e396.member.member.y, _e396.member_1.member.x, (_e396.member.member_1.y * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.y, _e396.member_1.member_1.w, fma(_e396.member.member_2.y, _e396.member_1.member_1.z, fma(_e396.member.member.y, _e396.member_1.member_1.x, (_e396.member.member_1.y * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.y, _e396.member_1.member_3.w, fma(_e396.member.member_2.y, _e396.member_1.member_3.z, fma(_e396.member.member.y, _e396.member_1.member_3.x, (_e396.member.member_1.y * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.z, _e396.member_1.member_2.w, fma(_e396.member.member_2.z, _e396.member_1.member_2.z, fma(_e396.member.member.z, _e396.member_1.member_2.x, (_e396.member.member_1.z * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.z, _e396.member_1.member.w, fma(_e396.member.member_2.z, _e396.member_1.member.z, fma(_e396.member.member.z, _e396.member_1.member.x, (_e396.member.member_1.z * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.z, _e396.member_1.member_1.w, fma(_e396.member.member_2.z, _e396.member_1.member_1.z, fma(_e396.member.member.z, _e396.member_1.member_1.x, (_e396.member.member_1.z * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.z, _e396.member_1.member_3.w, fma(_e396.member.member_2.z, _e396.member_1.member_3.z, fma(_e396.member.member.z, _e396.member_1.member_3.x, (_e396.member.member_1.z * _e396.member_1.member_3.y))))), (fma(fma(_e396.member.member_3.w, _e396.member_1.member_2.w, fma(_e396.member.member_2.w, _e396.member_1.member_2.z, fma(_e396.member.member.w, _e396.member_1.member_2.x, (_e396.member.member_1.w * _e396.member_1.member_2.y)))), _e86.z, fma(fma(_e396.member.member_3.w, _e396.member_1.member.w, fma(_e396.member.member_2.w, _e396.member_1.member.z, fma(_e396.member.member.w, _e396.member_1.member.x, (_e396.member.member_1.w * _e396.member_1.member.y)))), _e86.x, (fma(_e396.member.member_3.w, _e396.member_1.member_1.w, fma(_e396.member.member_2.w, _e396.member_1.member_1.z, fma(_e396.member.member.w, _e396.member_1.member_1.x, (_e396.member.member_1.w * _e396.member_1.member_1.y)))) * _e86.y))) + fma(_e396.member.member_3.w, _e396.member_1.member_3.w, fma(_e396.member.member_2.w, _e396.member_1.member_3.z, fma(_e396.member.member.w, _e396.member_1.member_3.x, (_e396.member.member_1.w * _e396.member_1.member_3.y)))))); } return; } diff --git a/crates/renderling/shaders/cull-compute_frustum_culling.wgsl b/crates/renderling/shaders/cull-compute_frustum_culling.wgsl index e4c981c2..34caf38b 100644 --- a/crates/renderling/shaders/cull-compute_frustum_culling.wgsl +++ b/crates/renderling/shaders/cull-compute_frustum_culling.wgsl @@ -63,793 +63,598 @@ fn function() { var local_5: array; var local_6: array, 8>; var local_7: array, 6>; - var phi_1260_: bool; + var phi_1208_: bool; + var phi_460_: type_18; var phi_461_: type_18; - var phi_477_: type_18; - var phi_478_: type_18; - var phi_491_: type_18; - var phi_507_: type_18; - var phi_508_: type_18; - var phi_534_: type_16; - var phi_535_: bool; - var phi_492_: type_18; - var phi_555_: type_16; - var phi_556_: bool; - var phi_462_: type_18; - var phi_561_: type_16; - var phi_1292_: bool; - var phi_612_: type_29; - var phi_744_: type_18; - var phi_760_: type_18; - var phi_761_: type_18; - var phi_1039_: type_30; - var phi_1041_: bool; - var phi_1042_: type_30; - var phi_1043_: bool; - var phi_1044_: bool; - var phi_1045_: type_30; - var phi_1046_: bool; - var phi_1051_: type_18; - var phi_1053_: type_30; - var phi_772_: type_18; - var phi_788_: type_18; - var phi_789_: type_18; - var phi_799_: type_18; - var phi_802_: i32; - var phi_817_: type_18; - var phi_818_: type_18; - var phi_962_: i32; - var phi_964_: type_18; - var phi_965_: i32; - var phi_966_: bool; - var phi_967_: type_18; - var phi_968_: i32; - var phi_969_: bool; - var phi_970_: type_18; - var phi_971_: i32; - var phi_832_: type_18; - var phi_835_: i32; - var phi_850_: type_18; - var phi_851_: type_18; - var phi_900_: i32; - var phi_902_: type_18; - var phi_903_: i32; - var phi_904_: bool; + var phi_476_: type_18; + var phi_503_: bool; + var phi_509_: type_18; + var phi_510_: type_18; + var phi_525_: type_18; + var phi_548_: bool; + var phi_556_: type_16; + var phi_1240_: bool; + var phi_607_: type_29; + var phi_739_: type_18; + var phi_740_: type_18; + var phi_755_: type_18; + var phi_799_: bool; + var phi_803_: bool; + var phi_804_: bool; + var phi_1415_: bool; + var phi_1154_: bool; + var phi_1438_: bool; + var phi_811_: type_18; + var phi_812_: type_18; + var phi_827_: type_18; + var phi_837_: type_18; + var phi_840_: i32; + var phi_838_: type_18; + var phi_855_: type_18; + var phi_896_: i32; + var phi_841_: i32; + var phi_897_: bool; + var phi_1433_: bool; + var local_8: i32; + var phi_904_: type_18; + var phi_907_: i32; var phi_905_: type_18; - var phi_906_: i32; - var phi_907_: bool; - var phi_908_: type_18; - var phi_909_: i32; - var phi_866_: type_18; - var phi_910_: bool; - var phi_911_: bool; - var phi_912_: bool; - var phi_913_: bool; - var phi_914_: type_18; - var phi_915_: bool; - var phi_833_: type_18; - var phi_836_: i32; - var phi_916_: bool; - var phi_917_: bool; - var phi_918_: bool; - var phi_919_: bool; - var phi_920_: type_18; - var phi_928_: type_18; + var phi_922_: type_18; + var phi_963_: i32; + var phi_908_: i32; + var phi_964_: bool; + var phi_1440_: bool; + var local_9: i32; + var phi_1447_: bool; + var phi_970_: bool; + var phi_971_: bool; + var phi_1446_: bool; var phi_972_: bool; var phi_973_: bool; var phi_974_: bool; var phi_975_: bool; - var phi_976_: type_18; - var phi_977_: bool; - var phi_800_: type_18; - var phi_803_: i32; - var phi_978_: bool; - var phi_979_: bool; - var phi_980_: bool; - var phi_981_: bool; - var phi_982_: type_18; - var phi_989_: type_18; + var phi_1445_: bool; + var phi_1157_: bool; + var phi_1156_: bool; + var phi_1155_: bool; var phi_998_: type_30; - var phi_1000_: type_30; - var phi_773_: type_18; - var phi_1054_: bool; - var phi_1055_: type_30; - var phi_1056_: bool; - var phi_745_: type_18; - var phi_1057_: bool; - var phi_1058_: type_30; - var local_8: type_16; - var local_9: type_16; - var local_10: bool; - var local_11: bool; - var local_12: bool; - var local_13: bool; - var local_14: type_18; - var local_15: bool; - var local_16: bool; - var local_17: bool; - var local_18: bool; - var local_19: type_18; - var local_20: bool; - var local_21: type_30; - var local_22: bool; - var local_23: type_30; + var phi_999_: type_30; + var local_10: u32; + var phi_1005_: type_30; + var phi_1006_: type_30; - let _e81 = arrayLength((&global.member)); - let _e84 = global_2; - if (_e84.x >= arrayLength((&global_1.member))) { - } else { - let _e90 = global_1.member[_e84.x].member_3; - let _e93 = global.member[_e90]; - let _e98 = global.member[(_e90 + 2u)]; - let _e102 = global.member[(_e90 + 3u)]; - let _e103 = bitcast(_e102); - let _e107 = global.member[(_e90 + 4u)]; - let _e108 = bitcast(_e107); - let _e112 = global.member[(_e90 + 5u)]; - let _e113 = bitcast(_e112); - let _e117 = global.member[(_e90 + 6u)]; - let _e118 = bitcast(_e117); - let _e122 = global.member[(_e90 + 7u)]; - let _e126 = global.member[(_e90 + 8u)]; - let _e130 = global.member[(_e90 + 9u)]; - let _e134 = global.member[(_e90 + 10u)]; - global_1.member[_e84.x].member = select(_e126, _e98, (_e122 == 4294967295u)); - global_1.member[_e84.x].member_1 = select(0u, 1u, (_e93 == 1u)); - if (_e118 == 0f) { - } else { - if (_e81 >= 83u) { - phi_1260_ = (_e130 <= (_e81 - 83u)); + switch bitcast(0u) { + default: { + let _e82 = arrayLength((&global.member)); + let _e85 = global_2; + if (_e85.x >= arrayLength((&global_1.member))) { } else { - phi_1260_ = false; - } - let _e149 = phi_1260_; - if _e149 { - let _e152 = global.member[_e130]; - let _e157 = global.member[(_e130 + 1u)]; - let _e162 = global.member[(_e130 + 2u)]; - let _e167 = global.member[(_e130 + 3u)]; - let _e173 = global.member[(_e130 + 4u)]; - let _e178 = global.member[(_e130 + 5u)]; - let _e183 = global.member[(_e130 + 6u)]; - let _e188 = global.member[(_e130 + 7u)]; - let _e194 = global.member[(_e130 + 8u)]; - let _e199 = global.member[(_e130 + 9u)]; - let _e204 = global.member[(_e130 + 10u)]; - let _e209 = global.member[(_e130 + 11u)]; - let _e215 = global.member[(_e130 + 12u)]; - let _e220 = global.member[(_e130 + 13u)]; - let _e225 = global.member[(_e130 + 14u)]; - let _e230 = global.member[(_e130 + 15u)]; - let _e237 = global.member[(_e130 + 16u)]; - let _e242 = global.member[(_e130 + 17u)]; - let _e247 = global.member[(_e130 + 18u)]; - let _e252 = global.member[(_e130 + 19u)]; - let _e258 = global.member[(_e130 + 20u)]; - let _e263 = global.member[(_e130 + 21u)]; - let _e268 = global.member[(_e130 + 22u)]; - let _e273 = global.member[(_e130 + 23u)]; - let _e279 = global.member[(_e130 + 24u)]; - let _e284 = global.member[(_e130 + 25u)]; - let _e289 = global.member[(_e130 + 26u)]; - let _e294 = global.member[(_e130 + 27u)]; - let _e300 = global.member[(_e130 + 28u)]; - let _e305 = global.member[(_e130 + 29u)]; - let _e310 = global.member[(_e130 + 30u)]; - let _e315 = global.member[(_e130 + 31u)]; - let _e322 = global.member[(_e130 + 32u)]; - let _e327 = global.member[(_e130 + 33u)]; - let _e332 = global.member[(_e130 + 34u)]; - local_7 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_461_ = type_18(0u, 6u); - loop { - let _e337 = phi_461_; - if (_e337.member < _e337.member_1) { - phi_477_ = type_18((_e337.member + 1u), _e337.member_1); - phi_478_ = type_18(1u, _e337.member); + let _e91 = global_1.member[_e85.x].member_3; + let _e94 = global.member[_e91]; + let _e99 = global.member[(_e91 + 2u)]; + let _e103 = global.member[(_e91 + 3u)]; + let _e104 = bitcast(_e103); + let _e108 = global.member[(_e91 + 4u)]; + let _e109 = bitcast(_e108); + let _e113 = global.member[(_e91 + 5u)]; + let _e114 = bitcast(_e113); + let _e118 = global.member[(_e91 + 6u)]; + let _e119 = bitcast(_e118); + let _e123 = global.member[(_e91 + 7u)]; + let _e127 = global.member[(_e91 + 8u)]; + let _e131 = global.member[(_e91 + 9u)]; + let _e135 = global.member[(_e91 + 10u)]; + global_1.member[_e85.x].member = select(_e127, _e99, (_e123 == 4294967295u)); + global_1.member[_e85.x].member_1 = select(0u, 1u, (_e94 == 1u)); + if (_e119 == 0f) { + } else { + if (_e82 >= 83u) { + phi_1208_ = (_e131 <= (_e82 - 83u)); } else { - phi_477_ = _e337; - phi_478_ = type_18(0u, type_18().member_1); + phi_1208_ = false; } - let _e350 = phi_477_; - let _e352 = phi_478_; - switch bitcast(_e352.member) { - case 0: { - let _e379 = local_7; - local_6 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_491_ = type_18(0u, 8u); - loop { - let _e382 = phi_491_; - if (_e382.member < _e382.member_1) { - phi_507_ = type_18((_e382.member + 1u), _e382.member_1); - phi_508_ = type_18(1u, _e382.member); - } else { - phi_507_ = _e382; - phi_508_ = type_18(0u, type_18().member_1); + let _e150 = phi_1208_; + if _e150 { + let _e153 = global.member[_e131]; + let _e158 = global.member[(_e131 + 1u)]; + let _e163 = global.member[(_e131 + 2u)]; + let _e168 = global.member[(_e131 + 3u)]; + let _e174 = global.member[(_e131 + 4u)]; + let _e179 = global.member[(_e131 + 5u)]; + let _e184 = global.member[(_e131 + 6u)]; + let _e189 = global.member[(_e131 + 7u)]; + let _e195 = global.member[(_e131 + 8u)]; + let _e200 = global.member[(_e131 + 9u)]; + let _e205 = global.member[(_e131 + 10u)]; + let _e210 = global.member[(_e131 + 11u)]; + let _e216 = global.member[(_e131 + 12u)]; + let _e221 = global.member[(_e131 + 13u)]; + let _e226 = global.member[(_e131 + 14u)]; + let _e231 = global.member[(_e131 + 15u)]; + let _e238 = global.member[(_e131 + 16u)]; + let _e243 = global.member[(_e131 + 17u)]; + let _e248 = global.member[(_e131 + 18u)]; + let _e253 = global.member[(_e131 + 19u)]; + let _e259 = global.member[(_e131 + 20u)]; + let _e264 = global.member[(_e131 + 21u)]; + let _e269 = global.member[(_e131 + 22u)]; + let _e274 = global.member[(_e131 + 23u)]; + let _e280 = global.member[(_e131 + 24u)]; + let _e285 = global.member[(_e131 + 25u)]; + let _e290 = global.member[(_e131 + 26u)]; + let _e295 = global.member[(_e131 + 27u)]; + let _e301 = global.member[(_e131 + 28u)]; + let _e306 = global.member[(_e131 + 29u)]; + let _e311 = global.member[(_e131 + 30u)]; + let _e316 = global.member[(_e131 + 31u)]; + let _e323 = global.member[(_e131 + 32u)]; + let _e328 = global.member[(_e131 + 33u)]; + let _e333 = global.member[(_e131 + 34u)]; + local_7 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_460_ = type_18(0u, 6u); + loop { + let _e338 = phi_460_; + if (_e338.member < _e338.member_1) { + phi_461_ = type_18((_e338.member + 1u), _e338.member_1); + phi_476_ = type_18(1u, _e338.member); + } else { + phi_461_ = _e338; + phi_476_ = type_18(0u, type_18().member_1); + } + let _e351 = phi_461_; + let _e353 = phi_476_; + switch bitcast(_e353.member) { + case 0: { + phi_503_ = false; + break; } - let _e395 = phi_507_; - let _e397 = phi_508_; - switch bitcast(_e397.member) { - case 0: { - let _e419 = local_6; - phi_534_ = type_16(type_14(vec4(bitcast(_e152), bitcast(_e157), bitcast(_e162), bitcast(_e167)), vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230))), type_14(vec4(bitcast(_e237), bitcast(_e242), bitcast(_e247), bitcast(_e252)), vec4(bitcast(_e258), bitcast(_e263), bitcast(_e268), bitcast(_e273)), vec4(bitcast(_e279), bitcast(_e284), bitcast(_e289), bitcast(_e294)), vec4(bitcast(_e300), bitcast(_e305), bitcast(_e310), bitcast(_e315))), type_15(_e419, _e379), vec3(bitcast(_e322), bitcast(_e327), bitcast(_e332))); - phi_535_ = false; - phi_492_ = type_18(); - break; - } - case 1: { - let _e402 = ((_e130 + 59u) + (_e397.member_1 * 3u)); - let _e405 = global.member[_e402]; - let _e410 = global.member[(_e402 + 1u)]; - let _e415 = global.member[(_e402 + 2u)]; - local_6[_e397.member_1] = vec3(bitcast(_e405), bitcast(_e410), bitcast(_e415)); - phi_534_ = type_16(); - phi_535_ = true; - phi_492_ = _e395; - break; - } - default: { - phi_534_ = type_16(); - phi_535_ = false; - phi_492_ = type_18(); - break; - } + case 1: { + let _e358 = ((_e131 + 35u) + (_e353.member_1 * 4u)); + let _e361 = global.member[_e358]; + let _e366 = global.member[(_e358 + 1u)]; + let _e371 = global.member[(_e358 + 2u)]; + let _e376 = global.member[(_e358 + 3u)]; + local_7[_e353.member_1] = vec4(bitcast(_e361), bitcast(_e366), bitcast(_e371), bitcast(_e376)); + phi_503_ = true; + break; } - let _e423 = phi_534_; - let _e425 = phi_535_; - let _e427 = phi_492_; - local_8 = _e423; - continue; - continuing { - phi_491_ = _e427; - break if !(_e425); + default: { + phi_503_ = bool(); + break; } } - let _e907 = local_8; - phi_555_ = _e907; - phi_556_ = false; - phi_462_ = type_18(); - break; - } - case 1: { - let _e357 = ((_e130 + 35u) + (_e352.member_1 * 4u)); - let _e360 = global.member[_e357]; - let _e365 = global.member[(_e357 + 1u)]; - let _e370 = global.member[(_e357 + 2u)]; - let _e375 = global.member[(_e357 + 3u)]; - local_7[_e352.member_1] = vec4(bitcast(_e360), bitcast(_e365), bitcast(_e370), bitcast(_e375)); - phi_555_ = type_16(); - phi_556_ = true; - phi_462_ = _e350; - break; + let _e381 = phi_503_; + continue; + continuing { + phi_460_ = _e351; + break if !(_e381); + } } - default: { - phi_555_ = type_16(); - phi_556_ = false; - phi_462_ = type_18(); - break; + let _e383 = local_7; + local_6 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_509_ = type_18(0u, 8u); + loop { + let _e386 = phi_509_; + if (_e386.member < _e386.member_1) { + phi_510_ = type_18((_e386.member + 1u), _e386.member_1); + phi_525_ = type_18(1u, _e386.member); + } else { + phi_510_ = _e386; + phi_525_ = type_18(0u, type_18().member_1); + } + let _e399 = phi_510_; + let _e401 = phi_525_; + switch bitcast(_e401.member) { + case 0: { + phi_548_ = false; + break; + } + case 1: { + let _e406 = ((_e131 + 59u) + (_e401.member_1 * 3u)); + let _e409 = global.member[_e406]; + let _e414 = global.member[(_e406 + 1u)]; + let _e419 = global.member[(_e406 + 2u)]; + local_6[_e401.member_1] = vec3(bitcast(_e409), bitcast(_e414), bitcast(_e419)); + phi_548_ = true; + break; + } + default: { + phi_548_ = bool(); + break; + } + } + let _e424 = phi_548_; + continue; + continuing { + phi_509_ = _e399; + break if !(_e424); + } } + let _e426 = local_6; + phi_556_ = type_16(type_14(vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), vec4(bitcast(_e174), bitcast(_e179), bitcast(_e184), bitcast(_e189)), vec4(bitcast(_e195), bitcast(_e200), bitcast(_e205), bitcast(_e210)), vec4(bitcast(_e216), bitcast(_e221), bitcast(_e226), bitcast(_e231))), type_14(vec4(bitcast(_e238), bitcast(_e243), bitcast(_e248), bitcast(_e253)), vec4(bitcast(_e259), bitcast(_e264), bitcast(_e269), bitcast(_e274)), vec4(bitcast(_e280), bitcast(_e285), bitcast(_e290), bitcast(_e295)), vec4(bitcast(_e301), bitcast(_e306), bitcast(_e311), bitcast(_e316))), type_15(_e426, _e383), vec3(bitcast(_e323), bitcast(_e328), bitcast(_e333))); + } else { + phi_556_ = type_16(type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_15(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } - let _e430 = phi_555_; - let _e432 = phi_556_; - let _e434 = phi_462_; - local_9 = _e430; - continue; - continuing { - phi_461_ = _e434; - break if !(_e432); + let _e430 = phi_556_; + if (_e82 >= 10u) { + phi_1240_ = (_e135 <= (_e82 - 10u)); + } else { + phi_1240_ = false; } - } - let _e912 = local_9; - phi_561_ = _e912; - } else { - phi_561_ = type_16(type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_14(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_15(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e437 = phi_561_; - if (_e81 >= 10u) { - phi_1292_ = (_e134 <= (_e81 - 10u)); - } else { - phi_1292_ = false; - } - let _e443 = phi_1292_; - if _e443 { - let _e446 = global.member[_e134]; - let _e451 = global.member[(_e134 + 1u)]; - let _e456 = global.member[(_e134 + 2u)]; - let _e462 = global.member[(_e134 + 3u)]; - let _e467 = global.member[(_e134 + 4u)]; - let _e472 = global.member[(_e134 + 5u)]; - let _e477 = global.member[(_e134 + 6u)]; - let _e483 = global.member[(_e134 + 7u)]; - let _e488 = global.member[(_e134 + 8u)]; - let _e493 = global.member[(_e134 + 9u)]; - phi_612_ = type_29(vec3(bitcast(_e446), bitcast(_e451), bitcast(_e456)), vec4(bitcast(_e462), bitcast(_e467), bitcast(_e472), bitcast(_e477)), vec3(bitcast(_e483), bitcast(_e488), bitcast(_e493))); - } else { - phi_612_ = type_29(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); - } - let _e498 = phi_612_; - let _e506 = (_e498.member_1.x + _e498.member_1.x); - let _e507 = (_e498.member_1.y + _e498.member_1.y); - let _e508 = (_e498.member_1.z + _e498.member_1.z); - let _e510 = (_e498.member_1.z * _e508); - let _e511 = (_e498.member_1.w * _e506); - let _e512 = (_e498.member_1.w * _e507); - let _e513 = (_e498.member_1.w * _e508); - let _e533 = (vec4((1f - fma(_e498.member_1.y, _e507, _e510)), fma(_e498.member_1.x, _e507, _e513), fma(_e498.member_1.x, _e508, -(_e512)), 0f) * _e498.member_2.x); - let _e535 = (vec4(fma(_e498.member_1.x, _e507, -(_e513)), (1f - fma(_e498.member_1.x, _e506, _e510)), fma(_e498.member_1.y, _e508, _e511), 0f) * _e498.member_2.y); - let _e537 = (vec4(fma(_e498.member_1.x, _e508, _e512), fma(_e498.member_1.y, _e508, -(_e511)), (1f - fma(_e498.member_1.x, _e506, (_e498.member_1.y * _e507))), 0f) * _e498.member_2.z); - let _e559 = (_e498.member.x + fma(_e537.x, _e113, fma(_e535.x, _e108, (_e533.x * _e103)))); - let _e560 = (_e498.member.y + fma(_e537.y, _e113, fma(_e535.y, _e108, (_e533.y * _e103)))); - let _e561 = (_e498.member.z + fma(_e537.z, _e113, fma(_e535.z, _e108, (_e533.z * _e103)))); - let _e562 = vec3(_e559, _e560, _e561); - let _e565 = (max(_e498.member_2.x, max(_e498.member_2.y, _e498.member_2.z)) * _e118); - let _e567 = sqrt((_e565 * _e565)); - local_1 = _e437.member_2.member; - local = _e437.member_2.member_1; - let _e572 = local[0u][0u]; - let _e575 = local[0u][1u]; - let _e580 = local[0u][2u]; - let _e584 = local[0u][3u]; - let _e586 = -(_e567); - if ((fma(_e580, _e561, fma(_e572, _e559, (_e575 * _e560))) + _e584) < _e586) { - phi_1057_ = true; - phi_1058_ = type_30(true, 0u); - } else { - phi_744_ = type_18(0u, 6u); - loop { - let _e589 = phi_744_; - if (_e589.member < _e589.member_1) { - phi_760_ = type_18((_e589.member + 1u), _e589.member_1); - phi_761_ = type_18(1u, _e589.member); + let _e436 = phi_1240_; + if _e436 { + let _e439 = global.member[_e135]; + let _e444 = global.member[(_e135 + 1u)]; + let _e449 = global.member[(_e135 + 2u)]; + let _e455 = global.member[(_e135 + 3u)]; + let _e460 = global.member[(_e135 + 4u)]; + let _e465 = global.member[(_e135 + 5u)]; + let _e470 = global.member[(_e135 + 6u)]; + let _e476 = global.member[(_e135 + 7u)]; + let _e481 = global.member[(_e135 + 8u)]; + let _e486 = global.member[(_e135 + 9u)]; + phi_607_ = type_29(vec3(bitcast(_e439), bitcast(_e444), bitcast(_e449)), vec4(bitcast(_e455), bitcast(_e460), bitcast(_e465), bitcast(_e470)), vec3(bitcast(_e476), bitcast(_e481), bitcast(_e486))); } else { - phi_760_ = _e589; - phi_761_ = type_18(0u, type_18().member_1); + phi_607_ = type_29(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); } - let _e602 = phi_760_; - let _e604 = phi_761_; - switch bitcast(_e604.member) { - case 0: { - let _e650 = vec3(_e567); - let _e651 = (_e562 - _e650); - let _e652 = (_e562 + _e650); - phi_772_ = type_18(0u, 3u); + let _e491 = phi_607_; + let _e499 = (_e491.member_1.x + _e491.member_1.x); + let _e500 = (_e491.member_1.y + _e491.member_1.y); + let _e501 = (_e491.member_1.z + _e491.member_1.z); + let _e503 = (_e491.member_1.z * _e501); + let _e504 = (_e491.member_1.w * _e499); + let _e505 = (_e491.member_1.w * _e500); + let _e506 = (_e491.member_1.w * _e501); + let _e526 = (vec4((1f - fma(_e491.member_1.y, _e500, _e503)), fma(_e491.member_1.x, _e500, _e506), fma(_e491.member_1.x, _e501, -(_e505)), 0f) * _e491.member_2.x); + let _e528 = (vec4(fma(_e491.member_1.x, _e500, -(_e506)), (1f - fma(_e491.member_1.x, _e499, _e503)), fma(_e491.member_1.y, _e501, _e504), 0f) * _e491.member_2.y); + let _e530 = (vec4(fma(_e491.member_1.x, _e501, _e505), fma(_e491.member_1.y, _e501, -(_e504)), (1f - fma(_e491.member_1.x, _e499, (_e491.member_1.y * _e500))), 0f) * _e491.member_2.z); + let _e552 = (_e491.member.x + fma(_e530.x, _e114, fma(_e528.x, _e109, (_e526.x * _e104)))); + let _e553 = (_e491.member.y + fma(_e530.y, _e114, fma(_e528.y, _e109, (_e526.y * _e104)))); + let _e554 = (_e491.member.z + fma(_e530.z, _e114, fma(_e528.z, _e109, (_e526.z * _e104)))); + let _e555 = vec3(_e552, _e553, _e554); + let _e558 = (max(_e491.member_2.x, max(_e491.member_2.y, _e491.member_2.z)) * _e119); + let _e560 = sqrt((_e558 * _e558)); + local_1 = _e430.member_2.member; + local = _e430.member_2.member_1; + let _e565 = local[0u][0u]; + let _e568 = local[0u][1u]; + let _e573 = local[0u][2u]; + let _e577 = local[0u][3u]; + let _e579 = -(_e560); + if ((fma(_e573, _e554, fma(_e565, _e552, (_e568 * _e553))) + _e577) < _e579) { + phi_1006_ = type_30(true, 0u); + } else { + phi_739_ = type_18(0u, 6u); + loop { + let _e582 = phi_739_; + if (_e582.member < _e582.member_1) { + phi_740_ = type_18((_e582.member + 1u), _e582.member_1); + phi_755_ = type_18(1u, _e582.member); + } else { + phi_740_ = _e582; + phi_755_ = type_18(0u, type_18().member_1); + } + let _e595 = phi_740_; + let _e597 = phi_755_; + local_10 = _e597.member_1; + switch bitcast(_e597.member) { + case 0: { + phi_803_ = false; + phi_804_ = true; + break; + } + case 1: { + if (_e597.member_1 != 0u) { + if (_e597.member_1 < 6u) { + } else { + phi_1415_ = true; + phi_1154_ = bool(); + break; + } + let _e605 = local[_e597.member_1][0u]; + let _e608 = local[_e597.member_1][1u]; + let _e613 = local[_e597.member_1][2u]; + let _e617 = local[_e597.member_1][3u]; + phi_799_ = select(true, false, ((fma(_e613, _e554, fma(_e605, _e552, (_e608 * _e553))) + _e617) < _e579)); + } else { + phi_799_ = true; + } + let _e622 = phi_799_; + phi_803_ = _e622; + phi_804_ = false; + break; + } + default: { + phi_803_ = bool(); + phi_804_ = bool(); + break; + } + } + let _e624 = phi_803_; + let _e626 = phi_804_; + continue; + continuing { + phi_739_ = _e595; + phi_1415_ = false; + phi_1154_ = _e626; + break if !(_e624); + } + } + let _e629 = phi_1415_; + let _e631 = phi_1154_; + if _e629 { + break; + } + if _e631 { + let _e632 = vec3(_e560); + let _e633 = (_e555 - _e632); + let _e634 = (_e555 + _e632); + phi_1438_ = _e629; + phi_811_ = type_18(0u, 3u); loop { - let _e654 = phi_772_; - if (_e654.member < _e654.member_1) { - phi_788_ = type_18((_e654.member + 1u), _e654.member_1); - phi_789_ = type_18(1u, _e654.member); + let _e636 = phi_1438_; + let _e638 = phi_811_; + if (_e638.member < _e638.member_1) { + phi_812_ = type_18((_e638.member + 1u), _e638.member_1); + phi_827_ = type_18(1u, _e638.member); } else { - phi_788_ = _e654; - phi_789_ = type_18(0u, type_18().member_1); + phi_812_ = _e638; + phi_827_ = type_18(0u, type_18().member_1); } - let _e667 = phi_788_; - let _e669 = phi_789_; - switch bitcast(_e669.member) { + let _e651 = phi_812_; + let _e653 = phi_827_; + switch bitcast(_e653.member) { case 0: { - phi_978_ = false; - phi_979_ = true; - phi_980_ = true; - phi_981_ = false; - phi_982_ = type_18(); + phi_1446_ = _e636; + phi_972_ = false; + phi_973_ = true; + phi_974_ = false; + phi_975_ = false; break; } case 1: { - phi_799_ = type_18(0u, 8u); - phi_802_ = 0i; + phi_837_ = type_18(0u, 8u); + phi_840_ = 0i; loop { - let _e674 = phi_799_; - let _e676 = phi_802_; - if (_e674.member < _e674.member_1) { - phi_817_ = type_18((_e674.member + 1u), _e674.member_1); - phi_818_ = type_18(1u, _e674.member); + let _e658 = phi_837_; + let _e660 = phi_840_; + local_8 = _e660; + if (_e658.member < _e658.member_1) { + phi_838_ = type_18((_e658.member + 1u), _e658.member_1); + phi_855_ = type_18(1u, _e658.member); } else { - phi_817_ = _e674; - phi_818_ = type_18(0u, type_18().member_1); + phi_838_ = _e658; + phi_855_ = type_18(0u, type_18().member_1); } - let _e689 = phi_817_; - let _e691 = phi_818_; - switch bitcast(_e691.member) { + let _e673 = phi_838_; + let _e675 = phi_855_; + switch bitcast(_e675.member) { case 0: { - if (_e676 == 8i) { - phi_916_ = true; - phi_917_ = false; - phi_918_ = false; - phi_919_ = false; - phi_920_ = type_18(); + phi_841_ = i32(); + phi_897_ = false; + break; + } + case 1: { + if (_e675.member_1 < 8u) { } else { - phi_832_ = type_18(0u, 8u); - phi_835_ = 0i; - loop { - let _e738 = phi_832_; - let _e740 = phi_835_; - if (_e738.member < _e738.member_1) { - phi_850_ = type_18((_e738.member + 1u), _e738.member_1); - phi_851_ = type_18(1u, _e738.member); - } else { - phi_850_ = _e738; - phi_851_ = type_18(0u, type_18().member_1); - } - let _e753 = phi_850_; - let _e755 = phi_851_; - switch bitcast(_e755.member) { - case 0: { - let _e800 = (_e740 == 8i); - if _e800 { - phi_866_ = type_18(); - } else { - phi_866_ = _e667; - } - let _e802 = phi_866_; - phi_910_ = false; - phi_911_ = select(false, true, _e800); - phi_912_ = select(bool(), false, _e800); - phi_913_ = select(true, false, _e800); - phi_914_ = _e802; - phi_915_ = false; - phi_833_ = type_18(); - phi_836_ = i32(); - break; - } - case 1: { - if (_e755.member_1 < 8u) { - let _e762 = local_1[_e755.member_1][0u]; - let _e765 = local_1[_e755.member_1][1u]; - let _e768 = local_1[_e755.member_1][2u]; - local_4 = array(_e762, _e765, _e768); - let _e770 = (_e669.member_1 < 3u); - if _e770 { - let _e772 = local_4[_e669.member_1]; - local_5 = array(_e652.x, _e652.y, _e652.z); - if _e770 { - let _e778 = local_5[_e669.member_1]; - if (_e772 > _e778) { - phi_900_ = (_e740 + 1i); - } else { - phi_900_ = _e740; - } - let _e782 = phi_900_; - phi_902_ = _e753; - phi_903_ = _e782; - } else { - phi_902_ = type_18(); - phi_903_ = i32(); - } - let _e784 = phi_902_; - let _e786 = phi_903_; - phi_904_ = select(false, true, _e770); - phi_905_ = _e784; - phi_906_ = _e786; - } else { - phi_904_ = false; - phi_905_ = type_18(); - phi_906_ = i32(); - } - let _e789 = phi_904_; - let _e791 = phi_905_; - let _e793 = phi_906_; - phi_907_ = _e789; - phi_908_ = _e791; - phi_909_ = _e793; - } else { - phi_907_ = false; - phi_908_ = type_18(); - phi_909_ = i32(); - } - let _e795 = phi_907_; - let _e797 = phi_908_; - let _e799 = phi_909_; - phi_910_ = false; - phi_911_ = false; - phi_912_ = bool(); - phi_913_ = false; - phi_914_ = type_18(); - phi_915_ = _e795; - phi_833_ = _e797; - phi_836_ = _e799; - break; - } - default: { - phi_910_ = true; - phi_911_ = false; - phi_912_ = bool(); - phi_913_ = false; - phi_914_ = type_18(); - phi_915_ = false; - phi_833_ = type_18(); - phi_836_ = i32(); - break; - } - } - let _e807 = phi_910_; - let _e809 = phi_911_; - let _e811 = phi_912_; - let _e813 = phi_913_; - let _e815 = phi_914_; - let _e817 = phi_915_; - let _e819 = phi_833_; - let _e821 = phi_836_; - local_10 = _e809; - local_11 = _e811; - local_12 = _e807; - local_13 = _e813; - local_14 = _e815; - continue; - continuing { - phi_832_ = _e819; - phi_835_ = _e821; - break if !(_e817); - } - } - let _e967 = local_10; - phi_916_ = _e967; - let _e970 = local_11; - phi_917_ = _e970; - let _e973 = local_12; - phi_918_ = _e973; - let _e976 = local_13; - phi_919_ = _e976; - let _e979 = local_14; - phi_920_ = _e979; + phi_1433_ = true; + break; } - let _e824 = phi_916_; - let _e826 = phi_917_; - let _e828 = phi_918_; - let _e830 = phi_919_; - let _e832 = phi_920_; - if _e824 { - phi_928_ = type_18(); + let _e682 = local_1[_e675.member_1][0u]; + let _e685 = local_1[_e675.member_1][1u]; + let _e688 = local_1[_e675.member_1][2u]; + local_2 = array(_e682, _e685, _e688); + let _e690 = (_e653.member_1 < 3u); + if _e690 { } else { - phi_928_ = _e832; + phi_1433_ = true; + break; } - let _e834 = phi_928_; - phi_972_ = select(_e828, false, _e824); - phi_973_ = select(false, true, _e824); - phi_974_ = select(bool(), _e826, _e824); - phi_975_ = select(_e830, false, _e824); - phi_976_ = _e834; - phi_977_ = false; - phi_800_ = type_18(); - phi_803_ = i32(); - break; - } - case 1: { - if (_e691.member_1 < 8u) { - let _e698 = local_1[_e691.member_1][0u]; - let _e701 = local_1[_e691.member_1][1u]; - let _e704 = local_1[_e691.member_1][2u]; - local_2 = array(_e698, _e701, _e704); - let _e706 = (_e669.member_1 < 3u); - if _e706 { - let _e708 = local_2[_e669.member_1]; - local_3 = array(_e651.x, _e651.y, _e651.z); - if _e706 { - let _e714 = local_3[_e669.member_1]; - if (_e708 < _e714) { - phi_962_ = (_e676 + 1i); - } else { - phi_962_ = _e676; - } - let _e718 = phi_962_; - phi_964_ = _e689; - phi_965_ = _e718; - } else { - phi_964_ = type_18(); - phi_965_ = i32(); - } - let _e720 = phi_964_; - let _e722 = phi_965_; - phi_966_ = select(false, true, _e706); - phi_967_ = _e720; - phi_968_ = _e722; - } else { - phi_966_ = false; - phi_967_ = type_18(); - phi_968_ = i32(); - } - let _e725 = phi_966_; - let _e727 = phi_967_; - let _e729 = phi_968_; - phi_969_ = _e725; - phi_970_ = _e727; - phi_971_ = _e729; + let _e692 = local_2[_e653.member_1]; + local_3 = array(_e633.x, _e633.y, _e633.z); + if _e690 { + } else { + phi_1433_ = true; + break; + } + let _e698 = local_3[_e653.member_1]; + if (_e692 < _e698) { + phi_896_ = (_e660 + 1i); } else { - phi_969_ = false; - phi_970_ = type_18(); - phi_971_ = i32(); + phi_896_ = _e660; } - let _e731 = phi_969_; - let _e733 = phi_970_; - let _e735 = phi_971_; - phi_972_ = false; - phi_973_ = false; - phi_974_ = bool(); - phi_975_ = false; - phi_976_ = type_18(); - phi_977_ = _e731; - phi_800_ = _e733; - phi_803_ = _e735; + let _e702 = phi_896_; + phi_841_ = _e702; + phi_897_ = true; break; } default: { - phi_972_ = true; - phi_973_ = false; - phi_974_ = bool(); - phi_975_ = false; - phi_976_ = type_18(); - phi_977_ = false; - phi_800_ = type_18(); - phi_803_ = i32(); + phi_841_ = i32(); + phi_897_ = bool(); break; } } - let _e840 = phi_972_; - let _e842 = phi_973_; - let _e844 = phi_974_; - let _e846 = phi_975_; - let _e848 = phi_976_; - let _e850 = phi_977_; - let _e852 = phi_800_; - let _e854 = phi_803_; - local_15 = _e840; - local_16 = _e842; - local_17 = _e844; - local_18 = _e846; - local_19 = _e848; + let _e704 = phi_841_; + let _e706 = phi_897_; continue; continuing { - phi_799_ = _e852; - phi_802_ = _e854; - break if !(_e850); + phi_837_ = _e673; + phi_840_ = _e704; + phi_1433_ = _e636; + break if !(_e706); + } + } + let _e709 = phi_1433_; + phi_1445_ = _e709; + phi_1157_ = bool(); + phi_1156_ = bool(); + phi_1155_ = bool(); + if _e709 { + break; + } + let _e711 = local_8; + let _e712 = (_e711 == 8i); + if _e712 { + phi_1447_ = _e709; + phi_970_ = false; + phi_971_ = false; + } else { + phi_904_ = type_18(0u, 8u); + phi_907_ = 0i; + loop { + let _e714 = phi_904_; + let _e716 = phi_907_; + local_9 = _e716; + if (_e714.member < _e714.member_1) { + phi_905_ = type_18((_e714.member + 1u), _e714.member_1); + phi_922_ = type_18(1u, _e714.member); + } else { + phi_905_ = _e714; + phi_922_ = type_18(0u, type_18().member_1); + } + let _e729 = phi_905_; + let _e731 = phi_922_; + switch bitcast(_e731.member) { + case 0: { + phi_908_ = i32(); + phi_964_ = false; + break; + } + case 1: { + if (_e731.member_1 < 8u) { + } else { + phi_1440_ = true; + break; + } + let _e738 = local_1[_e731.member_1][0u]; + let _e741 = local_1[_e731.member_1][1u]; + let _e744 = local_1[_e731.member_1][2u]; + local_4 = array(_e738, _e741, _e744); + let _e746 = (_e653.member_1 < 3u); + if _e746 { + } else { + phi_1440_ = true; + break; + } + let _e748 = local_4[_e653.member_1]; + local_5 = array(_e634.x, _e634.y, _e634.z); + if _e746 { + } else { + phi_1440_ = true; + break; + } + let _e754 = local_5[_e653.member_1]; + if (_e748 > _e754) { + phi_963_ = (_e716 + 1i); + } else { + phi_963_ = _e716; + } + let _e758 = phi_963_; + phi_908_ = _e758; + phi_964_ = true; + break; + } + default: { + phi_908_ = i32(); + phi_964_ = bool(); + break; + } + } + let _e760 = phi_908_; + let _e762 = phi_964_; + continue; + continuing { + phi_904_ = _e729; + phi_907_ = _e760; + phi_1440_ = _e709; + break if !(_e762); + } + } + let _e765 = phi_1440_; + phi_1445_ = _e765; + phi_1157_ = bool(); + phi_1156_ = bool(); + phi_1155_ = bool(); + if _e765 { + break; } + let _e767 = local_9; + let _e768 = (_e767 == 8i); + phi_1447_ = _e765; + phi_970_ = select(true, false, _e768); + phi_971_ = _e768; } - let _e991 = local_15; - phi_978_ = _e991; - let _e994 = local_16; - phi_979_ = _e994; - let _e997 = local_17; - phi_980_ = _e997; - let _e1000 = local_18; - phi_981_ = _e1000; - let _e1003 = local_19; - phi_982_ = _e1003; + let _e771 = phi_1447_; + let _e773 = phi_970_; + let _e775 = phi_971_; + phi_1446_ = _e771; + phi_972_ = _e773; + phi_973_ = false; + phi_974_ = _e712; + phi_975_ = _e775; break; } default: { - phi_978_ = true; - phi_979_ = false; - phi_980_ = bool(); - phi_981_ = false; - phi_982_ = type_18(); + phi_1446_ = _e636; + phi_972_ = bool(); + phi_973_ = bool(); + phi_974_ = bool(); + phi_975_ = bool(); break; } } - let _e857 = phi_978_; - let _e859 = phi_979_; - let _e861 = phi_980_; - let _e863 = phi_981_; - let _e865 = phi_982_; - if _e857 { - phi_989_ = type_18(); - } else { - phi_989_ = _e865; - } - let _e867 = phi_989_; - let _e868 = select(_e859, false, _e857); - if _e868 { - if select(_e861, bool(), _e857) { - phi_998_ = type_30(false, 0u); - } else { - phi_998_ = type_30(true, 0u); - } - let _e872 = phi_998_; - phi_1000_ = _e872; - phi_773_ = type_18(); - } else { - phi_1000_ = type_30(); - phi_773_ = _e867; - } - let _e874 = phi_1000_; - let _e876 = phi_773_; - local_20 = select(false, true, _e868); - local_21 = _e874; + let _e777 = phi_1446_; + let _e779 = phi_972_; + let _e781 = phi_973_; + let _e783 = phi_974_; + let _e785 = phi_975_; continue; continuing { - phi_772_ = _e876; - break if !(select(select(_e863, false, _e857), false, _e868)); + phi_1438_ = _e777; + phi_811_ = _e651; + phi_1445_ = _e777; + phi_1157_ = _e785; + phi_1156_ = _e783; + phi_1155_ = _e781; + break if !(_e779); } } - let _e1010 = local_20; - phi_1054_ = _e1010; - let _e1013 = local_21; - phi_1055_ = _e1013; - phi_1056_ = false; - phi_745_ = type_18(); - break; - } - case 1: { - if (_e604.member_1 != 0u) { - if (_e604.member_1 < 6u) { - let _e612 = local[_e604.member_1][0u]; - let _e615 = local[_e604.member_1][1u]; - let _e620 = local[_e604.member_1][2u]; - let _e624 = local[_e604.member_1][3u]; - let _e626 = ((fma(_e620, _e561, fma(_e612, _e559, (_e615 * _e560))) + _e624) < _e586); - if _e626 { - phi_1039_ = type_30(true, _e604.member_1); - } else { - phi_1039_ = type_30(); - } - let _e629 = phi_1039_; - phi_1041_ = select(false, true, _e626); - phi_1042_ = _e629; - phi_1043_ = select(true, false, _e626); - } else { - phi_1041_ = false; - phi_1042_ = type_30(); - phi_1043_ = false; - } - let _e633 = phi_1041_; - let _e635 = phi_1042_; - let _e637 = phi_1043_; - phi_1044_ = _e633; - phi_1045_ = _e635; - phi_1046_ = _e637; - } else { - phi_1044_ = false; - phi_1045_ = type_30(); - phi_1046_ = true; + let _e788 = phi_1445_; + let _e790 = phi_1157_; + let _e792 = phi_1156_; + let _e794 = phi_1155_; + if _e788 { + break; } - let _e639 = phi_1044_; - let _e641 = phi_1045_; - let _e643 = phi_1046_; - if _e643 { - phi_1051_ = _e602; - phi_1053_ = type_30(); + let _e795 = select(_e792, false, _e794); + if select(true, false, select(_e795, true, select(select(_e790, false, _e794), false, _e795))) { + phi_998_ = type_30(false, 0u); } else { - phi_1051_ = type_18(); - phi_1053_ = _e641; + phi_998_ = type_30(true, 0u); } - let _e645 = phi_1051_; - let _e647 = phi_1053_; - phi_1054_ = select(_e639, false, _e643); - phi_1055_ = _e647; - phi_1056_ = select(false, true, _e643); - phi_745_ = _e645; - break; + let _e801 = phi_998_; + phi_999_ = _e801; + } else { + phi_999_ = type_30(); } - default: { - phi_1054_ = false; - phi_1055_ = type_30(); - phi_1056_ = false; - phi_745_ = type_18(); - break; + let _e803 = phi_999_; + if select(true, false, _e631) { + let _e806 = local_10; + phi_1005_ = type_30(true, _e806); + } else { + phi_1005_ = _e803; } + let _e809 = phi_1005_; + phi_1006_ = _e809; } - let _e881 = phi_1054_; - let _e883 = phi_1055_; - let _e885 = phi_1056_; - let _e887 = phi_745_; - local_22 = _e881; - local_23 = _e883; - continue; - continuing { - phi_744_ = _e887; - break if !(_e885); + let _e811 = phi_1006_; + if (_e811.member != true) { + } else { + global_1.member[_e85.x].member_1 = 0u; } } - let _e1018 = local_22; - phi_1057_ = _e1018; - let _e1021 = local_23; - phi_1058_ = _e1021; - } - let _e890 = phi_1057_; - let _e892 = phi_1058_; - if _e890 { - if (_e892.member != true) { - } else { - global_1.member[_e84.x].member_1 = 0u; - } } + break; } } return; diff --git a/crates/renderling/shaders/skybox-skybox_cubemap_vertex.wgsl b/crates/renderling/shaders/skybox-skybox_cubemap_vertex.wgsl index 15bd31da..277f1a99 100644 --- a/crates/renderling/shaders/skybox-skybox_cubemap_vertex.wgsl +++ b/crates/renderling/shaders/skybox-skybox_cubemap_vertex.wgsl @@ -42,179 +42,160 @@ fn function() { var local: array, 8>; var local_1: array, 6>; var local_2: array, 36>; - var phi_690_: bool; + var phi_689_: bool; var phi_517_: type_23; - var phi_533_: type_23; - var phi_534_: type_23; - var phi_547_: type_23; - var phi_563_: type_23; - var phi_564_: type_23; - var phi_590_: type_21; - var phi_591_: bool; - var phi_548_: type_23; - var phi_611_: type_21; - var phi_612_: bool; var phi_518_: type_23; - var phi_617_: type_21; - var local_3: type_21; - var local_4: type_21; + var phi_533_: type_23; + var phi_560_: bool; + var phi_566_: type_23; + var phi_567_: type_23; + var phi_582_: type_23; + var phi_605_: bool; + var phi_613_: type_21; - let _e77 = global_4; - let _e78 = global; - let _e80 = arrayLength((&global_1.member)); - if (_e80 >= 83u) { - phi_690_ = (_e77 <= (_e80 - 83u)); - } else { - phi_690_ = false; - } - let _e85 = phi_690_; - if _e85 { - let _e88 = global_1.member[_e77]; - let _e93 = global_1.member[(_e77 + 1u)]; - let _e98 = global_1.member[(_e77 + 2u)]; - let _e103 = global_1.member[(_e77 + 3u)]; - let _e109 = global_1.member[(_e77 + 4u)]; - let _e114 = global_1.member[(_e77 + 5u)]; - let _e119 = global_1.member[(_e77 + 6u)]; - let _e124 = global_1.member[(_e77 + 7u)]; - let _e130 = global_1.member[(_e77 + 8u)]; - let _e135 = global_1.member[(_e77 + 9u)]; - let _e140 = global_1.member[(_e77 + 10u)]; - let _e145 = global_1.member[(_e77 + 11u)]; - let _e151 = global_1.member[(_e77 + 12u)]; - let _e156 = global_1.member[(_e77 + 13u)]; - let _e161 = global_1.member[(_e77 + 14u)]; - let _e166 = global_1.member[(_e77 + 15u)]; - let _e173 = global_1.member[(_e77 + 16u)]; - let _e178 = global_1.member[(_e77 + 17u)]; - let _e183 = global_1.member[(_e77 + 18u)]; - let _e188 = global_1.member[(_e77 + 19u)]; - let _e194 = global_1.member[(_e77 + 20u)]; - let _e199 = global_1.member[(_e77 + 21u)]; - let _e204 = global_1.member[(_e77 + 22u)]; - let _e209 = global_1.member[(_e77 + 23u)]; - let _e215 = global_1.member[(_e77 + 24u)]; - let _e220 = global_1.member[(_e77 + 25u)]; - let _e225 = global_1.member[(_e77 + 26u)]; - let _e230 = global_1.member[(_e77 + 27u)]; - let _e236 = global_1.member[(_e77 + 28u)]; - let _e241 = global_1.member[(_e77 + 29u)]; - let _e246 = global_1.member[(_e77 + 30u)]; - let _e251 = global_1.member[(_e77 + 31u)]; - let _e258 = global_1.member[(_e77 + 32u)]; - let _e263 = global_1.member[(_e77 + 33u)]; - let _e268 = global_1.member[(_e77 + 34u)]; - local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_517_ = type_23(0u, 6u); - loop { - let _e273 = phi_517_; - if (_e273.member < _e273.member_1) { - phi_533_ = type_23((_e273.member + 1u), _e273.member_1); - phi_534_ = type_23(1u, _e273.member); + switch bitcast(0u) { + default: { + let _e78 = global_4; + let _e79 = global; + let _e81 = arrayLength((&global_1.member)); + if (_e81 >= 83u) { + phi_689_ = (_e78 <= (_e81 - 83u)); } else { - phi_533_ = _e273; - phi_534_ = type_23(0u, type_23().member_1); + phi_689_ = false; } - let _e286 = phi_533_; - let _e288 = phi_534_; - switch bitcast(_e288.member) { - case 0: { - let _e292 = local_1; - local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_547_ = type_23(0u, 8u); - loop { - let _e295 = phi_547_; - if (_e295.member < _e295.member_1) { - phi_563_ = type_23((_e295.member + 1u), _e295.member_1); - phi_564_ = type_23(1u, _e295.member); - } else { - phi_563_ = _e295; - phi_564_ = type_23(0u, type_23().member_1); + let _e86 = phi_689_; + if _e86 { + let _e89 = global_1.member[_e78]; + let _e94 = global_1.member[(_e78 + 1u)]; + let _e99 = global_1.member[(_e78 + 2u)]; + let _e104 = global_1.member[(_e78 + 3u)]; + let _e110 = global_1.member[(_e78 + 4u)]; + let _e115 = global_1.member[(_e78 + 5u)]; + let _e120 = global_1.member[(_e78 + 6u)]; + let _e125 = global_1.member[(_e78 + 7u)]; + let _e131 = global_1.member[(_e78 + 8u)]; + let _e136 = global_1.member[(_e78 + 9u)]; + let _e141 = global_1.member[(_e78 + 10u)]; + let _e146 = global_1.member[(_e78 + 11u)]; + let _e152 = global_1.member[(_e78 + 12u)]; + let _e157 = global_1.member[(_e78 + 13u)]; + let _e162 = global_1.member[(_e78 + 14u)]; + let _e167 = global_1.member[(_e78 + 15u)]; + let _e174 = global_1.member[(_e78 + 16u)]; + let _e179 = global_1.member[(_e78 + 17u)]; + let _e184 = global_1.member[(_e78 + 18u)]; + let _e189 = global_1.member[(_e78 + 19u)]; + let _e195 = global_1.member[(_e78 + 20u)]; + let _e200 = global_1.member[(_e78 + 21u)]; + let _e205 = global_1.member[(_e78 + 22u)]; + let _e210 = global_1.member[(_e78 + 23u)]; + let _e216 = global_1.member[(_e78 + 24u)]; + let _e221 = global_1.member[(_e78 + 25u)]; + let _e226 = global_1.member[(_e78 + 26u)]; + let _e231 = global_1.member[(_e78 + 27u)]; + let _e237 = global_1.member[(_e78 + 28u)]; + let _e242 = global_1.member[(_e78 + 29u)]; + let _e247 = global_1.member[(_e78 + 30u)]; + let _e252 = global_1.member[(_e78 + 31u)]; + let _e259 = global_1.member[(_e78 + 32u)]; + let _e264 = global_1.member[(_e78 + 33u)]; + let _e269 = global_1.member[(_e78 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_517_ = type_23(0u, 6u); + loop { + let _e274 = phi_517_; + if (_e274.member < _e274.member_1) { + phi_518_ = type_23((_e274.member + 1u), _e274.member_1); + phi_533_ = type_23(1u, _e274.member); + } else { + phi_518_ = _e274; + phi_533_ = type_23(0u, type_23().member_1); + } + let _e287 = phi_518_; + let _e289 = phi_533_; + switch bitcast(_e289.member) { + case 0: { + phi_560_ = false; + break; } - let _e308 = phi_563_; - let _e310 = phi_564_; - switch bitcast(_e310.member) { - case 0: { - let _e314 = local; - phi_590_ = type_21(type_19(vec4(bitcast(_e88), bitcast(_e93), bitcast(_e98), bitcast(_e103)), vec4(bitcast(_e109), bitcast(_e114), bitcast(_e119), bitcast(_e124)), vec4(bitcast(_e130), bitcast(_e135), bitcast(_e140), bitcast(_e145)), vec4(bitcast(_e151), bitcast(_e156), bitcast(_e161), bitcast(_e166))), type_19(vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230)), vec4(bitcast(_e236), bitcast(_e241), bitcast(_e246), bitcast(_e251))), type_20(_e314, _e292), vec3(bitcast(_e258), bitcast(_e263), bitcast(_e268))); - phi_591_ = false; - phi_548_ = type_23(); - break; - } - case 1: { - let _e318 = ((_e77 + 59u) + (_e310.member_1 * 3u)); - let _e321 = global_1.member[_e318]; - let _e326 = global_1.member[(_e318 + 1u)]; - let _e331 = global_1.member[(_e318 + 2u)]; - local[_e310.member_1] = vec3(bitcast(_e321), bitcast(_e326), bitcast(_e331)); - phi_590_ = type_21(); - phi_591_ = true; - phi_548_ = _e308; - break; - } - default: { - phi_590_ = type_21(); - phi_591_ = false; - phi_548_ = type_23(); - break; - } + case 1: { + let _e294 = ((_e78 + 35u) + (_e289.member_1 * 4u)); + let _e297 = global_1.member[_e294]; + let _e302 = global_1.member[(_e294 + 1u)]; + let _e307 = global_1.member[(_e294 + 2u)]; + let _e312 = global_1.member[(_e294 + 3u)]; + local_1[_e289.member_1] = vec4(bitcast(_e297), bitcast(_e302), bitcast(_e307), bitcast(_e312)); + phi_560_ = true; + break; } - let _e336 = phi_590_; - let _e338 = phi_591_; - let _e340 = phi_548_; - local_3 = _e336; - continue; - continuing { - phi_547_ = _e340; - break if !(_e338); + default: { + phi_560_ = bool(); + break; } } - let _e515 = local_3; - phi_611_ = _e515; - phi_612_ = false; - phi_518_ = type_23(); - break; - } - case 1: { - let _e343 = ((_e77 + 35u) + (_e288.member_1 * 4u)); - let _e346 = global_1.member[_e343]; - let _e351 = global_1.member[(_e343 + 1u)]; - let _e356 = global_1.member[(_e343 + 2u)]; - let _e361 = global_1.member[(_e343 + 3u)]; - local_1[_e288.member_1] = vec4(bitcast(_e346), bitcast(_e351), bitcast(_e356), bitcast(_e361)); - phi_611_ = type_21(); - phi_612_ = true; - phi_518_ = _e286; - break; + let _e317 = phi_560_; + continue; + continuing { + phi_517_ = _e287; + break if !(_e317); + } } - default: { - phi_611_ = type_21(); - phi_612_ = false; - phi_518_ = type_23(); - break; + let _e319 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_566_ = type_23(0u, 8u); + loop { + let _e322 = phi_566_; + if (_e322.member < _e322.member_1) { + phi_567_ = type_23((_e322.member + 1u), _e322.member_1); + phi_582_ = type_23(1u, _e322.member); + } else { + phi_567_ = _e322; + phi_582_ = type_23(0u, type_23().member_1); + } + let _e335 = phi_567_; + let _e337 = phi_582_; + switch bitcast(_e337.member) { + case 0: { + phi_605_ = false; + break; + } + case 1: { + let _e342 = ((_e78 + 59u) + (_e337.member_1 * 3u)); + let _e345 = global_1.member[_e342]; + let _e350 = global_1.member[(_e342 + 1u)]; + let _e355 = global_1.member[(_e342 + 2u)]; + local[_e337.member_1] = vec3(bitcast(_e345), bitcast(_e350), bitcast(_e355)); + phi_605_ = true; + break; + } + default: { + phi_605_ = bool(); + break; + } + } + let _e360 = phi_605_; + continue; + continuing { + phi_566_ = _e335; + break if !(_e360); + } } + let _e362 = local; + phi_613_ = type_21(type_19(vec4(bitcast(_e89), bitcast(_e94), bitcast(_e99), bitcast(_e104)), vec4(bitcast(_e110), bitcast(_e115), bitcast(_e120), bitcast(_e125)), vec4(bitcast(_e131), bitcast(_e136), bitcast(_e141), bitcast(_e146)), vec4(bitcast(_e152), bitcast(_e157), bitcast(_e162), bitcast(_e167))), type_19(vec4(bitcast(_e174), bitcast(_e179), bitcast(_e184), bitcast(_e189)), vec4(bitcast(_e195), bitcast(_e200), bitcast(_e205), bitcast(_e210)), vec4(bitcast(_e216), bitcast(_e221), bitcast(_e226), bitcast(_e231)), vec4(bitcast(_e237), bitcast(_e242), bitcast(_e247), bitcast(_e252))), type_20(_e362, _e319), vec3(bitcast(_e259), bitcast(_e264), bitcast(_e269))); + } else { + phi_613_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } - let _e366 = phi_611_; - let _e368 = phi_612_; - let _e370 = phi_518_; - local_4 = _e366; - continue; - continuing { - phi_517_ = _e370; - break if !(_e368); + let _e366 = phi_613_; + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e79 < 36u) { + } else { + break; } + let _e371 = local_2[_e79]; + global_3 = _e371; + global_2 = vec4((fma(fma(_e366.member.member_3.x, _e366.member_1.member_2.w, fma(_e366.member.member_2.x, _e366.member_1.member_2.z, fma(_e366.member.member.x, _e366.member_1.member_2.x, (_e366.member.member_1.x * _e366.member_1.member_2.y)))), _e371.z, fma(fma(_e366.member.member_3.x, _e366.member_1.member.w, fma(_e366.member.member_2.x, _e366.member_1.member.z, fma(_e366.member.member.x, _e366.member_1.member.x, (_e366.member.member_1.x * _e366.member_1.member.y)))), _e371.x, (fma(_e366.member.member_3.x, _e366.member_1.member_1.w, fma(_e366.member.member_2.x, _e366.member_1.member_1.z, fma(_e366.member.member.x, _e366.member_1.member_1.x, (_e366.member.member_1.x * _e366.member_1.member_1.y)))) * _e371.y))) + fma(_e366.member.member_3.x, _e366.member_1.member_3.w, fma(_e366.member.member_2.x, _e366.member_1.member_3.z, fma(_e366.member.member.x, _e366.member_1.member_3.x, (_e366.member.member_1.x * _e366.member_1.member_3.y))))), (fma(fma(_e366.member.member_3.y, _e366.member_1.member_2.w, fma(_e366.member.member_2.y, _e366.member_1.member_2.z, fma(_e366.member.member.y, _e366.member_1.member_2.x, (_e366.member.member_1.y * _e366.member_1.member_2.y)))), _e371.z, fma(fma(_e366.member.member_3.y, _e366.member_1.member.w, fma(_e366.member.member_2.y, _e366.member_1.member.z, fma(_e366.member.member.y, _e366.member_1.member.x, (_e366.member.member_1.y * _e366.member_1.member.y)))), _e371.x, (fma(_e366.member.member_3.y, _e366.member_1.member_1.w, fma(_e366.member.member_2.y, _e366.member_1.member_1.z, fma(_e366.member.member.y, _e366.member_1.member_1.x, (_e366.member.member_1.y * _e366.member_1.member_1.y)))) * _e371.y))) + fma(_e366.member.member_3.y, _e366.member_1.member_3.w, fma(_e366.member.member_2.y, _e366.member_1.member_3.z, fma(_e366.member.member.y, _e366.member_1.member_3.x, (_e366.member.member_1.y * _e366.member_1.member_3.y))))), (fma(fma(_e366.member.member_3.z, _e366.member_1.member_2.w, fma(_e366.member.member_2.z, _e366.member_1.member_2.z, fma(_e366.member.member.z, _e366.member_1.member_2.x, (_e366.member.member_1.z * _e366.member_1.member_2.y)))), _e371.z, fma(fma(_e366.member.member_3.z, _e366.member_1.member.w, fma(_e366.member.member_2.z, _e366.member_1.member.z, fma(_e366.member.member.z, _e366.member_1.member.x, (_e366.member.member_1.z * _e366.member_1.member.y)))), _e371.x, (fma(_e366.member.member_3.z, _e366.member_1.member_1.w, fma(_e366.member.member_2.z, _e366.member_1.member_1.z, fma(_e366.member.member.z, _e366.member_1.member_1.x, (_e366.member.member_1.z * _e366.member_1.member_1.y)))) * _e371.y))) + fma(_e366.member.member_3.z, _e366.member_1.member_3.w, fma(_e366.member.member_2.z, _e366.member_1.member_3.z, fma(_e366.member.member.z, _e366.member_1.member_3.x, (_e366.member.member_1.z * _e366.member_1.member_3.y))))), (fma(fma(_e366.member.member_3.w, _e366.member_1.member_2.w, fma(_e366.member.member_2.w, _e366.member_1.member_2.z, fma(_e366.member.member.w, _e366.member_1.member_2.x, (_e366.member.member_1.w * _e366.member_1.member_2.y)))), _e371.z, fma(fma(_e366.member.member_3.w, _e366.member_1.member.w, fma(_e366.member.member_2.w, _e366.member_1.member.z, fma(_e366.member.member.w, _e366.member_1.member.x, (_e366.member.member_1.w * _e366.member_1.member.y)))), _e371.x, (fma(_e366.member.member_3.w, _e366.member_1.member_1.w, fma(_e366.member.member_2.w, _e366.member_1.member_1.z, fma(_e366.member.member.w, _e366.member_1.member_1.x, (_e366.member.member_1.w * _e366.member_1.member_1.y)))) * _e371.y))) + fma(_e366.member.member_3.w, _e366.member_1.member_3.w, fma(_e366.member.member_2.w, _e366.member_1.member_3.z, fma(_e366.member.member.w, _e366.member_1.member_3.x, (_e366.member.member_1.w * _e366.member_1.member_3.y)))))); + break; } - let _e520 = local_4; - phi_617_ = _e520; - } else { - phi_617_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e373 = phi_617_; - local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); - if (_e78 < 36u) { - let _e378 = local_2[_e78]; - global_3 = _e378; - global_2 = vec4((fma(fma(_e373.member.member_3.x, _e373.member_1.member_2.w, fma(_e373.member.member_2.x, _e373.member_1.member_2.z, fma(_e373.member.member.x, _e373.member_1.member_2.x, (_e373.member.member_1.x * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.x, _e373.member_1.member.w, fma(_e373.member.member_2.x, _e373.member_1.member.z, fma(_e373.member.member.x, _e373.member_1.member.x, (_e373.member.member_1.x * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.x, _e373.member_1.member_1.w, fma(_e373.member.member_2.x, _e373.member_1.member_1.z, fma(_e373.member.member.x, _e373.member_1.member_1.x, (_e373.member.member_1.x * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.x, _e373.member_1.member_3.w, fma(_e373.member.member_2.x, _e373.member_1.member_3.z, fma(_e373.member.member.x, _e373.member_1.member_3.x, (_e373.member.member_1.x * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.y, _e373.member_1.member_2.w, fma(_e373.member.member_2.y, _e373.member_1.member_2.z, fma(_e373.member.member.y, _e373.member_1.member_2.x, (_e373.member.member_1.y * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.y, _e373.member_1.member.w, fma(_e373.member.member_2.y, _e373.member_1.member.z, fma(_e373.member.member.y, _e373.member_1.member.x, (_e373.member.member_1.y * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.y, _e373.member_1.member_1.w, fma(_e373.member.member_2.y, _e373.member_1.member_1.z, fma(_e373.member.member.y, _e373.member_1.member_1.x, (_e373.member.member_1.y * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.y, _e373.member_1.member_3.w, fma(_e373.member.member_2.y, _e373.member_1.member_3.z, fma(_e373.member.member.y, _e373.member_1.member_3.x, (_e373.member.member_1.y * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.z, _e373.member_1.member_2.w, fma(_e373.member.member_2.z, _e373.member_1.member_2.z, fma(_e373.member.member.z, _e373.member_1.member_2.x, (_e373.member.member_1.z * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.z, _e373.member_1.member.w, fma(_e373.member.member_2.z, _e373.member_1.member.z, fma(_e373.member.member.z, _e373.member_1.member.x, (_e373.member.member_1.z * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.z, _e373.member_1.member_1.w, fma(_e373.member.member_2.z, _e373.member_1.member_1.z, fma(_e373.member.member.z, _e373.member_1.member_1.x, (_e373.member.member_1.z * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.z, _e373.member_1.member_3.w, fma(_e373.member.member_2.z, _e373.member_1.member_3.z, fma(_e373.member.member.z, _e373.member_1.member_3.x, (_e373.member.member_1.z * _e373.member_1.member_3.y))))), (fma(fma(_e373.member.member_3.w, _e373.member_1.member_2.w, fma(_e373.member.member_2.w, _e373.member_1.member_2.z, fma(_e373.member.member.w, _e373.member_1.member_2.x, (_e373.member.member_1.w * _e373.member_1.member_2.y)))), _e378.z, fma(fma(_e373.member.member_3.w, _e373.member_1.member.w, fma(_e373.member.member_2.w, _e373.member_1.member.z, fma(_e373.member.member.w, _e373.member_1.member.x, (_e373.member.member_1.w * _e373.member_1.member.y)))), _e378.x, (fma(_e373.member.member_3.w, _e373.member_1.member_1.w, fma(_e373.member.member_2.w, _e373.member_1.member_1.z, fma(_e373.member.member.w, _e373.member_1.member_1.x, (_e373.member.member_1.w * _e373.member_1.member_1.y)))) * _e378.y))) + fma(_e373.member.member_3.w, _e373.member_1.member_3.w, fma(_e373.member.member_2.w, _e373.member_1.member_3.z, fma(_e373.member.member.w, _e373.member_1.member_3.x, (_e373.member.member_1.w * _e373.member_1.member_3.y)))))); } return; } diff --git a/crates/renderling/shaders/skybox-skybox_vertex.wgsl b/crates/renderling/shaders/skybox-skybox_vertex.wgsl index 72837db8..67a569b0 100644 --- a/crates/renderling/shaders/skybox-skybox_vertex.wgsl +++ b/crates/renderling/shaders/skybox-skybox_vertex.wgsl @@ -42,180 +42,161 @@ fn function() { var local: array, 8>; var local_1: array, 6>; var local_2: array, 36>; - var phi_726_: bool; + var phi_725_: bool; var phi_305_: type_23; - var phi_321_: type_23; - var phi_322_: type_23; - var phi_335_: type_23; - var phi_351_: type_23; - var phi_352_: type_23; - var phi_378_: type_21; - var phi_379_: bool; - var phi_336_: type_23; - var phi_399_: type_21; - var phi_400_: bool; var phi_306_: type_23; - var phi_405_: type_21; - var local_3: type_21; - var local_4: type_21; + var phi_321_: type_23; + var phi_348_: bool; + var phi_354_: type_23; + var phi_355_: type_23; + var phi_370_: type_23; + var phi_393_: bool; + var phi_401_: type_21; - let _e77 = global_2; - let _e78 = global; - let _e80 = arrayLength((&global_1.member)); - if (_e80 >= 83u) { - phi_726_ = (_e77 <= (_e80 - 83u)); - } else { - phi_726_ = false; - } - let _e85 = phi_726_; - if _e85 { - let _e88 = global_1.member[_e77]; - let _e93 = global_1.member[(_e77 + 1u)]; - let _e98 = global_1.member[(_e77 + 2u)]; - let _e103 = global_1.member[(_e77 + 3u)]; - let _e109 = global_1.member[(_e77 + 4u)]; - let _e114 = global_1.member[(_e77 + 5u)]; - let _e119 = global_1.member[(_e77 + 6u)]; - let _e124 = global_1.member[(_e77 + 7u)]; - let _e130 = global_1.member[(_e77 + 8u)]; - let _e135 = global_1.member[(_e77 + 9u)]; - let _e140 = global_1.member[(_e77 + 10u)]; - let _e145 = global_1.member[(_e77 + 11u)]; - let _e151 = global_1.member[(_e77 + 12u)]; - let _e156 = global_1.member[(_e77 + 13u)]; - let _e161 = global_1.member[(_e77 + 14u)]; - let _e166 = global_1.member[(_e77 + 15u)]; - let _e173 = global_1.member[(_e77 + 16u)]; - let _e178 = global_1.member[(_e77 + 17u)]; - let _e183 = global_1.member[(_e77 + 18u)]; - let _e188 = global_1.member[(_e77 + 19u)]; - let _e194 = global_1.member[(_e77 + 20u)]; - let _e199 = global_1.member[(_e77 + 21u)]; - let _e204 = global_1.member[(_e77 + 22u)]; - let _e209 = global_1.member[(_e77 + 23u)]; - let _e215 = global_1.member[(_e77 + 24u)]; - let _e220 = global_1.member[(_e77 + 25u)]; - let _e225 = global_1.member[(_e77 + 26u)]; - let _e230 = global_1.member[(_e77 + 27u)]; - let _e236 = global_1.member[(_e77 + 28u)]; - let _e241 = global_1.member[(_e77 + 29u)]; - let _e246 = global_1.member[(_e77 + 30u)]; - let _e251 = global_1.member[(_e77 + 31u)]; - let _e258 = global_1.member[(_e77 + 32u)]; - let _e263 = global_1.member[(_e77 + 33u)]; - let _e268 = global_1.member[(_e77 + 34u)]; - local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_305_ = type_23(0u, 6u); - loop { - let _e273 = phi_305_; - if (_e273.member < _e273.member_1) { - phi_321_ = type_23((_e273.member + 1u), _e273.member_1); - phi_322_ = type_23(1u, _e273.member); + switch bitcast(0u) { + default: { + let _e78 = global_2; + let _e79 = global; + let _e81 = arrayLength((&global_1.member)); + if (_e81 >= 83u) { + phi_725_ = (_e78 <= (_e81 - 83u)); } else { - phi_321_ = _e273; - phi_322_ = type_23(0u, type_23().member_1); + phi_725_ = false; } - let _e286 = phi_321_; - let _e288 = phi_322_; - switch bitcast(_e288.member) { - case 0: { - let _e292 = local_1; - local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_335_ = type_23(0u, 8u); - loop { - let _e295 = phi_335_; - if (_e295.member < _e295.member_1) { - phi_351_ = type_23((_e295.member + 1u), _e295.member_1); - phi_352_ = type_23(1u, _e295.member); - } else { - phi_351_ = _e295; - phi_352_ = type_23(0u, type_23().member_1); + let _e86 = phi_725_; + if _e86 { + let _e89 = global_1.member[_e78]; + let _e94 = global_1.member[(_e78 + 1u)]; + let _e99 = global_1.member[(_e78 + 2u)]; + let _e104 = global_1.member[(_e78 + 3u)]; + let _e110 = global_1.member[(_e78 + 4u)]; + let _e115 = global_1.member[(_e78 + 5u)]; + let _e120 = global_1.member[(_e78 + 6u)]; + let _e125 = global_1.member[(_e78 + 7u)]; + let _e131 = global_1.member[(_e78 + 8u)]; + let _e136 = global_1.member[(_e78 + 9u)]; + let _e141 = global_1.member[(_e78 + 10u)]; + let _e146 = global_1.member[(_e78 + 11u)]; + let _e152 = global_1.member[(_e78 + 12u)]; + let _e157 = global_1.member[(_e78 + 13u)]; + let _e162 = global_1.member[(_e78 + 14u)]; + let _e167 = global_1.member[(_e78 + 15u)]; + let _e174 = global_1.member[(_e78 + 16u)]; + let _e179 = global_1.member[(_e78 + 17u)]; + let _e184 = global_1.member[(_e78 + 18u)]; + let _e189 = global_1.member[(_e78 + 19u)]; + let _e195 = global_1.member[(_e78 + 20u)]; + let _e200 = global_1.member[(_e78 + 21u)]; + let _e205 = global_1.member[(_e78 + 22u)]; + let _e210 = global_1.member[(_e78 + 23u)]; + let _e216 = global_1.member[(_e78 + 24u)]; + let _e221 = global_1.member[(_e78 + 25u)]; + let _e226 = global_1.member[(_e78 + 26u)]; + let _e231 = global_1.member[(_e78 + 27u)]; + let _e237 = global_1.member[(_e78 + 28u)]; + let _e242 = global_1.member[(_e78 + 29u)]; + let _e247 = global_1.member[(_e78 + 30u)]; + let _e252 = global_1.member[(_e78 + 31u)]; + let _e259 = global_1.member[(_e78 + 32u)]; + let _e264 = global_1.member[(_e78 + 33u)]; + let _e269 = global_1.member[(_e78 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_305_ = type_23(0u, 6u); + loop { + let _e274 = phi_305_; + if (_e274.member < _e274.member_1) { + phi_306_ = type_23((_e274.member + 1u), _e274.member_1); + phi_321_ = type_23(1u, _e274.member); + } else { + phi_306_ = _e274; + phi_321_ = type_23(0u, type_23().member_1); + } + let _e287 = phi_306_; + let _e289 = phi_321_; + switch bitcast(_e289.member) { + case 0: { + phi_348_ = false; + break; } - let _e308 = phi_351_; - let _e310 = phi_352_; - switch bitcast(_e310.member) { - case 0: { - let _e314 = local; - phi_378_ = type_21(type_19(vec4(bitcast(_e88), bitcast(_e93), bitcast(_e98), bitcast(_e103)), vec4(bitcast(_e109), bitcast(_e114), bitcast(_e119), bitcast(_e124)), vec4(bitcast(_e130), bitcast(_e135), bitcast(_e140), bitcast(_e145)), vec4(bitcast(_e151), bitcast(_e156), bitcast(_e161), bitcast(_e166))), type_19(vec4(bitcast(_e173), bitcast(_e178), bitcast(_e183), bitcast(_e188)), vec4(bitcast(_e194), bitcast(_e199), bitcast(_e204), bitcast(_e209)), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230)), vec4(bitcast(_e236), bitcast(_e241), bitcast(_e246), bitcast(_e251))), type_20(_e314, _e292), vec3(bitcast(_e258), bitcast(_e263), bitcast(_e268))); - phi_379_ = false; - phi_336_ = type_23(); - break; - } - case 1: { - let _e318 = ((_e77 + 59u) + (_e310.member_1 * 3u)); - let _e321 = global_1.member[_e318]; - let _e326 = global_1.member[(_e318 + 1u)]; - let _e331 = global_1.member[(_e318 + 2u)]; - local[_e310.member_1] = vec3(bitcast(_e321), bitcast(_e326), bitcast(_e331)); - phi_378_ = type_21(); - phi_379_ = true; - phi_336_ = _e308; - break; - } - default: { - phi_378_ = type_21(); - phi_379_ = false; - phi_336_ = type_23(); - break; - } + case 1: { + let _e294 = ((_e78 + 35u) + (_e289.member_1 * 4u)); + let _e297 = global_1.member[_e294]; + let _e302 = global_1.member[(_e294 + 1u)]; + let _e307 = global_1.member[(_e294 + 2u)]; + let _e312 = global_1.member[(_e294 + 3u)]; + local_1[_e289.member_1] = vec4(bitcast(_e297), bitcast(_e302), bitcast(_e307), bitcast(_e312)); + phi_348_ = true; + break; } - let _e336 = phi_378_; - let _e338 = phi_379_; - let _e340 = phi_336_; - local_3 = _e336; - continue; - continuing { - phi_335_ = _e340; - break if !(_e338); + default: { + phi_348_ = bool(); + break; } } - let _e462 = local_3; - phi_399_ = _e462; - phi_400_ = false; - phi_306_ = type_23(); - break; - } - case 1: { - let _e343 = ((_e77 + 35u) + (_e288.member_1 * 4u)); - let _e346 = global_1.member[_e343]; - let _e351 = global_1.member[(_e343 + 1u)]; - let _e356 = global_1.member[(_e343 + 2u)]; - let _e361 = global_1.member[(_e343 + 3u)]; - local_1[_e288.member_1] = vec4(bitcast(_e346), bitcast(_e351), bitcast(_e356), bitcast(_e361)); - phi_399_ = type_21(); - phi_400_ = true; - phi_306_ = _e286; - break; + let _e317 = phi_348_; + continue; + continuing { + phi_305_ = _e287; + break if !(_e317); + } } - default: { - phi_399_ = type_21(); - phi_400_ = false; - phi_306_ = type_23(); - break; + let _e319 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_354_ = type_23(0u, 8u); + loop { + let _e322 = phi_354_; + if (_e322.member < _e322.member_1) { + phi_355_ = type_23((_e322.member + 1u), _e322.member_1); + phi_370_ = type_23(1u, _e322.member); + } else { + phi_355_ = _e322; + phi_370_ = type_23(0u, type_23().member_1); + } + let _e335 = phi_355_; + let _e337 = phi_370_; + switch bitcast(_e337.member) { + case 0: { + phi_393_ = false; + break; + } + case 1: { + let _e342 = ((_e78 + 59u) + (_e337.member_1 * 3u)); + let _e345 = global_1.member[_e342]; + let _e350 = global_1.member[(_e342 + 1u)]; + let _e355 = global_1.member[(_e342 + 2u)]; + local[_e337.member_1] = vec3(bitcast(_e345), bitcast(_e350), bitcast(_e355)); + phi_393_ = true; + break; + } + default: { + phi_393_ = bool(); + break; + } + } + let _e360 = phi_393_; + continue; + continuing { + phi_354_ = _e335; + break if !(_e360); + } } + let _e362 = local; + phi_401_ = type_21(type_19(vec4(bitcast(_e89), bitcast(_e94), bitcast(_e99), bitcast(_e104)), vec4(bitcast(_e110), bitcast(_e115), bitcast(_e120), bitcast(_e125)), vec4(bitcast(_e131), bitcast(_e136), bitcast(_e141), bitcast(_e146)), vec4(bitcast(_e152), bitcast(_e157), bitcast(_e162), bitcast(_e167))), type_19(vec4(bitcast(_e174), bitcast(_e179), bitcast(_e184), bitcast(_e189)), vec4(bitcast(_e195), bitcast(_e200), bitcast(_e205), bitcast(_e210)), vec4(bitcast(_e216), bitcast(_e221), bitcast(_e226), bitcast(_e231)), vec4(bitcast(_e237), bitcast(_e242), bitcast(_e247), bitcast(_e252))), type_20(_e362, _e319), vec3(bitcast(_e259), bitcast(_e264), bitcast(_e269))); + } else { + phi_401_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } - let _e366 = phi_399_; - let _e368 = phi_400_; - let _e370 = phi_306_; - local_4 = _e366; - continue; - continuing { - phi_305_ = _e370; - break if !(_e368); + let _e366 = phi_401_; + local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); + if (_e79 < 36u) { + } else { + break; } + let _e374 = local_2[_e79]; + global_3 = _e374; + let _e441 = (fma(fma(_e366.member.member_2.w, _e366.member_1.member_2.z, fma(_e366.member.member.w, _e366.member_1.member_2.x, (_e366.member.member_1.w * _e366.member_1.member_2.y))), _e374.z, fma(fma(_e366.member.member_2.w, _e366.member_1.member.z, fma(_e366.member.member.w, _e366.member_1.member.x, (_e366.member.member_1.w * _e366.member_1.member.y))), _e374.x, (fma(_e366.member.member_2.w, _e366.member_1.member_1.z, fma(_e366.member.member.w, _e366.member_1.member_1.x, (_e366.member.member_1.w * _e366.member_1.member_1.y))) * _e374.y))) + _e366.member.member_3.w); + global_4 = vec4((fma(fma(_e366.member.member_2.x, _e366.member_1.member_2.z, fma(_e366.member.member.x, _e366.member_1.member_2.x, (_e366.member.member_1.x * _e366.member_1.member_2.y))), _e374.z, fma(fma(_e366.member.member_2.x, _e366.member_1.member.z, fma(_e366.member.member.x, _e366.member_1.member.x, (_e366.member.member_1.x * _e366.member_1.member.y))), _e374.x, (fma(_e366.member.member_2.x, _e366.member_1.member_1.z, fma(_e366.member.member.x, _e366.member_1.member_1.x, (_e366.member.member_1.x * _e366.member_1.member_1.y))) * _e374.y))) + _e366.member.member_3.x), (fma(fma(_e366.member.member_2.y, _e366.member_1.member_2.z, fma(_e366.member.member.y, _e366.member_1.member_2.x, (_e366.member.member_1.y * _e366.member_1.member_2.y))), _e374.z, fma(fma(_e366.member.member_2.y, _e366.member_1.member.z, fma(_e366.member.member.y, _e366.member_1.member.x, (_e366.member.member_1.y * _e366.member_1.member.y))), _e374.x, (fma(_e366.member.member_2.y, _e366.member_1.member_1.z, fma(_e366.member.member.y, _e366.member_1.member_1.x, (_e366.member.member_1.y * _e366.member_1.member_1.y))) * _e374.y))) + _e366.member.member_3.y), _e441, _e441); + break; } - let _e467 = local_4; - phi_405_ = _e467; - } else { - phi_405_ = type_21(type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e373 = phi_405_; - local_2 = array, 36>(vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, 0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, 0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f), vec3(-0.5f, 0.5f, -0.5f), vec3(0.5f, 0.5f, -0.5f), vec3(0.5f, -0.5f, -0.5f), vec3(-0.5f, -0.5f, -0.5f)); - if (_e78 < 36u) { - let _e381 = local_2[_e78]; - global_3 = _e381; - let _e448 = (fma(fma(_e373.member.member_2.w, _e373.member_1.member_2.z, fma(_e373.member.member.w, _e373.member_1.member_2.x, (_e373.member.member_1.w * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.w, _e373.member_1.member.z, fma(_e373.member.member.w, _e373.member_1.member.x, (_e373.member.member_1.w * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.w, _e373.member_1.member_1.z, fma(_e373.member.member.w, _e373.member_1.member_1.x, (_e373.member.member_1.w * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.w); - global_4 = vec4((fma(fma(_e373.member.member_2.x, _e373.member_1.member_2.z, fma(_e373.member.member.x, _e373.member_1.member_2.x, (_e373.member.member_1.x * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.x, _e373.member_1.member.z, fma(_e373.member.member.x, _e373.member_1.member.x, (_e373.member.member_1.x * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.x, _e373.member_1.member_1.z, fma(_e373.member.member.x, _e373.member_1.member_1.x, (_e373.member.member_1.x * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.x), (fma(fma(_e373.member.member_2.y, _e373.member_1.member_2.z, fma(_e373.member.member.y, _e373.member_1.member_2.x, (_e373.member.member_1.y * _e373.member_1.member_2.y))), _e381.z, fma(fma(_e373.member.member_2.y, _e373.member_1.member.z, fma(_e373.member.member.y, _e373.member_1.member.x, (_e373.member.member_1.y * _e373.member_1.member.y))), _e381.x, (fma(_e373.member.member_2.y, _e373.member_1.member_1.z, fma(_e373.member.member.y, _e373.member_1.member_1.x, (_e373.member.member_1.y * _e373.member_1.member_1.y))) * _e381.y))) + _e373.member.member_3.y), _e448, _e448); } return; } diff --git a/crates/renderling/shaders/stage-renderlet_fragment.wgsl b/crates/renderling/shaders/stage-renderlet_fragment.wgsl index 940fcab2..422eb816 100644 --- a/crates/renderling/shaders/stage-renderlet_fragment.wgsl +++ b/crates/renderling/shaders/stage-renderlet_fragment.wgsl @@ -123,2370 +123,2088 @@ var global_19: vec4; fn function() { var local: array, 8>; var local_1: array, 6>; - var phi_3787_: bool; - var phi_501_: u32; - var phi_527_: type_30; - var phi_3838_: bool; - var phi_646_: type_32; - var phi_650_: type_32; - var phi_3871_: bool; - var phi_690_: u32; - var phi_699_: u32; - var phi_712_: type_33; - var phi_3931_: f32; - var phi_3912_: f32; - var phi_3913_: bool; + var phi_3692_: bool; + var phi_500_: u32; + var phi_526_: type_30; + var phi_3743_: bool; + var phi_645_: type_32; + var phi_649_: type_32; + var phi_3776_: bool; + var phi_689_: u32; + var phi_698_: u32; + var phi_711_: type_33; + var phi_3832_: f32; + var phi_3814_: bool; + var phi_765_: f32; + var phi_760_: f32; var phi_766_: f32; - var phi_761_: f32; - var phi_767_: f32; - var phi_3893_: f32; - var phi_3894_: bool; - var phi_732_: f32; - var phi_771_: bool; - var phi_772_: f32; - var phi_3983_: f32; - var phi_3964_: f32; - var phi_3965_: bool; - var phi_830_: f32; - var phi_825_: f32; - var phi_831_: f32; - var phi_3945_: f32; - var phi_3946_: bool; - var phi_796_: f32; - var phi_835_: bool; - var phi_836_: f32; - var phi_4015_: bool; - var phi_922_: u32; - var phi_931_: u32; - var phi_944_: type_33; - var phi_4074_: f32; - var phi_4055_: f32; - var phi_4056_: bool; - var phi_998_: f32; - var phi_993_: f32; - var phi_999_: f32; - var phi_4036_: f32; - var phi_4037_: bool; - var phi_964_: f32; - var phi_1003_: bool; - var phi_1004_: f32; - var phi_4126_: f32; - var phi_4107_: f32; - var phi_4108_: bool; - var phi_1062_: f32; - var phi_1057_: f32; - var phi_1063_: f32; - var phi_4088_: f32; - var phi_4089_: bool; - var phi_1028_: f32; - var phi_1067_: bool; - var phi_1068_: f32; - var phi_4158_: bool; - var phi_1154_: u32; - var phi_1163_: u32; - var phi_1176_: type_33; - var phi_4217_: f32; - var phi_4198_: f32; - var phi_4199_: bool; - var phi_1230_: f32; - var phi_1225_: f32; - var phi_1231_: f32; - var phi_4179_: f32; - var phi_4180_: bool; - var phi_1196_: f32; - var phi_1235_: bool; - var phi_1236_: f32; - var phi_4269_: f32; - var phi_4250_: f32; - var phi_4251_: bool; - var phi_1294_: f32; - var phi_1289_: f32; - var phi_1295_: f32; - var phi_4231_: f32; - var phi_4232_: bool; - var phi_1260_: f32; - var phi_1299_: bool; - var phi_1300_: f32; - var phi_4301_: bool; - var phi_1386_: u32; - var phi_1395_: u32; - var phi_1408_: type_33; - var phi_4360_: f32; - var phi_4341_: f32; - var phi_4342_: bool; - var phi_1462_: f32; - var phi_1457_: f32; - var phi_1463_: f32; - var phi_4322_: f32; - var phi_4323_: bool; + var phi_3797_: bool; + var phi_731_: f32; + var phi_768_: f32; + var phi_3880_: f32; + var phi_3862_: bool; + var phi_823_: f32; + var phi_818_: f32; + var phi_824_: f32; + var phi_3845_: bool; + var phi_789_: f32; + var phi_826_: f32; + var phi_3912_: bool; + var phi_909_: u32; + var phi_918_: u32; + var phi_931_: type_33; + var phi_3967_: f32; + var phi_3949_: bool; + var phi_985_: f32; + var phi_980_: f32; + var phi_986_: f32; + var phi_3932_: bool; + var phi_951_: f32; + var phi_988_: f32; + var phi_4015_: f32; + var phi_3997_: bool; + var phi_1043_: f32; + var phi_1038_: f32; + var phi_1044_: f32; + var phi_3980_: bool; + var phi_1009_: f32; + var phi_1046_: f32; + var phi_4047_: bool; + var phi_1129_: u32; + var phi_1138_: u32; + var phi_1151_: type_33; + var phi_4102_: f32; + var phi_4084_: bool; + var phi_1205_: f32; + var phi_1200_: f32; + var phi_1206_: f32; + var phi_4067_: bool; + var phi_1171_: f32; + var phi_1208_: f32; + var phi_4150_: f32; + var phi_4132_: bool; + var phi_1263_: f32; + var phi_1258_: f32; + var phi_1264_: f32; + var phi_4115_: bool; + var phi_1229_: f32; + var phi_1266_: f32; + var phi_4182_: bool; + var phi_1349_: u32; + var phi_1358_: u32; + var phi_1371_: type_33; + var phi_4237_: f32; + var phi_4219_: bool; + var phi_1425_: f32; + var phi_1420_: f32; + var phi_1426_: f32; + var phi_4202_: bool; + var phi_1391_: f32; var phi_1428_: f32; - var phi_1467_: bool; - var phi_1468_: f32; - var phi_4412_: f32; - var phi_4393_: f32; - var phi_4394_: bool; - var phi_1526_: f32; - var phi_1521_: f32; - var phi_1527_: f32; - var phi_4374_: f32; - var phi_4375_: bool; - var phi_1492_: f32; - var phi_1531_: bool; - var phi_1532_: f32; - var phi_4444_: bool; - var phi_1618_: u32; - var phi_1627_: u32; - var phi_1640_: type_33; - var phi_4503_: f32; - var phi_4484_: f32; - var phi_4485_: bool; - var phi_1694_: f32; - var phi_1689_: f32; - var phi_1695_: f32; - var phi_4465_: f32; - var phi_4466_: bool; - var phi_1660_: f32; - var phi_1699_: bool; - var phi_1700_: f32; - var phi_4555_: f32; - var phi_4536_: f32; - var phi_4537_: bool; - var phi_1758_: f32; - var phi_1753_: f32; - var phi_1759_: f32; - var phi_4517_: f32; - var phi_4518_: bool; - var phi_1724_: f32; - var phi_1763_: bool; - var phi_1764_: f32; - var phi_4609_: vec3; - var phi_4644_: vec3; - var phi_4679_: vec3; - var phi_4714_: vec3; - var phi_4749_: vec3; - var phi_1861_: vec3; - var phi_1862_: vec3; - var phi_4781_: bool; - var phi_2068_: type_24; - var phi_2084_: type_24; - var phi_2085_: type_24; - var phi_2098_: type_24; - var phi_2114_: type_24; - var phi_2115_: type_24; - var phi_2141_: type_22; - var phi_2142_: bool; - var phi_2099_: type_24; - var phi_2162_: type_22; - var phi_2163_: bool; - var phi_2069_: type_24; - var phi_2168_: type_22; - var phi_4853_: vec3; - var phi_4912_: vec3; - var phi_4986_: vec3; - var phi_6131_: vec3; - var phi_6082_: vec3; - var phi_6033_: vec3; - var phi_5984_: vec3; - var phi_5935_: vec3; - var phi_5886_: vec3; - var phi_5837_: vec3; - var phi_5036_: vec3; - var phi_5071_: vec3; - var phi_2208_: type_24; - var phi_2211_: vec3; - var phi_2226_: type_24; - var phi_2227_: type_24; - var phi_5088_: u32; - var phi_5107_: bool; - var phi_2244_: u32; - var phi_5139_: bool; - var phi_2261_: u32; - var phi_2271_: type_34; - var phi_5169_: bool; - var phi_2321_: type_28; - var phi_5598_: bool; - var phi_2824_: type_36; - var phi_5648_: vec3; - var phi_5683_: vec3; - var phi_5718_: vec3; - var phi_3076_: vec3; - var phi_5425_: bool; - var phi_2573_: type_35; - var phi_5471_: vec3; - var phi_5506_: vec3; - var phi_2762_: vec3; - var phi_5250_: bool; - var phi_2369_: type_35; - var phi_5298_: vec3; - var phi_5333_: vec3; - var phi_3077_: bool; - var phi_3078_: bool; - var phi_3079_: vec3; - var phi_3080_: bool; - var phi_3085_: type_24; - var phi_3093_: type_24; - var phi_3097_: bool; - var phi_3098_: type_24; - var phi_3099_: vec3; - var phi_3100_: bool; - var phi_3101_: bool; - var phi_3102_: bool; - var phi_3103_: bool; - var phi_3104_: type_24; - var phi_3105_: vec3; - var phi_3111_: type_24; - var phi_3215_: vec4; - var phi_2209_: type_24; - var phi_3232_: bool; - var phi_3233_: vec4; - var local_2: type_22; - var local_3: type_22; - var local_4: bool; - var local_5: vec4; + var phi_4285_: f32; + var phi_4267_: bool; + var phi_1483_: f32; + var phi_1478_: f32; + var phi_1484_: f32; + var phi_4250_: bool; + var phi_1449_: f32; + var phi_1486_: f32; + var phi_4317_: bool; + var phi_1569_: u32; + var phi_1578_: u32; + var phi_1591_: type_33; + var phi_4372_: f32; + var phi_4354_: bool; + var phi_1645_: f32; + var phi_1640_: f32; + var phi_1646_: f32; + var phi_4337_: bool; + var phi_1611_: f32; + var phi_1648_: f32; + var phi_4420_: f32; + var phi_4402_: bool; + var phi_1703_: f32; + var phi_1698_: f32; + var phi_1704_: f32; + var phi_4385_: bool; + var phi_1669_: f32; + var phi_1706_: f32; + var phi_4474_: vec3; + var phi_4509_: vec3; + var phi_4544_: vec3; + var phi_4579_: vec3; + var phi_4614_: vec3; + var phi_1800_: vec3; + var phi_1801_: vec3; + var phi_4646_: bool; + var phi_2007_: type_24; + var phi_2008_: type_24; + var phi_2023_: type_24; + var phi_2050_: bool; + var phi_2056_: type_24; + var phi_2057_: type_24; + var phi_2072_: type_24; + var phi_2095_: bool; + var phi_2103_: type_22; + var phi_4718_: vec3; + var phi_4777_: vec3; + var phi_4851_: vec3; + var phi_5996_: vec3; + var phi_5947_: vec3; + var phi_5898_: vec3; + var phi_5849_: vec3; + var phi_5800_: vec3; + var phi_5751_: vec3; + var phi_5702_: vec3; + var phi_4901_: vec3; + var phi_4936_: vec3; + var phi_2143_: type_24; + var phi_2146_: vec3; + var phi_2144_: type_24; + var phi_2161_: type_24; + var phi_4953_: u32; + var phi_4972_: bool; + var phi_2178_: u32; + var phi_5004_: bool; + var phi_2195_: u32; + var phi_2205_: type_34; + var phi_5034_: bool; + var phi_2255_: type_28; + var phi_5463_: bool; + var phi_2753_: type_36; + var phi_5513_: vec3; + var phi_5548_: vec3; + var phi_5583_: vec3; + var phi_2999_: vec3; + var phi_5290_: bool; + var phi_2505_: type_35; + var phi_5336_: vec3; + var phi_5371_: vec3; + var phi_2690_: vec3; + var phi_5115_: bool; + var phi_2303_: type_35; + var phi_5163_: vec3; + var phi_5198_: vec3; + var phi_3001_: vec3; + var phi_3002_: bool; + var phi_3011_: vec3; + var phi_2147_: vec3; + var phi_3013_: bool; + var local_2: vec3; + var local_3: vec3; + var local_4: vec3; + var phi_3125_: vec4; - let _e118 = arrayLength((&global.member)); - let _e119 = global_1; - let _e120 = global_2; - let _e121 = global_3; - let _e122 = global_4; - let _e123 = global_5; - let _e124 = global_6; - let _e125 = global_7; - let _e126 = global_8; - let _e127 = global_9; - let _e128 = global_10; - if (_e118 >= 9u) { - phi_3787_ = (_e121 <= (_e118 - 9u)); + let _e117 = arrayLength((&global.member)); + let _e118 = global_1; + let _e119 = global_2; + let _e120 = global_3; + let _e121 = global_4; + let _e122 = global_5; + let _e123 = global_6; + let _e124 = global_7; + let _e125 = global_8; + let _e126 = global_9; + let _e127 = global_10; + if (_e117 >= 9u) { + phi_3692_ = (_e120 <= (_e117 - 9u)); } else { - phi_3787_ = false; + phi_3692_ = false; } - let _e133 = phi_3787_; - if _e133 { - let _e136 = global.member[_e121]; - let _e140 = global.member[(_e121 + 1u)]; - let _e145 = global.member[(_e121 + 2u)]; - let _e149 = global.member[(_e121 + 3u)]; - let _e154 = global.member[(_e121 + 4u)]; - switch bitcast(_e154) { + let _e132 = phi_3692_; + if _e132 { + let _e135 = global.member[_e120]; + let _e139 = global.member[(_e120 + 1u)]; + let _e144 = global.member[(_e120 + 2u)]; + let _e148 = global.member[(_e120 + 3u)]; + let _e153 = global.member[(_e120 + 4u)]; + switch bitcast(_e153) { case 0: { - phi_501_ = 0u; + phi_500_ = 0u; break; } case 1: { - phi_501_ = 1u; + phi_500_ = 1u; break; } case 2: { - phi_501_ = 2u; + phi_500_ = 2u; break; } case 3: { - phi_501_ = 3u; + phi_500_ = 3u; break; } case 4: { - phi_501_ = 4u; + phi_500_ = 4u; break; } case 5: { - phi_501_ = 5u; + phi_500_ = 5u; break; } case 6: { - phi_501_ = 6u; + phi_500_ = 6u; break; } case 7: { - phi_501_ = 7u; + phi_500_ = 7u; break; } case 8: { - phi_501_ = 8u; + phi_500_ = 8u; break; } case 9: { - phi_501_ = 9u; + phi_500_ = 9u; break; } case 10: { - phi_501_ = 10u; + phi_500_ = 10u; break; } case 11: { - phi_501_ = 11u; + phi_500_ = 11u; break; } case 12: { - phi_501_ = 12u; + phi_500_ = 12u; break; } case 13: { - phi_501_ = 13u; + phi_500_ = 13u; break; } case 14: { - phi_501_ = 14u; + phi_500_ = 14u; break; } case 15: { - phi_501_ = 15u; + phi_500_ = 15u; break; } case 16: { - phi_501_ = 16u; + phi_500_ = 16u; break; } case 17: { - phi_501_ = 17u; + phi_500_ = 17u; break; } case 18: { - phi_501_ = 18u; + phi_500_ = 18u; break; } case 19: { - phi_501_ = 19u; + phi_500_ = 19u; break; } default: { - phi_501_ = 0u; + phi_500_ = 0u; break; } } - let _e157 = phi_501_; - let _e161 = global.member[(_e121 + 5u)]; - let _e166 = global.member[(_e121 + 6u)]; - let _e171 = global.member[(_e121 + 7u)]; - let _e175 = global.member[(_e121 + 8u)]; - phi_527_ = type_30(vec2(_e136, _e140), vec2(_e145, _e149), type_24(_e171, _e175), _e157, (_e161 == 1u), (_e166 == 1u)); + let _e156 = phi_500_; + let _e160 = global.member[(_e120 + 5u)]; + let _e165 = global.member[(_e120 + 6u)]; + let _e170 = global.member[(_e120 + 7u)]; + let _e174 = global.member[(_e120 + 8u)]; + phi_526_ = type_30(vec2(_e135, _e139), vec2(_e144, _e148), type_24(_e170, _e174), _e156, (_e160 == 1u), (_e165 == 1u)); } else { - phi_527_ = type_30(vec2(0u, 0u), vec2(1u, 1u), type_24(4294967295u, 0u), 0u, true, true); + phi_526_ = type_30(vec2(0u, 0u), vec2(1u, 1u), type_24(4294967295u, 0u), 0u, true, true); } - let _e179 = phi_527_; - if (_e120 == 4294967295u) { - phi_650_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, false, 0f); + let _e178 = phi_526_; + if (_e119 == 4294967295u) { + phi_649_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, false, 0f); } else { - if (_e118 >= 22u) { - phi_3838_ = (_e120 <= (_e118 - 22u)); + if (_e117 >= 22u) { + phi_3743_ = (_e119 <= (_e117 - 22u)); } else { - phi_3838_ = false; - } - let _e192 = phi_3838_; - if _e192 { - let _e195 = global.member[_e120]; - let _e200 = global.member[(_e120 + 1u)]; - let _e205 = global.member[(_e120 + 2u)]; - let _e211 = global.member[(_e120 + 3u)]; - let _e216 = global.member[(_e120 + 4u)]; - let _e221 = global.member[(_e120 + 5u)]; - let _e226 = global.member[(_e120 + 6u)]; - let _e231 = global.member[(_e120 + 7u)]; - let _e237 = global.member[(_e120 + 8u)]; - let _e242 = global.member[(_e120 + 9u)]; - let _e247 = global.member[(_e120 + 10u)]; - let _e251 = global.member[(_e120 + 11u)]; - let _e255 = global.member[(_e120 + 12u)]; - let _e259 = global.member[(_e120 + 13u)]; - let _e263 = global.member[(_e120 + 14u)]; - let _e267 = global.member[(_e120 + 15u)]; - let _e271 = global.member[(_e120 + 16u)]; - let _e275 = global.member[(_e120 + 17u)]; - let _e279 = global.member[(_e120 + 18u)]; - let _e283 = global.member[(_e120 + 19u)]; - let _e287 = global.member[(_e120 + 20u)]; - let _e292 = global.member[(_e120 + 21u)]; - phi_646_ = type_32(vec3(bitcast(_e195), bitcast(_e200), bitcast(_e205)), bitcast(_e211), vec4(bitcast(_e216), bitcast(_e221), bitcast(_e226), bitcast(_e231)), bitcast(_e237), bitcast(_e242), _e247, _e251, _e255, _e259, _e263, _e267, _e271, _e275, _e279, _e283, (_e287 == 1u), bitcast(_e292)); + phi_3743_ = false; + } + let _e191 = phi_3743_; + if _e191 { + let _e194 = global.member[_e119]; + let _e199 = global.member[(_e119 + 1u)]; + let _e204 = global.member[(_e119 + 2u)]; + let _e210 = global.member[(_e119 + 3u)]; + let _e215 = global.member[(_e119 + 4u)]; + let _e220 = global.member[(_e119 + 5u)]; + let _e225 = global.member[(_e119 + 6u)]; + let _e230 = global.member[(_e119 + 7u)]; + let _e236 = global.member[(_e119 + 8u)]; + let _e241 = global.member[(_e119 + 9u)]; + let _e246 = global.member[(_e119 + 10u)]; + let _e250 = global.member[(_e119 + 11u)]; + let _e254 = global.member[(_e119 + 12u)]; + let _e258 = global.member[(_e119 + 13u)]; + let _e262 = global.member[(_e119 + 14u)]; + let _e266 = global.member[(_e119 + 15u)]; + let _e270 = global.member[(_e119 + 16u)]; + let _e274 = global.member[(_e119 + 17u)]; + let _e278 = global.member[(_e119 + 18u)]; + let _e282 = global.member[(_e119 + 19u)]; + let _e286 = global.member[(_e119 + 20u)]; + let _e291 = global.member[(_e119 + 21u)]; + phi_645_ = type_32(vec3(bitcast(_e194), bitcast(_e199), bitcast(_e204)), bitcast(_e210), vec4(bitcast(_e215), bitcast(_e220), bitcast(_e225), bitcast(_e230)), bitcast(_e236), bitcast(_e241), _e246, _e250, _e254, _e258, _e262, _e266, _e270, _e274, _e278, _e282, (_e286 == 1u), bitcast(_e291)); } else { - phi_646_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, true, 0f); + phi_645_ = type_32(vec3(0f, 0f, 0f), 1f, vec4(1f, 1f, 1f, 1f), 1f, 1f, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 0u, 0u, 0u, 0u, 0u, true, 0f); } - let _e296 = phi_646_; - phi_650_ = type_32(_e296.member, _e296.member_1, _e296.member_2, _e296.member_3, _e296.member_4, _e296.member_5, _e296.member_6, _e296.member_7, _e296.member_8, _e296.member_9, _e296.member_10, _e296.member_11, _e296.member_12, _e296.member_13, _e296.member_14, (_e296.member_15 && _e179.member_4), _e296.member_16); + let _e295 = phi_645_; + phi_649_ = type_32(_e295.member, _e295.member_1, _e295.member_2, _e295.member_3, _e295.member_4, _e295.member_5, _e295.member_6, _e295.member_7, _e295.member_8, _e295.member_9, _e295.member_10, _e295.member_11, _e295.member_12, _e295.member_13, _e295.member_14, (_e295.member_15 && _e178.member_4), _e295.member_16); } - let _e318 = phi_650_; - let _e322 = select(_e124, _e123, vec2((_e318.member_10 == 0u))); - let _e324 = (_e118 >= 8u); - if _e324 { - phi_3871_ = (_e318.member_5 <= (_e118 - 8u)); + let _e317 = phi_649_; + let _e321 = select(_e123, _e122, vec2((_e317.member_10 == 0u))); + let _e323 = (_e117 >= 8u); + if _e323 { + phi_3776_ = (_e317.member_5 <= (_e117 - 8u)); } else { - phi_3871_ = false; + phi_3776_ = false; } - let _e328 = phi_3871_; - if _e328 { - let _e331 = global.member[_e318.member_5]; - let _e335 = global.member[(_e318.member_5 + 1u)]; - let _e340 = global.member[(_e318.member_5 + 2u)]; - let _e344 = global.member[(_e318.member_5 + 3u)]; - let _e349 = global.member[(_e318.member_5 + 4u)]; - let _e353 = global.member[(_e318.member_5 + 5u)]; - let _e357 = global.member[(_e318.member_5 + 6u)]; - switch bitcast(_e357) { + let _e327 = phi_3776_; + if _e327 { + let _e330 = global.member[_e317.member_5]; + let _e334 = global.member[(_e317.member_5 + 1u)]; + let _e339 = global.member[(_e317.member_5 + 2u)]; + let _e343 = global.member[(_e317.member_5 + 3u)]; + let _e348 = global.member[(_e317.member_5 + 4u)]; + let _e352 = global.member[(_e317.member_5 + 5u)]; + let _e356 = global.member[(_e317.member_5 + 6u)]; + switch bitcast(_e356) { case 0: { - phi_690_ = 0u; + phi_689_ = 0u; break; } case 1: { - phi_690_ = 1u; + phi_689_ = 1u; break; } case 2: { - phi_690_ = 2u; + phi_689_ = 2u; break; } default: { - phi_690_ = 0u; + phi_689_ = 0u; break; } } - let _e360 = phi_690_; - let _e364 = global.member[(_e318.member_5 + 7u)]; - switch bitcast(_e364) { + let _e359 = phi_689_; + let _e363 = global.member[(_e317.member_5 + 7u)]; + switch bitcast(_e363) { case 0: { - phi_699_ = 0u; + phi_698_ = 0u; break; } case 1: { - phi_699_ = 1u; + phi_698_ = 1u; break; } case 2: { - phi_699_ = 2u; + phi_698_ = 2u; break; } default: { - phi_699_ = 0u; + phi_698_ = 0u; break; } } - let _e367 = phi_699_; - phi_712_ = type_33(type_24(_e360, _e367), vec2(_e331, _e335), vec2(_e340, _e344), _e349, _e353); + let _e366 = phi_698_; + phi_711_ = type_33(type_24(_e359, _e366), vec2(_e330, _e334), vec2(_e339, _e343), _e348, _e352); } else { - phi_712_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + phi_711_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); } - let _e371 = phi_712_; - switch bitcast(_e371.member.member) { + let _e370 = phi_711_; + switch bitcast(_e370.member.member) { case 1: { - let _e412 = abs(_e322.x); - let _e414 = (_e412 % 1f); - if (_e412 >= 1f) { - let _e415 = (_e414 == 0f); - phi_3893_ = select(f32(), 1f, _e415); - phi_3894_ = select(true, false, _e415); + let _e408 = abs(_e321.x); + let _e410 = (_e408 % 1f); + if (_e408 >= 1f) { + phi_3797_ = select(true, false, (_e410 == 0f)); } else { - phi_3893_ = f32(); - phi_3894_ = true; - } - let _e419 = phi_3893_; - let _e421 = phi_3894_; - let _e422 = select(_e419, _e414, _e421); - if (select(-1f, 1f, (_e322.x >= 0f)) > 0f) { - phi_732_ = _e422; + phi_3797_ = true; + } + let _e414 = phi_3797_; + let _e415 = select(1f, _e410, _e414); + if (select(-1f, 1f, (_e321.x >= 0f)) > 0f) { + phi_731_ = _e415; } else { - phi_732_ = (1f - _e422); + phi_731_ = (1f - _e415); } - let _e426 = phi_732_; - phi_771_ = true; - phi_772_ = _e426; + let _e419 = phi_731_; + phi_768_ = _e419; break; } case 2: { - let _e383 = abs(_e322.x); - let _e390 = ((select(select(u32(_e383), 0u, (_e383 < 0f)), 4294967295u, (_e383 > 4294967000f)) % 2u) == 0u); - let _e392 = (_e383 % 1f); - if (_e383 >= 1f) { - let _e393 = (_e392 == 0f); - phi_3912_ = select(f32(), 1f, _e393); - phi_3913_ = select(true, false, _e393); + let _e382 = abs(_e321.x); + let _e389 = ((select(select(u32(_e382), 0u, (_e382 < 0f)), 4294967295u, (_e382 > 4294967000f)) % 2u) == 0u); + let _e391 = (_e382 % 1f); + if (_e382 >= 1f) { + phi_3814_ = select(true, false, (_e391 == 0f)); } else { - phi_3912_ = f32(); - phi_3913_ = true; - } - let _e397 = phi_3912_; - let _e399 = phi_3913_; - let _e400 = select(_e397, _e392, _e399); - if (select(-1f, 1f, (_e322.x >= 0f)) > 0f) { - if _e390 { - phi_761_ = _e400; + phi_3814_ = true; + } + let _e395 = phi_3814_; + let _e396 = select(1f, _e391, _e395); + if (select(-1f, 1f, (_e321.x >= 0f)) > 0f) { + if _e389 { + phi_760_ = _e396; } else { - phi_761_ = (1f - _e400); + phi_760_ = (1f - _e396); } - let _e407 = phi_761_; - phi_767_ = _e407; + let _e403 = phi_760_; + phi_766_ = _e403; } else { - if _e390 { - phi_766_ = (1f - _e400); + if _e389 { + phi_765_ = (1f - _e396); } else { - phi_766_ = _e400; + phi_765_ = _e396; } - let _e404 = phi_766_; - phi_767_ = _e404; + let _e400 = phi_765_; + phi_766_ = _e400; } - let _e409 = phi_767_; - phi_771_ = true; - phi_772_ = _e409; + let _e405 = phi_766_; + phi_768_ = _e405; break; } case 0: { - if (_e322.x > 1f) { - phi_3931_ = 0.9999999f; + if (_e321.x > 1f) { + phi_3832_ = 0.9999999f; } else { - phi_3931_ = select(_e322.x, 0.00000011920929f, (_e322.x < 0f)); + phi_3832_ = select(_e321.x, 0.00000011920929f, (_e321.x < 0f)); } - let _e380 = phi_3931_; - phi_771_ = true; - phi_772_ = _e380; + let _e379 = phi_3832_; + phi_768_ = _e379; break; } default: { - phi_771_ = false; - phi_772_ = f32(); + phi_768_ = f32(); break; } } - let _e428 = phi_771_; - let _e430 = phi_772_; - if _e428 { - switch bitcast(_e371.member.member_1) { - case 1: { - let _e471 = abs(_e322.y); - let _e473 = (_e471 % 1f); - if (_e471 >= 1f) { - let _e474 = (_e473 == 0f); - phi_3945_ = select(f32(), 1f, _e474); - phi_3946_ = select(true, false, _e474); + let _e421 = phi_768_; + switch bitcast(_e370.member.member_1) { + case 1: { + let _e459 = abs(_e321.y); + let _e461 = (_e459 % 1f); + if (_e459 >= 1f) { + phi_3845_ = select(true, false, (_e461 == 0f)); + } else { + phi_3845_ = true; + } + let _e465 = phi_3845_; + let _e466 = select(1f, _e461, _e465); + if (select(-1f, 1f, (_e321.y >= 0f)) > 0f) { + phi_789_ = _e466; + } else { + phi_789_ = (1f - _e466); + } + let _e470 = phi_789_; + phi_826_ = _e470; + break; + } + case 2: { + let _e433 = abs(_e321.y); + let _e440 = ((select(select(u32(_e433), 0u, (_e433 < 0f)), 4294967295u, (_e433 > 4294967000f)) % 2u) == 0u); + let _e442 = (_e433 % 1f); + if (_e433 >= 1f) { + phi_3862_ = select(true, false, (_e442 == 0f)); + } else { + phi_3862_ = true; + } + let _e446 = phi_3862_; + let _e447 = select(1f, _e442, _e446); + if (select(-1f, 1f, (_e321.y >= 0f)) > 0f) { + if _e440 { + phi_818_ = _e447; } else { - phi_3945_ = f32(); - phi_3946_ = true; + phi_818_ = (1f - _e447); } - let _e478 = phi_3945_; - let _e480 = phi_3946_; - let _e481 = select(_e478, _e473, _e480); - if (select(-1f, 1f, (_e322.y >= 0f)) > 0f) { - phi_796_ = _e481; + let _e454 = phi_818_; + phi_824_ = _e454; + } else { + if _e440 { + phi_823_ = (1f - _e447); } else { - phi_796_ = (1f - _e481); + phi_823_ = _e447; } - let _e485 = phi_796_; - phi_835_ = true; - phi_836_ = _e485; + let _e451 = phi_823_; + phi_824_ = _e451; + } + let _e456 = phi_824_; + phi_826_ = _e456; + break; + } + case 0: { + if (_e321.y > 1f) { + phi_3880_ = 0.9999999f; + } else { + phi_3880_ = select(_e321.y, 0.00000011920929f, (_e321.y < 0f)); + } + let _e430 = phi_3880_; + phi_826_ = _e430; + break; + } + default: { + phi_826_ = f32(); + break; + } + } + let _e472 = phi_826_; + let _e476 = (_e421 * f32(_e370.member_2.x)); + let _e485 = (_e472 * f32(_e370.member_2.y)); + let _e498 = f32(_e178.member.x); + let _e500 = f32(_e178.member.y); + let _e507 = vec3((f32((select(select(u32(_e476), 0u, (_e476 < 0f)), 4294967295u, (_e476 > 4294967000f)) + _e370.member_1.x)) / _e498), (f32((select(select(u32(_e485), 0u, (_e485 < 0f)), 4294967295u, (_e485 > 4294967000f)) + _e370.member_1.y)) / _e500), f32(_e370.member_3)); + let _e513 = textureSampleLevel(global_12, global_11, vec2(_e507.x, _e507.y), i32(_e507.z), 0f); + let _e516 = select(_e513, vec4(1f, 1f, 1f, 1f), vec4((_e317.member_5 == 4294967295u))); + let _e520 = select(_e123, _e122, vec2((_e317.member_11 == 0u))); + if _e323 { + phi_3912_ = (_e317.member_6 <= (_e117 - 8u)); + } else { + phi_3912_ = false; + } + let _e525 = phi_3912_; + if _e525 { + let _e528 = global.member[_e317.member_6]; + let _e532 = global.member[(_e317.member_6 + 1u)]; + let _e537 = global.member[(_e317.member_6 + 2u)]; + let _e541 = global.member[(_e317.member_6 + 3u)]; + let _e546 = global.member[(_e317.member_6 + 4u)]; + let _e550 = global.member[(_e317.member_6 + 5u)]; + let _e554 = global.member[(_e317.member_6 + 6u)]; + switch bitcast(_e554) { + case 0: { + phi_909_ = 0u; + break; + } + case 1: { + phi_909_ = 1u; + break; + } + case 2: { + phi_909_ = 2u; + break; + } + default: { + phi_909_ = 0u; + break; + } + } + let _e557 = phi_909_; + let _e561 = global.member[(_e317.member_6 + 7u)]; + switch bitcast(_e561) { + case 0: { + phi_918_ = 0u; + break; + } + case 1: { + phi_918_ = 1u; break; } case 2: { - let _e442 = abs(_e322.y); - let _e449 = ((select(select(u32(_e442), 0u, (_e442 < 0f)), 4294967295u, (_e442 > 4294967000f)) % 2u) == 0u); - let _e451 = (_e442 % 1f); - if (_e442 >= 1f) { - let _e452 = (_e451 == 0f); - phi_3964_ = select(f32(), 1f, _e452); - phi_3965_ = select(true, false, _e452); + phi_918_ = 2u; + break; + } + default: { + phi_918_ = 0u; + break; + } + } + let _e564 = phi_918_; + phi_931_ = type_33(type_24(_e557, _e564), vec2(_e528, _e532), vec2(_e537, _e541), _e546, _e550); + } else { + phi_931_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e568 = phi_931_; + switch bitcast(_e568.member.member) { + case 1: { + let _e606 = abs(_e520.x); + let _e608 = (_e606 % 1f); + if (_e606 >= 1f) { + phi_3932_ = select(true, false, (_e608 == 0f)); + } else { + phi_3932_ = true; + } + let _e612 = phi_3932_; + let _e613 = select(1f, _e608, _e612); + if (select(-1f, 1f, (_e520.x >= 0f)) > 0f) { + phi_951_ = _e613; + } else { + phi_951_ = (1f - _e613); + } + let _e617 = phi_951_; + phi_988_ = _e617; + break; + } + case 2: { + let _e580 = abs(_e520.x); + let _e587 = ((select(select(u32(_e580), 0u, (_e580 < 0f)), 4294967295u, (_e580 > 4294967000f)) % 2u) == 0u); + let _e589 = (_e580 % 1f); + if (_e580 >= 1f) { + phi_3949_ = select(true, false, (_e589 == 0f)); + } else { + phi_3949_ = true; + } + let _e593 = phi_3949_; + let _e594 = select(1f, _e589, _e593); + if (select(-1f, 1f, (_e520.x >= 0f)) > 0f) { + if _e587 { + phi_980_ = _e594; } else { - phi_3964_ = f32(); - phi_3965_ = true; + phi_980_ = (1f - _e594); } - let _e456 = phi_3964_; - let _e458 = phi_3965_; - let _e459 = select(_e456, _e451, _e458); - if (select(-1f, 1f, (_e322.y >= 0f)) > 0f) { - if _e449 { - phi_825_ = _e459; - } else { - phi_825_ = (1f - _e459); - } - let _e466 = phi_825_; - phi_831_ = _e466; + let _e601 = phi_980_; + phi_986_ = _e601; + } else { + if _e587 { + phi_985_ = (1f - _e594); } else { - if _e449 { - phi_830_ = (1f - _e459); - } else { - phi_830_ = _e459; - } - let _e463 = phi_830_; - phi_831_ = _e463; + phi_985_ = _e594; } - let _e468 = phi_831_; - phi_835_ = true; - phi_836_ = _e468; - break; + let _e598 = phi_985_; + phi_986_ = _e598; } - case 0: { - if (_e322.y > 1f) { - phi_3983_ = 0.9999999f; + let _e603 = phi_986_; + phi_988_ = _e603; + break; + } + case 0: { + if (_e520.x > 1f) { + phi_3967_ = 0.9999999f; + } else { + phi_3967_ = select(_e520.x, 0.00000011920929f, (_e520.x < 0f)); + } + let _e577 = phi_3967_; + phi_988_ = _e577; + break; + } + default: { + phi_988_ = f32(); + break; + } + } + let _e619 = phi_988_; + switch bitcast(_e568.member.member_1) { + case 1: { + let _e657 = abs(_e520.y); + let _e659 = (_e657 % 1f); + if (_e657 >= 1f) { + phi_3980_ = select(true, false, (_e659 == 0f)); + } else { + phi_3980_ = true; + } + let _e663 = phi_3980_; + let _e664 = select(1f, _e659, _e663); + if (select(-1f, 1f, (_e520.y >= 0f)) > 0f) { + phi_1009_ = _e664; + } else { + phi_1009_ = (1f - _e664); + } + let _e668 = phi_1009_; + phi_1046_ = _e668; + break; + } + case 2: { + let _e631 = abs(_e520.y); + let _e638 = ((select(select(u32(_e631), 0u, (_e631 < 0f)), 4294967295u, (_e631 > 4294967000f)) % 2u) == 0u); + let _e640 = (_e631 % 1f); + if (_e631 >= 1f) { + phi_3997_ = select(true, false, (_e640 == 0f)); + } else { + phi_3997_ = true; + } + let _e644 = phi_3997_; + let _e645 = select(1f, _e640, _e644); + if (select(-1f, 1f, (_e520.y >= 0f)) > 0f) { + if _e638 { + phi_1038_ = _e645; } else { - phi_3983_ = select(_e322.y, 0.00000011920929f, (_e322.y < 0f)); + phi_1038_ = (1f - _e645); } - let _e439 = phi_3983_; - phi_835_ = true; - phi_836_ = _e439; + let _e652 = phi_1038_; + phi_1044_ = _e652; + } else { + if _e638 { + phi_1043_ = (1f - _e645); + } else { + phi_1043_ = _e645; + } + let _e649 = phi_1043_; + phi_1044_ = _e649; + } + let _e654 = phi_1044_; + phi_1046_ = _e654; + break; + } + case 0: { + if (_e520.y > 1f) { + phi_4015_ = 0.9999999f; + } else { + phi_4015_ = select(_e520.y, 0.00000011920929f, (_e520.y < 0f)); + } + let _e628 = phi_4015_; + phi_1046_ = _e628; + break; + } + default: { + phi_1046_ = f32(); + break; + } + } + let _e670 = phi_1046_; + let _e674 = (_e619 * f32(_e568.member_2.x)); + let _e683 = (_e670 * f32(_e568.member_2.y)); + let _e701 = vec3((f32((select(select(u32(_e674), 0u, (_e674 < 0f)), 4294967295u, (_e674 > 4294967000f)) + _e568.member_1.x)) / _e498), (f32((select(select(u32(_e683), 0u, (_e683 < 0f)), 4294967295u, (_e683 > 4294967000f)) + _e568.member_1.y)) / _e500), f32(_e568.member_3)); + let _e707 = textureSampleLevel(global_12, global_11, vec2(_e701.x, _e701.y), i32(_e701.z), 0f); + let _e710 = select(_e707, vec4(1f, 1f, 1f, 1f), vec4((_e317.member_6 == 4294967295u))); + let _e714 = select(_e123, _e122, vec2((_e317.member_12 == 0u))); + if _e323 { + phi_4047_ = (_e317.member_7 <= (_e117 - 8u)); + } else { + phi_4047_ = false; + } + let _e719 = phi_4047_; + if _e719 { + let _e722 = global.member[_e317.member_7]; + let _e726 = global.member[(_e317.member_7 + 1u)]; + let _e731 = global.member[(_e317.member_7 + 2u)]; + let _e735 = global.member[(_e317.member_7 + 3u)]; + let _e740 = global.member[(_e317.member_7 + 4u)]; + let _e744 = global.member[(_e317.member_7 + 5u)]; + let _e748 = global.member[(_e317.member_7 + 6u)]; + switch bitcast(_e748) { + case 0: { + phi_1129_ = 0u; + break; + } + case 1: { + phi_1129_ = 1u; + break; + } + case 2: { + phi_1129_ = 2u; + break; + } + default: { + phi_1129_ = 0u; + break; + } + } + let _e751 = phi_1129_; + let _e755 = global.member[(_e317.member_7 + 7u)]; + switch bitcast(_e755) { + case 0: { + phi_1138_ = 0u; + break; + } + case 1: { + phi_1138_ = 1u; + break; + } + case 2: { + phi_1138_ = 2u; break; } default: { - phi_835_ = false; - phi_836_ = f32(); + phi_1138_ = 0u; break; } } - let _e487 = phi_835_; - let _e489 = phi_836_; - if _e487 { - let _e493 = (_e430 * f32(_e371.member_2.x)); - let _e502 = (_e489 * f32(_e371.member_2.y)); - let _e515 = f32(_e179.member.x); - let _e517 = f32(_e179.member.y); - let _e524 = vec3((f32((select(select(u32(_e493), 0u, (_e493 < 0f)), 4294967295u, (_e493 > 4294967000f)) + _e371.member_1.x)) / _e515), (f32((select(select(u32(_e502), 0u, (_e502 < 0f)), 4294967295u, (_e502 > 4294967000f)) + _e371.member_1.y)) / _e517), f32(_e371.member_3)); - let _e530 = textureSampleLevel(global_12, global_11, vec2(_e524.x, _e524.y), i32(_e524.z), 0f); - let _e533 = select(_e530, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_5 == 4294967295u))); - let _e537 = select(_e124, _e123, vec2((_e318.member_11 == 0u))); - if _e324 { - phi_4015_ = (_e318.member_6 <= (_e118 - 8u)); + let _e758 = phi_1138_; + phi_1151_ = type_33(type_24(_e751, _e758), vec2(_e722, _e726), vec2(_e731, _e735), _e740, _e744); + } else { + phi_1151_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e762 = phi_1151_; + switch bitcast(_e762.member.member) { + case 1: { + let _e800 = abs(_e714.x); + let _e802 = (_e800 % 1f); + if (_e800 >= 1f) { + phi_4067_ = select(true, false, (_e802 == 0f)); } else { - phi_4015_ = false; - } - let _e542 = phi_4015_; - if _e542 { - let _e545 = global.member[_e318.member_6]; - let _e549 = global.member[(_e318.member_6 + 1u)]; - let _e554 = global.member[(_e318.member_6 + 2u)]; - let _e558 = global.member[(_e318.member_6 + 3u)]; - let _e563 = global.member[(_e318.member_6 + 4u)]; - let _e567 = global.member[(_e318.member_6 + 5u)]; - let _e571 = global.member[(_e318.member_6 + 6u)]; - switch bitcast(_e571) { - case 0: { - phi_922_ = 0u; - break; - } - case 1: { - phi_922_ = 1u; - break; - } - case 2: { - phi_922_ = 2u; - break; - } - default: { - phi_922_ = 0u; - break; - } + phi_4067_ = true; + } + let _e806 = phi_4067_; + let _e807 = select(1f, _e802, _e806); + if (select(-1f, 1f, (_e714.x >= 0f)) > 0f) { + phi_1171_ = _e807; + } else { + phi_1171_ = (1f - _e807); + } + let _e811 = phi_1171_; + phi_1208_ = _e811; + break; + } + case 2: { + let _e774 = abs(_e714.x); + let _e781 = ((select(select(u32(_e774), 0u, (_e774 < 0f)), 4294967295u, (_e774 > 4294967000f)) % 2u) == 0u); + let _e783 = (_e774 % 1f); + if (_e774 >= 1f) { + phi_4084_ = select(true, false, (_e783 == 0f)); + } else { + phi_4084_ = true; + } + let _e787 = phi_4084_; + let _e788 = select(1f, _e783, _e787); + if (select(-1f, 1f, (_e714.x >= 0f)) > 0f) { + if _e781 { + phi_1200_ = _e788; + } else { + phi_1200_ = (1f - _e788); } - let _e574 = phi_922_; - let _e578 = global.member[(_e318.member_6 + 7u)]; - switch bitcast(_e578) { - case 0: { - phi_931_ = 0u; - break; - } - case 1: { - phi_931_ = 1u; - break; - } - case 2: { - phi_931_ = 2u; - break; - } - default: { - phi_931_ = 0u; - break; - } + let _e795 = phi_1200_; + phi_1206_ = _e795; + } else { + if _e781 { + phi_1205_ = (1f - _e788); + } else { + phi_1205_ = _e788; } - let _e581 = phi_931_; - phi_944_ = type_33(type_24(_e574, _e581), vec2(_e545, _e549), vec2(_e554, _e558), _e563, _e567); + let _e792 = phi_1205_; + phi_1206_ = _e792; + } + let _e797 = phi_1206_; + phi_1208_ = _e797; + break; + } + case 0: { + if (_e714.x > 1f) { + phi_4102_ = 0.9999999f; } else { - phi_944_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + phi_4102_ = select(_e714.x, 0.00000011920929f, (_e714.x < 0f)); } - let _e585 = phi_944_; - switch bitcast(_e585.member.member) { - case 1: { - let _e626 = abs(_e537.x); - let _e628 = (_e626 % 1f); - if (_e626 >= 1f) { - let _e629 = (_e628 == 0f); - phi_4036_ = select(f32(), 1f, _e629); - phi_4037_ = select(true, false, _e629); - } else { - phi_4036_ = f32(); - phi_4037_ = true; - } - let _e633 = phi_4036_; - let _e635 = phi_4037_; - let _e636 = select(_e633, _e628, _e635); - if (select(-1f, 1f, (_e537.x >= 0f)) > 0f) { - phi_964_ = _e636; - } else { - phi_964_ = (1f - _e636); - } - let _e640 = phi_964_; - phi_1003_ = true; - phi_1004_ = _e640; - break; + let _e771 = phi_4102_; + phi_1208_ = _e771; + break; + } + default: { + phi_1208_ = f32(); + break; + } + } + let _e813 = phi_1208_; + switch bitcast(_e762.member.member_1) { + case 1: { + let _e851 = abs(_e714.y); + let _e853 = (_e851 % 1f); + if (_e851 >= 1f) { + phi_4115_ = select(true, false, (_e853 == 0f)); + } else { + phi_4115_ = true; + } + let _e857 = phi_4115_; + let _e858 = select(1f, _e853, _e857); + if (select(-1f, 1f, (_e714.y >= 0f)) > 0f) { + phi_1229_ = _e858; + } else { + phi_1229_ = (1f - _e858); + } + let _e862 = phi_1229_; + phi_1266_ = _e862; + break; + } + case 2: { + let _e825 = abs(_e714.y); + let _e832 = ((select(select(u32(_e825), 0u, (_e825 < 0f)), 4294967295u, (_e825 > 4294967000f)) % 2u) == 0u); + let _e834 = (_e825 % 1f); + if (_e825 >= 1f) { + phi_4132_ = select(true, false, (_e834 == 0f)); + } else { + phi_4132_ = true; + } + let _e838 = phi_4132_; + let _e839 = select(1f, _e834, _e838); + if (select(-1f, 1f, (_e714.y >= 0f)) > 0f) { + if _e832 { + phi_1258_ = _e839; + } else { + phi_1258_ = (1f - _e839); } - case 2: { - let _e597 = abs(_e537.x); - let _e604 = ((select(select(u32(_e597), 0u, (_e597 < 0f)), 4294967295u, (_e597 > 4294967000f)) % 2u) == 0u); - let _e606 = (_e597 % 1f); - if (_e597 >= 1f) { - let _e607 = (_e606 == 0f); - phi_4055_ = select(f32(), 1f, _e607); - phi_4056_ = select(true, false, _e607); - } else { - phi_4055_ = f32(); - phi_4056_ = true; - } - let _e611 = phi_4055_; - let _e613 = phi_4056_; - let _e614 = select(_e611, _e606, _e613); - if (select(-1f, 1f, (_e537.x >= 0f)) > 0f) { - if _e604 { - phi_993_ = _e614; - } else { - phi_993_ = (1f - _e614); - } - let _e621 = phi_993_; - phi_999_ = _e621; - } else { - if _e604 { - phi_998_ = (1f - _e614); - } else { - phi_998_ = _e614; - } - let _e618 = phi_998_; - phi_999_ = _e618; - } - let _e623 = phi_999_; - phi_1003_ = true; - phi_1004_ = _e623; - break; + let _e846 = phi_1258_; + phi_1264_ = _e846; + } else { + if _e832 { + phi_1263_ = (1f - _e839); + } else { + phi_1263_ = _e839; } - case 0: { - if (_e537.x > 1f) { - phi_4074_ = 0.9999999f; - } else { - phi_4074_ = select(_e537.x, 0.00000011920929f, (_e537.x < 0f)); - } - let _e594 = phi_4074_; - phi_1003_ = true; - phi_1004_ = _e594; - break; + let _e843 = phi_1263_; + phi_1264_ = _e843; + } + let _e848 = phi_1264_; + phi_1266_ = _e848; + break; + } + case 0: { + if (_e714.y > 1f) { + phi_4150_ = 0.9999999f; + } else { + phi_4150_ = select(_e714.y, 0.00000011920929f, (_e714.y < 0f)); + } + let _e822 = phi_4150_; + phi_1266_ = _e822; + break; + } + default: { + phi_1266_ = f32(); + break; + } + } + let _e864 = phi_1266_; + let _e868 = (_e813 * f32(_e762.member_2.x)); + let _e877 = (_e864 * f32(_e762.member_2.y)); + let _e895 = vec3((f32((select(select(u32(_e868), 0u, (_e868 < 0f)), 4294967295u, (_e868 > 4294967000f)) + _e762.member_1.x)) / _e498), (f32((select(select(u32(_e877), 0u, (_e877 < 0f)), 4294967295u, (_e877 > 4294967000f)) + _e762.member_1.y)) / _e500), f32(_e762.member_3)); + let _e901 = textureSampleLevel(global_12, global_11, vec2(_e895.x, _e895.y), i32(_e895.z), 0f); + let _e902 = (_e317.member_7 == 4294967295u); + let _e904 = select(_e901, vec4(1f, 1f, 1f, 1f), vec4(_e902)); + let _e908 = select(_e123, _e122, vec2((_e317.member_13 == 0u))); + if _e323 { + phi_4182_ = (_e317.member_8 <= (_e117 - 8u)); + } else { + phi_4182_ = false; + } + let _e913 = phi_4182_; + if _e913 { + let _e916 = global.member[_e317.member_8]; + let _e920 = global.member[(_e317.member_8 + 1u)]; + let _e925 = global.member[(_e317.member_8 + 2u)]; + let _e929 = global.member[(_e317.member_8 + 3u)]; + let _e934 = global.member[(_e317.member_8 + 4u)]; + let _e938 = global.member[(_e317.member_8 + 5u)]; + let _e942 = global.member[(_e317.member_8 + 6u)]; + switch bitcast(_e942) { + case 0: { + phi_1349_ = 0u; + break; + } + case 1: { + phi_1349_ = 1u; + break; + } + case 2: { + phi_1349_ = 2u; + break; + } + default: { + phi_1349_ = 0u; + break; + } + } + let _e945 = phi_1349_; + let _e949 = global.member[(_e317.member_8 + 7u)]; + switch bitcast(_e949) { + case 0: { + phi_1358_ = 0u; + break; + } + case 1: { + phi_1358_ = 1u; + break; + } + case 2: { + phi_1358_ = 2u; + break; + } + default: { + phi_1358_ = 0u; + break; + } + } + let _e952 = phi_1358_; + phi_1371_ = type_33(type_24(_e945, _e952), vec2(_e916, _e920), vec2(_e925, _e929), _e934, _e938); + } else { + phi_1371_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e956 = phi_1371_; + switch bitcast(_e956.member.member) { + case 1: { + let _e994 = abs(_e908.x); + let _e996 = (_e994 % 1f); + if (_e994 >= 1f) { + phi_4202_ = select(true, false, (_e996 == 0f)); + } else { + phi_4202_ = true; + } + let _e1000 = phi_4202_; + let _e1001 = select(1f, _e996, _e1000); + if (select(-1f, 1f, (_e908.x >= 0f)) > 0f) { + phi_1391_ = _e1001; + } else { + phi_1391_ = (1f - _e1001); + } + let _e1005 = phi_1391_; + phi_1428_ = _e1005; + break; + } + case 2: { + let _e968 = abs(_e908.x); + let _e975 = ((select(select(u32(_e968), 0u, (_e968 < 0f)), 4294967295u, (_e968 > 4294967000f)) % 2u) == 0u); + let _e977 = (_e968 % 1f); + if (_e968 >= 1f) { + phi_4219_ = select(true, false, (_e977 == 0f)); + } else { + phi_4219_ = true; + } + let _e981 = phi_4219_; + let _e982 = select(1f, _e977, _e981); + if (select(-1f, 1f, (_e908.x >= 0f)) > 0f) { + if _e975 { + phi_1420_ = _e982; + } else { + phi_1420_ = (1f - _e982); } - default: { - phi_1003_ = false; - phi_1004_ = f32(); - break; + let _e989 = phi_1420_; + phi_1426_ = _e989; + } else { + if _e975 { + phi_1425_ = (1f - _e982); + } else { + phi_1425_ = _e982; } + let _e986 = phi_1425_; + phi_1426_ = _e986; } - let _e642 = phi_1003_; - let _e644 = phi_1004_; - if _e642 { - switch bitcast(_e585.member.member_1) { - case 1: { - let _e685 = abs(_e537.y); - let _e687 = (_e685 % 1f); - if (_e685 >= 1f) { - let _e688 = (_e687 == 0f); - phi_4088_ = select(f32(), 1f, _e688); - phi_4089_ = select(true, false, _e688); - } else { - phi_4088_ = f32(); - phi_4089_ = true; - } - let _e692 = phi_4088_; - let _e694 = phi_4089_; - let _e695 = select(_e692, _e687, _e694); - if (select(-1f, 1f, (_e537.y >= 0f)) > 0f) { - phi_1028_ = _e695; - } else { - phi_1028_ = (1f - _e695); - } - let _e699 = phi_1028_; - phi_1067_ = true; - phi_1068_ = _e699; - break; - } - case 2: { - let _e656 = abs(_e537.y); - let _e663 = ((select(select(u32(_e656), 0u, (_e656 < 0f)), 4294967295u, (_e656 > 4294967000f)) % 2u) == 0u); - let _e665 = (_e656 % 1f); - if (_e656 >= 1f) { - let _e666 = (_e665 == 0f); - phi_4107_ = select(f32(), 1f, _e666); - phi_4108_ = select(true, false, _e666); - } else { - phi_4107_ = f32(); - phi_4108_ = true; - } - let _e670 = phi_4107_; - let _e672 = phi_4108_; - let _e673 = select(_e670, _e665, _e672); - if (select(-1f, 1f, (_e537.y >= 0f)) > 0f) { - if _e663 { - phi_1057_ = _e673; - } else { - phi_1057_ = (1f - _e673); - } - let _e680 = phi_1057_; - phi_1063_ = _e680; - } else { - if _e663 { - phi_1062_ = (1f - _e673); - } else { - phi_1062_ = _e673; - } - let _e677 = phi_1062_; - phi_1063_ = _e677; - } - let _e682 = phi_1063_; - phi_1067_ = true; - phi_1068_ = _e682; - break; - } - case 0: { - if (_e537.y > 1f) { - phi_4126_ = 0.9999999f; - } else { - phi_4126_ = select(_e537.y, 0.00000011920929f, (_e537.y < 0f)); - } - let _e653 = phi_4126_; - phi_1067_ = true; - phi_1068_ = _e653; - break; - } - default: { - phi_1067_ = false; - phi_1068_ = f32(); - break; - } + let _e991 = phi_1426_; + phi_1428_ = _e991; + break; + } + case 0: { + if (_e908.x > 1f) { + phi_4237_ = 0.9999999f; + } else { + phi_4237_ = select(_e908.x, 0.00000011920929f, (_e908.x < 0f)); + } + let _e965 = phi_4237_; + phi_1428_ = _e965; + break; + } + default: { + phi_1428_ = f32(); + break; + } + } + let _e1007 = phi_1428_; + switch bitcast(_e956.member.member_1) { + case 1: { + let _e1045 = abs(_e908.y); + let _e1047 = (_e1045 % 1f); + if (_e1045 >= 1f) { + phi_4250_ = select(true, false, (_e1047 == 0f)); + } else { + phi_4250_ = true; + } + let _e1051 = phi_4250_; + let _e1052 = select(1f, _e1047, _e1051); + if (select(-1f, 1f, (_e908.y >= 0f)) > 0f) { + phi_1449_ = _e1052; + } else { + phi_1449_ = (1f - _e1052); + } + let _e1056 = phi_1449_; + phi_1486_ = _e1056; + break; + } + case 2: { + let _e1019 = abs(_e908.y); + let _e1026 = ((select(select(u32(_e1019), 0u, (_e1019 < 0f)), 4294967295u, (_e1019 > 4294967000f)) % 2u) == 0u); + let _e1028 = (_e1019 % 1f); + if (_e1019 >= 1f) { + phi_4267_ = select(true, false, (_e1028 == 0f)); + } else { + phi_4267_ = true; + } + let _e1032 = phi_4267_; + let _e1033 = select(1f, _e1028, _e1032); + if (select(-1f, 1f, (_e908.y >= 0f)) > 0f) { + if _e1026 { + phi_1478_ = _e1033; + } else { + phi_1478_ = (1f - _e1033); + } + let _e1040 = phi_1478_; + phi_1484_ = _e1040; + } else { + if _e1026 { + phi_1483_ = (1f - _e1033); + } else { + phi_1483_ = _e1033; } - let _e701 = phi_1067_; - let _e703 = phi_1068_; - if _e701 { - let _e707 = (_e644 * f32(_e585.member_2.x)); - let _e716 = (_e703 * f32(_e585.member_2.y)); - let _e734 = vec3((f32((select(select(u32(_e707), 0u, (_e707 < 0f)), 4294967295u, (_e707 > 4294967000f)) + _e585.member_1.x)) / _e515), (f32((select(select(u32(_e716), 0u, (_e716 < 0f)), 4294967295u, (_e716 > 4294967000f)) + _e585.member_1.y)) / _e517), f32(_e585.member_3)); - let _e740 = textureSampleLevel(global_12, global_11, vec2(_e734.x, _e734.y), i32(_e734.z), 0f); - let _e743 = select(_e740, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_6 == 4294967295u))); - let _e747 = select(_e124, _e123, vec2((_e318.member_12 == 0u))); - if _e324 { - phi_4158_ = (_e318.member_7 <= (_e118 - 8u)); + let _e1037 = phi_1483_; + phi_1484_ = _e1037; + } + let _e1042 = phi_1484_; + phi_1486_ = _e1042; + break; + } + case 0: { + if (_e908.y > 1f) { + phi_4285_ = 0.9999999f; + } else { + phi_4285_ = select(_e908.y, 0.00000011920929f, (_e908.y < 0f)); + } + let _e1016 = phi_4285_; + phi_1486_ = _e1016; + break; + } + default: { + phi_1486_ = f32(); + break; + } + } + let _e1058 = phi_1486_; + let _e1062 = (_e1007 * f32(_e956.member_2.x)); + let _e1071 = (_e1058 * f32(_e956.member_2.y)); + let _e1089 = vec3((f32((select(select(u32(_e1062), 0u, (_e1062 < 0f)), 4294967295u, (_e1062 > 4294967000f)) + _e956.member_1.x)) / _e498), (f32((select(select(u32(_e1071), 0u, (_e1071 < 0f)), 4294967295u, (_e1071 > 4294967000f)) + _e956.member_1.y)) / _e500), f32(_e956.member_3)); + let _e1095 = textureSampleLevel(global_12, global_11, vec2(_e1089.x, _e1089.y), i32(_e1089.z), 0f); + let _e1102 = select(_e123, _e122, vec2((_e317.member_14 == 0u))); + if _e323 { + phi_4317_ = (_e317.member_9 <= (_e117 - 8u)); + } else { + phi_4317_ = false; + } + let _e1107 = phi_4317_; + if _e1107 { + let _e1110 = global.member[_e317.member_9]; + let _e1114 = global.member[(_e317.member_9 + 1u)]; + let _e1119 = global.member[(_e317.member_9 + 2u)]; + let _e1123 = global.member[(_e317.member_9 + 3u)]; + let _e1128 = global.member[(_e317.member_9 + 4u)]; + let _e1132 = global.member[(_e317.member_9 + 5u)]; + let _e1136 = global.member[(_e317.member_9 + 6u)]; + switch bitcast(_e1136) { + case 0: { + phi_1569_ = 0u; + break; + } + case 1: { + phi_1569_ = 1u; + break; + } + case 2: { + phi_1569_ = 2u; + break; + } + default: { + phi_1569_ = 0u; + break; + } + } + let _e1139 = phi_1569_; + let _e1143 = global.member[(_e317.member_9 + 7u)]; + switch bitcast(_e1143) { + case 0: { + phi_1578_ = 0u; + break; + } + case 1: { + phi_1578_ = 1u; + break; + } + case 2: { + phi_1578_ = 2u; + break; + } + default: { + phi_1578_ = 0u; + break; + } + } + let _e1146 = phi_1578_; + phi_1591_ = type_33(type_24(_e1139, _e1146), vec2(_e1110, _e1114), vec2(_e1119, _e1123), _e1128, _e1132); + } else { + phi_1591_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); + } + let _e1150 = phi_1591_; + switch bitcast(_e1150.member.member) { + case 1: { + let _e1188 = abs(_e1102.x); + let _e1190 = (_e1188 % 1f); + if (_e1188 >= 1f) { + phi_4337_ = select(true, false, (_e1190 == 0f)); + } else { + phi_4337_ = true; + } + let _e1194 = phi_4337_; + let _e1195 = select(1f, _e1190, _e1194); + if (select(-1f, 1f, (_e1102.x >= 0f)) > 0f) { + phi_1611_ = _e1195; + } else { + phi_1611_ = (1f - _e1195); + } + let _e1199 = phi_1611_; + phi_1648_ = _e1199; + break; + } + case 2: { + let _e1162 = abs(_e1102.x); + let _e1169 = ((select(select(u32(_e1162), 0u, (_e1162 < 0f)), 4294967295u, (_e1162 > 4294967000f)) % 2u) == 0u); + let _e1171 = (_e1162 % 1f); + if (_e1162 >= 1f) { + phi_4354_ = select(true, false, (_e1171 == 0f)); + } else { + phi_4354_ = true; + } + let _e1175 = phi_4354_; + let _e1176 = select(1f, _e1171, _e1175); + if (select(-1f, 1f, (_e1102.x >= 0f)) > 0f) { + if _e1169 { + phi_1640_ = _e1176; + } else { + phi_1640_ = (1f - _e1176); + } + let _e1183 = phi_1640_; + phi_1646_ = _e1183; + } else { + if _e1169 { + phi_1645_ = (1f - _e1176); + } else { + phi_1645_ = _e1176; + } + let _e1180 = phi_1645_; + phi_1646_ = _e1180; + } + let _e1185 = phi_1646_; + phi_1648_ = _e1185; + break; + } + case 0: { + if (_e1102.x > 1f) { + phi_4372_ = 0.9999999f; + } else { + phi_4372_ = select(_e1102.x, 0.00000011920929f, (_e1102.x < 0f)); + } + let _e1159 = phi_4372_; + phi_1648_ = _e1159; + break; + } + default: { + phi_1648_ = f32(); + break; + } + } + let _e1201 = phi_1648_; + switch bitcast(_e1150.member.member_1) { + case 1: { + let _e1239 = abs(_e1102.y); + let _e1241 = (_e1239 % 1f); + if (_e1239 >= 1f) { + phi_4385_ = select(true, false, (_e1241 == 0f)); + } else { + phi_4385_ = true; + } + let _e1245 = phi_4385_; + let _e1246 = select(1f, _e1241, _e1245); + if (select(-1f, 1f, (_e1102.y >= 0f)) > 0f) { + phi_1669_ = _e1246; + } else { + phi_1669_ = (1f - _e1246); + } + let _e1250 = phi_1669_; + phi_1706_ = _e1250; + break; + } + case 2: { + let _e1213 = abs(_e1102.y); + let _e1220 = ((select(select(u32(_e1213), 0u, (_e1213 < 0f)), 4294967295u, (_e1213 > 4294967000f)) % 2u) == 0u); + let _e1222 = (_e1213 % 1f); + if (_e1213 >= 1f) { + phi_4402_ = select(true, false, (_e1222 == 0f)); + } else { + phi_4402_ = true; + } + let _e1226 = phi_4402_; + let _e1227 = select(1f, _e1222, _e1226); + if (select(-1f, 1f, (_e1102.y >= 0f)) > 0f) { + if _e1220 { + phi_1698_ = _e1227; + } else { + phi_1698_ = (1f - _e1227); + } + let _e1234 = phi_1698_; + phi_1704_ = _e1234; + } else { + if _e1220 { + phi_1703_ = (1f - _e1227); + } else { + phi_1703_ = _e1227; + } + let _e1231 = phi_1703_; + phi_1704_ = _e1231; + } + let _e1236 = phi_1704_; + phi_1706_ = _e1236; + break; + } + case 0: { + if (_e1102.y > 1f) { + phi_4420_ = 0.9999999f; + } else { + phi_4420_ = select(_e1102.y, 0.00000011920929f, (_e1102.y < 0f)); + } + let _e1210 = phi_4420_; + phi_1706_ = _e1210; + break; + } + default: { + phi_1706_ = f32(); + break; + } + } + let _e1252 = phi_1706_; + let _e1256 = (_e1201 * f32(_e1150.member_2.x)); + let _e1265 = (_e1252 * f32(_e1150.member_2.y)); + let _e1283 = vec3((f32((select(select(u32(_e1256), 0u, (_e1256 < 0f)), 4294967295u, (_e1256 > 4294967000f)) + _e1150.member_1.x)) / _e498), (f32((select(select(u32(_e1265), 0u, (_e1265 < 0f)), 4294967295u, (_e1265 > 4294967000f)) + _e1150.member_1.y)) / _e500), f32(_e1150.member_3)); + let _e1289 = textureSampleLevel(global_12, global_11, vec2(_e1283.x, _e1283.y), i32(_e1283.z), 0f); + let _e1292 = select(_e1289, vec4(1f, 1f, 1f, 1f), vec4((_e317.member_9 == 4294967295u))); + if _e902 { + phi_1800_ = vec3(0f, 0f, 0f); + phi_1801_ = _e124; + } else { + let _e1296 = fma(_e904.x, 2f, -1f); + let _e1297 = fma(_e904.y, 2f, -1f); + let _e1298 = fma(_e904.z, 2f, -1f); + let _e1303 = sqrt(fma(_e1298, _e1298, fma(_e1296, _e1296, (_e1297 * _e1297)))); + if (_e1303 == 0f) { + phi_4474_ = vec3(0f, 0f, 0f); + } else { + phi_4474_ = (vec3(_e1296, _e1297, _e1298) * (1f / _e1303)); + } + let _e1308 = phi_4474_; + let _e1315 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); + if (_e1315 == 0f) { + phi_4509_ = vec3(0f, 0f, 0f); + } else { + phi_4509_ = (_e125 * (1f / _e1315)); + } + let _e1320 = phi_4509_; + let _e1327 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); + if (_e1327 == 0f) { + phi_4544_ = vec3(0f, 0f, 0f); + } else { + phi_4544_ = (_e126 * (1f / _e1327)); + } + let _e1332 = phi_4544_; + let _e1339 = sqrt(fma(_e124.z, _e124.z, fma(_e124.x, _e124.x, (_e124.y * _e124.y)))); + if (_e1339 == 0f) { + phi_4579_ = vec3(0f, 0f, 0f); + } else { + phi_4579_ = (_e124 * (1f / _e1339)); + } + let _e1344 = phi_4579_; + let _e1363 = fma(_e1344.x, _e1308.z, fma(_e1320.x, _e1308.x, (_e1332.x * _e1308.y))); + let _e1364 = fma(_e1344.y, _e1308.z, fma(_e1320.y, _e1308.x, (_e1332.y * _e1308.y))); + let _e1365 = fma(_e1344.z, _e1308.z, fma(_e1320.z, _e1308.x, (_e1332.z * _e1308.y))); + let _e1370 = sqrt(fma(_e1365, _e1365, fma(_e1363, _e1363, (_e1364 * _e1364)))); + if (_e1370 == 0f) { + phi_4614_ = vec3(0f, 0f, 0f); + } else { + phi_4614_ = (vec3(_e1363, _e1364, _e1365) * (1f / _e1370)); + } + let _e1375 = phi_4614_; + phi_1800_ = _e1308; + phi_1801_ = _e1375; + } + let _e1377 = phi_1800_; + let _e1379 = phi_1801_; + let _e1383 = (_e516.x * _e317.member_2.x); + let _e1386 = (_e516.y * _e317.member_2.y); + let _e1389 = (_e516.z * _e317.member_2.z); + let _e1394 = (_e1383 * _e121.x); + let _e1396 = (_e1386 * _e121.y); + let _e1398 = (_e1389 * _e121.z); + let _e1403 = (_e710.y * _e317.member_4); + let _e1406 = (_e710.z * _e317.member_3); + let _e1410 = fma(_e317.member_16, (select(_e1095, vec4(1f, 1f, 1f, 1f), vec4((_e317.member_8 == 4294967295u))).x - 1f), 1f); + let _e1416 = (_e1292.x * _e317.member.x); + let _e1418 = (_e1292.y * _e317.member.y); + let _e1420 = (_e1292.z * _e317.member.z); + let _e1425 = textureSampleLevel(global_13, global_14, _e1379, 0f); + if (_e117 >= 83u) { + phi_4646_ = (_e118 <= (_e117 - 83u)); + } else { + phi_4646_ = false; + } + let _e1433 = phi_4646_; + if _e1433 { + let _e1436 = global.member[_e118]; + let _e1441 = global.member[(_e118 + 1u)]; + let _e1446 = global.member[(_e118 + 2u)]; + let _e1451 = global.member[(_e118 + 3u)]; + let _e1457 = global.member[(_e118 + 4u)]; + let _e1462 = global.member[(_e118 + 5u)]; + let _e1467 = global.member[(_e118 + 6u)]; + let _e1472 = global.member[(_e118 + 7u)]; + let _e1478 = global.member[(_e118 + 8u)]; + let _e1483 = global.member[(_e118 + 9u)]; + let _e1488 = global.member[(_e118 + 10u)]; + let _e1493 = global.member[(_e118 + 11u)]; + let _e1499 = global.member[(_e118 + 12u)]; + let _e1504 = global.member[(_e118 + 13u)]; + let _e1509 = global.member[(_e118 + 14u)]; + let _e1514 = global.member[(_e118 + 15u)]; + let _e1521 = global.member[(_e118 + 16u)]; + let _e1526 = global.member[(_e118 + 17u)]; + let _e1531 = global.member[(_e118 + 18u)]; + let _e1536 = global.member[(_e118 + 19u)]; + let _e1542 = global.member[(_e118 + 20u)]; + let _e1547 = global.member[(_e118 + 21u)]; + let _e1552 = global.member[(_e118 + 22u)]; + let _e1557 = global.member[(_e118 + 23u)]; + let _e1563 = global.member[(_e118 + 24u)]; + let _e1568 = global.member[(_e118 + 25u)]; + let _e1573 = global.member[(_e118 + 26u)]; + let _e1578 = global.member[(_e118 + 27u)]; + let _e1584 = global.member[(_e118 + 28u)]; + let _e1589 = global.member[(_e118 + 29u)]; + let _e1594 = global.member[(_e118 + 30u)]; + let _e1599 = global.member[(_e118 + 31u)]; + let _e1606 = global.member[(_e118 + 32u)]; + let _e1611 = global.member[(_e118 + 33u)]; + let _e1616 = global.member[(_e118 + 34u)]; + local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_2007_ = type_24(0u, 6u); + loop { + let _e1621 = phi_2007_; + if (_e1621.member < _e1621.member_1) { + phi_2008_ = type_24((_e1621.member + 1u), _e1621.member_1); + phi_2023_ = type_24(1u, _e1621.member); + } else { + phi_2008_ = _e1621; + phi_2023_ = type_24(0u, type_24().member_1); + } + let _e1634 = phi_2008_; + let _e1636 = phi_2023_; + switch bitcast(_e1636.member) { + case 0: { + phi_2050_ = false; + break; + } + case 1: { + let _e1641 = ((_e118 + 35u) + (_e1636.member_1 * 4u)); + let _e1644 = global.member[_e1641]; + let _e1649 = global.member[(_e1641 + 1u)]; + let _e1654 = global.member[(_e1641 + 2u)]; + let _e1659 = global.member[(_e1641 + 3u)]; + local_1[_e1636.member_1] = vec4(bitcast(_e1644), bitcast(_e1649), bitcast(_e1654), bitcast(_e1659)); + phi_2050_ = true; + break; + } + default: { + phi_2050_ = bool(); + break; + } + } + let _e1664 = phi_2050_; + continue; + continuing { + phi_2007_ = _e1634; + break if !(_e1664); + } + } + let _e1666 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_2056_ = type_24(0u, 8u); + loop { + let _e1669 = phi_2056_; + if (_e1669.member < _e1669.member_1) { + phi_2057_ = type_24((_e1669.member + 1u), _e1669.member_1); + phi_2072_ = type_24(1u, _e1669.member); + } else { + phi_2057_ = _e1669; + phi_2072_ = type_24(0u, type_24().member_1); + } + let _e1682 = phi_2057_; + let _e1684 = phi_2072_; + switch bitcast(_e1684.member) { + case 0: { + phi_2095_ = false; + break; + } + case 1: { + let _e1689 = ((_e118 + 59u) + (_e1684.member_1 * 3u)); + let _e1692 = global.member[_e1689]; + let _e1697 = global.member[(_e1689 + 1u)]; + let _e1702 = global.member[(_e1689 + 2u)]; + local[_e1684.member_1] = vec3(bitcast(_e1692), bitcast(_e1697), bitcast(_e1702)); + phi_2095_ = true; + break; + } + default: { + phi_2095_ = bool(); + break; + } + } + let _e1707 = phi_2095_; + continue; + continuing { + phi_2056_ = _e1682; + break if !(_e1707); + } + } + let _e1709 = local; + phi_2103_ = type_22(type_20(vec4(bitcast(_e1436), bitcast(_e1441), bitcast(_e1446), bitcast(_e1451)), vec4(bitcast(_e1457), bitcast(_e1462), bitcast(_e1467), bitcast(_e1472)), vec4(bitcast(_e1478), bitcast(_e1483), bitcast(_e1488), bitcast(_e1493)), vec4(bitcast(_e1499), bitcast(_e1504), bitcast(_e1509), bitcast(_e1514))), type_20(vec4(bitcast(_e1521), bitcast(_e1526), bitcast(_e1531), bitcast(_e1536)), vec4(bitcast(_e1542), bitcast(_e1547), bitcast(_e1552), bitcast(_e1557)), vec4(bitcast(_e1563), bitcast(_e1568), bitcast(_e1573), bitcast(_e1578)), vec4(bitcast(_e1584), bitcast(_e1589), bitcast(_e1594), bitcast(_e1599))), type_21(_e1709, _e1666), vec3(bitcast(_e1606), bitcast(_e1611), bitcast(_e1616))); + } else { + phi_2103_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + } + let _e1713 = phi_2103_; + let _e1715 = (_e1713.member_3 - _e127); + let _e1722 = sqrt(fma(_e1715.z, _e1715.z, fma(_e1715.x, _e1715.x, (_e1715.y * _e1715.y)))); + let _e1723 = (_e1722 == 0f); + if _e1723 { + phi_4718_ = vec3(0f, 0f, 0f); + } else { + phi_4718_ = (_e1715 * (1f / _e1722)); + } + let _e1727 = phi_4718_; + let _e1728 = -(_e1727); + let _e1735 = sqrt(fma(_e1379.z, _e1379.z, fma(_e1379.x, _e1379.x, (_e1379.y * _e1379.y)))); + let _e1736 = (_e1735 == 0f); + if _e1736 { + phi_4777_ = vec3(0f, 0f, 0f); + } else { + phi_4777_ = (_e1379 * (1f / _e1735)); + } + let _e1740 = phi_4777_; + let _e1750 = (2f * fma(_e1740.z, _e1728.z, fma(_e1740.x, _e1728.x, (_e1740.y * _e1728.y)))); + let _e1757 = textureSampleLevel(global_15, global_16, (_e1728 - vec3((_e1750 * _e1740.x), (_e1750 * _e1740.y), (_e1750 * _e1740.z))), (_e1403 * 4f)); + if _e1723 { + phi_4851_ = vec3(0f, 0f, 0f); + } else { + phi_4851_ = (_e1715 * (1f / _e1722)); + } + let _e1764 = phi_4851_; + let _e1773 = textureSampleLevel(global_17, global_18, vec2(max(fma(_e1379.z, _e1764.z, fma(_e1379.x, _e1764.x, (_e1379.y * _e1764.y))), 0f), _e1403), 0f); + switch bitcast(_e178.member_3) { + case 0: { + if _e317.member_15 { + if _e1736 { + phi_4901_ = vec3(0f, 0f, 0f); + } else { + phi_4901_ = (_e1379 * (1f / _e1735)); + } + let _e1942 = phi_4901_; + if _e1723 { + phi_4936_ = vec3(0f, 0f, 0f); + } else { + phi_4936_ = (_e1715 * (1f / _e1722)); + } + let _e1946 = phi_4936_; + phi_2143_ = type_24(0u, _e178.member_2.member_1); + phi_2146_ = vec3(0f, 0f, 0f); + loop { + let _e1949 = phi_2143_; + let _e1951 = phi_2146_; + local_2 = _e1951; + local_3 = _e1951; + local_4 = _e1951; + if (_e1949.member < _e1949.member_1) { + phi_2144_ = type_24((_e1949.member + 1u), _e1949.member_1); + phi_2161_ = type_24(1u, _e1949.member); } else { - phi_4158_ = false; + phi_2144_ = _e1949; + phi_2161_ = type_24(0u, type_24().member_1); } - let _e752 = phi_4158_; - if _e752 { - let _e755 = global.member[_e318.member_7]; - let _e759 = global.member[(_e318.member_7 + 1u)]; - let _e764 = global.member[(_e318.member_7 + 2u)]; - let _e768 = global.member[(_e318.member_7 + 3u)]; - let _e773 = global.member[(_e318.member_7 + 4u)]; - let _e777 = global.member[(_e318.member_7 + 5u)]; - let _e781 = global.member[(_e318.member_7 + 6u)]; - switch bitcast(_e781) { - case 0: { - phi_1154_ = 0u; - break; - } - case 1: { - phi_1154_ = 1u; - break; - } - case 2: { - phi_1154_ = 2u; - break; - } - default: { - phi_1154_ = 0u; - break; - } - } - let _e784 = phi_1154_; - let _e788 = global.member[(_e318.member_7 + 7u)]; - switch bitcast(_e788) { - case 0: { - phi_1163_ = 0u; - break; - } - case 1: { - phi_1163_ = 1u; - break; - } - case 2: { - phi_1163_ = 2u; - break; - } - default: { - phi_1163_ = 0u; - break; - } + let _e1964 = phi_2144_; + let _e1966 = phi_2161_; + switch bitcast(_e1966.member) { + case 0: { + phi_2147_ = vec3(); + phi_3013_ = false; + break; } - let _e791 = phi_1163_; - phi_1176_ = type_33(type_24(_e784, _e791), vec2(_e755, _e759), vec2(_e764, _e768), _e773, _e777); - } else { - phi_1176_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); - } - let _e795 = phi_1176_; - switch bitcast(_e795.member.member) { case 1: { - let _e836 = abs(_e747.x); - let _e838 = (_e836 % 1f); - if (_e836 >= 1f) { - let _e839 = (_e838 == 0f); - phi_4179_ = select(f32(), 1f, _e839); - phi_4180_ = select(true, false, _e839); - } else { - phi_4179_ = f32(); - phi_4180_ = true; - } - let _e843 = phi_4179_; - let _e845 = phi_4180_; - let _e846 = select(_e843, _e838, _e845); - if (select(-1f, 1f, (_e747.x >= 0f)) > 0f) { - phi_1196_ = _e846; + if (_e1966.member_1 >= _e178.member_2.member_1) { + phi_4953_ = 4294967295u; } else { - phi_1196_ = (1f - _e846); + phi_4953_ = (_e178.member_2.member + _e1966.member_1); } - let _e850 = phi_1196_; - phi_1235_ = true; - phi_1236_ = _e850; - break; - } - case 2: { - let _e807 = abs(_e747.x); - let _e814 = ((select(select(u32(_e807), 0u, (_e807 < 0f)), 4294967295u, (_e807 > 4294967000f)) % 2u) == 0u); - let _e816 = (_e807 % 1f); - if (_e807 >= 1f) { - let _e817 = (_e816 == 0f); - phi_4198_ = select(f32(), 1f, _e817); - phi_4199_ = select(true, false, _e817); + let _e1973 = phi_4953_; + if (_e117 >= 1u) { + phi_4972_ = (_e1973 <= (_e117 - 1u)); } else { - phi_4198_ = f32(); - phi_4199_ = true; + phi_4972_ = false; } - let _e821 = phi_4198_; - let _e823 = phi_4199_; - let _e824 = select(_e821, _e816, _e823); - if (select(-1f, 1f, (_e747.x >= 0f)) > 0f) { - if _e814 { - phi_1225_ = _e824; - } else { - phi_1225_ = (1f - _e824); - } - let _e831 = phi_1225_; - phi_1231_ = _e831; + let _e1978 = phi_4972_; + if _e1978 { + let _e1981 = global.member[_e1973]; + phi_2178_ = _e1981; } else { - if _e814 { - phi_1230_ = (1f - _e824); - } else { - phi_1230_ = _e824; - } - let _e828 = phi_1230_; - phi_1231_ = _e828; + phi_2178_ = 4294967295u; } - let _e833 = phi_1231_; - phi_1235_ = true; - phi_1236_ = _e833; - break; - } - case 0: { - if (_e747.x > 1f) { - phi_4217_ = 0.9999999f; + let _e1983 = phi_2178_; + let _e1984 = (_e1983 == 4294967295u); + if _e1984 { + phi_3011_ = vec3(); } else { - phi_4217_ = select(_e747.x, 0.00000011920929f, (_e747.x < 0f)); - } - let _e804 = phi_4217_; - phi_1235_ = true; - phi_1236_ = _e804; - break; - } - default: { - phi_1235_ = false; - phi_1236_ = f32(); - break; - } - } - let _e852 = phi_1235_; - let _e854 = phi_1236_; - if _e852 { - switch bitcast(_e795.member.member_1) { - case 1: { - let _e895 = abs(_e747.y); - let _e897 = (_e895 % 1f); - if (_e895 >= 1f) { - let _e898 = (_e897 == 0f); - phi_4231_ = select(f32(), 1f, _e898); - phi_4232_ = select(true, false, _e898); - } else { - phi_4231_ = f32(); - phi_4232_ = true; - } - let _e902 = phi_4231_; - let _e904 = phi_4232_; - let _e905 = select(_e902, _e897, _e904); - if (select(-1f, 1f, (_e747.y >= 0f)) > 0f) { - phi_1260_ = _e905; + if (_e117 >= 3u) { + phi_5004_ = (_e1983 <= (_e117 - 3u)); } else { - phi_1260_ = (1f - _e905); + phi_5004_ = false; } - let _e909 = phi_1260_; - phi_1299_ = true; - phi_1300_ = _e909; - break; - } - case 2: { - let _e866 = abs(_e747.y); - let _e873 = ((select(select(u32(_e866), 0u, (_e866 < 0f)), 4294967295u, (_e866 > 4294967000f)) % 2u) == 0u); - let _e875 = (_e866 % 1f); - if (_e866 >= 1f) { - let _e876 = (_e875 == 0f); - phi_4250_ = select(f32(), 1f, _e876); - phi_4251_ = select(true, false, _e876); - } else { - phi_4250_ = f32(); - phi_4251_ = true; - } - let _e880 = phi_4250_; - let _e882 = phi_4251_; - let _e883 = select(_e880, _e875, _e882); - if (select(-1f, 1f, (_e747.y >= 0f)) > 0f) { - if _e873 { - phi_1289_ = _e883; - } else { - phi_1289_ = (1f - _e883); + let _e1989 = phi_5004_; + if _e1989 { + let _e1992 = global.member[_e1983]; + switch bitcast(_e1992) { + case 0: { + phi_2195_ = 0u; + break; + } + case 1: { + phi_2195_ = 1u; + break; + } + case 2: { + phi_2195_ = 2u; + break; + } + default: { + phi_2195_ = 0u; + break; + } } - let _e890 = phi_1289_; - phi_1295_ = _e890; + let _e1995 = phi_2195_; + let _e1999 = global.member[(_e1983 + 1u)]; + let _e2003 = global.member[(_e1983 + 2u)]; + phi_2205_ = type_34(_e1995, _e1999, _e2003); } else { - if _e873 { - phi_1294_ = (1f - _e883); - } else { - phi_1294_ = _e883; - } - let _e887 = phi_1294_; - phi_1295_ = _e887; + phi_2205_ = type_34(0u, 4294967295u, 4294967295u); } - let _e892 = phi_1295_; - phi_1299_ = true; - phi_1300_ = _e892; - break; - } - case 0: { - if (_e747.y > 1f) { - phi_4269_ = 0.9999999f; + let _e2006 = phi_2205_; + if (_e117 >= 10u) { + phi_5034_ = (_e2006.member_2 <= (_e117 - 10u)); } else { - phi_4269_ = select(_e747.y, 0.00000011920929f, (_e747.y < 0f)); + phi_5034_ = false; } - let _e863 = phi_4269_; - phi_1299_ = true; - phi_1300_ = _e863; - break; - } - default: { - phi_1299_ = false; - phi_1300_ = f32(); - break; - } - } - let _e911 = phi_1299_; - let _e913 = phi_1300_; - if _e911 { - let _e917 = (_e854 * f32(_e795.member_2.x)); - let _e926 = (_e913 * f32(_e795.member_2.y)); - let _e944 = vec3((f32((select(select(u32(_e917), 0u, (_e917 < 0f)), 4294967295u, (_e917 > 4294967000f)) + _e795.member_1.x)) / _e515), (f32((select(select(u32(_e926), 0u, (_e926 < 0f)), 4294967295u, (_e926 > 4294967000f)) + _e795.member_1.y)) / _e517), f32(_e795.member_3)); - let _e950 = textureSampleLevel(global_12, global_11, vec2(_e944.x, _e944.y), i32(_e944.z), 0f); - let _e951 = (_e318.member_7 == 4294967295u); - let _e953 = select(_e950, vec4(1f, 1f, 1f, 1f), vec4(_e951)); - let _e957 = select(_e124, _e123, vec2((_e318.member_13 == 0u))); - if _e324 { - phi_4301_ = (_e318.member_8 <= (_e118 - 8u)); - } else { - phi_4301_ = false; - } - let _e962 = phi_4301_; - if _e962 { - let _e965 = global.member[_e318.member_8]; - let _e969 = global.member[(_e318.member_8 + 1u)]; - let _e974 = global.member[(_e318.member_8 + 2u)]; - let _e978 = global.member[(_e318.member_8 + 3u)]; - let _e983 = global.member[(_e318.member_8 + 4u)]; - let _e987 = global.member[(_e318.member_8 + 5u)]; - let _e991 = global.member[(_e318.member_8 + 6u)]; - switch bitcast(_e991) { - case 0: { - phi_1386_ = 0u; - break; - } - case 1: { - phi_1386_ = 1u; - break; - } - case 2: { - phi_1386_ = 2u; - break; - } - default: { - phi_1386_ = 0u; - break; - } + let _e2012 = phi_5034_; + if _e2012 { + let _e2015 = global.member[_e2006.member_2]; + let _e2020 = global.member[(_e2006.member_2 + 1u)]; + let _e2025 = global.member[(_e2006.member_2 + 2u)]; + let _e2031 = global.member[(_e2006.member_2 + 3u)]; + let _e2036 = global.member[(_e2006.member_2 + 4u)]; + let _e2041 = global.member[(_e2006.member_2 + 5u)]; + let _e2046 = global.member[(_e2006.member_2 + 6u)]; + let _e2052 = global.member[(_e2006.member_2 + 7u)]; + let _e2057 = global.member[(_e2006.member_2 + 8u)]; + let _e2062 = global.member[(_e2006.member_2 + 9u)]; + phi_2255_ = type_28(vec3(bitcast(_e2015), bitcast(_e2020), bitcast(_e2025)), vec4(bitcast(_e2031), bitcast(_e2036), bitcast(_e2041), bitcast(_e2046)), vec3(bitcast(_e2052), bitcast(_e2057), bitcast(_e2062))); + } else { + phi_2255_ = type_28(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); } - let _e994 = phi_1386_; - let _e998 = global.member[(_e318.member_8 + 7u)]; - switch bitcast(_e998) { + let _e2067 = phi_2255_; + let _e2075 = (_e2067.member_1.x + _e2067.member_1.x); + let _e2076 = (_e2067.member_1.y + _e2067.member_1.y); + let _e2077 = (_e2067.member_1.z + _e2067.member_1.z); + let _e2079 = (_e2067.member_1.z * _e2077); + let _e2080 = (_e2067.member_1.w * _e2075); + let _e2081 = (_e2067.member_1.w * _e2076); + let _e2082 = (_e2067.member_1.w * _e2077); + let _e2102 = (vec4((1f - fma(_e2067.member_1.y, _e2076, _e2079)), fma(_e2067.member_1.x, _e2076, _e2082), fma(_e2067.member_1.x, _e2077, -(_e2081)), 0f) * _e2067.member_2.x); + let _e2104 = (vec4(fma(_e2067.member_1.x, _e2076, -(_e2082)), (1f - fma(_e2067.member_1.x, _e2075, _e2079)), fma(_e2067.member_1.y, _e2077, _e2080), 0f) * _e2067.member_2.y); + let _e2106 = (vec4(fma(_e2067.member_1.x, _e2077, _e2081), fma(_e2067.member_1.y, _e2077, -(_e2080)), (1f - fma(_e2067.member_1.x, _e2075, (_e2067.member_1.y * _e2076))), 0f) * _e2067.member_2.z); + switch bitcast(_e2006.member) { case 0: { - phi_1395_ = 0u; - break; - } - case 1: { - phi_1395_ = 1u; - break; - } - case 2: { - phi_1395_ = 2u; - break; - } - default: { - phi_1395_ = 0u; - break; - } - } - let _e1001 = phi_1395_; - phi_1408_ = type_33(type_24(_e994, _e1001), vec2(_e965, _e969), vec2(_e974, _e978), _e983, _e987); - } else { - phi_1408_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); - } - let _e1005 = phi_1408_; - switch bitcast(_e1005.member.member) { - case 1: { - let _e1046 = abs(_e957.x); - let _e1048 = (_e1046 % 1f); - if (_e1046 >= 1f) { - let _e1049 = (_e1048 == 0f); - phi_4322_ = select(f32(), 1f, _e1049); - phi_4323_ = select(true, false, _e1049); - } else { - phi_4322_ = f32(); - phi_4323_ = true; - } - let _e1053 = phi_4322_; - let _e1055 = phi_4323_; - let _e1056 = select(_e1053, _e1048, _e1055); - if (select(-1f, 1f, (_e957.x >= 0f)) > 0f) { - phi_1428_ = _e1056; - } else { - phi_1428_ = (1f - _e1056); - } - let _e1060 = phi_1428_; - phi_1467_ = true; - phi_1468_ = _e1060; - break; - } - case 2: { - let _e1017 = abs(_e957.x); - let _e1024 = ((select(select(u32(_e1017), 0u, (_e1017 < 0f)), 4294967295u, (_e1017 > 4294967000f)) % 2u) == 0u); - let _e1026 = (_e1017 % 1f); - if (_e1017 >= 1f) { - let _e1027 = (_e1026 == 0f); - phi_4341_ = select(f32(), 1f, _e1027); - phi_4342_ = select(true, false, _e1027); - } else { - phi_4341_ = f32(); - phi_4342_ = true; - } - let _e1031 = phi_4341_; - let _e1033 = phi_4342_; - let _e1034 = select(_e1031, _e1026, _e1033); - if (select(-1f, 1f, (_e957.x >= 0f)) > 0f) { - if _e1024 { - phi_1457_ = _e1034; + if _e323 { + phi_5115_ = (_e2006.member_1 <= (_e117 - 8u)); } else { - phi_1457_ = (1f - _e1034); + phi_5115_ = false; } - let _e1041 = phi_1457_; - phi_1463_ = _e1041; - } else { - if _e1024 { - phi_1462_ = (1f - _e1034); + let _e2602 = phi_5115_; + if _e2602 { + let _e2605 = global.member[_e2006.member_1]; + let _e2610 = global.member[(_e2006.member_1 + 1u)]; + let _e2615 = global.member[(_e2006.member_1 + 2u)]; + let _e2621 = global.member[(_e2006.member_1 + 3u)]; + let _e2626 = global.member[(_e2006.member_1 + 4u)]; + let _e2631 = global.member[(_e2006.member_1 + 5u)]; + let _e2636 = global.member[(_e2006.member_1 + 6u)]; + let _e2642 = global.member[(_e2006.member_1 + 7u)]; + phi_2303_ = type_35(vec3(bitcast(_e2605), bitcast(_e2610), bitcast(_e2615)), vec4(bitcast(_e2621), bitcast(_e2626), bitcast(_e2631), bitcast(_e2636)), bitcast(_e2642)); } else { - phi_1462_ = _e1034; + phi_2303_ = type_35(vec3(0f, -1f, 0f), vec4(1f, 1f, 1f, 1f), 1f); } - let _e1038 = phi_1462_; - phi_1463_ = _e1038; - } - let _e1043 = phi_1463_; - phi_1467_ = true; - phi_1468_ = _e1043; - break; - } - case 0: { - if (_e957.x > 1f) { - phi_4360_ = 0.9999999f; - } else { - phi_4360_ = select(_e957.x, 0.00000011920929f, (_e957.x < 0f)); - } - let _e1014 = phi_4360_; - phi_1467_ = true; - phi_1468_ = _e1014; - break; - } - default: { - phi_1467_ = false; - phi_1468_ = f32(); - break; - } - } - let _e1062 = phi_1467_; - let _e1064 = phi_1468_; - if _e1062 { - switch bitcast(_e1005.member.member_1) { - case 1: { - let _e1105 = abs(_e957.y); - let _e1107 = (_e1105 % 1f); - if (_e1105 >= 1f) { - let _e1108 = (_e1107 == 0f); - phi_4374_ = select(f32(), 1f, _e1108); - phi_4375_ = select(true, false, _e1108); + let _e2646 = phi_2303_; + let _e2668 = fma(_e2106.x, _e2646.member.z, fma(_e2104.x, _e2646.member.y, (_e2102.x * _e2646.member.x))); + let _e2669 = fma(_e2106.y, _e2646.member.z, fma(_e2104.y, _e2646.member.y, (_e2102.y * _e2646.member.x))); + let _e2670 = fma(_e2106.z, _e2646.member.z, fma(_e2104.z, _e2646.member.y, (_e2102.z * _e2646.member.x))); + let _e2675 = sqrt(fma(_e2670, _e2670, fma(_e2668, _e2668, (_e2669 * _e2669)))); + if (_e2675 == 0f) { + phi_5163_ = vec3(0f, 0f, 0f); } else { - phi_4374_ = f32(); - phi_4375_ = true; + phi_5163_ = (vec3(_e2668, _e2669, _e2670) * (1f / _e2675)); } - let _e1112 = phi_4374_; - let _e1114 = phi_4375_; - let _e1115 = select(_e1112, _e1107, _e1114); - if (select(-1f, 1f, (_e957.y >= 0f)) > 0f) { - phi_1492_ = _e1115; + let _e2680 = phi_5163_; + let _e2682 = -(_e2680.x); + let _e2684 = -(_e2680.y); + let _e2686 = -(_e2680.z); + let _e2687 = -(_e2680); + let _e2691 = fma(fma(_e1383, _e121.x, -0.4f), _e1406, 0.4f); + let _e2692 = fma(fma(_e1386, _e121.y, -0.4f), _e1406, 0.4f); + let _e2693 = fma(fma(_e1389, _e121.z, -0.4f), _e1406, 0.4f); + let _e2701 = (_e1946 + vec3(_e2682, _e2684, _e2686)); + let _e2708 = sqrt(fma(_e2701.z, _e2701.z, fma(_e2701.x, _e2701.x, (_e2701.y * _e2701.y)))); + if (_e2708 == 0f) { + phi_5198_ = vec3(0f, 0f, 0f); } else { - phi_1492_ = (1f - _e1115); + phi_5198_ = (_e2701 * (1f / _e2708)); } - let _e1119 = phi_1492_; - phi_1531_ = true; - phi_1532_ = _e1119; + let _e2713 = phi_5198_; + let _e2714 = (_e1403 * _e1403); + let _e2725 = max(fma(_e1942.z, _e2713.z, fma(_e1942.x, _e2713.x, (_e1942.y * _e2713.y))), 0f); + let _e2738 = max(fma(_e1942.z, _e1946.z, fma(_e1942.x, _e1946.x, (_e1942.y * _e1946.y))), 0f); + let _e2745 = max(fma(_e1942.z, _e2687.z, fma(_e1942.x, _e2687.x, (_e1942.y * _e2687.y))), 0f); + let _e2746 = fma(_e710.y, _e317.member_4, 1f); + let _e2747 = (_e2746 * _e2746); + let _e2748 = (_e2747 * 0.125f); + let _e2750 = fma(-(_e2747), 0.125f, 1f); + let _e2763 = (1f - max(fma(_e2713.z, _e1946.z, fma(_e2713.x, _e1946.x, (_e2713.y * _e1946.y))), 0f)); + let _e2765 = select(_e2763, 0f, (_e2763 < 0f)); + let _e2768 = pow(select(_e2765, 1f, (_e2765 > 1f)), 5f); + let _e2769 = fma((1f - _e2691), _e2768, _e2691); + let _e2770 = fma((1f - _e2692), _e2768, _e2692); + let _e2771 = fma((1f - _e2693), _e2768, _e2693); + let _e2776 = fma(-(_e710.z), _e317.member_3, 1f); + let _e2780 = (((_e2714 * _e2714) / (pow(fma((_e2725 * _e2725), fma(_e2714, _e2714, -1f), 1f), 2f) * 3.1415927f)) * ((_e2738 / fma(_e2738, _e2750, _e2748)) * (_e2745 / fma(_e2745, _e2750, _e2748)))); + let _e2787 = max(fma(_e1942.z, _e2686, fma(_e1942.x, _e2682, (_e1942.y * _e2684))), 0f); + let _e2789 = fma((4f * _e2738), _e2787, 0.0001f); + phi_3001_ = vec3(fma((fma((((1f - _e2769) * _e2776) * _e1394), 0.31830987f, ((_e2780 * _e2769) / _e2789)) * (_e2646.member_1.x * _e2646.member_2)), _e2787, _e1951.x), fma((fma((((1f - _e2770) * _e2776) * _e1396), 0.31830987f, ((_e2780 * _e2770) / _e2789)) * (_e2646.member_1.y * _e2646.member_2)), _e2787, _e1951.y), fma((fma((((1f - _e2771) * _e2776) * _e1398), 0.31830987f, ((_e2780 * _e2771) / _e2789)) * (_e2646.member_1.z * _e2646.member_2)), _e2787, _e1951.z)); + phi_3002_ = true; break; } - case 2: { - let _e1076 = abs(_e957.y); - let _e1083 = ((select(select(u32(_e1076), 0u, (_e1076 < 0f)), 4294967295u, (_e1076 > 4294967000f)) % 2u) == 0u); - let _e1085 = (_e1076 % 1f); - if (_e1076 >= 1f) { - let _e1086 = (_e1085 == 0f); - phi_4393_ = select(f32(), 1f, _e1086); - phi_4394_ = select(true, false, _e1086); + case 1: { + if _e323 { + phi_5290_ = (_e2006.member_1 <= (_e117 - 8u)); + } else { + phi_5290_ = false; + } + let _e2391 = phi_5290_; + if _e2391 { + let _e2394 = global.member[_e2006.member_1]; + let _e2399 = global.member[(_e2006.member_1 + 1u)]; + let _e2404 = global.member[(_e2006.member_1 + 2u)]; + let _e2410 = global.member[(_e2006.member_1 + 3u)]; + let _e2415 = global.member[(_e2006.member_1 + 4u)]; + let _e2420 = global.member[(_e2006.member_1 + 5u)]; + let _e2425 = global.member[(_e2006.member_1 + 6u)]; + let _e2431 = global.member[(_e2006.member_1 + 7u)]; + phi_2505_ = type_35(vec3(bitcast(_e2394), bitcast(_e2399), bitcast(_e2404)), vec4(bitcast(_e2410), bitcast(_e2415), bitcast(_e2420), bitcast(_e2425)), bitcast(_e2431)); } else { - phi_4393_ = f32(); - phi_4394_ = true; + phi_2505_ = type_35(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), 1f); } - let _e1090 = phi_4393_; - let _e1092 = phi_4394_; - let _e1093 = select(_e1090, _e1085, _e1092); - if (select(-1f, 1f, (_e957.y >= 0f)) > 0f) { - if _e1083 { - phi_1521_ = _e1093; + let _e2435 = phi_2505_; + let _e2464 = (vec3((_e2067.member.x + fma(_e2106.x, _e2435.member.z, fma(_e2104.x, _e2435.member.y, (_e2102.x * _e2435.member.x)))), (_e2067.member.y + fma(_e2106.y, _e2435.member.z, fma(_e2104.y, _e2435.member.y, (_e2102.y * _e2435.member.x)))), (_e2067.member.z + fma(_e2106.z, _e2435.member.z, fma(_e2104.z, _e2435.member.y, (_e2102.z * _e2435.member.x))))) - _e127); + let _e2471 = sqrt(fma(_e2464.z, _e2464.z, fma(_e2464.x, _e2464.x, (_e2464.y * _e2464.y)))); + let _e2472 = (_e2471 == 0f); + if _e2472 { + phi_2690_ = vec3(); + } else { + if _e2472 { + phi_5336_ = vec3(0f, 0f, 0f); } else { - phi_1521_ = (1f - _e1093); + phi_5336_ = (_e2464 * (1f / _e2471)); } - let _e1100 = phi_1521_; - phi_1527_ = _e1100; - } else { - if _e1083 { - phi_1526_ = (1f - _e1093); + let _e2476 = phi_5336_; + let _e2478 = (_e2435.member_2 / (_e2471 * _e2471)); + let _e2482 = fma(fma(_e1383, _e121.x, -0.4f), _e1406, 0.4f); + let _e2483 = fma(fma(_e1386, _e121.y, -0.4f), _e1406, 0.4f); + let _e2484 = fma(fma(_e1389, _e121.z, -0.4f), _e1406, 0.4f); + let _e2491 = (_e1946 + _e2476); + let _e2498 = sqrt(fma(_e2491.z, _e2491.z, fma(_e2491.x, _e2491.x, (_e2491.y * _e2491.y)))); + if (_e2498 == 0f) { + phi_5371_ = vec3(0f, 0f, 0f); } else { - phi_1526_ = _e1093; + phi_5371_ = (_e2491 * (1f / _e2498)); } - let _e1097 = phi_1526_; - phi_1527_ = _e1097; + let _e2503 = phi_5371_; + let _e2504 = (_e1403 * _e1403); + let _e2515 = max(fma(_e1942.z, _e2503.z, fma(_e1942.x, _e2503.x, (_e1942.y * _e2503.y))), 0f); + let _e2528 = max(fma(_e1942.z, _e1946.z, fma(_e1942.x, _e1946.x, (_e1942.y * _e1946.y))), 0f); + let _e2535 = max(fma(_e1942.z, _e2476.z, fma(_e1942.x, _e2476.x, (_e1942.y * _e2476.y))), 0f); + let _e2536 = fma(_e710.y, _e317.member_4, 1f); + let _e2537 = (_e2536 * _e2536); + let _e2538 = (_e2537 * 0.125f); + let _e2540 = fma(-(_e2537), 0.125f, 1f); + let _e2553 = (1f - max(fma(_e2503.z, _e1946.z, fma(_e2503.x, _e1946.x, (_e2503.y * _e1946.y))), 0f)); + let _e2555 = select(_e2553, 0f, (_e2553 < 0f)); + let _e2558 = pow(select(_e2555, 1f, (_e2555 > 1f)), 5f); + let _e2559 = fma((1f - _e2482), _e2558, _e2482); + let _e2560 = fma((1f - _e2483), _e2558, _e2483); + let _e2561 = fma((1f - _e2484), _e2558, _e2484); + let _e2566 = fma(-(_e710.z), _e317.member_3, 1f); + let _e2570 = (((_e2504 * _e2504) / (pow(fma((_e2515 * _e2515), fma(_e2504, _e2504, -1f), 1f), 2f) * 3.1415927f)) * ((_e2528 / fma(_e2528, _e2540, _e2538)) * (_e2535 / fma(_e2535, _e2540, _e2538)))); + let _e2575 = fma((4f * _e2528), _e2535, 0.0001f); + phi_2690_ = vec3(fma((fma((((1f - _e2559) * _e2566) * _e1394), 0.31830987f, ((_e2570 * _e2559) / _e2575)) * (_e2435.member_1.x * _e2478)), _e2535, _e1951.x), fma((fma((((1f - _e2560) * _e2566) * _e1396), 0.31830987f, ((_e2570 * _e2560) / _e2575)) * (_e2435.member_1.y * _e2478)), _e2535, _e1951.y), fma((fma((((1f - _e2561) * _e2566) * _e1398), 0.31830987f, ((_e2570 * _e2561) / _e2575)) * (_e2435.member_1.z * _e2478)), _e2535, _e1951.z)); } - let _e1102 = phi_1527_; - phi_1531_ = true; - phi_1532_ = _e1102; + let _e2596 = phi_2690_; + phi_3001_ = _e2596; + phi_3002_ = select(true, false, _e2472); break; } - case 0: { - if (_e957.y > 1f) { - phi_4412_ = 0.9999999f; + case 2: { + if (_e117 >= 13u) { + phi_5463_ = (_e2006.member_1 <= (_e117 - 13u)); } else { - phi_4412_ = select(_e957.y, 0.00000011920929f, (_e957.y < 0f)); + phi_5463_ = false; } - let _e1073 = phi_4412_; - phi_1531_ = true; - phi_1532_ = _e1073; - break; - } - default: { - phi_1531_ = false; - phi_1532_ = f32(); - break; - } - } - let _e1121 = phi_1531_; - let _e1123 = phi_1532_; - if _e1121 { - let _e1127 = (_e1064 * f32(_e1005.member_2.x)); - let _e1136 = (_e1123 * f32(_e1005.member_2.y)); - let _e1154 = vec3((f32((select(select(u32(_e1127), 0u, (_e1127 < 0f)), 4294967295u, (_e1127 > 4294967000f)) + _e1005.member_1.x)) / _e515), (f32((select(select(u32(_e1136), 0u, (_e1136 < 0f)), 4294967295u, (_e1136 > 4294967000f)) + _e1005.member_1.y)) / _e517), f32(_e1005.member_3)); - let _e1160 = textureSampleLevel(global_12, global_11, vec2(_e1154.x, _e1154.y), i32(_e1154.z), 0f); - let _e1167 = select(_e124, _e123, vec2((_e318.member_14 == 0u))); - if _e324 { - phi_4444_ = (_e318.member_9 <= (_e118 - 8u)); - } else { - phi_4444_ = false; - } - let _e1172 = phi_4444_; - if _e1172 { - let _e1175 = global.member[_e318.member_9]; - let _e1179 = global.member[(_e318.member_9 + 1u)]; - let _e1184 = global.member[(_e318.member_9 + 2u)]; - let _e1188 = global.member[(_e318.member_9 + 3u)]; - let _e1193 = global.member[(_e318.member_9 + 4u)]; - let _e1197 = global.member[(_e318.member_9 + 5u)]; - let _e1201 = global.member[(_e318.member_9 + 6u)]; - switch bitcast(_e1201) { - case 0: { - phi_1618_ = 0u; - break; - } - case 1: { - phi_1618_ = 1u; - break; - } - case 2: { - phi_1618_ = 2u; - break; - } - default: { - phi_1618_ = 0u; - break; - } - } - let _e1204 = phi_1618_; - let _e1208 = global.member[(_e318.member_9 + 7u)]; - switch bitcast(_e1208) { - case 0: { - phi_1627_ = 0u; - break; - } - case 1: { - phi_1627_ = 1u; - break; - } - case 2: { - phi_1627_ = 2u; - break; - } - default: { - phi_1627_ = 0u; - break; - } - } - let _e1211 = phi_1627_; - phi_1640_ = type_33(type_24(_e1204, _e1211), vec2(_e1175, _e1179), vec2(_e1184, _e1188), _e1193, _e1197); - } else { - phi_1640_ = type_33(type_24(0u, 0u), vec2(0u, 0u), vec2(0u, 0u), 0u, 0u); - } - let _e1215 = phi_1640_; - switch bitcast(_e1215.member.member) { - case 1: { - let _e1256 = abs(_e1167.x); - let _e1258 = (_e1256 % 1f); - if (_e1256 >= 1f) { - let _e1259 = (_e1258 == 0f); - phi_4465_ = select(f32(), 1f, _e1259); - phi_4466_ = select(true, false, _e1259); - } else { - phi_4465_ = f32(); - phi_4466_ = true; - } - let _e1263 = phi_4465_; - let _e1265 = phi_4466_; - let _e1266 = select(_e1263, _e1258, _e1265); - if (select(-1f, 1f, (_e1167.x >= 0f)) > 0f) { - phi_1660_ = _e1266; - } else { - phi_1660_ = (1f - _e1266); - } - let _e1270 = phi_1660_; - phi_1699_ = true; - phi_1700_ = _e1270; - break; + let _e2117 = phi_5463_; + if _e2117 { + let _e2120 = global.member[_e2006.member_1]; + let _e2125 = global.member[(_e2006.member_1 + 1u)]; + let _e2130 = global.member[(_e2006.member_1 + 2u)]; + let _e2136 = global.member[(_e2006.member_1 + 3u)]; + let _e2141 = global.member[(_e2006.member_1 + 4u)]; + let _e2146 = global.member[(_e2006.member_1 + 5u)]; + let _e2152 = global.member[(_e2006.member_1 + 6u)]; + let _e2157 = global.member[(_e2006.member_1 + 7u)]; + let _e2162 = global.member[(_e2006.member_1 + 8u)]; + let _e2167 = global.member[(_e2006.member_1 + 9u)]; + let _e2172 = global.member[(_e2006.member_1 + 10u)]; + let _e2177 = global.member[(_e2006.member_1 + 11u)]; + let _e2183 = global.member[(_e2006.member_1 + 12u)]; + phi_2753_ = type_36(vec3(bitcast(_e2120), bitcast(_e2125), bitcast(_e2130)), vec3(bitcast(_e2136), bitcast(_e2141), bitcast(_e2146)), bitcast(_e2152), bitcast(_e2157), vec4(bitcast(_e2162), bitcast(_e2167), bitcast(_e2172), bitcast(_e2177)), bitcast(_e2183)); + } else { + phi_2753_ = type_36(vec3(0f, 0f, 0f), vec3(0f, -1f, 0f), 1.0471976f, 1.5707964f, vec4(1f, 1f, 1f, 1f), 1f); } - case 2: { - let _e1227 = abs(_e1167.x); - let _e1234 = ((select(select(u32(_e1227), 0u, (_e1227 < 0f)), 4294967295u, (_e1227 > 4294967000f)) % 2u) == 0u); - let _e1236 = (_e1227 % 1f); - if (_e1227 >= 1f) { - let _e1237 = (_e1236 == 0f); - phi_4484_ = select(f32(), 1f, _e1237); - phi_4485_ = select(true, false, _e1237); + let _e2187 = phi_2753_; + let _e2219 = (vec3((_e2067.member.x + fma(_e2106.x, _e2187.member.z, fma(_e2104.x, _e2187.member.y, (_e2102.x * _e2187.member.x)))), (_e2067.member.y + fma(_e2106.y, _e2187.member.z, fma(_e2104.y, _e2187.member.y, (_e2102.y * _e2187.member.x)))), (_e2067.member.z + fma(_e2106.z, _e2187.member.z, fma(_e2104.z, _e2187.member.y, (_e2102.z * _e2187.member.x))))) - _e127); + let _e2226 = sqrt(fma(_e2219.z, _e2219.z, fma(_e2219.x, _e2219.x, (_e2219.y * _e2219.y)))); + let _e2227 = (_e2226 == 0f); + if _e2227 { + phi_2999_ = vec3(); + } else { + if _e2227 { + phi_5513_ = vec3(0f, 0f, 0f); } else { - phi_4484_ = f32(); - phi_4485_ = true; + phi_5513_ = (_e2219 * (1f / _e2226)); } - let _e1241 = phi_4484_; - let _e1243 = phi_4485_; - let _e1244 = select(_e1241, _e1236, _e1243); - if (select(-1f, 1f, (_e1167.x >= 0f)) > 0f) { - if _e1234 { - phi_1689_ = _e1244; - } else { - phi_1689_ = (1f - _e1244); - } - let _e1251 = phi_1689_; - phi_1695_ = _e1251; + let _e2231 = phi_5513_; + let _e2241 = fma(_e2106.x, _e2187.member_1.z, fma(_e2104.x, _e2187.member_1.y, (_e2102.x * _e2187.member_1.x))); + let _e2242 = fma(_e2106.y, _e2187.member_1.z, fma(_e2104.y, _e2187.member_1.y, (_e2102.y * _e2187.member_1.x))); + let _e2243 = fma(_e2106.z, _e2187.member_1.z, fma(_e2104.z, _e2187.member_1.y, (_e2102.z * _e2187.member_1.x))); + let _e2248 = sqrt(fma(_e2243, _e2243, fma(_e2241, _e2241, (_e2242 * _e2242)))); + if (_e2248 == 0f) { + phi_5548_ = vec3(0f, 0f, 0f); } else { - if _e1234 { - phi_1694_ = (1f - _e1244); - } else { - phi_1694_ = _e1244; - } - let _e1248 = phi_1694_; - phi_1695_ = _e1248; + phi_5548_ = (vec3(_e2241, _e2242, _e2243) * (1f / _e2248)); } - let _e1253 = phi_1695_; - phi_1699_ = true; - phi_1700_ = _e1253; - break; - } - case 0: { - if (_e1167.x > 1f) { - phi_4503_ = 0.9999999f; + let _e2253 = phi_5548_; + let _e2265 = ((fma(_e2231.z, _e2253.z, fma(_e2231.x, _e2253.x, (_e2231.y * _e2253.y))) - _e2187.member_3) / (_e2187.member_2 - _e2187.member_3)); + let _e2267 = select(_e2265, 0f, (_e2265 < 0f)); + let _e2270 = (_e2187.member_5 * select(_e2267, 1f, (_e2267 > 1f))); + let _e2274 = fma(fma(_e1383, _e121.x, -0.4f), _e1406, 0.4f); + let _e2275 = fma(fma(_e1386, _e121.y, -0.4f), _e1406, 0.4f); + let _e2276 = fma(fma(_e1389, _e121.z, -0.4f), _e1406, 0.4f); + let _e2283 = (_e1946 + _e2231); + let _e2290 = sqrt(fma(_e2283.z, _e2283.z, fma(_e2283.x, _e2283.x, (_e2283.y * _e2283.y)))); + if (_e2290 == 0f) { + phi_5583_ = vec3(0f, 0f, 0f); } else { - phi_4503_ = select(_e1167.x, 0.00000011920929f, (_e1167.x < 0f)); + phi_5583_ = (_e2283 * (1f / _e2290)); } - let _e1224 = phi_4503_; - phi_1699_ = true; - phi_1700_ = _e1224; - break; - } - default: { - phi_1699_ = false; - phi_1700_ = f32(); - break; + let _e2295 = phi_5583_; + let _e2296 = (_e1403 * _e1403); + let _e2307 = max(fma(_e1942.z, _e2295.z, fma(_e1942.x, _e2295.x, (_e1942.y * _e2295.y))), 0f); + let _e2320 = max(fma(_e1942.z, _e1946.z, fma(_e1942.x, _e1946.x, (_e1942.y * _e1946.y))), 0f); + let _e2324 = max(fma(_e1942.z, _e2231.z, fma(_e1942.x, _e2231.x, (_e1942.y * _e2231.y))), 0f); + let _e2325 = fma(_e710.y, _e317.member_4, 1f); + let _e2326 = (_e2325 * _e2325); + let _e2327 = (_e2326 * 0.125f); + let _e2329 = fma(-(_e2326), 0.125f, 1f); + let _e2342 = (1f - max(fma(_e2295.z, _e1946.z, fma(_e2295.x, _e1946.x, (_e2295.y * _e1946.y))), 0f)); + let _e2344 = select(_e2342, 0f, (_e2342 < 0f)); + let _e2347 = pow(select(_e2344, 1f, (_e2344 > 1f)), 5f); + let _e2348 = fma((1f - _e2274), _e2347, _e2274); + let _e2349 = fma((1f - _e2275), _e2347, _e2275); + let _e2350 = fma((1f - _e2276), _e2347, _e2276); + let _e2355 = fma(-(_e710.z), _e317.member_3, 1f); + let _e2359 = (((_e2296 * _e2296) / (pow(fma((_e2307 * _e2307), fma(_e2296, _e2296, -1f), 1f), 2f) * 3.1415927f)) * ((_e2320 / fma(_e2320, _e2329, _e2327)) * (_e2324 / fma(_e2324, _e2329, _e2327)))); + let _e2364 = fma((4f * _e2320), _e2324, 0.0001f); + phi_2999_ = vec3(fma((fma((((1f - _e2348) * _e2355) * _e1394), 0.31830987f, ((_e2359 * _e2348) / _e2364)) * (_e2187.member_4.x * _e2270)), _e2324, _e1951.x), fma((fma((((1f - _e2349) * _e2355) * _e1396), 0.31830987f, ((_e2359 * _e2349) / _e2364)) * (_e2187.member_4.y * _e2270)), _e2324, _e1951.y), fma((fma((((1f - _e2350) * _e2355) * _e1398), 0.31830987f, ((_e2359 * _e2350) / _e2364)) * (_e2187.member_4.z * _e2270)), _e2324, _e1951.z)); } + let _e2385 = phi_2999_; + phi_3001_ = _e2385; + phi_3002_ = select(true, false, _e2227); + break; } - let _e1272 = phi_1699_; - let _e1274 = phi_1700_; - if _e1272 { - switch bitcast(_e1215.member.member_1) { - case 1: { - let _e1315 = abs(_e1167.y); - let _e1317 = (_e1315 % 1f); - if (_e1315 >= 1f) { - let _e1318 = (_e1317 == 0f); - phi_4517_ = select(f32(), 1f, _e1318); - phi_4518_ = select(true, false, _e1318); - } else { - phi_4517_ = f32(); - phi_4518_ = true; - } - let _e1322 = phi_4517_; - let _e1324 = phi_4518_; - let _e1325 = select(_e1322, _e1317, _e1324); - if (select(-1f, 1f, (_e1167.y >= 0f)) > 0f) { - phi_1724_ = _e1325; - } else { - phi_1724_ = (1f - _e1325); - } - let _e1329 = phi_1724_; - phi_1763_ = true; - phi_1764_ = _e1329; - break; - } - case 2: { - let _e1286 = abs(_e1167.y); - let _e1293 = ((select(select(u32(_e1286), 0u, (_e1286 < 0f)), 4294967295u, (_e1286 > 4294967000f)) % 2u) == 0u); - let _e1295 = (_e1286 % 1f); - if (_e1286 >= 1f) { - let _e1296 = (_e1295 == 0f); - phi_4536_ = select(f32(), 1f, _e1296); - phi_4537_ = select(true, false, _e1296); - } else { - phi_4536_ = f32(); - phi_4537_ = true; - } - let _e1300 = phi_4536_; - let _e1302 = phi_4537_; - let _e1303 = select(_e1300, _e1295, _e1302); - if (select(-1f, 1f, (_e1167.y >= 0f)) > 0f) { - if _e1293 { - phi_1753_ = _e1303; - } else { - phi_1753_ = (1f - _e1303); - } - let _e1310 = phi_1753_; - phi_1759_ = _e1310; - } else { - if _e1293 { - phi_1758_ = (1f - _e1303); - } else { - phi_1758_ = _e1303; - } - let _e1307 = phi_1758_; - phi_1759_ = _e1307; - } - let _e1312 = phi_1759_; - phi_1763_ = true; - phi_1764_ = _e1312; - break; - } - case 0: { - if (_e1167.y > 1f) { - phi_4555_ = 0.9999999f; - } else { - phi_4555_ = select(_e1167.y, 0.00000011920929f, (_e1167.y < 0f)); - } - let _e1283 = phi_4555_; - phi_1763_ = true; - phi_1764_ = _e1283; - break; - } - default: { - phi_1763_ = false; - phi_1764_ = f32(); - break; - } - } - let _e1331 = phi_1763_; - let _e1333 = phi_1764_; - if _e1331 { - let _e1337 = (_e1274 * f32(_e1215.member_2.x)); - let _e1346 = (_e1333 * f32(_e1215.member_2.y)); - let _e1364 = vec3((f32((select(select(u32(_e1337), 0u, (_e1337 < 0f)), 4294967295u, (_e1337 > 4294967000f)) + _e1215.member_1.x)) / _e515), (f32((select(select(u32(_e1346), 0u, (_e1346 < 0f)), 4294967295u, (_e1346 > 4294967000f)) + _e1215.member_1.y)) / _e517), f32(_e1215.member_3)); - let _e1370 = textureSampleLevel(global_12, global_11, vec2(_e1364.x, _e1364.y), i32(_e1364.z), 0f); - let _e1373 = select(_e1370, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_9 == 4294967295u))); - if _e951 { - phi_1861_ = vec3(0f, 0f, 0f); - phi_1862_ = _e125; - } else { - let _e1377 = fma(_e953.x, 2f, -1f); - let _e1378 = fma(_e953.y, 2f, -1f); - let _e1379 = fma(_e953.z, 2f, -1f); - let _e1384 = sqrt(fma(_e1379, _e1379, fma(_e1377, _e1377, (_e1378 * _e1378)))); - if (_e1384 == 0f) { - phi_4609_ = vec3(0f, 0f, 0f); - } else { - phi_4609_ = (vec3(_e1377, _e1378, _e1379) * (1f / _e1384)); - } - let _e1389 = phi_4609_; - let _e1396 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); - if (_e1396 == 0f) { - phi_4644_ = vec3(0f, 0f, 0f); - } else { - phi_4644_ = (_e126 * (1f / _e1396)); - } - let _e1401 = phi_4644_; - let _e1408 = sqrt(fma(_e127.z, _e127.z, fma(_e127.x, _e127.x, (_e127.y * _e127.y)))); - if (_e1408 == 0f) { - phi_4679_ = vec3(0f, 0f, 0f); - } else { - phi_4679_ = (_e127 * (1f / _e1408)); - } - let _e1413 = phi_4679_; - let _e1420 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); - if (_e1420 == 0f) { - phi_4714_ = vec3(0f, 0f, 0f); - } else { - phi_4714_ = (_e125 * (1f / _e1420)); - } - let _e1425 = phi_4714_; - let _e1444 = fma(_e1425.x, _e1389.z, fma(_e1401.x, _e1389.x, (_e1413.x * _e1389.y))); - let _e1445 = fma(_e1425.y, _e1389.z, fma(_e1401.y, _e1389.x, (_e1413.y * _e1389.y))); - let _e1446 = fma(_e1425.z, _e1389.z, fma(_e1401.z, _e1389.x, (_e1413.z * _e1389.y))); - let _e1451 = sqrt(fma(_e1446, _e1446, fma(_e1444, _e1444, (_e1445 * _e1445)))); - if (_e1451 == 0f) { - phi_4749_ = vec3(0f, 0f, 0f); - } else { - phi_4749_ = (vec3(_e1444, _e1445, _e1446) * (1f / _e1451)); - } - let _e1456 = phi_4749_; - phi_1861_ = _e1389; - phi_1862_ = _e1456; - } - let _e1458 = phi_1861_; - let _e1460 = phi_1862_; - let _e1464 = (_e533.x * _e318.member_2.x); - let _e1467 = (_e533.y * _e318.member_2.y); - let _e1470 = (_e533.z * _e318.member_2.z); - let _e1475 = (_e1464 * _e122.x); - let _e1477 = (_e1467 * _e122.y); - let _e1479 = (_e1470 * _e122.z); - let _e1484 = (_e743.y * _e318.member_4); - let _e1487 = (_e743.z * _e318.member_3); - let _e1491 = fma(_e318.member_16, (select(_e1160, vec4(1f, 1f, 1f, 1f), vec4((_e318.member_8 == 4294967295u))).x - 1f), 1f); - let _e1497 = (_e1373.x * _e318.member.x); - let _e1499 = (_e1373.y * _e318.member.y); - let _e1501 = (_e1373.z * _e318.member.z); - let _e1506 = textureSampleLevel(global_13, global_14, _e1460, 0f); - if (_e118 >= 83u) { - phi_4781_ = (_e119 <= (_e118 - 83u)); - } else { - phi_4781_ = false; - } - let _e1514 = phi_4781_; - if _e1514 { - let _e1517 = global.member[_e119]; - let _e1522 = global.member[(_e119 + 1u)]; - let _e1527 = global.member[(_e119 + 2u)]; - let _e1532 = global.member[(_e119 + 3u)]; - let _e1538 = global.member[(_e119 + 4u)]; - let _e1543 = global.member[(_e119 + 5u)]; - let _e1548 = global.member[(_e119 + 6u)]; - let _e1553 = global.member[(_e119 + 7u)]; - let _e1559 = global.member[(_e119 + 8u)]; - let _e1564 = global.member[(_e119 + 9u)]; - let _e1569 = global.member[(_e119 + 10u)]; - let _e1574 = global.member[(_e119 + 11u)]; - let _e1580 = global.member[(_e119 + 12u)]; - let _e1585 = global.member[(_e119 + 13u)]; - let _e1590 = global.member[(_e119 + 14u)]; - let _e1595 = global.member[(_e119 + 15u)]; - let _e1602 = global.member[(_e119 + 16u)]; - let _e1607 = global.member[(_e119 + 17u)]; - let _e1612 = global.member[(_e119 + 18u)]; - let _e1617 = global.member[(_e119 + 19u)]; - let _e1623 = global.member[(_e119 + 20u)]; - let _e1628 = global.member[(_e119 + 21u)]; - let _e1633 = global.member[(_e119 + 22u)]; - let _e1638 = global.member[(_e119 + 23u)]; - let _e1644 = global.member[(_e119 + 24u)]; - let _e1649 = global.member[(_e119 + 25u)]; - let _e1654 = global.member[(_e119 + 26u)]; - let _e1659 = global.member[(_e119 + 27u)]; - let _e1665 = global.member[(_e119 + 28u)]; - let _e1670 = global.member[(_e119 + 29u)]; - let _e1675 = global.member[(_e119 + 30u)]; - let _e1680 = global.member[(_e119 + 31u)]; - let _e1687 = global.member[(_e119 + 32u)]; - let _e1692 = global.member[(_e119 + 33u)]; - let _e1697 = global.member[(_e119 + 34u)]; - local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_2068_ = type_24(0u, 6u); - loop { - let _e1702 = phi_2068_; - if (_e1702.member < _e1702.member_1) { - phi_2084_ = type_24((_e1702.member + 1u), _e1702.member_1); - phi_2085_ = type_24(1u, _e1702.member); - } else { - phi_2084_ = _e1702; - phi_2085_ = type_24(0u, type_24().member_1); - } - let _e1715 = phi_2084_; - let _e1717 = phi_2085_; - switch bitcast(_e1717.member) { - case 0: { - let _e1744 = local_1; - local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_2098_ = type_24(0u, 8u); - loop { - let _e1747 = phi_2098_; - if (_e1747.member < _e1747.member_1) { - phi_2114_ = type_24((_e1747.member + 1u), _e1747.member_1); - phi_2115_ = type_24(1u, _e1747.member); - } else { - phi_2114_ = _e1747; - phi_2115_ = type_24(0u, type_24().member_1); - } - let _e1760 = phi_2114_; - let _e1762 = phi_2115_; - switch bitcast(_e1762.member) { - case 0: { - let _e1784 = local; - phi_2141_ = type_22(type_20(vec4(bitcast(_e1517), bitcast(_e1522), bitcast(_e1527), bitcast(_e1532)), vec4(bitcast(_e1538), bitcast(_e1543), bitcast(_e1548), bitcast(_e1553)), vec4(bitcast(_e1559), bitcast(_e1564), bitcast(_e1569), bitcast(_e1574)), vec4(bitcast(_e1580), bitcast(_e1585), bitcast(_e1590), bitcast(_e1595))), type_20(vec4(bitcast(_e1602), bitcast(_e1607), bitcast(_e1612), bitcast(_e1617)), vec4(bitcast(_e1623), bitcast(_e1628), bitcast(_e1633), bitcast(_e1638)), vec4(bitcast(_e1644), bitcast(_e1649), bitcast(_e1654), bitcast(_e1659)), vec4(bitcast(_e1665), bitcast(_e1670), bitcast(_e1675), bitcast(_e1680))), type_21(_e1784, _e1744), vec3(bitcast(_e1687), bitcast(_e1692), bitcast(_e1697))); - phi_2142_ = false; - phi_2099_ = type_24(); - break; - } - case 1: { - let _e1767 = ((_e119 + 59u) + (_e1762.member_1 * 3u)); - let _e1770 = global.member[_e1767]; - let _e1775 = global.member[(_e1767 + 1u)]; - let _e1780 = global.member[(_e1767 + 2u)]; - local[_e1762.member_1] = vec3(bitcast(_e1770), bitcast(_e1775), bitcast(_e1780)); - phi_2141_ = type_22(); - phi_2142_ = true; - phi_2099_ = _e1760; - break; - } - default: { - phi_2141_ = type_22(); - phi_2142_ = false; - phi_2099_ = type_24(); - break; - } - } - let _e1788 = phi_2141_; - let _e1790 = phi_2142_; - let _e1792 = phi_2099_; - local_2 = _e1788; - continue; - continuing { - phi_2098_ = _e1792; - break if !(_e1790); - } - } - let _e3177 = local_2; - phi_2162_ = _e3177; - phi_2163_ = false; - phi_2069_ = type_24(); - break; - } - case 1: { - let _e1722 = ((_e119 + 35u) + (_e1717.member_1 * 4u)); - let _e1725 = global.member[_e1722]; - let _e1730 = global.member[(_e1722 + 1u)]; - let _e1735 = global.member[(_e1722 + 2u)]; - let _e1740 = global.member[(_e1722 + 3u)]; - local_1[_e1717.member_1] = vec4(bitcast(_e1725), bitcast(_e1730), bitcast(_e1735), bitcast(_e1740)); - phi_2162_ = type_22(); - phi_2163_ = true; - phi_2069_ = _e1715; - break; - } - default: { - phi_2162_ = type_22(); - phi_2163_ = false; - phi_2069_ = type_24(); - break; - } - } - let _e1795 = phi_2162_; - let _e1797 = phi_2163_; - let _e1799 = phi_2069_; - local_3 = _e1795; - continue; - continuing { - phi_2068_ = _e1799; - break if !(_e1797); - } - } - let _e3182 = local_3; - phi_2168_ = _e3182; - } else { - phi_2168_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e1802 = phi_2168_; - let _e1804 = (_e1802.member_3 - _e128); - let _e1811 = sqrt(fma(_e1804.z, _e1804.z, fma(_e1804.x, _e1804.x, (_e1804.y * _e1804.y)))); - let _e1812 = (_e1811 == 0f); - if _e1812 { - phi_4853_ = vec3(0f, 0f, 0f); - } else { - phi_4853_ = (_e1804 * (1f / _e1811)); - } - let _e1816 = phi_4853_; - let _e1817 = -(_e1816); - let _e1824 = sqrt(fma(_e1460.z, _e1460.z, fma(_e1460.x, _e1460.x, (_e1460.y * _e1460.y)))); - let _e1825 = (_e1824 == 0f); - if _e1825 { - phi_4912_ = vec3(0f, 0f, 0f); - } else { - phi_4912_ = (_e1460 * (1f / _e1824)); - } - let _e1829 = phi_4912_; - let _e1839 = (2f * fma(_e1829.z, _e1817.z, fma(_e1829.x, _e1817.x, (_e1829.y * _e1817.y)))); - let _e1846 = textureSampleLevel(global_15, global_16, (_e1817 - vec3((_e1839 * _e1829.x), (_e1839 * _e1829.y), (_e1839 * _e1829.z))), (_e1484 * 4f)); - if _e1812 { - phi_4986_ = vec3(0f, 0f, 0f); - } else { - phi_4986_ = (_e1804 * (1f / _e1811)); - } - let _e1853 = phi_4986_; - let _e1862 = textureSampleLevel(global_17, global_18, vec2(max(fma(_e1460.z, _e1853.z, fma(_e1460.x, _e1853.x, (_e1460.y * _e1853.y))), 0f), _e1484), 0f); - switch bitcast(_e179.member_3) { - case 0: { - if _e318.member_15 { - if _e1825 { - phi_5036_ = vec3(0f, 0f, 0f); - } else { - phi_5036_ = (_e1460 * (1f / _e1824)); - } - let _e2031 = phi_5036_; - if _e1812 { - phi_5071_ = vec3(0f, 0f, 0f); - } else { - phi_5071_ = (_e1804 * (1f / _e1811)); - } - let _e2035 = phi_5071_; - phi_2208_ = type_24(0u, _e179.member_2.member_1); - phi_2211_ = vec3(0f, 0f, 0f); - loop { - let _e2038 = phi_2208_; - let _e2040 = phi_2211_; - if (_e2038.member < _e2038.member_1) { - phi_2226_ = type_24((_e2038.member + 1u), _e2038.member_1); - phi_2227_ = type_24(1u, _e2038.member); - } else { - phi_2226_ = _e2038; - phi_2227_ = type_24(0u, type_24().member_1); - } - let _e2053 = phi_2226_; - let _e2055 = phi_2227_; - switch bitcast(_e2055.member) { - case 0: { - phi_3101_ = false; - phi_3102_ = true; - phi_3103_ = false; - phi_3104_ = type_24(); - phi_3105_ = vec3(); - break; - } - case 1: { - if (_e2055.member_1 >= _e179.member_2.member_1) { - phi_5088_ = 4294967295u; - } else { - phi_5088_ = (_e179.member_2.member + _e2055.member_1); - } - let _e2062 = phi_5088_; - if (_e118 >= 1u) { - phi_5107_ = (_e2062 <= (_e118 - 1u)); - } else { - phi_5107_ = false; - } - let _e2067 = phi_5107_; - if _e2067 { - let _e2070 = global.member[_e2062]; - phi_2244_ = _e2070; - } else { - phi_2244_ = 4294967295u; - } - let _e2072 = phi_2244_; - let _e2073 = (_e2072 == 4294967295u); - if _e2073 { - phi_3097_ = false; - phi_3098_ = type_24(); - phi_3099_ = vec3(); - phi_3100_ = false; - } else { - if (_e118 >= 3u) { - phi_5139_ = (_e2072 <= (_e118 - 3u)); - } else { - phi_5139_ = false; - } - let _e2078 = phi_5139_; - if _e2078 { - let _e2081 = global.member[_e2072]; - switch bitcast(_e2081) { - case 0: { - phi_2261_ = 0u; - break; - } - case 1: { - phi_2261_ = 1u; - break; - } - case 2: { - phi_2261_ = 2u; - break; - } - default: { - phi_2261_ = 0u; - break; - } - } - let _e2084 = phi_2261_; - let _e2088 = global.member[(_e2072 + 1u)]; - let _e2092 = global.member[(_e2072 + 2u)]; - phi_2271_ = type_34(_e2084, _e2088, _e2092); - } else { - phi_2271_ = type_34(0u, 4294967295u, 4294967295u); - } - let _e2095 = phi_2271_; - if (_e118 >= 10u) { - phi_5169_ = (_e2095.member_2 <= (_e118 - 10u)); - } else { - phi_5169_ = false; - } - let _e2101 = phi_5169_; - if _e2101 { - let _e2104 = global.member[_e2095.member_2]; - let _e2109 = global.member[(_e2095.member_2 + 1u)]; - let _e2114 = global.member[(_e2095.member_2 + 2u)]; - let _e2120 = global.member[(_e2095.member_2 + 3u)]; - let _e2125 = global.member[(_e2095.member_2 + 4u)]; - let _e2130 = global.member[(_e2095.member_2 + 5u)]; - let _e2135 = global.member[(_e2095.member_2 + 6u)]; - let _e2141 = global.member[(_e2095.member_2 + 7u)]; - let _e2146 = global.member[(_e2095.member_2 + 8u)]; - let _e2151 = global.member[(_e2095.member_2 + 9u)]; - phi_2321_ = type_28(vec3(bitcast(_e2104), bitcast(_e2109), bitcast(_e2114)), vec4(bitcast(_e2120), bitcast(_e2125), bitcast(_e2130), bitcast(_e2135)), vec3(bitcast(_e2141), bitcast(_e2146), bitcast(_e2151))); - } else { - phi_2321_ = type_28(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); - } - let _e2156 = phi_2321_; - let _e2164 = (_e2156.member_1.x + _e2156.member_1.x); - let _e2165 = (_e2156.member_1.y + _e2156.member_1.y); - let _e2166 = (_e2156.member_1.z + _e2156.member_1.z); - let _e2168 = (_e2156.member_1.z * _e2166); - let _e2169 = (_e2156.member_1.w * _e2164); - let _e2170 = (_e2156.member_1.w * _e2165); - let _e2171 = (_e2156.member_1.w * _e2166); - let _e2191 = (vec4((1f - fma(_e2156.member_1.y, _e2165, _e2168)), fma(_e2156.member_1.x, _e2165, _e2171), fma(_e2156.member_1.x, _e2166, -(_e2170)), 0f) * _e2156.member_2.x); - let _e2193 = (vec4(fma(_e2156.member_1.x, _e2165, -(_e2171)), (1f - fma(_e2156.member_1.x, _e2164, _e2168)), fma(_e2156.member_1.y, _e2166, _e2169), 0f) * _e2156.member_2.y); - let _e2195 = (vec4(fma(_e2156.member_1.x, _e2166, _e2170), fma(_e2156.member_1.y, _e2166, -(_e2169)), (1f - fma(_e2156.member_1.x, _e2164, (_e2156.member_1.y * _e2165))), 0f) * _e2156.member_2.z); - switch bitcast(_e2095.member) { - case 0: { - if _e324 { - phi_5250_ = (_e2095.member_1 <= (_e118 - 8u)); - } else { - phi_5250_ = false; - } - let _e2693 = phi_5250_; - if _e2693 { - let _e2696 = global.member[_e2095.member_1]; - let _e2701 = global.member[(_e2095.member_1 + 1u)]; - let _e2706 = global.member[(_e2095.member_1 + 2u)]; - let _e2712 = global.member[(_e2095.member_1 + 3u)]; - let _e2717 = global.member[(_e2095.member_1 + 4u)]; - let _e2722 = global.member[(_e2095.member_1 + 5u)]; - let _e2727 = global.member[(_e2095.member_1 + 6u)]; - let _e2733 = global.member[(_e2095.member_1 + 7u)]; - phi_2369_ = type_35(vec3(bitcast(_e2696), bitcast(_e2701), bitcast(_e2706)), vec4(bitcast(_e2712), bitcast(_e2717), bitcast(_e2722), bitcast(_e2727)), bitcast(_e2733)); - } else { - phi_2369_ = type_35(vec3(0f, -1f, 0f), vec4(1f, 1f, 1f, 1f), 1f); - } - let _e2737 = phi_2369_; - let _e2759 = fma(_e2195.x, _e2737.member.z, fma(_e2193.x, _e2737.member.y, (_e2191.x * _e2737.member.x))); - let _e2760 = fma(_e2195.y, _e2737.member.z, fma(_e2193.y, _e2737.member.y, (_e2191.y * _e2737.member.x))); - let _e2761 = fma(_e2195.z, _e2737.member.z, fma(_e2193.z, _e2737.member.y, (_e2191.z * _e2737.member.x))); - let _e2766 = sqrt(fma(_e2761, _e2761, fma(_e2759, _e2759, (_e2760 * _e2760)))); - if (_e2766 == 0f) { - phi_5298_ = vec3(0f, 0f, 0f); - } else { - phi_5298_ = (vec3(_e2759, _e2760, _e2761) * (1f / _e2766)); - } - let _e2771 = phi_5298_; - let _e2773 = -(_e2771.x); - let _e2775 = -(_e2771.y); - let _e2777 = -(_e2771.z); - let _e2778 = -(_e2771); - let _e2782 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); - let _e2783 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); - let _e2784 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); - let _e2792 = (_e2035 + vec3(_e2773, _e2775, _e2777)); - let _e2799 = sqrt(fma(_e2792.z, _e2792.z, fma(_e2792.x, _e2792.x, (_e2792.y * _e2792.y)))); - if (_e2799 == 0f) { - phi_5333_ = vec3(0f, 0f, 0f); - } else { - phi_5333_ = (_e2792 * (1f / _e2799)); - } - let _e2804 = phi_5333_; - let _e2805 = (_e1484 * _e1484); - let _e2816 = max(fma(_e2031.z, _e2804.z, fma(_e2031.x, _e2804.x, (_e2031.y * _e2804.y))), 0f); - let _e2829 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); - let _e2836 = max(fma(_e2031.z, _e2778.z, fma(_e2031.x, _e2778.x, (_e2031.y * _e2778.y))), 0f); - let _e2837 = fma(_e743.y, _e318.member_4, 1f); - let _e2838 = (_e2837 * _e2837); - let _e2839 = (_e2838 * 0.125f); - let _e2841 = fma(-(_e2838), 0.125f, 1f); - let _e2854 = (1f - max(fma(_e2804.z, _e2035.z, fma(_e2804.x, _e2035.x, (_e2804.y * _e2035.y))), 0f)); - let _e2856 = select(_e2854, 0f, (_e2854 < 0f)); - let _e2859 = pow(select(_e2856, 1f, (_e2856 > 1f)), 5f); - let _e2860 = fma((1f - _e2782), _e2859, _e2782); - let _e2861 = fma((1f - _e2783), _e2859, _e2783); - let _e2862 = fma((1f - _e2784), _e2859, _e2784); - let _e2867 = fma(-(_e743.z), _e318.member_3, 1f); - let _e2871 = (((_e2805 * _e2805) / (pow(fma((_e2816 * _e2816), fma(_e2805, _e2805, -1f), 1f), 2f) * 3.1415927f)) * ((_e2829 / fma(_e2829, _e2841, _e2839)) * (_e2836 / fma(_e2836, _e2841, _e2839)))); - let _e2878 = max(fma(_e2031.z, _e2777, fma(_e2031.x, _e2773, (_e2031.y * _e2775))), 0f); - let _e2880 = fma((4f * _e2829), _e2878, 0.0001f); - phi_3077_ = false; - phi_3078_ = true; - phi_3079_ = vec3(fma((fma((((1f - _e2860) * _e2867) * _e1475), 0.31830987f, ((_e2871 * _e2860) / _e2880)) * (_e2737.member_1.x * _e2737.member_2)), _e2878, _e2040.x), fma((fma((((1f - _e2861) * _e2867) * _e1477), 0.31830987f, ((_e2871 * _e2861) / _e2880)) * (_e2737.member_1.y * _e2737.member_2)), _e2878, _e2040.y), fma((fma((((1f - _e2862) * _e2867) * _e1479), 0.31830987f, ((_e2871 * _e2862) / _e2880)) * (_e2737.member_1.z * _e2737.member_2)), _e2878, _e2040.z)); - phi_3080_ = false; - break; - } - case 1: { - if _e324 { - phi_5425_ = (_e2095.member_1 <= (_e118 - 8u)); - } else { - phi_5425_ = false; - } - let _e2481 = phi_5425_; - if _e2481 { - let _e2484 = global.member[_e2095.member_1]; - let _e2489 = global.member[(_e2095.member_1 + 1u)]; - let _e2494 = global.member[(_e2095.member_1 + 2u)]; - let _e2500 = global.member[(_e2095.member_1 + 3u)]; - let _e2505 = global.member[(_e2095.member_1 + 4u)]; - let _e2510 = global.member[(_e2095.member_1 + 5u)]; - let _e2515 = global.member[(_e2095.member_1 + 6u)]; - let _e2521 = global.member[(_e2095.member_1 + 7u)]; - phi_2573_ = type_35(vec3(bitcast(_e2484), bitcast(_e2489), bitcast(_e2494)), vec4(bitcast(_e2500), bitcast(_e2505), bitcast(_e2510), bitcast(_e2515)), bitcast(_e2521)); - } else { - phi_2573_ = type_35(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), 1f); - } - let _e2525 = phi_2573_; - let _e2554 = (vec3((_e2156.member.x + fma(_e2195.x, _e2525.member.z, fma(_e2193.x, _e2525.member.y, (_e2191.x * _e2525.member.x)))), (_e2156.member.y + fma(_e2195.y, _e2525.member.z, fma(_e2193.y, _e2525.member.y, (_e2191.y * _e2525.member.x)))), (_e2156.member.z + fma(_e2195.z, _e2525.member.z, fma(_e2193.z, _e2525.member.y, (_e2191.z * _e2525.member.x))))) - _e128); - let _e2561 = sqrt(fma(_e2554.z, _e2554.z, fma(_e2554.x, _e2554.x, (_e2554.y * _e2554.y)))); - let _e2562 = (_e2561 == 0f); - if _e2562 { - phi_2762_ = vec3(); - } else { - if _e2562 { - phi_5471_ = vec3(0f, 0f, 0f); - } else { - phi_5471_ = (_e2554 * (1f / _e2561)); - } - let _e2566 = phi_5471_; - let _e2568 = (_e2525.member_2 / (_e2561 * _e2561)); - let _e2572 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); - let _e2573 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); - let _e2574 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); - let _e2581 = (_e2035 + _e2566); - let _e2588 = sqrt(fma(_e2581.z, _e2581.z, fma(_e2581.x, _e2581.x, (_e2581.y * _e2581.y)))); - if (_e2588 == 0f) { - phi_5506_ = vec3(0f, 0f, 0f); - } else { - phi_5506_ = (_e2581 * (1f / _e2588)); - } - let _e2593 = phi_5506_; - let _e2594 = (_e1484 * _e1484); - let _e2605 = max(fma(_e2031.z, _e2593.z, fma(_e2031.x, _e2593.x, (_e2031.y * _e2593.y))), 0f); - let _e2618 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); - let _e2625 = max(fma(_e2031.z, _e2566.z, fma(_e2031.x, _e2566.x, (_e2031.y * _e2566.y))), 0f); - let _e2626 = fma(_e743.y, _e318.member_4, 1f); - let _e2627 = (_e2626 * _e2626); - let _e2628 = (_e2627 * 0.125f); - let _e2630 = fma(-(_e2627), 0.125f, 1f); - let _e2643 = (1f - max(fma(_e2593.z, _e2035.z, fma(_e2593.x, _e2035.x, (_e2593.y * _e2035.y))), 0f)); - let _e2645 = select(_e2643, 0f, (_e2643 < 0f)); - let _e2648 = pow(select(_e2645, 1f, (_e2645 > 1f)), 5f); - let _e2649 = fma((1f - _e2572), _e2648, _e2572); - let _e2650 = fma((1f - _e2573), _e2648, _e2573); - let _e2651 = fma((1f - _e2574), _e2648, _e2574); - let _e2656 = fma(-(_e743.z), _e318.member_3, 1f); - let _e2660 = (((_e2594 * _e2594) / (pow(fma((_e2605 * _e2605), fma(_e2594, _e2594, -1f), 1f), 2f) * 3.1415927f)) * ((_e2618 / fma(_e2618, _e2630, _e2628)) * (_e2625 / fma(_e2625, _e2630, _e2628)))); - let _e2665 = fma((4f * _e2618), _e2625, 0.0001f); - phi_2762_ = vec3(fma((fma((((1f - _e2649) * _e2656) * _e1475), 0.31830987f, ((_e2660 * _e2649) / _e2665)) * (_e2525.member_1.x * _e2568)), _e2625, _e2040.x), fma((fma((((1f - _e2650) * _e2656) * _e1477), 0.31830987f, ((_e2660 * _e2650) / _e2665)) * (_e2525.member_1.y * _e2568)), _e2625, _e2040.y), fma((fma((((1f - _e2651) * _e2656) * _e1479), 0.31830987f, ((_e2660 * _e2651) / _e2665)) * (_e2525.member_1.z * _e2568)), _e2625, _e2040.z)); - } - let _e2686 = phi_2762_; - phi_3077_ = false; - phi_3078_ = select(true, false, _e2562); - phi_3079_ = _e2686; - phi_3080_ = select(false, true, _e2562); - break; - } - case 2: { - if (_e118 >= 13u) { - phi_5598_ = (_e2095.member_1 <= (_e118 - 13u)); - } else { - phi_5598_ = false; - } - let _e2206 = phi_5598_; - if _e2206 { - let _e2209 = global.member[_e2095.member_1]; - let _e2214 = global.member[(_e2095.member_1 + 1u)]; - let _e2219 = global.member[(_e2095.member_1 + 2u)]; - let _e2225 = global.member[(_e2095.member_1 + 3u)]; - let _e2230 = global.member[(_e2095.member_1 + 4u)]; - let _e2235 = global.member[(_e2095.member_1 + 5u)]; - let _e2241 = global.member[(_e2095.member_1 + 6u)]; - let _e2246 = global.member[(_e2095.member_1 + 7u)]; - let _e2251 = global.member[(_e2095.member_1 + 8u)]; - let _e2256 = global.member[(_e2095.member_1 + 9u)]; - let _e2261 = global.member[(_e2095.member_1 + 10u)]; - let _e2266 = global.member[(_e2095.member_1 + 11u)]; - let _e2272 = global.member[(_e2095.member_1 + 12u)]; - phi_2824_ = type_36(vec3(bitcast(_e2209), bitcast(_e2214), bitcast(_e2219)), vec3(bitcast(_e2225), bitcast(_e2230), bitcast(_e2235)), bitcast(_e2241), bitcast(_e2246), vec4(bitcast(_e2251), bitcast(_e2256), bitcast(_e2261), bitcast(_e2266)), bitcast(_e2272)); - } else { - phi_2824_ = type_36(vec3(0f, 0f, 0f), vec3(0f, -1f, 0f), 1.0471976f, 1.5707964f, vec4(1f, 1f, 1f, 1f), 1f); - } - let _e2276 = phi_2824_; - let _e2308 = (vec3((_e2156.member.x + fma(_e2195.x, _e2276.member.z, fma(_e2193.x, _e2276.member.y, (_e2191.x * _e2276.member.x)))), (_e2156.member.y + fma(_e2195.y, _e2276.member.z, fma(_e2193.y, _e2276.member.y, (_e2191.y * _e2276.member.x)))), (_e2156.member.z + fma(_e2195.z, _e2276.member.z, fma(_e2193.z, _e2276.member.y, (_e2191.z * _e2276.member.x))))) - _e128); - let _e2315 = sqrt(fma(_e2308.z, _e2308.z, fma(_e2308.x, _e2308.x, (_e2308.y * _e2308.y)))); - let _e2316 = (_e2315 == 0f); - if _e2316 { - phi_3076_ = vec3(); - } else { - if _e2316 { - phi_5648_ = vec3(0f, 0f, 0f); - } else { - phi_5648_ = (_e2308 * (1f / _e2315)); - } - let _e2320 = phi_5648_; - let _e2330 = fma(_e2195.x, _e2276.member_1.z, fma(_e2193.x, _e2276.member_1.y, (_e2191.x * _e2276.member_1.x))); - let _e2331 = fma(_e2195.y, _e2276.member_1.z, fma(_e2193.y, _e2276.member_1.y, (_e2191.y * _e2276.member_1.x))); - let _e2332 = fma(_e2195.z, _e2276.member_1.z, fma(_e2193.z, _e2276.member_1.y, (_e2191.z * _e2276.member_1.x))); - let _e2337 = sqrt(fma(_e2332, _e2332, fma(_e2330, _e2330, (_e2331 * _e2331)))); - if (_e2337 == 0f) { - phi_5683_ = vec3(0f, 0f, 0f); - } else { - phi_5683_ = (vec3(_e2330, _e2331, _e2332) * (1f / _e2337)); - } - let _e2342 = phi_5683_; - let _e2354 = ((fma(_e2320.z, _e2342.z, fma(_e2320.x, _e2342.x, (_e2320.y * _e2342.y))) - _e2276.member_3) / (_e2276.member_2 - _e2276.member_3)); - let _e2356 = select(_e2354, 0f, (_e2354 < 0f)); - let _e2359 = (_e2276.member_5 * select(_e2356, 1f, (_e2356 > 1f))); - let _e2363 = fma(fma(_e1464, _e122.x, -0.4f), _e1487, 0.4f); - let _e2364 = fma(fma(_e1467, _e122.y, -0.4f), _e1487, 0.4f); - let _e2365 = fma(fma(_e1470, _e122.z, -0.4f), _e1487, 0.4f); - let _e2372 = (_e2035 + _e2320); - let _e2379 = sqrt(fma(_e2372.z, _e2372.z, fma(_e2372.x, _e2372.x, (_e2372.y * _e2372.y)))); - if (_e2379 == 0f) { - phi_5718_ = vec3(0f, 0f, 0f); - } else { - phi_5718_ = (_e2372 * (1f / _e2379)); - } - let _e2384 = phi_5718_; - let _e2385 = (_e1484 * _e1484); - let _e2396 = max(fma(_e2031.z, _e2384.z, fma(_e2031.x, _e2384.x, (_e2031.y * _e2384.y))), 0f); - let _e2409 = max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f); - let _e2413 = max(fma(_e2031.z, _e2320.z, fma(_e2031.x, _e2320.x, (_e2031.y * _e2320.y))), 0f); - let _e2414 = fma(_e743.y, _e318.member_4, 1f); - let _e2415 = (_e2414 * _e2414); - let _e2416 = (_e2415 * 0.125f); - let _e2418 = fma(-(_e2415), 0.125f, 1f); - let _e2431 = (1f - max(fma(_e2384.z, _e2035.z, fma(_e2384.x, _e2035.x, (_e2384.y * _e2035.y))), 0f)); - let _e2433 = select(_e2431, 0f, (_e2431 < 0f)); - let _e2436 = pow(select(_e2433, 1f, (_e2433 > 1f)), 5f); - let _e2437 = fma((1f - _e2363), _e2436, _e2363); - let _e2438 = fma((1f - _e2364), _e2436, _e2364); - let _e2439 = fma((1f - _e2365), _e2436, _e2365); - let _e2444 = fma(-(_e743.z), _e318.member_3, 1f); - let _e2448 = (((_e2385 * _e2385) / (pow(fma((_e2396 * _e2396), fma(_e2385, _e2385, -1f), 1f), 2f) * 3.1415927f)) * ((_e2409 / fma(_e2409, _e2418, _e2416)) * (_e2413 / fma(_e2413, _e2418, _e2416)))); - let _e2453 = fma((4f * _e2409), _e2413, 0.0001f); - phi_3076_ = vec3(fma((fma((((1f - _e2437) * _e2444) * _e1475), 0.31830987f, ((_e2448 * _e2437) / _e2453)) * (_e2276.member_4.x * _e2359)), _e2413, _e2040.x), fma((fma((((1f - _e2438) * _e2444) * _e1477), 0.31830987f, ((_e2448 * _e2438) / _e2453)) * (_e2276.member_4.y * _e2359)), _e2413, _e2040.y), fma((fma((((1f - _e2439) * _e2444) * _e1479), 0.31830987f, ((_e2448 * _e2439) / _e2453)) * (_e2276.member_4.z * _e2359)), _e2413, _e2040.z)); - } - let _e2474 = phi_3076_; - phi_3077_ = false; - phi_3078_ = select(true, false, _e2316); - phi_3079_ = _e2474; - phi_3080_ = select(false, true, _e2316); - break; - } - default: { - phi_3077_ = true; - phi_3078_ = false; - phi_3079_ = vec3(); - phi_3080_ = false; - break; - } - } - let _e2901 = phi_3077_; - let _e2903 = phi_3078_; - let _e2905 = phi_3079_; - let _e2907 = phi_3080_; - if _e2903 { - phi_3085_ = _e2053; - } else { - phi_3085_ = type_24(); - } - let _e2909 = phi_3085_; - let _e2914 = select(_e2907, false, _e2903); - if _e2914 { - phi_3093_ = _e2053; - } else { - phi_3093_ = _e2909; - } - let _e2916 = phi_3093_; - phi_3097_ = select(select(false, true, _e2903), true, _e2914); - phi_3098_ = _e2916; - phi_3099_ = select(select(vec3(), _e2905, vec3(_e2903)), _e2040, vec3(_e2914)); - phi_3100_ = select(select(_e2901, false, _e2903), false, _e2914); - } - let _e2922 = phi_3097_; - let _e2924 = phi_3098_; - let _e2926 = phi_3099_; - let _e2928 = phi_3100_; - phi_3101_ = _e2928; - phi_3102_ = select(false, true, _e2073); - phi_3103_ = _e2922; - phi_3104_ = _e2924; - phi_3105_ = _e2926; - break; - } - default: { - phi_3101_ = true; - phi_3102_ = false; - phi_3103_ = false; - phi_3104_ = type_24(); - phi_3105_ = vec3(); - break; - } - } - let _e2931 = phi_3101_; - let _e2933 = phi_3102_; - let _e2935 = phi_3103_; - let _e2937 = phi_3104_; - let _e2939 = phi_3105_; - if _e2931 { - phi_3111_ = type_24(); - } else { - phi_3111_ = _e2937; - } - let _e2941 = phi_3111_; - let _e2942 = select(_e2933, false, _e2931); - if _e2942 { - let _e2949 = fma(fma(_e1464, _e122.x, -0.04f), _e1487, 0.04f); - let _e2950 = fma(fma(_e1467, _e122.y, -0.04f), _e1487, 0.04f); - let _e2951 = fma(fma(_e1470, _e122.z, -0.04f), _e1487, 0.04f); - let _e2963 = fma(-(_e743.y), _e318.member_4, 1f); - let _e2970 = (1f - max(fma(_e2031.z, _e2035.z, fma(_e2031.x, _e2035.x, (_e2031.y * _e2035.y))), 0f)); - let _e2972 = select(_e2970, 0f, (_e2970 < 0f)); - let _e2975 = pow(select(_e2972, 1f, (_e2972 > 1f)), 5f); - let _e2976 = fma((max(_e2963, _e2949) - _e2949), _e2975, _e2949); - let _e2977 = fma((max(_e2963, _e2950) - _e2950), _e2975, _e2950); - let _e2978 = fma((max(_e2963, _e2951) - _e2951), _e2975, _e2951); - let _e2983 = fma(-(_e743.z), _e318.member_3, 1f); - phi_3215_ = vec4(fma(_e1497, _e318.member_1, fma(fma(((1f - _e2976) * _e2983), (_e1506.x * _e1475), (_e1846.x * fma(_e2976, _e1862.x, _e1862.y))), _e1491, _e2040.x)), fma(_e1499, _e318.member_1, fma(fma(((1f - _e2977) * _e2983), (_e1506.y * _e1477), (_e1846.y * fma(_e2977, _e1862.x, _e1862.y))), _e1491, _e2040.y)), fma(_e1501, _e318.member_1, fma(fma(((1f - _e2978) * _e2983), (_e1506.z * _e1479), (_e1846.z * fma(_e2978, _e1862.x, _e1862.y))), _e1491, _e2040.z)), 1f); - phi_2209_ = type_24(); - } else { - phi_3215_ = vec4(); - phi_2209_ = _e2941; - } - let _e3010 = phi_3215_; - let _e3012 = phi_2209_; - local_4 = select(false, true, _e2942); - local_5 = _e3010; - continue; - continuing { - phi_2208_ = _e3012; - phi_2211_ = select(select(_e2939, vec3(), vec3(_e2931)), vec3(), vec3(_e2942)); - break if !(select(select(_e2935, false, _e2931), false, _e2942)); - } - } - let _e3242 = local_4; - phi_3232_ = _e3242; - let _e3245 = local_5; - phi_3233_ = _e3245; - } else { - phi_3232_ = true; - phi_3233_ = (vec4((_e122.x * _e533.x), (_e122.y * _e533.y), (_e122.z * _e533.z), (_e122.w * _e533.w)) * _e318.member_2); - } - let _e3019 = phi_3232_; - let _e3021 = phi_3233_; - if _e3019 { - global_19 = _e3021; - } - break; - } - case 1: { - let _e2004 = sqrt(fma(_e123.x, _e123.x, (_e123.y * _e123.y))); - if (_e2004 == 0f) { - phi_5837_ = vec3(0f, 0f, 0f); - } else { - phi_5837_ = (vec3(_e123.x, _e123.y, 0f) * (1f / _e2004)); - } - let _e2009 = phi_5837_; - global_19 = vec4(((_e2009.x + 1f) * 0.5f), ((_e2009.y + 1f) * 0.5f), ((_e2009.z + 1f) * 0.5f), 1f); - break; - } - case 2: { - let _e1983 = sqrt(fma(_e124.x, _e124.x, (_e124.y * _e124.y))); - if (_e1983 == 0f) { - phi_5886_ = vec3(0f, 0f, 0f); - } else { - phi_5886_ = (vec3(_e124.x, _e124.y, 0f) * (1f / _e1983)); - } - let _e1988 = phi_5886_; - global_19 = vec4(((_e1988.x + 1f) * 0.5f), ((_e1988.y + 1f) * 0.5f), ((_e1988.z + 1f) * 0.5f), 1f); - break; - } - case 3: { - if _e1825 { - phi_5935_ = vec3(0f, 0f, 0f); - } else { - phi_5935_ = (_e1460 * (1f / _e1824)); - } - let _e1967 = phi_5935_; - global_19 = vec4(((_e1967.x + 1f) * 0.5f), ((_e1967.y + 1f) * 0.5f), ((_e1967.z + 1f) * 0.5f), 1f); - break; - } - case 4: { - global_19 = _e122; - break; - } - case 5: { - let _e1948 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); - if (_e1948 == 0f) { - phi_5984_ = vec3(0f, 0f, 0f); - } else { - phi_5984_ = (_e125 * (1f / _e1948)); - } - let _e1953 = phi_5984_; - global_19 = vec4(((_e1953.x + 1f) * 0.5f), ((_e1953.y + 1f) * 0.5f), ((_e1953.z + 1f) * 0.5f), 1f); - break; - } - case 6: { - let _e1926 = sqrt(fma(_e1458.z, _e1458.z, fma(_e1458.x, _e1458.x, (_e1458.y * _e1458.y)))); - if (_e1926 == 0f) { - phi_6033_ = vec3(0f, 0f, 0f); - } else { - phi_6033_ = (_e1458 * (1f / _e1926)); - } - let _e1931 = phi_6033_; - global_19 = vec4(((_e1931.x + 1f) * 0.5f), ((_e1931.y + 1f) * 0.5f), ((_e1931.z + 1f) * 0.5f), 1f); - break; - } - case 7: { - let _e1904 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); - if (_e1904 == 0f) { - phi_6082_ = vec3(0f, 0f, 0f); - } else { - phi_6082_ = (_e126 * (1f / _e1904)); - } - let _e1909 = phi_6082_; - global_19 = vec4(((_e1909.x + 1f) * 0.5f), ((_e1909.y + 1f) * 0.5f), ((_e1909.z + 1f) * 0.5f), 1f); - break; - } - case 8: { - let _e1882 = sqrt(fma(_e127.z, _e127.z, fma(_e127.x, _e127.x, (_e127.y * _e127.y)))); - if (_e1882 == 0f) { - phi_6131_ = vec3(0f, 0f, 0f); - } else { - phi_6131_ = (_e127 * (1f / _e1882)); - } - let _e1887 = phi_6131_; - global_19 = vec4(((_e1887.x + 1f) * 0.5f), ((_e1887.y + 1f) * 0.5f), ((_e1887.z + 1f) * 0.5f), 1f); - break; - } - case 9: { - global_19 = vec4(_e1506.x, _e1506.y, _e1506.z, 1f); - break; - } - case 10: { - global_19 = vec4(_e1846.x, _e1846.y, _e1846.z, 1f); - break; - } - case 11: { - global_19 = vec4(_e1862.x, _e1862.y, 1f, 1f); - break; - } - case 12: { - global_19 = (vec4(_e1464, _e1467, _e1470, (_e533.w * _e318.member_2.w)) * _e122); - break; - } - case 13: { - global_19 = vec4(_e1484, _e1484, _e1484, 1f); - break; - } - case 14: { - global_19 = vec4(_e1487, _e1487, _e1487, 1f); - break; - } - case 15: { - global_19 = vec4(_e1491, _e1491, _e1491, 1f); - break; - } - case 16: { - global_19 = vec4((_e1497 * _e318.member_1), (_e1499 * _e318.member_1), (_e1501 * _e318.member_1), 1f); - break; - } - case 17: { - global_19 = vec4(_e1373.x, _e1373.y, _e1373.z, 1f); - break; - } - case 18: { - global_19 = vec4(_e318.member.x, _e318.member.y, _e318.member.z, 1f); - break; - } - case 19: { - global_19 = vec4(_e318.member_1, _e318.member_1, _e318.member_1, 1f); - break; - } - default: { - break; - } - } - } + default: { + phi_3001_ = vec3(); + phi_3002_ = bool(); + break; } } + let _e2810 = phi_3001_; + let _e2812 = phi_3002_; + phi_3011_ = select(_e2810, _e1951, vec3(select(true, false, _e2812))); } + let _e2817 = phi_3011_; + phi_2147_ = _e2817; + phi_3013_ = select(true, false, _e1984); + break; } + default: { + phi_2147_ = vec3(); + phi_3013_ = bool(); + break; + } + } + let _e2820 = phi_2147_; + let _e2822 = phi_3013_; + continue; + continuing { + phi_2143_ = _e1964; + phi_2146_ = _e2820; + break if !(_e2822); } } + let _e2827 = fma(fma(_e1383, _e121.x, -0.04f), _e1406, 0.04f); + let _e2828 = fma(fma(_e1386, _e121.y, -0.04f), _e1406, 0.04f); + let _e2829 = fma(fma(_e1389, _e121.z, -0.04f), _e1406, 0.04f); + let _e2841 = fma(-(_e710.y), _e317.member_4, 1f); + let _e2848 = (1f - max(fma(_e1942.z, _e1946.z, fma(_e1942.x, _e1946.x, (_e1942.y * _e1946.y))), 0f)); + let _e2850 = select(_e2848, 0f, (_e2848 < 0f)); + let _e2853 = pow(select(_e2850, 1f, (_e2850 > 1f)), 5f); + let _e2854 = fma((max(_e2841, _e2827) - _e2827), _e2853, _e2827); + let _e2855 = fma((max(_e2841, _e2828) - _e2828), _e2853, _e2828); + let _e2856 = fma((max(_e2841, _e2829) - _e2829), _e2853, _e2829); + let _e2861 = fma(-(_e710.z), _e317.member_3, 1f); + let _e2878 = local_2; + let _e2882 = local_3; + let _e2886 = local_4; + phi_3125_ = vec4(fma(_e1416, _e317.member_1, fma(fma(((1f - _e2854) * _e2861), (_e1425.x * _e1394), (_e1757.x * fma(_e2854, _e1773.x, _e1773.y))), _e1410, _e2878.x)), fma(_e1418, _e317.member_1, fma(fma(((1f - _e2855) * _e2861), (_e1425.y * _e1396), (_e1757.y * fma(_e2855, _e1773.x, _e1773.y))), _e1410, _e2882.y)), fma(_e1420, _e317.member_1, fma(fma(((1f - _e2856) * _e2861), (_e1425.z * _e1398), (_e1757.z * fma(_e2856, _e1773.x, _e1773.y))), _e1410, _e2886.z)), 1f); + } else { + phi_3125_ = (vec4((_e121.x * _e516.x), (_e121.y * _e516.y), (_e121.z * _e516.z), (_e121.w * _e516.w)) * _e317.member_2); + } + let _e2894 = phi_3125_; + global_19 = _e2894; + break; + } + case 1: { + let _e1915 = sqrt(fma(_e122.x, _e122.x, (_e122.y * _e122.y))); + if (_e1915 == 0f) { + phi_5702_ = vec3(0f, 0f, 0f); + } else { + phi_5702_ = (vec3(_e122.x, _e122.y, 0f) * (1f / _e1915)); + } + let _e1920 = phi_5702_; + global_19 = vec4(((_e1920.x + 1f) * 0.5f), ((_e1920.y + 1f) * 0.5f), ((_e1920.z + 1f) * 0.5f), 1f); + break; + } + case 2: { + let _e1894 = sqrt(fma(_e123.x, _e123.x, (_e123.y * _e123.y))); + if (_e1894 == 0f) { + phi_5751_ = vec3(0f, 0f, 0f); + } else { + phi_5751_ = (vec3(_e123.x, _e123.y, 0f) * (1f / _e1894)); } + let _e1899 = phi_5751_; + global_19 = vec4(((_e1899.x + 1f) * 0.5f), ((_e1899.y + 1f) * 0.5f), ((_e1899.z + 1f) * 0.5f), 1f); + break; + } + case 3: { + if _e1736 { + phi_5800_ = vec3(0f, 0f, 0f); + } else { + phi_5800_ = (_e1379 * (1f / _e1735)); + } + let _e1878 = phi_5800_; + global_19 = vec4(((_e1878.x + 1f) * 0.5f), ((_e1878.y + 1f) * 0.5f), ((_e1878.z + 1f) * 0.5f), 1f); + break; + } + case 4: { + global_19 = _e121; + break; + } + case 5: { + let _e1859 = sqrt(fma(_e124.z, _e124.z, fma(_e124.x, _e124.x, (_e124.y * _e124.y)))); + if (_e1859 == 0f) { + phi_5849_ = vec3(0f, 0f, 0f); + } else { + phi_5849_ = (_e124 * (1f / _e1859)); + } + let _e1864 = phi_5849_; + global_19 = vec4(((_e1864.x + 1f) * 0.5f), ((_e1864.y + 1f) * 0.5f), ((_e1864.z + 1f) * 0.5f), 1f); + break; + } + case 6: { + let _e1837 = sqrt(fma(_e1377.z, _e1377.z, fma(_e1377.x, _e1377.x, (_e1377.y * _e1377.y)))); + if (_e1837 == 0f) { + phi_5898_ = vec3(0f, 0f, 0f); + } else { + phi_5898_ = (_e1377 * (1f / _e1837)); + } + let _e1842 = phi_5898_; + global_19 = vec4(((_e1842.x + 1f) * 0.5f), ((_e1842.y + 1f) * 0.5f), ((_e1842.z + 1f) * 0.5f), 1f); + break; + } + case 7: { + let _e1815 = sqrt(fma(_e125.z, _e125.z, fma(_e125.x, _e125.x, (_e125.y * _e125.y)))); + if (_e1815 == 0f) { + phi_5947_ = vec3(0f, 0f, 0f); + } else { + phi_5947_ = (_e125 * (1f / _e1815)); + } + let _e1820 = phi_5947_; + global_19 = vec4(((_e1820.x + 1f) * 0.5f), ((_e1820.y + 1f) * 0.5f), ((_e1820.z + 1f) * 0.5f), 1f); + break; + } + case 8: { + let _e1793 = sqrt(fma(_e126.z, _e126.z, fma(_e126.x, _e126.x, (_e126.y * _e126.y)))); + if (_e1793 == 0f) { + phi_5996_ = vec3(0f, 0f, 0f); + } else { + phi_5996_ = (_e126 * (1f / _e1793)); + } + let _e1798 = phi_5996_; + global_19 = vec4(((_e1798.x + 1f) * 0.5f), ((_e1798.y + 1f) * 0.5f), ((_e1798.z + 1f) * 0.5f), 1f); + break; + } + case 9: { + global_19 = vec4(_e1425.x, _e1425.y, _e1425.z, 1f); + break; + } + case 10: { + global_19 = vec4(_e1757.x, _e1757.y, _e1757.z, 1f); + break; + } + case 11: { + global_19 = vec4(_e1773.x, _e1773.y, 1f, 1f); + break; + } + case 12: { + global_19 = (vec4(_e1383, _e1386, _e1389, (_e516.w * _e317.member_2.w)) * _e121); + break; + } + case 13: { + global_19 = vec4(_e1403, _e1403, _e1403, 1f); + break; + } + case 14: { + global_19 = vec4(_e1406, _e1406, _e1406, 1f); + break; + } + case 15: { + global_19 = vec4(_e1410, _e1410, _e1410, 1f); + break; + } + case 16: { + global_19 = vec4((_e1416 * _e317.member_1), (_e1418 * _e317.member_1), (_e1420 * _e317.member_1), 1f); + break; + } + case 17: { + global_19 = vec4(_e1292.x, _e1292.y, _e1292.z, 1f); + break; + } + case 18: { + global_19 = vec4(_e317.member.x, _e317.member.y, _e317.member.z, 1f); + break; + } + case 19: { + global_19 = vec4(_e317.member_1, _e317.member_1, _e317.member_1, 1f); + break; + } + default: { + break; } } return; diff --git a/crates/renderling/shaders/stage-renderlet_vertex.wgsl b/crates/renderling/shaders/stage-renderlet_vertex.wgsl index 47477c5f..a410eb01 100644 --- a/crates/renderling/shaders/stage-renderlet_vertex.wgsl +++ b/crates/renderling/shaders/stage-renderlet_vertex.wgsl @@ -92,1071 +92,1067 @@ fn function() { var local_3: array, 6>; var local_4: array; var local_5: array; - var phi_742_: u32; - var phi_2870_: bool; + var phi_741_: u32; + var phi_2842_: bool; + var phi_748_: u32; var phi_749_: u32; - var phi_750_: u32; - var phi_760_: u32; + var phi_759_: u32; + var phi_841_: type_24; var phi_842_: type_24; - var phi_858_: type_24; - var phi_859_: type_24; - var phi_872_: type_24; - var phi_888_: type_24; - var phi_889_: type_24; - var phi_902_: type_24; - var phi_905_: type_31; - var phi_920_: type_24; - var phi_921_: type_24; - var phi_2901_: bool; - var phi_1042_: type_34; - var phi_1045_: type_24; - var phi_1048_: type_20; - var phi_1063_: type_24; - var phi_1064_: type_24; - var phi_1098_: bool; - var phi_1100_: bool; - var phi_1101_: bool; - var phi_1102_: bool; - var phi_1103_: bool; - var phi_1137_: bool; - var phi_1139_: bool; - var phi_1140_: bool; - var phi_1141_: bool; - var phi_1142_: bool; - var phi_1176_: bool; - var phi_1178_: bool; - var phi_1179_: bool; - var phi_1180_: bool; - var phi_1181_: bool; - var phi_1215_: bool; - var phi_1217_: bool; - var phi_1218_: bool; - var phi_1219_: bool; - var phi_1220_: bool; - var phi_1225_: bool; - var phi_1227_: bool; - var phi_1228_: bool; - var phi_1229_: bool; - var phi_1230_: bool; - var phi_1238_: type_20; - var phi_3005_: bool; - var phi_3006_: bool; - var phi_3069_: vec4; - var phi_3099_: vec4; - var phi_3101_: vec4; - var phi_3112_: type_27; - var phi_3114_: type_27; - var phi_3116_: bool; - var phi_3117_: type_27; - var phi_3118_: type_27; - var phi_3122_: type_27; - var phi_1256_: u32; - var phi_3218_: bool; - var phi_1265_: u32; - var phi_3242_: bool; - var phi_1314_: type_27; - var phi_1324_: u32; - var phi_3267_: bool; - var phi_1397_: type_20; - var phi_1635_: type_24; - var phi_1636_: type_20; - var phi_1637_: bool; - var phi_1638_: type_24; - var phi_1639_: type_20; - var phi_1640_: bool; - var phi_1641_: type_27; - var phi_1642_: bool; - var phi_1046_: type_24; - var phi_1049_: type_20; - var phi_1643_: bool; - var phi_1644_: type_27; - var phi_1646_: bool; - var phi_1647_: type_27; - var phi_1648_: bool; - var phi_3334_: bool; - var phi_1701_: type_27; - var phi_1703_: type_27; - var phi_1750_: vec3; - var phi_3379_: vec3; - var phi_3461_: vec3; - var phi_3496_: vec3; - var phi_3509_: bool; - var phi_2074_: type_24; - var phi_2090_: type_24; - var phi_2091_: type_24; - var phi_2104_: type_24; - var phi_2120_: type_24; - var phi_2121_: type_24; - var phi_2147_: type_22; - var phi_2148_: bool; - var phi_2105_: type_24; - var phi_2168_: type_22; - var phi_2169_: bool; - var phi_2075_: type_24; - var phi_2174_: type_22; - var phi_2235_: u32; - var phi_3766_: bool; - var phi_2253_: type_24; - var phi_3792_: u32; - var phi_3811_: bool; - var phi_2303_: type_28; - var phi_2313_: u32; - var phi_3833_: bool; - var phi_2321_: f32; - var phi_2375_: bool; - var phi_903_: type_24; - var phi_906_: type_31; - var phi_2383_: bool; - var phi_873_: type_24; - var phi_2390_: bool; - var phi_843_: type_24; - var local_6: bool; - var local_7: type_27; - var local_8: type_22; - var local_9: type_22; + var phi_857_: type_24; + var phi_870_: bool; + var phi_876_: type_24; + var phi_877_: type_24; + var phi_892_: type_24; + var phi_906_: bool; + var phi_912_: type_24; + var phi_915_: type_31; + var phi_913_: type_24; + var phi_930_: type_24; + var phi_947_: u32; + var phi_2872_: bool; + var phi_965_: type_24; + var phi_2898_: u32; + var phi_2917_: bool; + var phi_1015_: type_28; + var phi_1025_: u32; + var phi_2939_: bool; + var phi_1033_: f32; + var phi_916_: type_31; + var phi_1086_: bool; + var local_6: type_31; + var local_7: type_31; + var local_8: type_31; + var phi_2962_: bool; + var phi_1200_: type_34; + var local_9: type_31; + var phi_1203_: type_24; + var phi_1206_: type_20; + var phi_1204_: type_24; + var phi_1221_: type_24; + var local_10: type_31; + var phi_1245_: u32; + var phi_2996_: bool; + var phi_1254_: u32; + var phi_3020_: bool; + var phi_1303_: type_27; + var phi_1313_: u32; + var phi_3046_: bool; + var phi_1386_: type_20; + var phi_1207_: type_20; + var phi_1623_: bool; + var phi_3863_: bool; + var local_11: type_20; + var local_12: type_20; + var local_13: type_20; + var local_14: type_20; + var phi_1650_: bool; + var phi_1652_: bool; + var phi_1653_: bool; + var phi_1654_: bool; + var phi_1655_: bool; + var local_15: type_20; + var local_16: type_20; + var local_17: type_20; + var local_18: type_20; + var phi_1689_: bool; + var phi_1691_: bool; + var phi_1692_: bool; + var phi_1693_: bool; + var phi_1694_: bool; + var local_19: type_20; + var local_20: type_20; + var local_21: type_20; + var local_22: type_20; + var phi_1728_: bool; + var phi_1730_: bool; + var phi_1731_: bool; + var phi_1732_: bool; + var phi_1733_: bool; + var local_23: type_20; + var local_24: type_20; + var local_25: type_20; + var local_26: type_20; + var phi_1767_: bool; + var phi_1769_: bool; + var phi_1770_: bool; + var phi_1771_: bool; + var phi_1772_: bool; + var phi_1777_: bool; + var phi_1779_: bool; + var phi_1780_: bool; + var phi_1781_: bool; + var phi_1782_: bool; + var phi_1790_: type_20; + var phi_3183_: bool; + var phi_3246_: vec4; + var phi_3276_: vec4; + var phi_3278_: vec4; + var phi_3289_: type_27; + var phi_3290_: type_27; + var phi_3293_: type_27; + var phi_3294_: type_27; + var phi_3295_: bool; + var phi_3299_: type_27; + var phi_1792_: type_27; + var phi_1794_: type_27; + var phi_1795_: bool; + var phi_3393_: bool; + var phi_1848_: type_27; + var phi_1849_: type_27; + var local_27: type_31; + var phi_1893_: vec3; + var local_28: type_31; + var phi_3438_: vec3; + var phi_3520_: vec3; + var phi_3555_: vec3; + var local_29: type_31; + var local_30: type_31; + var phi_3568_: bool; + var phi_2217_: type_24; + var phi_2218_: type_24; + var phi_2233_: type_24; + var phi_2260_: bool; + var phi_2266_: type_24; + var phi_2267_: type_24; + var phi_2282_: type_24; + var phi_2305_: bool; + var phi_2313_: type_22; + var local_31: type_20; - let _e97 = global_3; - let _e98 = global; - let _e100 = arrayLength((&global_2.member)); - let _e103 = global_2.member[_e97]; - let _e108 = global_2.member[(_e97 + 1u)]; - let _e112 = global_2.member[(_e97 + 2u)]; - let _e116 = global_2.member[(_e97 + 7u)]; - let _e120 = global_2.member[(_e97 + 8u)]; - let _e124 = global_2.member[(_e97 + 9u)]; - let _e128 = global_2.member[(_e97 + 10u)]; - let _e132 = global_2.member[(_e97 + 11u)]; - let _e136 = global_2.member[(_e97 + 12u)]; - let _e140 = global_2.member[(_e97 + 13u)]; - let _e144 = global_2.member[(_e97 + 14u)]; - let _e148 = global_2.member[(_e97 + 15u)]; - let _e152 = global_2.member[(_e97 + 16u)]; - let _e156 = global_2.member[(_e97 + 17u)]; - if (_e103 == 1u) { - global_4 = _e124; - global_5 = _e132; - global_6 = _e156; - if (_e116 == 4294967295u) { - phi_750_ = _e98; - } else { - if (_e98 >= _e120) { - phi_742_ = 4294967295u; - } else { - phi_742_ = (_e116 + _e98); - } - let _e161 = phi_742_; - if (_e100 >= 1u) { - phi_2870_ = (_e161 <= (_e100 - 1u)); - } else { - phi_2870_ = false; - } - let _e166 = phi_2870_; - if _e166 { - let _e169 = global_2.member[_e161]; - phi_749_ = _e169; - } else { - phi_749_ = 0u; - } - let _e171 = phi_749_; - phi_750_ = _e171; - } - let _e173 = phi_750_; - if (_e173 >= _e112) { - phi_760_ = 4294967295u; - } else { - phi_760_ = (_e108 + (26u * _e173)); - } - let _e178 = phi_760_; - let _e181 = global_2.member[_e178]; - let _e186 = global_2.member[(_e178 + 1u)]; - let _e191 = global_2.member[(_e178 + 2u)]; - let _e197 = global_2.member[(_e178 + 3u)]; - let _e202 = global_2.member[(_e178 + 4u)]; - let _e207 = global_2.member[(_e178 + 5u)]; - let _e212 = global_2.member[(_e178 + 6u)]; - let _e218 = global_2.member[(_e178 + 7u)]; - let _e223 = global_2.member[(_e178 + 8u)]; - let _e229 = global_2.member[(_e178 + 9u)]; - let _e234 = global_2.member[(_e178 + 10u)]; - let _e240 = global_2.member[(_e178 + 11u)]; - let _e245 = global_2.member[(_e178 + 12u)]; - let _e250 = global_2.member[(_e178 + 13u)]; - let _e256 = global_2.member[(_e178 + 14u)]; - let _e261 = global_2.member[(_e178 + 15u)]; - let _e266 = global_2.member[(_e178 + 16u)]; - let _e271 = global_2.member[(_e178 + 17u)]; - local_5 = array(0u, 0u, 0u, 0u); - phi_842_ = type_24(0u, 4u); - loop { - let _e276 = phi_842_; - if (_e276.member < _e276.member_1) { - phi_858_ = type_24((_e276.member + 1u), _e276.member_1); - phi_859_ = type_24(1u, _e276.member); - } else { - phi_858_ = _e276; - phi_859_ = type_24(0u, type_24().member_1); - } - let _e289 = phi_858_; - let _e291 = phi_859_; - switch bitcast(_e291.member) { - case 0: { - let _e295 = local_5; - local_4 = array(0f, 0f, 0f, 0f); - phi_872_ = type_24(0u, 4u); - loop { - let _e298 = phi_872_; - if (_e298.member < _e298.member_1) { - phi_888_ = type_24((_e298.member + 1u), _e298.member_1); - phi_889_ = type_24(1u, _e298.member); + switch bitcast(0u) { + default: { + let _e97 = global_3; + let _e98 = global; + let _e100 = arrayLength((&global_2.member)); + let _e103 = global_2.member[_e97]; + let _e108 = global_2.member[(_e97 + 1u)]; + let _e112 = global_2.member[(_e97 + 2u)]; + let _e116 = global_2.member[(_e97 + 7u)]; + let _e120 = global_2.member[(_e97 + 8u)]; + let _e124 = global_2.member[(_e97 + 9u)]; + let _e128 = global_2.member[(_e97 + 10u)]; + let _e132 = global_2.member[(_e97 + 11u)]; + let _e136 = global_2.member[(_e97 + 12u)]; + let _e140 = global_2.member[(_e97 + 13u)]; + let _e144 = global_2.member[(_e97 + 14u)]; + let _e148 = global_2.member[(_e97 + 15u)]; + let _e152 = global_2.member[(_e97 + 16u)]; + let _e156 = global_2.member[(_e97 + 17u)]; + if (_e103 == 1u) { + global_4 = _e124; + global_5 = _e132; + global_6 = _e156; + if (_e116 == 4294967295u) { + phi_749_ = _e98; + } else { + if (_e98 >= _e120) { + phi_741_ = 4294967295u; + } else { + phi_741_ = (_e116 + _e98); + } + let _e161 = phi_741_; + if (_e100 >= 1u) { + phi_2842_ = (_e161 <= (_e100 - 1u)); + } else { + phi_2842_ = false; + } + let _e166 = phi_2842_; + if _e166 { + let _e169 = global_2.member[_e161]; + phi_748_ = _e169; + } else { + phi_748_ = 0u; + } + let _e171 = phi_748_; + phi_749_ = _e171; + } + let _e173 = phi_749_; + if (_e173 >= _e112) { + phi_759_ = 4294967295u; + } else { + phi_759_ = (_e108 + (26u * _e173)); + } + let _e178 = phi_759_; + let _e181 = global_2.member[_e178]; + let _e186 = global_2.member[(_e178 + 1u)]; + let _e191 = global_2.member[(_e178 + 2u)]; + let _e197 = global_2.member[(_e178 + 3u)]; + let _e202 = global_2.member[(_e178 + 4u)]; + let _e207 = global_2.member[(_e178 + 5u)]; + let _e212 = global_2.member[(_e178 + 6u)]; + let _e218 = global_2.member[(_e178 + 7u)]; + let _e223 = global_2.member[(_e178 + 8u)]; + let _e229 = global_2.member[(_e178 + 9u)]; + let _e234 = global_2.member[(_e178 + 10u)]; + let _e240 = global_2.member[(_e178 + 11u)]; + let _e245 = global_2.member[(_e178 + 12u)]; + let _e250 = global_2.member[(_e178 + 13u)]; + let _e256 = global_2.member[(_e178 + 14u)]; + let _e261 = global_2.member[(_e178 + 15u)]; + let _e266 = global_2.member[(_e178 + 16u)]; + let _e271 = global_2.member[(_e178 + 17u)]; + local_5 = array(0u, 0u, 0u, 0u); + phi_841_ = type_24(0u, 4u); + loop { + let _e276 = phi_841_; + if (_e276.member < _e276.member_1) { + phi_842_ = type_24((_e276.member + 1u), _e276.member_1); + phi_857_ = type_24(1u, _e276.member); + } else { + phi_842_ = _e276; + phi_857_ = type_24(0u, type_24().member_1); + } + let _e289 = phi_842_; + let _e291 = phi_857_; + switch bitcast(_e291.member) { + case 0: { + phi_870_ = false; + break; + } + case 1: { + let _e298 = global_2.member[((_e178 + 18u) + _e291.member_1)]; + local_5[_e291.member_1] = _e298; + phi_870_ = true; + break; + } + default: { + phi_870_ = bool(); + break; + } + } + let _e301 = phi_870_; + continue; + continuing { + phi_841_ = _e289; + break if !(_e301); + } + } + let _e303 = local_5; + local_4 = array(0f, 0f, 0f, 0f); + phi_876_ = type_24(0u, 4u); + loop { + let _e306 = phi_876_; + if (_e306.member < _e306.member_1) { + phi_877_ = type_24((_e306.member + 1u), _e306.member_1); + phi_892_ = type_24(1u, _e306.member); + } else { + phi_877_ = _e306; + phi_892_ = type_24(0u, type_24().member_1); + } + let _e319 = phi_877_; + let _e321 = phi_892_; + switch bitcast(_e321.member) { + case 0: { + phi_906_ = false; + break; + } + case 1: { + let _e328 = global_2.member[((_e178 + 22u) + _e321.member_1)]; + local_4[_e321.member_1] = bitcast(_e328); + phi_906_ = true; + break; + } + default: { + phi_906_ = bool(); + break; + } + } + let _e332 = phi_906_; + continue; + continuing { + phi_876_ = _e319; + break if !(_e332); + } + } + let _e334 = local_4; + phi_912_ = type_24(0u, _e144); + phi_915_ = type_31(vec3(bitcast(_e181), bitcast(_e186), bitcast(_e191)), vec4(bitcast(_e197), bitcast(_e202), bitcast(_e207), bitcast(_e212)), vec3(bitcast(_e240), bitcast(_e245), bitcast(_e250)), vec4(bitcast(_e256), bitcast(_e261), bitcast(_e266), bitcast(_e271)), _e303, _e334, vec2(bitcast(_e218), bitcast(_e223)), vec2(bitcast(_e229), bitcast(_e234))); + loop { + let _e338 = phi_912_; + let _e340 = phi_915_; + local_6 = _e340; + local_7 = _e340; + local_8 = _e340; + local_9 = _e340; + local_10 = _e340; + local_27 = _e340; + local_28 = _e340; + local_29 = _e340; + local_30 = _e340; + if (_e338.member < _e338.member_1) { + phi_913_ = type_24((_e338.member + 1u), _e338.member_1); + phi_930_ = type_24(1u, _e338.member); + } else { + phi_913_ = _e338; + phi_930_ = type_24(0u, type_24().member_1); + } + let _e353 = phi_913_; + let _e355 = phi_930_; + switch bitcast(_e355.member) { + case 0: { + phi_916_ = type_31(); + phi_1086_ = false; + break; + } + case 1: { + if (_e355.member_1 >= _e144) { + phi_947_ = 4294967295u; + } else { + phi_947_ = (_e140 + (2u * _e355.member_1)); + } + let _e363 = phi_947_; + if (_e100 >= 2u) { + phi_2872_ = (_e363 <= (_e100 - 2u)); + } else { + phi_2872_ = false; + } + let _e368 = phi_2872_; + if _e368 { + let _e371 = global_2.member[_e363]; + let _e375 = global_2.member[(_e363 + 1u)]; + phi_965_ = type_24(_e371, _e375); + } else { + phi_965_ = type_24(4294967295u, 0u); + } + let _e378 = phi_965_; + if (_e173 >= _e378.member_1) { + phi_2898_ = 4294967295u; + } else { + phi_2898_ = (_e378.member + (9u * _e173)); + } + let _e385 = phi_2898_; + if (_e100 >= 9u) { + phi_2917_ = (_e385 <= (_e100 - 9u)); + } else { + phi_2917_ = false; + } + let _e390 = phi_2917_; + if _e390 { + let _e393 = global_2.member[_e385]; + let _e398 = global_2.member[(_e385 + 1u)]; + let _e403 = global_2.member[(_e385 + 2u)]; + let _e409 = global_2.member[(_e385 + 3u)]; + let _e414 = global_2.member[(_e385 + 4u)]; + let _e419 = global_2.member[(_e385 + 5u)]; + let _e425 = global_2.member[(_e385 + 6u)]; + let _e430 = global_2.member[(_e385 + 7u)]; + let _e435 = global_2.member[(_e385 + 8u)]; + phi_1015_ = type_28(vec3(bitcast(_e393), bitcast(_e398), bitcast(_e403)), vec3(bitcast(_e409), bitcast(_e414), bitcast(_e419)), vec3(bitcast(_e425), bitcast(_e430), bitcast(_e435))); + } else { + phi_1015_ = type_28(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + } + let _e440 = phi_1015_; + if (_e355.member_1 >= _e152) { + phi_1025_ = 4294967295u; + } else { + phi_1025_ = (_e148 + _e355.member_1); + } + let _e444 = phi_1025_; + if (_e100 >= 1u) { + phi_2939_ = (_e444 <= (_e100 - 1u)); + } else { + phi_2939_ = false; + } + let _e449 = phi_2939_; + if _e449 { + let _e452 = global_2.member[_e444]; + phi_1033_ = bitcast(_e452); + } else { + phi_1033_ = 0f; + } + let _e455 = phi_1033_; + let _e478 = type_31(vec3(fma(_e455, _e440.member.x, _e340.member.x), fma(_e455, _e440.member.y, _e340.member.y), fma(_e455, _e440.member.z, _e340.member.z)), _e340.member_1, _e340.member_2, _e340.member_3, _e340.member_4, _e340.member_5, _e340.member_6, _e340.member_7); + let _e501 = type_31(_e478.member, _e478.member_1, vec3(fma(_e455, _e440.member_1.x, _e340.member_2.x), fma(_e455, _e440.member_1.y, _e340.member_2.y), fma(_e455, _e440.member_1.z, _e340.member_2.z)), _e478.member_3, _e478.member_4, _e478.member_5, _e478.member_6, _e478.member_7); + phi_916_ = type_31(_e501.member, _e501.member_1, _e501.member_2, vec4(fma(_e455, _e440.member_2.x, _e340.member_3.x), fma(_e455, _e440.member_2.y, _e340.member_3.y), fma(_e455, _e440.member_2.z, _e340.member_3.z), _e340.member_3.w), _e501.member_4, _e501.member_5, _e501.member_6, _e501.member_7); + phi_1086_ = true; + break; + } + default: { + phi_916_ = type_31(); + phi_1086_ = bool(); + break; + } + } + let _e528 = phi_916_; + let _e530 = phi_1086_; + continue; + continuing { + phi_912_ = _e353; + phi_915_ = _e528; + break if !(_e530); + } + } + let _e533 = local_6; + global_7 = _e533.member_1; + let _e536 = local_7; + global_8 = _e536.member_6; + let _e539 = local_8; + global_9 = _e539.member_7; + let _e544 = global_2.member[(_e156 + 6u)]; + if (_e544 == 1u) { + let _e547 = ((_e136 == 4294967295u) != true); + if _e547 { + if (_e100 >= 4u) { + phi_2962_ = (_e136 <= (_e100 - 4u)); } else { - phi_888_ = _e298; - phi_889_ = type_24(0u, type_24().member_1); + phi_2962_ = false; } - let _e311 = phi_888_; - let _e313 = phi_889_; - switch bitcast(_e313.member) { - case 0: { - let _e317 = local_4; - phi_902_ = type_24(0u, _e144); - phi_905_ = type_31(vec3(bitcast(_e181), bitcast(_e186), bitcast(_e191)), vec4(bitcast(_e197), bitcast(_e202), bitcast(_e207), bitcast(_e212)), vec3(bitcast(_e240), bitcast(_e245), bitcast(_e250)), vec4(bitcast(_e256), bitcast(_e261), bitcast(_e266), bitcast(_e271)), _e295, _e317, vec2(bitcast(_e218), bitcast(_e223)), vec2(bitcast(_e229), bitcast(_e234))); - loop { - let _e321 = phi_902_; - let _e323 = phi_905_; - if (_e321.member < _e321.member_1) { - phi_920_ = type_24((_e321.member + 1u), _e321.member_1); - phi_921_ = type_24(1u, _e321.member); + let _e552 = phi_2962_; + if _e552 { + let _e555 = global_2.member[_e136]; + let _e559 = global_2.member[(_e136 + 1u)]; + let _e563 = global_2.member[(_e136 + 2u)]; + let _e567 = global_2.member[(_e136 + 3u)]; + phi_1200_ = type_34(type_24(_e555, _e559), type_24(_e563, _e567)); + } else { + phi_1200_ = type_34(type_24(4294967295u, 0u), type_24(4294967295u, 0u)); + } + let _e572 = phi_1200_; + let _e574 = local_9; + local = _e574.member_5; + phi_1203_ = type_24(0u, 4u); + phi_1206_ = type_20(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + loop { + let _e577 = phi_1203_; + let _e579 = phi_1206_; + local_11 = _e579; + local_12 = _e579; + local_13 = _e579; + local_14 = _e579; + local_15 = _e579; + local_16 = _e579; + local_17 = _e579; + local_18 = _e579; + local_19 = _e579; + local_20 = _e579; + local_21 = _e579; + local_22 = _e579; + local_23 = _e579; + local_24 = _e579; + local_25 = _e579; + local_26 = _e579; + local_31 = _e579; + if (_e577.member < _e577.member_1) { + phi_1204_ = type_24((_e577.member + 1u), _e577.member_1); + phi_1221_ = type_24(1u, _e577.member); + } else { + phi_1204_ = _e577; + phi_1221_ = type_24(0u, type_24().member_1); + } + let _e592 = phi_1204_; + let _e594 = phi_1221_; + switch bitcast(_e594.member) { + case 0: { + phi_1207_ = type_20(); + phi_1623_ = false; + break; + } + case 1: { + let _e599 = local_10; + local_1 = _e599.member_4; + let _e601 = (_e594.member_1 < 4u); + if _e601 { } else { - phi_920_ = _e321; - phi_921_ = type_24(0u, type_24().member_1); + phi_3863_ = true; + break; } - let _e336 = phi_920_; - let _e338 = phi_921_; - switch bitcast(_e338.member) { - case 0: { - global_7 = _e323.member_1; - global_8 = _e323.member_6; - global_9 = _e323.member_7; - let _e348 = global_2.member[(_e156 + 6u)]; - if (_e348 == 1u) { - let _e351 = ((_e136 == 4294967295u) != true); - if _e351 { - if (_e100 >= 4u) { - phi_2901_ = (_e136 <= (_e100 - 4u)); - } else { - phi_2901_ = false; - } - let _e356 = phi_2901_; - if _e356 { - let _e359 = global_2.member[_e136]; - let _e363 = global_2.member[(_e136 + 1u)]; - let _e367 = global_2.member[(_e136 + 2u)]; - let _e371 = global_2.member[(_e136 + 3u)]; - phi_1042_ = type_34(type_24(_e359, _e363), type_24(_e367, _e371)); - } else { - phi_1042_ = type_34(type_24(4294967295u, 0u), type_24(4294967295u, 0u)); - } - let _e376 = phi_1042_; - local = _e323.member_5; - phi_1045_ = type_24(0u, 4u); - phi_1048_ = type_20(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - loop { - let _e379 = phi_1045_; - let _e381 = phi_1048_; - if (_e379.member < _e379.member_1) { - phi_1063_ = type_24((_e379.member + 1u), _e379.member_1); - phi_1064_ = type_24(1u, _e379.member); - } else { - phi_1063_ = _e379; - phi_1064_ = type_24(0u, type_24().member_1); - } - let _e394 = phi_1063_; - let _e396 = phi_1064_; - switch bitcast(_e396.member) { - case 0: { - let _e404 = global_10.member[0u]; - if (_e381.member.x == _e404) { - let _e410 = global_10.member[1u]; - if (_e381.member.y == _e410) { - let _e416 = global_10.member[2u]; - let _e417 = (_e381.member.z == _e416); - if _e417 { - let _e422 = global_10.member[3u]; - phi_1098_ = (_e381.member.w == _e422); - } else { - phi_1098_ = bool(); - } - let _e425 = phi_1098_; - phi_1100_ = _e425; - phi_1101_ = select(true, false, _e417); - } else { - phi_1100_ = bool(); - phi_1101_ = true; - } - let _e428 = phi_1100_; - let _e430 = phi_1101_; - phi_1102_ = _e428; - phi_1103_ = _e430; - } else { - phi_1102_ = bool(); - phi_1103_ = true; - } - let _e432 = phi_1102_; - let _e434 = phi_1103_; - if select(_e432, false, _e434) { - let _e440 = global_10.member_1[0u]; - if (_e381.member_1.x == _e440) { - let _e446 = global_10.member_1[1u]; - if (_e381.member_1.y == _e446) { - let _e452 = global_10.member_1[2u]; - let _e453 = (_e381.member_1.z == _e452); - if _e453 { - let _e458 = global_10.member_1[3u]; - phi_1137_ = (_e381.member_1.w == _e458); - } else { - phi_1137_ = bool(); - } - let _e461 = phi_1137_; - phi_1139_ = _e461; - phi_1140_ = select(true, false, _e453); - } else { - phi_1139_ = bool(); - phi_1140_ = true; - } - let _e464 = phi_1139_; - let _e466 = phi_1140_; - phi_1141_ = _e464; - phi_1142_ = _e466; - } else { - phi_1141_ = bool(); - phi_1142_ = true; - } - let _e468 = phi_1141_; - let _e470 = phi_1142_; - if select(_e468, false, _e470) { - let _e476 = global_10.member_2[0u]; - if (_e381.member_2.x == _e476) { - let _e482 = global_10.member_2[1u]; - if (_e381.member_2.y == _e482) { - let _e488 = global_10.member_2[2u]; - let _e489 = (_e381.member_2.z == _e488); - if _e489 { - let _e494 = global_10.member_2[3u]; - phi_1176_ = (_e381.member_2.w == _e494); - } else { - phi_1176_ = bool(); - } - let _e497 = phi_1176_; - phi_1178_ = _e497; - phi_1179_ = select(true, false, _e489); - } else { - phi_1178_ = bool(); - phi_1179_ = true; - } - let _e500 = phi_1178_; - let _e502 = phi_1179_; - phi_1180_ = _e500; - phi_1181_ = _e502; - } else { - phi_1180_ = bool(); - phi_1181_ = true; - } - let _e504 = phi_1180_; - let _e506 = phi_1181_; - let _e507 = select(_e504, false, _e506); - if _e507 { - let _e512 = global_10.member_3[0u]; - if (_e381.member_3.x == _e512) { - let _e518 = global_10.member_3[1u]; - if (_e381.member_3.y == _e518) { - let _e524 = global_10.member_3[2u]; - let _e525 = (_e381.member_3.z == _e524); - if _e525 { - let _e530 = global_10.member_3[3u]; - phi_1215_ = (_e381.member_3.w == _e530); - } else { - phi_1215_ = bool(); - } - let _e533 = phi_1215_; - phi_1217_ = _e533; - phi_1218_ = select(true, false, _e525); - } else { - phi_1217_ = bool(); - phi_1218_ = true; - } - let _e536 = phi_1217_; - let _e538 = phi_1218_; - phi_1219_ = _e536; - phi_1220_ = _e538; - } else { - phi_1219_ = bool(); - phi_1220_ = true; - } - let _e540 = phi_1219_; - let _e542 = phi_1220_; - phi_1225_ = select(_e540, false, _e542); - } else { - phi_1225_ = bool(); - } - let _e545 = phi_1225_; - phi_1227_ = _e545; - phi_1228_ = select(true, false, _e507); - } else { - phi_1227_ = bool(); - phi_1228_ = true; - } - let _e548 = phi_1227_; - let _e550 = phi_1228_; - phi_1229_ = _e548; - phi_1230_ = _e550; - } else { - phi_1229_ = bool(); - phi_1230_ = true; - } - let _e552 = phi_1229_; - let _e554 = phi_1230_; - if select(_e552, false, _e554) { - phi_1238_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); - } else { - phi_1238_ = _e381; - } - let _e557 = phi_1238_; - let _e580 = fma(_e557.member_2.z, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.z))); - let _e583 = fma(_e557.member_2.y, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.y))); - let _e586 = fma(_e557.member_2.y, _e557.member_3.z, -((_e557.member_2.z * _e557.member_3.y))); - let _e589 = fma(_e557.member_2.x, _e557.member_3.w, -((_e557.member_2.w * _e557.member_3.x))); - let _e592 = fma(_e557.member_2.x, _e557.member_3.z, -((_e557.member_2.z * _e557.member_3.x))); - let _e595 = fma(_e557.member_2.x, _e557.member_3.y, -((_e557.member_2.y * _e557.member_3.x))); - let _e617 = fma(-(_e557.member.w), fma(_e557.member_1.z, _e595, fma(_e557.member_1.x, _e586, -((_e557.member_1.y * _e592)))), fma(_e557.member.z, fma(_e557.member_1.w, _e595, fma(_e557.member_1.x, _e583, -((_e557.member_1.y * _e589)))), fma(_e557.member.x, fma(_e557.member_1.w, _e586, fma(_e557.member_1.y, _e580, -((_e557.member_1.z * _e583)))), -((_e557.member.y * fma(_e557.member_1.w, _e592, fma(_e557.member_1.x, _e580, -((_e557.member_1.z * _e589))))))))); - if (_e617 == 0f) { - phi_3116_ = true; - phi_3117_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); - phi_3118_ = type_27(); - } else { - let _e626 = (sqrt(fma(_e557.member.w, _e557.member.w, fma(_e557.member.z, _e557.member.z, fma(_e557.member.x, _e557.member.x, (_e557.member.y * _e557.member.y))))) * select(-1f, 1f, (_e617 >= 0f))); - let _e631 = sqrt(fma(_e557.member_1.w, _e557.member_1.w, fma(_e557.member_1.z, _e557.member_1.z, fma(_e557.member_1.x, _e557.member_1.x, (_e557.member_1.y * _e557.member_1.y))))); - let _e636 = sqrt(fma(_e557.member_2.w, _e557.member_2.w, fma(_e557.member_2.z, _e557.member_2.z, fma(_e557.member_2.x, _e557.member_2.x, (_e557.member_2.y * _e557.member_2.y))))); - let _e639 = (_e631 != 0f); - if (_e626 != 0f) { - phi_3005_ = select(bool(), (_e636 != 0f), _e639); - phi_3006_ = select(true, false, _e639); - } else { - phi_3005_ = bool(); - phi_3006_ = true; - } - let _e644 = phi_3005_; - let _e646 = phi_3006_; - let _e647 = select(_e644, false, _e646); - if _e647 { - let _e648 = (1f / _e626); - let _e649 = (1f / _e631); - let _e650 = (1f / _e636); - let _e651 = (_e557.member.x * _e648); - let _e652 = (_e557.member.z * _e648); - let _e653 = (_e557.member_1.x * _e649); - let _e654 = (_e557.member_2.x * _e650); - let _e655 = (_e557.member_2.y * _e650); - if ((_e557.member_2.z * _e650) <= 0f) { - let _e659 = fma(_e557.member_1.y, _e649, -(_e651)); - let _e661 = fma(-(_e557.member_2.z), _e650, 1f); - if (_e659 <= 0f) { - let _e663 = (_e661 - _e659); - let _e665 = (0.5f / sqrt(_e663)); - phi_3069_ = vec4((_e663 * _e665), (fma(_e557.member.y, _e648, _e653) * _e665), (fma(_e557.member.z, _e648, _e654) * _e665), (fma(_e557.member_1.z, _e649, -(_e655)) * _e665)); - } else { - let _e675 = (_e661 + _e659); - let _e677 = (0.5f / sqrt(_e675)); - phi_3069_ = vec4((fma(_e557.member.y, _e648, _e653) * _e677), (_e675 * _e677), (fma(_e557.member_1.z, _e649, _e655) * _e677), (fma(_e557.member_2.x, _e650, -(_e652)) * _e677)); - } - let _e688 = phi_3069_; - phi_3101_ = _e688; - } else { - let _e689 = fma(_e557.member_1.y, _e649, _e651); - let _e690 = fma(_e557.member_2.z, _e650, 1f); - if (_e689 <= 0f) { - let _e692 = (_e690 - _e689); - let _e694 = (0.5f / sqrt(_e692)); - phi_3099_ = vec4((fma(_e557.member.z, _e648, _e654) * _e694), (fma(_e557.member_1.z, _e649, _e655) * _e694), (_e692 * _e694), (fma(_e557.member.y, _e648, -(_e653)) * _e694)); - } else { - let _e704 = (_e690 + _e689); - let _e706 = (0.5f / sqrt(_e704)); - phi_3099_ = vec4((fma(_e557.member_1.z, _e649, -(_e655)) * _e706), (fma(_e557.member_2.x, _e650, -(_e652)) * _e706), (fma(_e557.member.y, _e648, -(_e653)) * _e706), (_e704 * _e706)); - } - let _e719 = phi_3099_; - phi_3101_ = _e719; - } - let _e721 = phi_3101_; - phi_3112_ = type_27(vec3(_e626, _e631, _e636), _e721, vec3(_e557.member_3.x, _e557.member_3.y, _e557.member_3.z)); - phi_3114_ = type_27(); - } else { - phi_3112_ = type_27(); - phi_3114_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); - } - let _e725 = phi_3112_; - let _e727 = phi_3114_; - phi_3116_ = select(true, false, _e647); - phi_3117_ = _e727; - phi_3118_ = _e725; - } - let _e730 = phi_3116_; - let _e732 = phi_3117_; - let _e734 = phi_3118_; - if _e730 { - phi_3122_ = _e732; - } else { - phi_3122_ = _e734; - } - let _e736 = phi_3122_; - phi_1640_ = true; - phi_1641_ = type_27(_e736.member_2, _e736.member_1, _e736.member); - phi_1642_ = false; - phi_1046_ = type_24(); - phi_1049_ = type_20(); - break; - } - case 1: { - local_1 = _e323.member_4; - let _e742 = (_e396.member_1 < 4u); - if _e742 { - let _e744 = local_1[_e396.member_1]; - if (_e744 >= _e376.member.member_1) { - phi_1256_ = 4294967295u; - } else { - phi_1256_ = (_e376.member.member + _e744); - } - let _e752 = phi_1256_; - if (_e100 >= 1u) { - phi_3218_ = (_e752 <= (_e100 - 1u)); - } else { - phi_3218_ = false; - } - let _e757 = phi_3218_; - if _e757 { - let _e760 = global_2.member[_e752]; - phi_1265_ = _e760; - } else { - phi_1265_ = 4294967295u; - } - let _e762 = phi_1265_; - if (_e100 >= 10u) { - phi_3242_ = (_e762 <= (_e100 - 10u)); - } else { - phi_3242_ = false; - } - let _e767 = phi_3242_; - if _e767 { - let _e770 = global_2.member[_e762]; - let _e775 = global_2.member[(_e762 + 1u)]; - let _e780 = global_2.member[(_e762 + 2u)]; - let _e786 = global_2.member[(_e762 + 3u)]; - let _e791 = global_2.member[(_e762 + 4u)]; - let _e796 = global_2.member[(_e762 + 5u)]; - let _e801 = global_2.member[(_e762 + 6u)]; - let _e807 = global_2.member[(_e762 + 7u)]; - let _e812 = global_2.member[(_e762 + 8u)]; - let _e817 = global_2.member[(_e762 + 9u)]; - phi_1314_ = type_27(vec3(bitcast(_e770), bitcast(_e775), bitcast(_e780)), vec4(bitcast(_e786), bitcast(_e791), bitcast(_e796), bitcast(_e801)), vec3(bitcast(_e807), bitcast(_e812), bitcast(_e817))); - } else { - phi_1314_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); - } - let _e822 = phi_1314_; - if (_e744 >= _e376.member_1.member_1) { - phi_1324_ = 4294967295u; - } else { - phi_1324_ = (_e376.member_1.member + (16u * _e744)); - } - let _e831 = phi_1324_; - if (_e100 >= 16u) { - phi_3267_ = (_e831 <= (_e100 - 16u)); - } else { - phi_3267_ = false; - } - let _e836 = phi_3267_; - if _e836 { - let _e839 = global_2.member[_e831]; - let _e844 = global_2.member[(_e831 + 1u)]; - let _e849 = global_2.member[(_e831 + 2u)]; - let _e854 = global_2.member[(_e831 + 3u)]; - let _e860 = global_2.member[(_e831 + 4u)]; - let _e865 = global_2.member[(_e831 + 5u)]; - let _e870 = global_2.member[(_e831 + 6u)]; - let _e875 = global_2.member[(_e831 + 7u)]; - let _e881 = global_2.member[(_e831 + 8u)]; - let _e886 = global_2.member[(_e831 + 9u)]; - let _e891 = global_2.member[(_e831 + 10u)]; - let _e896 = global_2.member[(_e831 + 11u)]; - let _e902 = global_2.member[(_e831 + 12u)]; - let _e907 = global_2.member[(_e831 + 13u)]; - let _e912 = global_2.member[(_e831 + 14u)]; - let _e917 = global_2.member[(_e831 + 15u)]; - phi_1397_ = type_20(vec4(bitcast(_e839), bitcast(_e844), bitcast(_e849), bitcast(_e854)), vec4(bitcast(_e860), bitcast(_e865), bitcast(_e870), bitcast(_e875)), vec4(bitcast(_e881), bitcast(_e886), bitcast(_e891), bitcast(_e896)), vec4(bitcast(_e902), bitcast(_e907), bitcast(_e912), bitcast(_e917))); - } else { - phi_1397_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); - } - let _e922 = phi_1397_; - let _e930 = (_e822.member_1.x + _e822.member_1.x); - let _e931 = (_e822.member_1.y + _e822.member_1.y); - let _e932 = (_e822.member_1.z + _e822.member_1.z); - let _e934 = (_e822.member_1.z * _e932); - let _e935 = (_e822.member_1.w * _e930); - let _e936 = (_e822.member_1.w * _e931); - let _e937 = (_e822.member_1.w * _e932); - let _e957 = (vec4((1f - fma(_e822.member_1.y, _e931, _e934)), fma(_e822.member_1.x, _e931, _e937), fma(_e822.member_1.x, _e932, -(_e936)), 0f) * _e822.member_2.x); - let _e959 = (vec4(fma(_e822.member_1.x, _e931, -(_e937)), (1f - fma(_e822.member_1.x, _e930, _e934)), fma(_e822.member_1.y, _e932, _e935), 0f) * _e822.member_2.y); - let _e961 = (vec4(fma(_e822.member_1.x, _e932, _e936), fma(_e822.member_1.y, _e932, -(_e935)), (1f - fma(_e822.member_1.x, _e930, (_e822.member_1.y * _e931))), 0f) * _e822.member_2.z); - if _e742 { - let _e1066 = local[_e396.member_1]; - phi_1635_ = _e394; - phi_1636_ = type_20((_e381.member + (vec4(fma(_e822.member.x, _e922.member.w, fma(_e961.x, _e922.member.z, fma(_e957.x, _e922.member.x, (_e959.x * _e922.member.y)))), fma(_e822.member.y, _e922.member.w, fma(_e961.y, _e922.member.z, fma(_e957.y, _e922.member.x, (_e959.y * _e922.member.y)))), fma(_e822.member.z, _e922.member.w, fma(_e961.z, _e922.member.z, fma(_e957.z, _e922.member.x, (_e959.z * _e922.member.y)))), (fma(_e961.w, _e922.member.z, fma(_e957.w, _e922.member.x, (_e959.w * _e922.member.y))) + _e922.member.w)) * _e1066)), (_e381.member_1 + (vec4(fma(_e822.member.x, _e922.member_1.w, fma(_e961.x, _e922.member_1.z, fma(_e957.x, _e922.member_1.x, (_e959.x * _e922.member_1.y)))), fma(_e822.member.y, _e922.member_1.w, fma(_e961.y, _e922.member_1.z, fma(_e957.y, _e922.member_1.x, (_e959.y * _e922.member_1.y)))), fma(_e822.member.z, _e922.member_1.w, fma(_e961.z, _e922.member_1.z, fma(_e957.z, _e922.member_1.x, (_e959.z * _e922.member_1.y)))), (fma(_e961.w, _e922.member_1.z, fma(_e957.w, _e922.member_1.x, (_e959.w * _e922.member_1.y))) + _e922.member_1.w)) * _e1066)), (_e381.member_2 + (vec4(fma(_e822.member.x, _e922.member_2.w, fma(_e961.x, _e922.member_2.z, fma(_e957.x, _e922.member_2.x, (_e959.x * _e922.member_2.y)))), fma(_e822.member.y, _e922.member_2.w, fma(_e961.y, _e922.member_2.z, fma(_e957.y, _e922.member_2.x, (_e959.y * _e922.member_2.y)))), fma(_e822.member.z, _e922.member_2.w, fma(_e961.z, _e922.member_2.z, fma(_e957.z, _e922.member_2.x, (_e959.z * _e922.member_2.y)))), (fma(_e961.w, _e922.member_2.z, fma(_e957.w, _e922.member_2.x, (_e959.w * _e922.member_2.y))) + _e922.member_2.w)) * _e1066)), (_e381.member_3 + (vec4(fma(_e822.member.x, _e922.member_3.w, fma(_e961.x, _e922.member_3.z, fma(_e957.x, _e922.member_3.x, (_e959.x * _e922.member_3.y)))), fma(_e822.member.y, _e922.member_3.w, fma(_e961.y, _e922.member_3.z, fma(_e957.y, _e922.member_3.x, (_e959.y * _e922.member_3.y)))), fma(_e822.member.z, _e922.member_3.w, fma(_e961.z, _e922.member_3.z, fma(_e957.z, _e922.member_3.x, (_e959.z * _e922.member_3.y)))), (fma(_e961.w, _e922.member_3.z, fma(_e957.w, _e922.member_3.x, (_e959.w * _e922.member_3.y))) + _e922.member_3.w)) * _e1066))); - } else { - phi_1635_ = type_24(); - phi_1636_ = type_20(); - } - let _e1081 = phi_1635_; - let _e1083 = phi_1636_; - phi_1637_ = select(false, true, _e742); - phi_1638_ = _e1081; - phi_1639_ = _e1083; - } else { - phi_1637_ = false; - phi_1638_ = type_24(); - phi_1639_ = type_20(); - } - let _e1086 = phi_1637_; - let _e1088 = phi_1638_; - let _e1090 = phi_1639_; - phi_1640_ = false; - phi_1641_ = type_27(); - phi_1642_ = _e1086; - phi_1046_ = _e1088; - phi_1049_ = _e1090; - break; - } - default: { - phi_1640_ = false; - phi_1641_ = type_27(); - phi_1642_ = false; - phi_1046_ = type_24(); - phi_1049_ = type_20(); - break; - } - } - let _e1092 = phi_1640_; - let _e1094 = phi_1641_; - let _e1096 = phi_1642_; - let _e1098 = phi_1046_; - let _e1100 = phi_1049_; - local_6 = _e1092; - local_7 = _e1094; - continue; - continuing { - phi_1045_ = _e1098; - phi_1048_ = _e1100; - break if !(_e1096); - } - } - let _e2034 = local_6; - phi_1643_ = _e2034; - let _e2037 = local_7; - phi_1644_ = _e2037; - } else { - phi_1643_ = false; - phi_1644_ = type_27(); - } - let _e1103 = phi_1643_; - let _e1105 = phi_1644_; - phi_1646_ = _e1103; - phi_1647_ = _e1105; - phi_1648_ = select(true, false, _e351); - } else { - phi_1646_ = false; - phi_1647_ = type_27(); - phi_1648_ = true; - } - let _e1108 = phi_1646_; - let _e1110 = phi_1647_; - let _e1112 = phi_1648_; - if _e1112 { - if (_e100 >= 10u) { - phi_3334_ = (_e128 <= (_e100 - 10u)); - } else { - phi_3334_ = false; - } - let _e1117 = phi_3334_; - if _e1117 { - let _e1120 = global_2.member[_e128]; - let _e1125 = global_2.member[(_e128 + 1u)]; - let _e1130 = global_2.member[(_e128 + 2u)]; - let _e1136 = global_2.member[(_e128 + 3u)]; - let _e1141 = global_2.member[(_e128 + 4u)]; - let _e1146 = global_2.member[(_e128 + 5u)]; - let _e1151 = global_2.member[(_e128 + 6u)]; - let _e1157 = global_2.member[(_e128 + 7u)]; - let _e1162 = global_2.member[(_e128 + 8u)]; - let _e1167 = global_2.member[(_e128 + 9u)]; - phi_1701_ = type_27(vec3(bitcast(_e1120), bitcast(_e1125), bitcast(_e1130)), vec4(bitcast(_e1136), bitcast(_e1141), bitcast(_e1146), bitcast(_e1151)), vec3(bitcast(_e1157), bitcast(_e1162), bitcast(_e1167))); - } else { - phi_1701_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); - } - let _e1172 = phi_1701_; - phi_1703_ = _e1172; - } else { - phi_1703_ = _e1110; - } - let _e1174 = phi_1703_; - if select(_e1108, true, _e1112) { - let _e1190 = sqrt(fma(_e323.member_2.z, _e323.member_2.z, fma(_e323.member_2.x, _e323.member_2.x, (_e323.member_2.y * _e323.member_2.y)))); - if (_e1190 == 0f) { - phi_1750_ = vec3(0f, 0f, 0f); - } else { - phi_1750_ = (_e323.member_2 * (1f / _e1190)); - } - let _e1195 = phi_1750_; - let _e1204 = sqrt(fma(_e323.member_3.z, _e323.member_3.z, fma(_e323.member_3.x, _e323.member_3.x, (_e323.member_3.y * _e323.member_3.y)))); - if (_e1204 == 0f) { - phi_3379_ = vec3(0f, 0f, 0f); - } else { - phi_3379_ = (vec3(_e323.member_3.x, _e323.member_3.y, _e323.member_3.z) * (1f / _e1204)); - } - let _e1209 = phi_3379_; - let _e1216 = (_e1174.member_1.x + _e1174.member_1.x); - let _e1217 = (_e1174.member_1.y + _e1174.member_1.y); - let _e1218 = (_e1174.member_1.z + _e1174.member_1.z); - let _e1220 = (_e1174.member_1.z * _e1218); - let _e1221 = (_e1174.member_1.w * _e1216); - let _e1222 = (_e1174.member_1.w * _e1217); - let _e1223 = (_e1174.member_1.w * _e1218); - let _e1242 = (vec4((1f - fma(_e1174.member_1.y, _e1217, _e1220)), fma(_e1174.member_1.x, _e1217, _e1223), fma(_e1174.member_1.x, _e1218, -(_e1222)), 0f) * _e1174.member_2.x); - let _e1243 = (vec4(fma(_e1174.member_1.x, _e1217, -(_e1223)), (1f - fma(_e1174.member_1.x, _e1216, _e1220)), fma(_e1174.member_1.y, _e1218, _e1221), 0f) * _e1174.member_2.y); - let _e1244 = (vec4(fma(_e1174.member_1.x, _e1218, _e1222), fma(_e1174.member_1.y, _e1218, -(_e1221)), (1f - fma(_e1174.member_1.x, _e1216, (_e1174.member_1.y * _e1217))), 0f) * _e1174.member_2.z); - let _e1249 = (_e1195.x / (_e1174.member_2.x * _e1174.member_2.x)); - let _e1251 = (_e1195.y / (_e1174.member_2.y * _e1174.member_2.y)); - let _e1253 = (_e1195.z / (_e1174.member_2.z * _e1174.member_2.z)); - let _e1269 = fma(_e1244.x, _e1253, fma(_e1242.x, _e1249, (_e1243.x * _e1251))); - let _e1270 = fma(_e1244.y, _e1253, fma(_e1242.y, _e1249, (_e1243.y * _e1251))); - let _e1271 = fma(_e1244.z, _e1253, fma(_e1242.z, _e1249, (_e1243.z * _e1251))); - let _e1276 = sqrt(fma(_e1271, _e1271, fma(_e1269, _e1269, (_e1270 * _e1270)))); - if (_e1276 == 0f) { - phi_3461_ = vec3(0f, 0f, 0f); - } else { - phi_3461_ = (vec3(_e1269, _e1270, _e1271) * (1f / _e1276)); - } - let _e1281 = phi_3461_; - global_11 = _e1281; - let _e1291 = fma(_e1244.x, _e1209.z, fma(_e1242.x, _e1209.x, (_e1243.x * _e1209.y))); - let _e1292 = fma(_e1244.y, _e1209.z, fma(_e1242.y, _e1209.x, (_e1243.y * _e1209.y))); - let _e1293 = fma(_e1244.z, _e1209.z, fma(_e1242.z, _e1209.x, (_e1243.z * _e1209.y))); - let _e1298 = sqrt(fma(_e1293, _e1293, fma(_e1291, _e1291, (_e1292 * _e1292)))); - if (_e1298 == 0f) { - phi_3496_ = vec3(0f, 0f, 0f); - } else { - phi_3496_ = (vec3(_e1291, _e1292, _e1293) * (1f / _e1298)); - } - let _e1303 = phi_3496_; - global_12 = _e1303; - let _e1322 = select(-1f, 1f, (_e323.member_3.w >= 0f)); - global_13 = vec3((fma(_e1281.y, _e1303.z, -((_e1303.y * _e1281.z))) * _e1322), (fma(_e1281.z, _e1303.x, -((_e1303.z * _e1281.x))) * _e1322), (fma(_e1281.x, _e1303.y, -((_e1303.x * _e1281.y))) * _e1322)); - let _e1340 = (_e1174.member.x + fma(_e1244.x, _e323.member.z, fma(_e1243.x, _e323.member.y, (_e1242.x * _e323.member.x)))); - let _e1341 = (_e1174.member.y + fma(_e1244.y, _e323.member.z, fma(_e1243.y, _e323.member.y, (_e1242.y * _e323.member.x)))); - let _e1342 = (_e1174.member.z + fma(_e1244.z, _e323.member.z, fma(_e1243.z, _e323.member.y, (_e1242.z * _e323.member.x)))); - global_14 = vec3(_e1340, _e1341, _e1342); - if (_e100 >= 83u) { - phi_3509_ = (_e124 <= (_e100 - 83u)); - } else { - phi_3509_ = false; - } - let _e1348 = phi_3509_; - if _e1348 { - let _e1351 = global_2.member[_e124]; - let _e1356 = global_2.member[(_e124 + 1u)]; - let _e1361 = global_2.member[(_e124 + 2u)]; - let _e1366 = global_2.member[(_e124 + 3u)]; - let _e1372 = global_2.member[(_e124 + 4u)]; - let _e1377 = global_2.member[(_e124 + 5u)]; - let _e1382 = global_2.member[(_e124 + 6u)]; - let _e1387 = global_2.member[(_e124 + 7u)]; - let _e1393 = global_2.member[(_e124 + 8u)]; - let _e1398 = global_2.member[(_e124 + 9u)]; - let _e1403 = global_2.member[(_e124 + 10u)]; - let _e1408 = global_2.member[(_e124 + 11u)]; - let _e1414 = global_2.member[(_e124 + 12u)]; - let _e1419 = global_2.member[(_e124 + 13u)]; - let _e1424 = global_2.member[(_e124 + 14u)]; - let _e1429 = global_2.member[(_e124 + 15u)]; - let _e1436 = global_2.member[(_e124 + 16u)]; - let _e1441 = global_2.member[(_e124 + 17u)]; - let _e1446 = global_2.member[(_e124 + 18u)]; - let _e1451 = global_2.member[(_e124 + 19u)]; - let _e1457 = global_2.member[(_e124 + 20u)]; - let _e1462 = global_2.member[(_e124 + 21u)]; - let _e1467 = global_2.member[(_e124 + 22u)]; - let _e1472 = global_2.member[(_e124 + 23u)]; - let _e1478 = global_2.member[(_e124 + 24u)]; - let _e1483 = global_2.member[(_e124 + 25u)]; - let _e1488 = global_2.member[(_e124 + 26u)]; - let _e1493 = global_2.member[(_e124 + 27u)]; - let _e1499 = global_2.member[(_e124 + 28u)]; - let _e1504 = global_2.member[(_e124 + 29u)]; - let _e1509 = global_2.member[(_e124 + 30u)]; - let _e1514 = global_2.member[(_e124 + 31u)]; - let _e1521 = global_2.member[(_e124 + 32u)]; - let _e1526 = global_2.member[(_e124 + 33u)]; - let _e1531 = global_2.member[(_e124 + 34u)]; - local_3 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_2074_ = type_24(0u, 6u); - loop { - let _e1536 = phi_2074_; - if (_e1536.member < _e1536.member_1) { - phi_2090_ = type_24((_e1536.member + 1u), _e1536.member_1); - phi_2091_ = type_24(1u, _e1536.member); - } else { - phi_2090_ = _e1536; - phi_2091_ = type_24(0u, type_24().member_1); - } - let _e1549 = phi_2090_; - let _e1551 = phi_2091_; - switch bitcast(_e1551.member) { - case 0: { - let _e1555 = local_3; - local_2 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_2104_ = type_24(0u, 8u); - loop { - let _e1558 = phi_2104_; - if (_e1558.member < _e1558.member_1) { - phi_2120_ = type_24((_e1558.member + 1u), _e1558.member_1); - phi_2121_ = type_24(1u, _e1558.member); - } else { - phi_2120_ = _e1558; - phi_2121_ = type_24(0u, type_24().member_1); - } - let _e1571 = phi_2120_; - let _e1573 = phi_2121_; - switch bitcast(_e1573.member) { - case 0: { - let _e1577 = local_2; - phi_2147_ = type_22(type_20(vec4(bitcast(_e1351), bitcast(_e1356), bitcast(_e1361), bitcast(_e1366)), vec4(bitcast(_e1372), bitcast(_e1377), bitcast(_e1382), bitcast(_e1387)), vec4(bitcast(_e1393), bitcast(_e1398), bitcast(_e1403), bitcast(_e1408)), vec4(bitcast(_e1414), bitcast(_e1419), bitcast(_e1424), bitcast(_e1429))), type_20(vec4(bitcast(_e1436), bitcast(_e1441), bitcast(_e1446), bitcast(_e1451)), vec4(bitcast(_e1457), bitcast(_e1462), bitcast(_e1467), bitcast(_e1472)), vec4(bitcast(_e1478), bitcast(_e1483), bitcast(_e1488), bitcast(_e1493)), vec4(bitcast(_e1499), bitcast(_e1504), bitcast(_e1509), bitcast(_e1514))), type_21(_e1577, _e1555), vec3(bitcast(_e1521), bitcast(_e1526), bitcast(_e1531))); - phi_2148_ = false; - phi_2105_ = type_24(); - break; - } - case 1: { - let _e1581 = ((_e124 + 59u) + (_e1573.member_1 * 3u)); - let _e1584 = global_2.member[_e1581]; - let _e1589 = global_2.member[(_e1581 + 1u)]; - let _e1594 = global_2.member[(_e1581 + 2u)]; - local_2[_e1573.member_1] = vec3(bitcast(_e1584), bitcast(_e1589), bitcast(_e1594)); - phi_2147_ = type_22(); - phi_2148_ = true; - phi_2105_ = _e1571; - break; - } - default: { - phi_2147_ = type_22(); - phi_2148_ = false; - phi_2105_ = type_24(); - break; - } - } - let _e1599 = phi_2147_; - let _e1601 = phi_2148_; - let _e1603 = phi_2105_; - local_8 = _e1599; - continue; - continuing { - phi_2104_ = _e1603; - break if !(_e1601); - } - } - let _e2060 = local_8; - phi_2168_ = _e2060; - phi_2169_ = false; - phi_2075_ = type_24(); - break; - } - case 1: { - let _e1606 = ((_e124 + 35u) + (_e1551.member_1 * 4u)); - let _e1609 = global_2.member[_e1606]; - let _e1614 = global_2.member[(_e1606 + 1u)]; - let _e1619 = global_2.member[(_e1606 + 2u)]; - let _e1624 = global_2.member[(_e1606 + 3u)]; - local_3[_e1551.member_1] = vec4(bitcast(_e1609), bitcast(_e1614), bitcast(_e1619), bitcast(_e1624)); - phi_2168_ = type_22(); - phi_2169_ = true; - phi_2075_ = _e1549; - break; - } - default: { - phi_2168_ = type_22(); - phi_2169_ = false; - phi_2075_ = type_24(); - break; - } - } - let _e1629 = phi_2168_; - let _e1631 = phi_2169_; - let _e1633 = phi_2075_; - local_9 = _e1629; - continue; - continuing { - phi_2074_ = _e1633; - break if !(_e1631); - } - } - let _e2065 = local_9; - phi_2174_ = _e2065; - } else { - phi_2174_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); - } - let _e1636 = phi_2174_; - global_1 = vec4((fma(fma(_e1636.member.member_3.x, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_2.z, fma(_e1636.member.member.x, _e1636.member_1.member_2.x, (_e1636.member.member_1.x * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.x, _e1636.member_1.member.w, fma(_e1636.member.member_2.x, _e1636.member_1.member.z, fma(_e1636.member.member.x, _e1636.member_1.member.x, (_e1636.member.member_1.x * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.x, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_1.z, fma(_e1636.member.member.x, _e1636.member_1.member_1.x, (_e1636.member.member_1.x * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.x, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.x, _e1636.member_1.member_3.z, fma(_e1636.member.member.x, _e1636.member_1.member_3.x, (_e1636.member.member_1.x * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.y, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_2.z, fma(_e1636.member.member.y, _e1636.member_1.member_2.x, (_e1636.member.member_1.y * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.y, _e1636.member_1.member.w, fma(_e1636.member.member_2.y, _e1636.member_1.member.z, fma(_e1636.member.member.y, _e1636.member_1.member.x, (_e1636.member.member_1.y * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.y, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_1.z, fma(_e1636.member.member.y, _e1636.member_1.member_1.x, (_e1636.member.member_1.y * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.y, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.y, _e1636.member_1.member_3.z, fma(_e1636.member.member.y, _e1636.member_1.member_3.x, (_e1636.member.member_1.y * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.z, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_2.z, fma(_e1636.member.member.z, _e1636.member_1.member_2.x, (_e1636.member.member_1.z * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.z, _e1636.member_1.member.w, fma(_e1636.member.member_2.z, _e1636.member_1.member.z, fma(_e1636.member.member.z, _e1636.member_1.member.x, (_e1636.member.member_1.z * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.z, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_1.z, fma(_e1636.member.member.z, _e1636.member_1.member_1.x, (_e1636.member.member_1.z * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.z, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.z, _e1636.member_1.member_3.z, fma(_e1636.member.member.z, _e1636.member_1.member_3.x, (_e1636.member.member_1.z * _e1636.member_1.member_3.y))))), (fma(fma(_e1636.member.member_3.w, _e1636.member_1.member_2.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_2.z, fma(_e1636.member.member.w, _e1636.member_1.member_2.x, (_e1636.member.member_1.w * _e1636.member_1.member_2.y)))), _e1342, fma(fma(_e1636.member.member_3.w, _e1636.member_1.member.w, fma(_e1636.member.member_2.w, _e1636.member_1.member.z, fma(_e1636.member.member.w, _e1636.member_1.member.x, (_e1636.member.member_1.w * _e1636.member_1.member.y)))), _e1340, (fma(_e1636.member.member_3.w, _e1636.member_1.member_1.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_1.z, fma(_e1636.member.member.w, _e1636.member_1.member_1.x, (_e1636.member.member_1.w * _e1636.member_1.member_1.y)))) * _e1341))) + fma(_e1636.member.member_3.w, _e1636.member_1.member_3.w, fma(_e1636.member.member_2.w, _e1636.member_1.member_3.z, fma(_e1636.member.member.w, _e1636.member_1.member_3.x, (_e1636.member.member_1.w * _e1636.member_1.member_3.y)))))); - } - phi_2375_ = false; - phi_903_ = type_24(); - phi_906_ = type_31(); - break; + let _e603 = local_1[_e594.member_1]; + if (_e603 >= _e572.member.member_1) { + phi_1245_ = 4294967295u; + } else { + phi_1245_ = (_e572.member.member + _e603); + } + let _e611 = phi_1245_; + if (_e100 >= 1u) { + phi_2996_ = (_e611 <= (_e100 - 1u)); + } else { + phi_2996_ = false; + } + let _e616 = phi_2996_; + if _e616 { + let _e619 = global_2.member[_e611]; + phi_1254_ = _e619; + } else { + phi_1254_ = 4294967295u; + } + let _e621 = phi_1254_; + if (_e100 >= 10u) { + phi_3020_ = (_e621 <= (_e100 - 10u)); + } else { + phi_3020_ = false; + } + let _e626 = phi_3020_; + if _e626 { + let _e629 = global_2.member[_e621]; + let _e634 = global_2.member[(_e621 + 1u)]; + let _e639 = global_2.member[(_e621 + 2u)]; + let _e645 = global_2.member[(_e621 + 3u)]; + let _e650 = global_2.member[(_e621 + 4u)]; + let _e655 = global_2.member[(_e621 + 5u)]; + let _e660 = global_2.member[(_e621 + 6u)]; + let _e666 = global_2.member[(_e621 + 7u)]; + let _e671 = global_2.member[(_e621 + 8u)]; + let _e676 = global_2.member[(_e621 + 9u)]; + phi_1303_ = type_27(vec3(bitcast(_e629), bitcast(_e634), bitcast(_e639)), vec4(bitcast(_e645), bitcast(_e650), bitcast(_e655), bitcast(_e660)), vec3(bitcast(_e666), bitcast(_e671), bitcast(_e676))); + } else { + phi_1303_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e681 = phi_1303_; + if (_e603 >= _e572.member_1.member_1) { + phi_1313_ = 4294967295u; + } else { + phi_1313_ = (_e572.member_1.member + (16u * _e603)); + } + let _e690 = phi_1313_; + if (_e100 >= 16u) { + phi_3046_ = (_e690 <= (_e100 - 16u)); + } else { + phi_3046_ = false; + } + let _e695 = phi_3046_; + if _e695 { + let _e698 = global_2.member[_e690]; + let _e703 = global_2.member[(_e690 + 1u)]; + let _e708 = global_2.member[(_e690 + 2u)]; + let _e713 = global_2.member[(_e690 + 3u)]; + let _e719 = global_2.member[(_e690 + 4u)]; + let _e724 = global_2.member[(_e690 + 5u)]; + let _e729 = global_2.member[(_e690 + 6u)]; + let _e734 = global_2.member[(_e690 + 7u)]; + let _e740 = global_2.member[(_e690 + 8u)]; + let _e745 = global_2.member[(_e690 + 9u)]; + let _e750 = global_2.member[(_e690 + 10u)]; + let _e755 = global_2.member[(_e690 + 11u)]; + let _e761 = global_2.member[(_e690 + 12u)]; + let _e766 = global_2.member[(_e690 + 13u)]; + let _e771 = global_2.member[(_e690 + 14u)]; + let _e776 = global_2.member[(_e690 + 15u)]; + phi_1386_ = type_20(vec4(bitcast(_e698), bitcast(_e703), bitcast(_e708), bitcast(_e713)), vec4(bitcast(_e719), bitcast(_e724), bitcast(_e729), bitcast(_e734)), vec4(bitcast(_e740), bitcast(_e745), bitcast(_e750), bitcast(_e755)), vec4(bitcast(_e761), bitcast(_e766), bitcast(_e771), bitcast(_e776))); + } else { + phi_1386_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); + } + let _e781 = phi_1386_; + let _e789 = (_e681.member_1.x + _e681.member_1.x); + let _e790 = (_e681.member_1.y + _e681.member_1.y); + let _e791 = (_e681.member_1.z + _e681.member_1.z); + let _e793 = (_e681.member_1.z * _e791); + let _e794 = (_e681.member_1.w * _e789); + let _e795 = (_e681.member_1.w * _e790); + let _e796 = (_e681.member_1.w * _e791); + let _e816 = (vec4((1f - fma(_e681.member_1.y, _e790, _e793)), fma(_e681.member_1.x, _e790, _e796), fma(_e681.member_1.x, _e791, -(_e795)), 0f) * _e681.member_2.x); + let _e818 = (vec4(fma(_e681.member_1.x, _e790, -(_e796)), (1f - fma(_e681.member_1.x, _e789, _e793)), fma(_e681.member_1.y, _e791, _e794), 0f) * _e681.member_2.y); + let _e820 = (vec4(fma(_e681.member_1.x, _e791, _e795), fma(_e681.member_1.y, _e791, -(_e794)), (1f - fma(_e681.member_1.x, _e789, (_e681.member_1.y * _e790))), 0f) * _e681.member_2.z); + if _e601 { + } else { + phi_3863_ = true; + break; + } + let _e925 = local[_e594.member_1]; + phi_1207_ = type_20((_e579.member + (vec4(fma(_e681.member.x, _e781.member.w, fma(_e820.x, _e781.member.z, fma(_e816.x, _e781.member.x, (_e818.x * _e781.member.y)))), fma(_e681.member.y, _e781.member.w, fma(_e820.y, _e781.member.z, fma(_e816.y, _e781.member.x, (_e818.y * _e781.member.y)))), fma(_e681.member.z, _e781.member.w, fma(_e820.z, _e781.member.z, fma(_e816.z, _e781.member.x, (_e818.z * _e781.member.y)))), (fma(_e820.w, _e781.member.z, fma(_e816.w, _e781.member.x, (_e818.w * _e781.member.y))) + _e781.member.w)) * _e925)), (_e579.member_1 + (vec4(fma(_e681.member.x, _e781.member_1.w, fma(_e820.x, _e781.member_1.z, fma(_e816.x, _e781.member_1.x, (_e818.x * _e781.member_1.y)))), fma(_e681.member.y, _e781.member_1.w, fma(_e820.y, _e781.member_1.z, fma(_e816.y, _e781.member_1.x, (_e818.y * _e781.member_1.y)))), fma(_e681.member.z, _e781.member_1.w, fma(_e820.z, _e781.member_1.z, fma(_e816.z, _e781.member_1.x, (_e818.z * _e781.member_1.y)))), (fma(_e820.w, _e781.member_1.z, fma(_e816.w, _e781.member_1.x, (_e818.w * _e781.member_1.y))) + _e781.member_1.w)) * _e925)), (_e579.member_2 + (vec4(fma(_e681.member.x, _e781.member_2.w, fma(_e820.x, _e781.member_2.z, fma(_e816.x, _e781.member_2.x, (_e818.x * _e781.member_2.y)))), fma(_e681.member.y, _e781.member_2.w, fma(_e820.y, _e781.member_2.z, fma(_e816.y, _e781.member_2.x, (_e818.y * _e781.member_2.y)))), fma(_e681.member.z, _e781.member_2.w, fma(_e820.z, _e781.member_2.z, fma(_e816.z, _e781.member_2.x, (_e818.z * _e781.member_2.y)))), (fma(_e820.w, _e781.member_2.z, fma(_e816.w, _e781.member_2.x, (_e818.w * _e781.member_2.y))) + _e781.member_2.w)) * _e925)), (_e579.member_3 + (vec4(fma(_e681.member.x, _e781.member_3.w, fma(_e820.x, _e781.member_3.z, fma(_e816.x, _e781.member_3.x, (_e818.x * _e781.member_3.y)))), fma(_e681.member.y, _e781.member_3.w, fma(_e820.y, _e781.member_3.z, fma(_e816.y, _e781.member_3.x, (_e818.y * _e781.member_3.y)))), fma(_e681.member.z, _e781.member_3.w, fma(_e820.z, _e781.member_3.z, fma(_e816.z, _e781.member_3.x, (_e818.z * _e781.member_3.y)))), (fma(_e820.w, _e781.member_3.z, fma(_e816.w, _e781.member_3.x, (_e818.w * _e781.member_3.y))) + _e781.member_3.w)) * _e925))); + phi_1623_ = true; + break; + } + default: { + phi_1207_ = type_20(); + phi_1623_ = bool(); + break; + } + } + let _e940 = phi_1207_; + let _e942 = phi_1623_; + continue; + continuing { + phi_1203_ = _e592; + phi_1206_ = _e940; + phi_3863_ = false; + break if !(_e942); + } + } + let _e945 = phi_3863_; + if _e945 { + break; + } + let _e947 = local_11; + let _e952 = global_10.member[0u]; + if (_e947.member.x == _e952) { + let _e955 = local_12; + let _e960 = global_10.member[1u]; + if (_e955.member.y == _e960) { + let _e963 = local_13; + let _e968 = global_10.member[2u]; + let _e969 = (_e963.member.z == _e968); + if _e969 { + let _e971 = local_14; + let _e976 = global_10.member[3u]; + phi_1650_ = (_e971.member.w == _e976); + } else { + phi_1650_ = bool(); + } + let _e979 = phi_1650_; + phi_1652_ = _e979; + phi_1653_ = select(true, false, _e969); + } else { + phi_1652_ = bool(); + phi_1653_ = true; + } + let _e982 = phi_1652_; + let _e984 = phi_1653_; + phi_1654_ = _e982; + phi_1655_ = _e984; + } else { + phi_1654_ = bool(); + phi_1655_ = true; + } + let _e986 = phi_1654_; + let _e988 = phi_1655_; + if select(_e986, false, _e988) { + let _e991 = local_15; + let _e996 = global_10.member_1[0u]; + if (_e991.member_1.x == _e996) { + let _e999 = local_16; + let _e1004 = global_10.member_1[1u]; + if (_e999.member_1.y == _e1004) { + let _e1007 = local_17; + let _e1012 = global_10.member_1[2u]; + let _e1013 = (_e1007.member_1.z == _e1012); + if _e1013 { + let _e1015 = local_18; + let _e1020 = global_10.member_1[3u]; + phi_1689_ = (_e1015.member_1.w == _e1020); + } else { + phi_1689_ = bool(); + } + let _e1023 = phi_1689_; + phi_1691_ = _e1023; + phi_1692_ = select(true, false, _e1013); + } else { + phi_1691_ = bool(); + phi_1692_ = true; + } + let _e1026 = phi_1691_; + let _e1028 = phi_1692_; + phi_1693_ = _e1026; + phi_1694_ = _e1028; + } else { + phi_1693_ = bool(); + phi_1694_ = true; + } + let _e1030 = phi_1693_; + let _e1032 = phi_1694_; + if select(_e1030, false, _e1032) { + let _e1035 = local_19; + let _e1040 = global_10.member_2[0u]; + if (_e1035.member_2.x == _e1040) { + let _e1043 = local_20; + let _e1048 = global_10.member_2[1u]; + if (_e1043.member_2.y == _e1048) { + let _e1051 = local_21; + let _e1056 = global_10.member_2[2u]; + let _e1057 = (_e1051.member_2.z == _e1056); + if _e1057 { + let _e1059 = local_22; + let _e1064 = global_10.member_2[3u]; + phi_1728_ = (_e1059.member_2.w == _e1064); + } else { + phi_1728_ = bool(); } - case 1: { - if (_e338.member_1 >= _e144) { - phi_2235_ = 4294967295u; - } else { - phi_2235_ = (_e140 + (2u * _e338.member_1)); - } - let _e1764 = phi_2235_; - if (_e100 >= 2u) { - phi_3766_ = (_e1764 <= (_e100 - 2u)); - } else { - phi_3766_ = false; - } - let _e1769 = phi_3766_; - if _e1769 { - let _e1772 = global_2.member[_e1764]; - let _e1776 = global_2.member[(_e1764 + 1u)]; - phi_2253_ = type_24(_e1772, _e1776); - } else { - phi_2253_ = type_24(4294967295u, 0u); - } - let _e1779 = phi_2253_; - if (_e173 >= _e1779.member_1) { - phi_3792_ = 4294967295u; - } else { - phi_3792_ = (_e1779.member + (9u * _e173)); - } - let _e1786 = phi_3792_; - if (_e100 >= 9u) { - phi_3811_ = (_e1786 <= (_e100 - 9u)); - } else { - phi_3811_ = false; - } - let _e1791 = phi_3811_; - if _e1791 { - let _e1794 = global_2.member[_e1786]; - let _e1799 = global_2.member[(_e1786 + 1u)]; - let _e1804 = global_2.member[(_e1786 + 2u)]; - let _e1810 = global_2.member[(_e1786 + 3u)]; - let _e1815 = global_2.member[(_e1786 + 4u)]; - let _e1820 = global_2.member[(_e1786 + 5u)]; - let _e1826 = global_2.member[(_e1786 + 6u)]; - let _e1831 = global_2.member[(_e1786 + 7u)]; - let _e1836 = global_2.member[(_e1786 + 8u)]; - phi_2303_ = type_28(vec3(bitcast(_e1794), bitcast(_e1799), bitcast(_e1804)), vec3(bitcast(_e1810), bitcast(_e1815), bitcast(_e1820)), vec3(bitcast(_e1826), bitcast(_e1831), bitcast(_e1836))); - } else { - phi_2303_ = type_28(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - } - let _e1841 = phi_2303_; - if (_e338.member_1 >= _e152) { - phi_2313_ = 4294967295u; - } else { - phi_2313_ = (_e148 + _e338.member_1); - } - let _e1845 = phi_2313_; - if (_e100 >= 1u) { - phi_3833_ = (_e1845 <= (_e100 - 1u)); - } else { - phi_3833_ = false; - } - let _e1850 = phi_3833_; - if _e1850 { - let _e1853 = global_2.member[_e1845]; - phi_2321_ = bitcast(_e1853); + let _e1067 = phi_1728_; + phi_1730_ = _e1067; + phi_1731_ = select(true, false, _e1057); + } else { + phi_1730_ = bool(); + phi_1731_ = true; + } + let _e1070 = phi_1730_; + let _e1072 = phi_1731_; + phi_1732_ = _e1070; + phi_1733_ = _e1072; + } else { + phi_1732_ = bool(); + phi_1733_ = true; + } + let _e1074 = phi_1732_; + let _e1076 = phi_1733_; + let _e1077 = select(_e1074, false, _e1076); + if _e1077 { + let _e1079 = local_23; + let _e1084 = global_10.member_3[0u]; + if (_e1079.member_3.x == _e1084) { + let _e1087 = local_24; + let _e1092 = global_10.member_3[1u]; + if (_e1087.member_3.y == _e1092) { + let _e1095 = local_25; + let _e1100 = global_10.member_3[2u]; + let _e1101 = (_e1095.member_3.z == _e1100); + if _e1101 { + let _e1103 = local_26; + let _e1108 = global_10.member_3[3u]; + phi_1767_ = (_e1103.member_3.w == _e1108); } else { - phi_2321_ = 0f; + phi_1767_ = bool(); } - let _e1856 = phi_2321_; - let _e1879 = type_31(vec3(fma(_e1856, _e1841.member.x, _e323.member.x), fma(_e1856, _e1841.member.y, _e323.member.y), fma(_e1856, _e1841.member.z, _e323.member.z)), _e323.member_1, _e323.member_2, _e323.member_3, _e323.member_4, _e323.member_5, _e323.member_6, _e323.member_7); - let _e1902 = type_31(_e1879.member, _e1879.member_1, vec3(fma(_e1856, _e1841.member_1.x, _e323.member_2.x), fma(_e1856, _e1841.member_1.y, _e323.member_2.y), fma(_e1856, _e1841.member_1.z, _e323.member_2.z)), _e1879.member_3, _e1879.member_4, _e1879.member_5, _e1879.member_6, _e1879.member_7); - phi_2375_ = true; - phi_903_ = _e336; - phi_906_ = type_31(_e1902.member, _e1902.member_1, _e1902.member_2, vec4(fma(_e1856, _e1841.member_2.x, _e323.member_3.x), fma(_e1856, _e1841.member_2.y, _e323.member_3.y), fma(_e1856, _e1841.member_2.z, _e323.member_3.z), _e323.member_3.w), _e1902.member_4, _e1902.member_5, _e1902.member_6, _e1902.member_7); - break; - } - default: { - phi_2375_ = false; - phi_903_ = type_24(); - phi_906_ = type_31(); - break; + let _e1111 = phi_1767_; + phi_1769_ = _e1111; + phi_1770_ = select(true, false, _e1101); + } else { + phi_1769_ = bool(); + phi_1770_ = true; } + let _e1114 = phi_1769_; + let _e1116 = phi_1770_; + phi_1771_ = _e1114; + phi_1772_ = _e1116; + } else { + phi_1771_ = bool(); + phi_1772_ = true; + } + let _e1118 = phi_1771_; + let _e1120 = phi_1772_; + phi_1777_ = select(_e1118, false, _e1120); + } else { + phi_1777_ = bool(); + } + let _e1123 = phi_1777_; + phi_1779_ = _e1123; + phi_1780_ = select(true, false, _e1077); + } else { + phi_1779_ = bool(); + phi_1780_ = true; + } + let _e1126 = phi_1779_; + let _e1128 = phi_1780_; + phi_1781_ = _e1126; + phi_1782_ = _e1128; + } else { + phi_1781_ = bool(); + phi_1782_ = true; + } + let _e1130 = phi_1781_; + let _e1132 = phi_1782_; + if select(_e1130, false, _e1132) { + phi_1790_ = type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)); + } else { + let _e2062 = local_31; + phi_1790_ = _e2062; + } + let _e1135 = phi_1790_; + let _e1158 = fma(_e1135.member_2.z, _e1135.member_3.w, -((_e1135.member_2.w * _e1135.member_3.z))); + let _e1161 = fma(_e1135.member_2.y, _e1135.member_3.w, -((_e1135.member_2.w * _e1135.member_3.y))); + let _e1164 = fma(_e1135.member_2.y, _e1135.member_3.z, -((_e1135.member_2.z * _e1135.member_3.y))); + let _e1167 = fma(_e1135.member_2.x, _e1135.member_3.w, -((_e1135.member_2.w * _e1135.member_3.x))); + let _e1170 = fma(_e1135.member_2.x, _e1135.member_3.z, -((_e1135.member_2.z * _e1135.member_3.x))); + let _e1173 = fma(_e1135.member_2.x, _e1135.member_3.y, -((_e1135.member_2.y * _e1135.member_3.x))); + let _e1195 = fma(-(_e1135.member.w), fma(_e1135.member_1.z, _e1173, fma(_e1135.member_1.x, _e1164, -((_e1135.member_1.y * _e1170)))), fma(_e1135.member.z, fma(_e1135.member_1.w, _e1173, fma(_e1135.member_1.x, _e1161, -((_e1135.member_1.y * _e1167)))), fma(_e1135.member.x, fma(_e1135.member_1.w, _e1164, fma(_e1135.member_1.y, _e1158, -((_e1135.member_1.z * _e1161)))), -((_e1135.member.y * fma(_e1135.member_1.w, _e1170, fma(_e1135.member_1.x, _e1158, -((_e1135.member_1.z * _e1167))))))))); + if (_e1195 == 0f) { + phi_3293_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); + phi_3294_ = type_27(); + phi_3295_ = true; + } else { + let _e1204 = (sqrt(fma(_e1135.member.w, _e1135.member.w, fma(_e1135.member.z, _e1135.member.z, fma(_e1135.member.x, _e1135.member.x, (_e1135.member.y * _e1135.member.y))))) * select(-1f, 1f, (_e1195 >= 0f))); + let _e1209 = sqrt(fma(_e1135.member_1.w, _e1135.member_1.w, fma(_e1135.member_1.z, _e1135.member_1.z, fma(_e1135.member_1.x, _e1135.member_1.x, (_e1135.member_1.y * _e1135.member_1.y))))); + let _e1214 = sqrt(fma(_e1135.member_2.w, _e1135.member_2.w, fma(_e1135.member_2.z, _e1135.member_2.z, fma(_e1135.member_2.x, _e1135.member_2.x, (_e1135.member_2.y * _e1135.member_2.y))))); + if (_e1204 != 0f) { + phi_3183_ = select(true, false, (_e1209 != 0f)); + } else { + phi_3183_ = true; + } + let _e1221 = phi_3183_; + let _e1222 = select((_e1214 != 0f), false, _e1221); + if _e1222 { + let _e1223 = (1f / _e1204); + let _e1224 = (1f / _e1209); + let _e1225 = (1f / _e1214); + let _e1226 = (_e1135.member.x * _e1223); + let _e1227 = (_e1135.member.z * _e1223); + let _e1228 = (_e1135.member_1.x * _e1224); + let _e1229 = (_e1135.member_2.x * _e1225); + let _e1230 = (_e1135.member_2.y * _e1225); + if ((_e1135.member_2.z * _e1225) <= 0f) { + let _e1234 = fma(_e1135.member_1.y, _e1224, -(_e1226)); + let _e1236 = fma(-(_e1135.member_2.z), _e1225, 1f); + if (_e1234 <= 0f) { + let _e1238 = (_e1236 - _e1234); + let _e1240 = (0.5f / sqrt(_e1238)); + phi_3246_ = vec4((_e1238 * _e1240), (fma(_e1135.member.y, _e1223, _e1228) * _e1240), (fma(_e1135.member.z, _e1223, _e1229) * _e1240), (fma(_e1135.member_1.z, _e1224, -(_e1230)) * _e1240)); + } else { + let _e1250 = (_e1236 + _e1234); + let _e1252 = (0.5f / sqrt(_e1250)); + phi_3246_ = vec4((fma(_e1135.member.y, _e1223, _e1228) * _e1252), (_e1250 * _e1252), (fma(_e1135.member_1.z, _e1224, _e1230) * _e1252), (fma(_e1135.member_2.x, _e1225, -(_e1227)) * _e1252)); } - let _e1929 = phi_2375_; - let _e1931 = phi_903_; - let _e1933 = phi_906_; - continue; - continuing { - phi_902_ = _e1931; - phi_905_ = _e1933; - break if !(_e1929); + let _e1263 = phi_3246_; + phi_3278_ = _e1263; + } else { + let _e1264 = fma(_e1135.member_1.y, _e1224, _e1226); + let _e1265 = fma(_e1135.member_2.z, _e1225, 1f); + if (_e1264 <= 0f) { + let _e1267 = (_e1265 - _e1264); + let _e1269 = (0.5f / sqrt(_e1267)); + phi_3276_ = vec4((fma(_e1135.member.z, _e1223, _e1229) * _e1269), (fma(_e1135.member_1.z, _e1224, _e1230) * _e1269), (_e1267 * _e1269), (fma(_e1135.member.y, _e1223, -(_e1228)) * _e1269)); + } else { + let _e1279 = (_e1265 + _e1264); + let _e1281 = (0.5f / sqrt(_e1279)); + phi_3276_ = vec4((fma(_e1135.member_1.z, _e1224, -(_e1230)) * _e1281), (fma(_e1135.member_2.x, _e1225, -(_e1227)) * _e1281), (fma(_e1135.member.y, _e1223, -(_e1228)) * _e1281), (_e1279 * _e1281)); } + let _e1294 = phi_3276_; + phi_3278_ = _e1294; } - phi_2383_ = false; - phi_873_ = type_24(); + let _e1296 = phi_3278_; + phi_3289_ = type_27(vec3(_e1204, _e1209, _e1214), _e1296, vec3(_e1135.member_3.x, _e1135.member_3.y, _e1135.member_3.z)); + phi_3290_ = type_27(); + } else { + phi_3289_ = type_27(); + phi_3290_ = type_27(vec3(1f, 1f, 1f), vec4(0f, 0f, 0f, 1f), vec3(0f, 0f, 0f)); + } + let _e1300 = phi_3289_; + let _e1302 = phi_3290_; + phi_3293_ = _e1302; + phi_3294_ = _e1300; + phi_3295_ = select(true, false, _e1222); + } + let _e1305 = phi_3293_; + let _e1307 = phi_3294_; + let _e1309 = phi_3295_; + if _e1309 { + phi_3299_ = _e1305; + } else { + phi_3299_ = _e1307; + } + let _e1311 = phi_3299_; + phi_1792_ = type_27(_e1311.member_2, _e1311.member_1, _e1311.member); + } else { + phi_1792_ = type_27(); + } + let _e1317 = phi_1792_; + phi_1794_ = _e1317; + phi_1795_ = select(true, false, _e547); + } else { + phi_1794_ = type_27(); + phi_1795_ = true; + } + let _e1320 = phi_1794_; + let _e1322 = phi_1795_; + if _e1322 { + if (_e100 >= 10u) { + phi_3393_ = (_e128 <= (_e100 - 10u)); + } else { + phi_3393_ = false; + } + let _e1327 = phi_3393_; + if _e1327 { + let _e1330 = global_2.member[_e128]; + let _e1335 = global_2.member[(_e128 + 1u)]; + let _e1340 = global_2.member[(_e128 + 2u)]; + let _e1346 = global_2.member[(_e128 + 3u)]; + let _e1351 = global_2.member[(_e128 + 4u)]; + let _e1356 = global_2.member[(_e128 + 5u)]; + let _e1361 = global_2.member[(_e128 + 6u)]; + let _e1367 = global_2.member[(_e128 + 7u)]; + let _e1372 = global_2.member[(_e128 + 8u)]; + let _e1377 = global_2.member[(_e128 + 9u)]; + phi_1848_ = type_27(vec3(bitcast(_e1330), bitcast(_e1335), bitcast(_e1340)), vec4(bitcast(_e1346), bitcast(_e1351), bitcast(_e1356), bitcast(_e1361)), vec3(bitcast(_e1367), bitcast(_e1372), bitcast(_e1377))); + } else { + phi_1848_ = type_27(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + } + let _e1382 = phi_1848_; + phi_1849_ = _e1382; + } else { + phi_1849_ = _e1320; + } + let _e1384 = phi_1849_; + let _e1393 = local_27; + let _e1401 = sqrt(fma(_e1393.member_2.z, _e1393.member_2.z, fma(_e1393.member_2.x, _e1393.member_2.x, (_e1393.member_2.y * _e1393.member_2.y)))); + if (_e1401 == 0f) { + phi_1893_ = vec3(0f, 0f, 0f); + } else { + phi_1893_ = (_e1393.member_2 * (1f / _e1401)); + } + let _e1406 = phi_1893_; + let _e1408 = local_28; + let _e1417 = sqrt(fma(_e1408.member_3.z, _e1408.member_3.z, fma(_e1408.member_3.x, _e1408.member_3.x, (_e1408.member_3.y * _e1408.member_3.y)))); + if (_e1417 == 0f) { + phi_3438_ = vec3(0f, 0f, 0f); + } else { + phi_3438_ = (vec3(_e1408.member_3.x, _e1408.member_3.y, _e1408.member_3.z) * (1f / _e1417)); + } + let _e1422 = phi_3438_; + let _e1429 = (_e1384.member_1.x + _e1384.member_1.x); + let _e1430 = (_e1384.member_1.y + _e1384.member_1.y); + let _e1431 = (_e1384.member_1.z + _e1384.member_1.z); + let _e1433 = (_e1384.member_1.z * _e1431); + let _e1434 = (_e1384.member_1.w * _e1429); + let _e1435 = (_e1384.member_1.w * _e1430); + let _e1436 = (_e1384.member_1.w * _e1431); + let _e1455 = (vec4((1f - fma(_e1384.member_1.y, _e1430, _e1433)), fma(_e1384.member_1.x, _e1430, _e1436), fma(_e1384.member_1.x, _e1431, -(_e1435)), 0f) * _e1384.member_2.x); + let _e1456 = (vec4(fma(_e1384.member_1.x, _e1430, -(_e1436)), (1f - fma(_e1384.member_1.x, _e1429, _e1433)), fma(_e1384.member_1.y, _e1431, _e1434), 0f) * _e1384.member_2.y); + let _e1457 = (vec4(fma(_e1384.member_1.x, _e1431, _e1435), fma(_e1384.member_1.y, _e1431, -(_e1434)), (1f - fma(_e1384.member_1.x, _e1429, (_e1384.member_1.y * _e1430))), 0f) * _e1384.member_2.z); + let _e1462 = (_e1406.x / (_e1384.member_2.x * _e1384.member_2.x)); + let _e1464 = (_e1406.y / (_e1384.member_2.y * _e1384.member_2.y)); + let _e1466 = (_e1406.z / (_e1384.member_2.z * _e1384.member_2.z)); + let _e1482 = fma(_e1457.x, _e1466, fma(_e1455.x, _e1462, (_e1456.x * _e1464))); + let _e1483 = fma(_e1457.y, _e1466, fma(_e1455.y, _e1462, (_e1456.y * _e1464))); + let _e1484 = fma(_e1457.z, _e1466, fma(_e1455.z, _e1462, (_e1456.z * _e1464))); + let _e1489 = sqrt(fma(_e1484, _e1484, fma(_e1482, _e1482, (_e1483 * _e1483)))); + if (_e1489 == 0f) { + phi_3520_ = vec3(0f, 0f, 0f); + } else { + phi_3520_ = (vec3(_e1482, _e1483, _e1484) * (1f / _e1489)); + } + let _e1494 = phi_3520_; + global_11 = _e1494; + let _e1504 = fma(_e1457.x, _e1422.z, fma(_e1455.x, _e1422.x, (_e1456.x * _e1422.y))); + let _e1505 = fma(_e1457.y, _e1422.z, fma(_e1455.y, _e1422.x, (_e1456.y * _e1422.y))); + let _e1506 = fma(_e1457.z, _e1422.z, fma(_e1455.z, _e1422.x, (_e1456.z * _e1422.y))); + let _e1511 = sqrt(fma(_e1506, _e1506, fma(_e1504, _e1504, (_e1505 * _e1505)))); + if (_e1511 == 0f) { + phi_3555_ = vec3(0f, 0f, 0f); + } else { + phi_3555_ = (vec3(_e1504, _e1505, _e1506) * (1f / _e1511)); + } + let _e1516 = phi_3555_; + global_12 = _e1516; + let _e1533 = local_29; + let _e1537 = select(-1f, 1f, (_e1533.member_3.w >= 0f)); + global_13 = vec3((fma(_e1494.y, _e1516.z, -((_e1516.y * _e1494.z))) * _e1537), (fma(_e1494.z, _e1516.x, -((_e1516.z * _e1494.x))) * _e1537), (fma(_e1494.x, _e1516.y, -((_e1516.x * _e1494.y))) * _e1537)); + let _e1543 = local_30; + let _e1557 = (_e1384.member.x + fma(_e1457.x, _e1543.member.z, fma(_e1456.x, _e1543.member.y, (_e1455.x * _e1543.member.x)))); + let _e1558 = (_e1384.member.y + fma(_e1457.y, _e1543.member.z, fma(_e1456.y, _e1543.member.y, (_e1455.y * _e1543.member.x)))); + let _e1559 = (_e1384.member.z + fma(_e1457.z, _e1543.member.z, fma(_e1456.z, _e1543.member.y, (_e1455.z * _e1543.member.x)))); + global_14 = vec3(_e1557, _e1558, _e1559); + if (_e100 >= 83u) { + phi_3568_ = (_e124 <= (_e100 - 83u)); + } else { + phi_3568_ = false; + } + let _e1565 = phi_3568_; + if _e1565 { + let _e1568 = global_2.member[_e124]; + let _e1573 = global_2.member[(_e124 + 1u)]; + let _e1578 = global_2.member[(_e124 + 2u)]; + let _e1583 = global_2.member[(_e124 + 3u)]; + let _e1589 = global_2.member[(_e124 + 4u)]; + let _e1594 = global_2.member[(_e124 + 5u)]; + let _e1599 = global_2.member[(_e124 + 6u)]; + let _e1604 = global_2.member[(_e124 + 7u)]; + let _e1610 = global_2.member[(_e124 + 8u)]; + let _e1615 = global_2.member[(_e124 + 9u)]; + let _e1620 = global_2.member[(_e124 + 10u)]; + let _e1625 = global_2.member[(_e124 + 11u)]; + let _e1631 = global_2.member[(_e124 + 12u)]; + let _e1636 = global_2.member[(_e124 + 13u)]; + let _e1641 = global_2.member[(_e124 + 14u)]; + let _e1646 = global_2.member[(_e124 + 15u)]; + let _e1653 = global_2.member[(_e124 + 16u)]; + let _e1658 = global_2.member[(_e124 + 17u)]; + let _e1663 = global_2.member[(_e124 + 18u)]; + let _e1668 = global_2.member[(_e124 + 19u)]; + let _e1674 = global_2.member[(_e124 + 20u)]; + let _e1679 = global_2.member[(_e124 + 21u)]; + let _e1684 = global_2.member[(_e124 + 22u)]; + let _e1689 = global_2.member[(_e124 + 23u)]; + let _e1695 = global_2.member[(_e124 + 24u)]; + let _e1700 = global_2.member[(_e124 + 25u)]; + let _e1705 = global_2.member[(_e124 + 26u)]; + let _e1710 = global_2.member[(_e124 + 27u)]; + let _e1716 = global_2.member[(_e124 + 28u)]; + let _e1721 = global_2.member[(_e124 + 29u)]; + let _e1726 = global_2.member[(_e124 + 30u)]; + let _e1731 = global_2.member[(_e124 + 31u)]; + let _e1738 = global_2.member[(_e124 + 32u)]; + let _e1743 = global_2.member[(_e124 + 33u)]; + let _e1748 = global_2.member[(_e124 + 34u)]; + local_3 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); + phi_2217_ = type_24(0u, 6u); + loop { + let _e1753 = phi_2217_; + if (_e1753.member < _e1753.member_1) { + phi_2218_ = type_24((_e1753.member + 1u), _e1753.member_1); + phi_2233_ = type_24(1u, _e1753.member); + } else { + phi_2218_ = _e1753; + phi_2233_ = type_24(0u, type_24().member_1); + } + let _e1766 = phi_2218_; + let _e1768 = phi_2233_; + switch bitcast(_e1768.member) { + case 0: { + phi_2260_ = false; break; } case 1: { - let _e1938 = global_2.member[((_e178 + 22u) + _e313.member_1)]; - local_4[_e313.member_1] = bitcast(_e1938); - phi_2383_ = true; - phi_873_ = _e311; + let _e1773 = ((_e124 + 35u) + (_e1768.member_1 * 4u)); + let _e1776 = global_2.member[_e1773]; + let _e1781 = global_2.member[(_e1773 + 1u)]; + let _e1786 = global_2.member[(_e1773 + 2u)]; + let _e1791 = global_2.member[(_e1773 + 3u)]; + local_3[_e1768.member_1] = vec4(bitcast(_e1776), bitcast(_e1781), bitcast(_e1786), bitcast(_e1791)); + phi_2260_ = true; break; } default: { - phi_2383_ = false; - phi_873_ = type_24(); + phi_2260_ = bool(); break; } } - let _e1942 = phi_2383_; - let _e1944 = phi_873_; + let _e1796 = phi_2260_; continue; continuing { - phi_872_ = _e1944; - break if !(_e1942); + phi_2217_ = _e1766; + break if !(_e1796); } } - phi_2390_ = false; - phi_843_ = type_24(); - break; - } - case 1: { - let _e1949 = global_2.member[((_e178 + 18u) + _e291.member_1)]; - local_5[_e291.member_1] = _e1949; - phi_2390_ = true; - phi_843_ = _e289; - break; - } - default: { - phi_2390_ = false; - phi_843_ = type_24(); - break; + let _e1798 = local_3; + local_2 = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_2266_ = type_24(0u, 8u); + loop { + let _e1801 = phi_2266_; + if (_e1801.member < _e1801.member_1) { + phi_2267_ = type_24((_e1801.member + 1u), _e1801.member_1); + phi_2282_ = type_24(1u, _e1801.member); + } else { + phi_2267_ = _e1801; + phi_2282_ = type_24(0u, type_24().member_1); + } + let _e1814 = phi_2267_; + let _e1816 = phi_2282_; + switch bitcast(_e1816.member) { + case 0: { + phi_2305_ = false; + break; + } + case 1: { + let _e1821 = ((_e124 + 59u) + (_e1816.member_1 * 3u)); + let _e1824 = global_2.member[_e1821]; + let _e1829 = global_2.member[(_e1821 + 1u)]; + let _e1834 = global_2.member[(_e1821 + 2u)]; + local_2[_e1816.member_1] = vec3(bitcast(_e1824), bitcast(_e1829), bitcast(_e1834)); + phi_2305_ = true; + break; + } + default: { + phi_2305_ = bool(); + break; + } + } + let _e1839 = phi_2305_; + continue; + continuing { + phi_2266_ = _e1814; + break if !(_e1839); + } + } + let _e1841 = local_2; + phi_2313_ = type_22(type_20(vec4(bitcast(_e1568), bitcast(_e1573), bitcast(_e1578), bitcast(_e1583)), vec4(bitcast(_e1589), bitcast(_e1594), bitcast(_e1599), bitcast(_e1604)), vec4(bitcast(_e1610), bitcast(_e1615), bitcast(_e1620), bitcast(_e1625)), vec4(bitcast(_e1631), bitcast(_e1636), bitcast(_e1641), bitcast(_e1646))), type_20(vec4(bitcast(_e1653), bitcast(_e1658), bitcast(_e1663), bitcast(_e1668)), vec4(bitcast(_e1674), bitcast(_e1679), bitcast(_e1684), bitcast(_e1689)), vec4(bitcast(_e1695), bitcast(_e1700), bitcast(_e1705), bitcast(_e1710)), vec4(bitcast(_e1716), bitcast(_e1721), bitcast(_e1726), bitcast(_e1731))), type_21(_e1841, _e1798), vec3(bitcast(_e1738), bitcast(_e1743), bitcast(_e1748))); + } else { + phi_2313_ = type_22(type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_20(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_21(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } + let _e1845 = phi_2313_; + global_1 = vec4((fma(fma(_e1845.member.member_3.x, _e1845.member_1.member_2.w, fma(_e1845.member.member_2.x, _e1845.member_1.member_2.z, fma(_e1845.member.member.x, _e1845.member_1.member_2.x, (_e1845.member.member_1.x * _e1845.member_1.member_2.y)))), _e1559, fma(fma(_e1845.member.member_3.x, _e1845.member_1.member.w, fma(_e1845.member.member_2.x, _e1845.member_1.member.z, fma(_e1845.member.member.x, _e1845.member_1.member.x, (_e1845.member.member_1.x * _e1845.member_1.member.y)))), _e1557, (fma(_e1845.member.member_3.x, _e1845.member_1.member_1.w, fma(_e1845.member.member_2.x, _e1845.member_1.member_1.z, fma(_e1845.member.member.x, _e1845.member_1.member_1.x, (_e1845.member.member_1.x * _e1845.member_1.member_1.y)))) * _e1558))) + fma(_e1845.member.member_3.x, _e1845.member_1.member_3.w, fma(_e1845.member.member_2.x, _e1845.member_1.member_3.z, fma(_e1845.member.member.x, _e1845.member_1.member_3.x, (_e1845.member.member_1.x * _e1845.member_1.member_3.y))))), (fma(fma(_e1845.member.member_3.y, _e1845.member_1.member_2.w, fma(_e1845.member.member_2.y, _e1845.member_1.member_2.z, fma(_e1845.member.member.y, _e1845.member_1.member_2.x, (_e1845.member.member_1.y * _e1845.member_1.member_2.y)))), _e1559, fma(fma(_e1845.member.member_3.y, _e1845.member_1.member.w, fma(_e1845.member.member_2.y, _e1845.member_1.member.z, fma(_e1845.member.member.y, _e1845.member_1.member.x, (_e1845.member.member_1.y * _e1845.member_1.member.y)))), _e1557, (fma(_e1845.member.member_3.y, _e1845.member_1.member_1.w, fma(_e1845.member.member_2.y, _e1845.member_1.member_1.z, fma(_e1845.member.member.y, _e1845.member_1.member_1.x, (_e1845.member.member_1.y * _e1845.member_1.member_1.y)))) * _e1558))) + fma(_e1845.member.member_3.y, _e1845.member_1.member_3.w, fma(_e1845.member.member_2.y, _e1845.member_1.member_3.z, fma(_e1845.member.member.y, _e1845.member_1.member_3.x, (_e1845.member.member_1.y * _e1845.member_1.member_3.y))))), (fma(fma(_e1845.member.member_3.z, _e1845.member_1.member_2.w, fma(_e1845.member.member_2.z, _e1845.member_1.member_2.z, fma(_e1845.member.member.z, _e1845.member_1.member_2.x, (_e1845.member.member_1.z * _e1845.member_1.member_2.y)))), _e1559, fma(fma(_e1845.member.member_3.z, _e1845.member_1.member.w, fma(_e1845.member.member_2.z, _e1845.member_1.member.z, fma(_e1845.member.member.z, _e1845.member_1.member.x, (_e1845.member.member_1.z * _e1845.member_1.member.y)))), _e1557, (fma(_e1845.member.member_3.z, _e1845.member_1.member_1.w, fma(_e1845.member.member_2.z, _e1845.member_1.member_1.z, fma(_e1845.member.member.z, _e1845.member_1.member_1.x, (_e1845.member.member_1.z * _e1845.member_1.member_1.y)))) * _e1558))) + fma(_e1845.member.member_3.z, _e1845.member_1.member_3.w, fma(_e1845.member.member_2.z, _e1845.member_1.member_3.z, fma(_e1845.member.member.z, _e1845.member_1.member_3.x, (_e1845.member.member_1.z * _e1845.member_1.member_3.y))))), (fma(fma(_e1845.member.member_3.w, _e1845.member_1.member_2.w, fma(_e1845.member.member_2.w, _e1845.member_1.member_2.z, fma(_e1845.member.member.w, _e1845.member_1.member_2.x, (_e1845.member.member_1.w * _e1845.member_1.member_2.y)))), _e1559, fma(fma(_e1845.member.member_3.w, _e1845.member_1.member.w, fma(_e1845.member.member_2.w, _e1845.member_1.member.z, fma(_e1845.member.member.w, _e1845.member_1.member.x, (_e1845.member.member_1.w * _e1845.member_1.member.y)))), _e1557, (fma(_e1845.member.member_3.w, _e1845.member_1.member_1.w, fma(_e1845.member.member_2.w, _e1845.member_1.member_1.z, fma(_e1845.member.member.w, _e1845.member_1.member_1.x, (_e1845.member.member_1.w * _e1845.member_1.member_1.y)))) * _e1558))) + fma(_e1845.member.member_3.w, _e1845.member_1.member_3.w, fma(_e1845.member.member_2.w, _e1845.member_1.member_3.z, fma(_e1845.member.member.w, _e1845.member_1.member_3.x, (_e1845.member.member_1.w * _e1845.member_1.member_3.y)))))); + } else { + global_1 = vec4(10f, 10f, 10f, 1f); } - let _e1952 = phi_2390_; - let _e1954 = phi_843_; - continue; - continuing { - phi_842_ = _e1954; - break if !(_e1952); - } + break; } - } else { - global_1 = vec4(10f, 10f, 10f, 1f); } return; } diff --git a/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl b/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl index d1181607..a6309c0c 100644 --- a/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl +++ b/crates/renderling/shaders/tonemapping-tonemapping_vertex.wgsl @@ -15,13 +15,20 @@ var global_2: vec4 = vec4(0f, 0f, 0f, 1f); fn function() { var local: array; - let _e22 = global_1; - local = array(type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(-1f, -1f), vec2(0f, 1f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(1f, 1f), vec2(1f, 0f))); - if (_e22 < 6u) { - let _e26 = local[_e22].member; - let _e29 = local[_e22].member_1; - global = _e29; - global_2 = vec4(_e26.x, _e26.y, 0f, 1f); + switch bitcast(0u) { + default: { + let _e23 = global_1; + local = array(type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(-1f, -1f), vec2(0f, 1f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(-1f, 1f), vec2(0f, 0f)), type_9(vec2(1f, -1f), vec2(1f, 1f)), type_9(vec2(1f, 1f), vec2(1f, 0f))); + if (_e23 < 6u) { + } else { + break; + } + let _e27 = local[_e23].member; + let _e30 = local[_e23].member_1; + global = _e30; + global_2 = vec4(_e27.x, _e27.y, 0f, 1f); + break; + } } return; } diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl index 8356cb8a..c399ba81 100644 --- a/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl +++ b/crates/renderling/shaders/tutorial-tutorial_slabbed_renderlet.wgsl @@ -60,377 +60,325 @@ fn function() { var local_1: array, 6>; var local_2: array; var local_3: array; - var phi_614_: u32; - var phi_1390_: bool; + var phi_613_: u32; + var phi_1381_: bool; + var phi_699_: type_22; var phi_700_: type_22; - var phi_716_: type_22; - var phi_717_: type_22; - var phi_730_: type_22; - var phi_746_: type_22; - var phi_747_: type_22; - var phi_763_: type_28; + var phi_715_: type_22; + var phi_728_: bool; + var phi_734_: type_22; + var phi_735_: type_22; + var phi_750_: type_22; var phi_764_: bool; - var phi_731_: type_22; - var phi_770_: type_28; - var phi_771_: bool; - var phi_701_: type_22; - var phi_773_: type_28; - var phi_1421_: bool; - var phi_824_: type_25; - var phi_1492_: bool; - var phi_985_: type_22; - var phi_1001_: type_22; - var phi_1002_: type_22; - var phi_1015_: type_22; - var phi_1031_: type_22; - var phi_1032_: type_22; - var phi_1058_: type_20; - var phi_1059_: bool; - var phi_1016_: type_22; - var phi_1079_: type_20; - var phi_1080_: bool; - var phi_986_: type_22; - var phi_1085_: type_20; - var local_4: type_28; - var local_5: type_28; - var local_6: type_20; - var local_7: type_20; + var phi_768_: type_28; + var phi_1412_: bool; + var phi_819_: type_25; + var phi_1483_: bool; + var phi_980_: type_22; + var phi_981_: type_22; + var phi_996_: type_22; + var phi_1023_: bool; + var phi_1029_: type_22; + var phi_1030_: type_22; + var phi_1045_: type_22; + var phi_1068_: bool; + var phi_1076_: type_20; - let _e77 = global_4; - let _e78 = global; - let _e80 = arrayLength((&global_1.member)); - let _e84 = global_1.member[(_e77 + 1u)]; - let _e88 = global_1.member[(_e77 + 2u)]; - let _e92 = global_1.member[(_e77 + 9u)]; - let _e96 = global_1.member[(_e77 + 10u)]; - if (_e78 >= _e88) { - phi_614_ = 4294967295u; + let _e76 = global_4; + let _e77 = global; + let _e79 = arrayLength((&global_1.member)); + let _e83 = global_1.member[(_e76 + 1u)]; + let _e87 = global_1.member[(_e76 + 2u)]; + let _e91 = global_1.member[(_e76 + 9u)]; + let _e95 = global_1.member[(_e76 + 10u)]; + if (_e77 >= _e87) { + phi_613_ = 4294967295u; } else { - phi_614_ = (_e84 + (26u * _e78)); + phi_613_ = (_e83 + (26u * _e77)); } - let _e101 = phi_614_; - if (_e80 >= 26u) { - phi_1390_ = (_e101 <= (_e80 - 26u)); + let _e100 = phi_613_; + if (_e79 >= 26u) { + phi_1381_ = (_e100 <= (_e79 - 26u)); } else { - phi_1390_ = false; + phi_1381_ = false; } - let _e106 = phi_1390_; - if _e106 { - let _e109 = global_1.member[_e101]; - let _e114 = global_1.member[(_e101 + 1u)]; - let _e119 = global_1.member[(_e101 + 2u)]; - let _e125 = global_1.member[(_e101 + 3u)]; - let _e130 = global_1.member[(_e101 + 4u)]; - let _e135 = global_1.member[(_e101 + 5u)]; - let _e140 = global_1.member[(_e101 + 6u)]; - let _e146 = global_1.member[(_e101 + 7u)]; - let _e151 = global_1.member[(_e101 + 8u)]; - let _e157 = global_1.member[(_e101 + 9u)]; - let _e162 = global_1.member[(_e101 + 10u)]; - let _e168 = global_1.member[(_e101 + 11u)]; - let _e173 = global_1.member[(_e101 + 12u)]; - let _e178 = global_1.member[(_e101 + 13u)]; - let _e184 = global_1.member[(_e101 + 14u)]; - let _e189 = global_1.member[(_e101 + 15u)]; - let _e194 = global_1.member[(_e101 + 16u)]; - let _e199 = global_1.member[(_e101 + 17u)]; + let _e105 = phi_1381_; + if _e105 { + let _e108 = global_1.member[_e100]; + let _e113 = global_1.member[(_e100 + 1u)]; + let _e118 = global_1.member[(_e100 + 2u)]; + let _e124 = global_1.member[(_e100 + 3u)]; + let _e129 = global_1.member[(_e100 + 4u)]; + let _e134 = global_1.member[(_e100 + 5u)]; + let _e139 = global_1.member[(_e100 + 6u)]; + let _e145 = global_1.member[(_e100 + 7u)]; + let _e150 = global_1.member[(_e100 + 8u)]; + let _e156 = global_1.member[(_e100 + 9u)]; + let _e161 = global_1.member[(_e100 + 10u)]; + let _e167 = global_1.member[(_e100 + 11u)]; + let _e172 = global_1.member[(_e100 + 12u)]; + let _e177 = global_1.member[(_e100 + 13u)]; + let _e183 = global_1.member[(_e100 + 14u)]; + let _e188 = global_1.member[(_e100 + 15u)]; + let _e193 = global_1.member[(_e100 + 16u)]; + let _e198 = global_1.member[(_e100 + 17u)]; local_3 = array(0u, 0u, 0u, 0u); - phi_700_ = type_22(0u, 4u); + phi_699_ = type_22(0u, 4u); loop { - let _e204 = phi_700_; - if (_e204.member < _e204.member_1) { - phi_716_ = type_22((_e204.member + 1u), _e204.member_1); - phi_717_ = type_22(1u, _e204.member); + let _e203 = phi_699_; + if (_e203.member < _e203.member_1) { + phi_700_ = type_22((_e203.member + 1u), _e203.member_1); + phi_715_ = type_22(1u, _e203.member); } else { - phi_716_ = _e204; - phi_717_ = type_22(0u, type_22().member_1); + phi_700_ = _e203; + phi_715_ = type_22(0u, type_22().member_1); } - let _e217 = phi_716_; - let _e219 = phi_717_; - switch bitcast(_e219.member) { + let _e216 = phi_700_; + let _e218 = phi_715_; + switch bitcast(_e218.member) { case 0: { - let _e223 = local_3; - local_2 = array(0f, 0f, 0f, 0f); - phi_730_ = type_22(0u, 4u); - loop { - let _e226 = phi_730_; - if (_e226.member < _e226.member_1) { - phi_746_ = type_22((_e226.member + 1u), _e226.member_1); - phi_747_ = type_22(1u, _e226.member); - } else { - phi_746_ = _e226; - phi_747_ = type_22(0u, type_22().member_1); - } - let _e239 = phi_746_; - let _e241 = phi_747_; - switch bitcast(_e241.member) { - case 0: { - let _e245 = local_2; - phi_763_ = type_28(vec3(bitcast(_e109), bitcast(_e114), bitcast(_e119)), vec4(bitcast(_e125), bitcast(_e130), bitcast(_e135), bitcast(_e140)), vec3(bitcast(_e168), bitcast(_e173), bitcast(_e178)), vec4(bitcast(_e184), bitcast(_e189), bitcast(_e194), bitcast(_e199)), _e223, _e245, vec2(bitcast(_e146), bitcast(_e151)), vec2(bitcast(_e157), bitcast(_e162))); - phi_764_ = false; - phi_731_ = type_22(); - break; - } - case 1: { - let _e250 = global_1.member[((_e101 + 22u) + _e241.member_1)]; - local_2[_e241.member_1] = bitcast(_e250); - phi_763_ = type_28(); - phi_764_ = true; - phi_731_ = _e239; - break; - } - default: { - phi_763_ = type_28(); - phi_764_ = false; - phi_731_ = type_22(); - break; - } - } - let _e254 = phi_763_; - let _e256 = phi_764_; - let _e258 = phi_731_; - local_4 = _e254; - continue; - continuing { - phi_730_ = _e258; - break if !(_e256); - } - } - let _e886 = local_4; - phi_770_ = _e886; - phi_771_ = false; - phi_701_ = type_22(); + phi_728_ = false; break; } case 1: { - let _e263 = global_1.member[((_e101 + 18u) + _e219.member_1)]; - local_3[_e219.member_1] = _e263; - phi_770_ = type_28(); - phi_771_ = true; - phi_701_ = _e217; + let _e225 = global_1.member[((_e100 + 18u) + _e218.member_1)]; + local_3[_e218.member_1] = _e225; + phi_728_ = true; break; } default: { - phi_770_ = type_28(); - phi_771_ = false; - phi_701_ = type_22(); + phi_728_ = bool(); break; } } - let _e266 = phi_770_; - let _e268 = phi_771_; - let _e270 = phi_701_; - local_5 = _e266; + let _e228 = phi_728_; continue; continuing { - phi_700_ = _e270; - break if !(_e268); + phi_699_ = _e216; + break if !(_e228); } } - let _e891 = local_5; - phi_773_ = _e891; + let _e230 = local_3; + local_2 = array(0f, 0f, 0f, 0f); + phi_734_ = type_22(0u, 4u); + loop { + let _e233 = phi_734_; + if (_e233.member < _e233.member_1) { + phi_735_ = type_22((_e233.member + 1u), _e233.member_1); + phi_750_ = type_22(1u, _e233.member); + } else { + phi_735_ = _e233; + phi_750_ = type_22(0u, type_22().member_1); + } + let _e246 = phi_735_; + let _e248 = phi_750_; + switch bitcast(_e248.member) { + case 0: { + phi_764_ = false; + break; + } + case 1: { + let _e255 = global_1.member[((_e100 + 22u) + _e248.member_1)]; + local_2[_e248.member_1] = bitcast(_e255); + phi_764_ = true; + break; + } + default: { + phi_764_ = bool(); + break; + } + } + let _e259 = phi_764_; + continue; + continuing { + phi_734_ = _e246; + break if !(_e259); + } + } + let _e261 = local_2; + phi_768_ = type_28(vec3(bitcast(_e108), bitcast(_e113), bitcast(_e118)), vec4(bitcast(_e124), bitcast(_e129), bitcast(_e134), bitcast(_e139)), vec3(bitcast(_e167), bitcast(_e172), bitcast(_e177)), vec4(bitcast(_e183), bitcast(_e188), bitcast(_e193), bitcast(_e198)), _e230, _e261, vec2(bitcast(_e145), bitcast(_e150)), vec2(bitcast(_e156), bitcast(_e161))); } else { - phi_773_ = type_28(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + phi_768_ = type_28(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); } - let _e273 = phi_773_; - global_3 = _e273.member_1; - if (_e80 >= 10u) { - phi_1421_ = (_e96 <= (_e80 - 10u)); + let _e264 = phi_768_; + global_3 = _e264.member_1; + if (_e79 >= 10u) { + phi_1412_ = (_e95 <= (_e79 - 10u)); } else { - phi_1421_ = false; + phi_1412_ = false; } - let _e279 = phi_1421_; - if _e279 { - let _e282 = global_1.member[_e96]; - let _e287 = global_1.member[(_e96 + 1u)]; - let _e292 = global_1.member[(_e96 + 2u)]; - let _e298 = global_1.member[(_e96 + 3u)]; - let _e303 = global_1.member[(_e96 + 4u)]; - let _e308 = global_1.member[(_e96 + 5u)]; - let _e313 = global_1.member[(_e96 + 6u)]; - let _e319 = global_1.member[(_e96 + 7u)]; - let _e324 = global_1.member[(_e96 + 8u)]; - let _e329 = global_1.member[(_e96 + 9u)]; - phi_824_ = type_25(vec3(bitcast(_e282), bitcast(_e287), bitcast(_e292)), vec4(bitcast(_e298), bitcast(_e303), bitcast(_e308), bitcast(_e313)), vec3(bitcast(_e319), bitcast(_e324), bitcast(_e329))); + let _e270 = phi_1412_; + if _e270 { + let _e273 = global_1.member[_e95]; + let _e278 = global_1.member[(_e95 + 1u)]; + let _e283 = global_1.member[(_e95 + 2u)]; + let _e289 = global_1.member[(_e95 + 3u)]; + let _e294 = global_1.member[(_e95 + 4u)]; + let _e299 = global_1.member[(_e95 + 5u)]; + let _e304 = global_1.member[(_e95 + 6u)]; + let _e310 = global_1.member[(_e95 + 7u)]; + let _e315 = global_1.member[(_e95 + 8u)]; + let _e320 = global_1.member[(_e95 + 9u)]; + phi_819_ = type_25(vec3(bitcast(_e273), bitcast(_e278), bitcast(_e283)), vec4(bitcast(_e289), bitcast(_e294), bitcast(_e299), bitcast(_e304)), vec3(bitcast(_e310), bitcast(_e315), bitcast(_e320))); } else { - phi_824_ = type_25(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); + phi_819_ = type_25(vec3(0f, 0f, 0f), vec4(0f, 0f, 0f, 1f), vec3(1f, 1f, 1f)); } - let _e334 = phi_824_; - let _e342 = (_e334.member_1.x + _e334.member_1.x); - let _e343 = (_e334.member_1.y + _e334.member_1.y); - let _e344 = (_e334.member_1.z + _e334.member_1.z); - let _e346 = (_e334.member_1.z * _e344); - let _e347 = (_e334.member_1.w * _e342); - let _e348 = (_e334.member_1.w * _e343); - let _e349 = (_e334.member_1.w * _e344); - let _e369 = (vec4((1f - fma(_e334.member_1.y, _e343, _e346)), fma(_e334.member_1.x, _e343, _e349), fma(_e334.member_1.x, _e344, -(_e348)), 0f) * _e334.member_2.x); - let _e371 = (vec4(fma(_e334.member_1.x, _e343, -(_e349)), (1f - fma(_e334.member_1.x, _e342, _e346)), fma(_e334.member_1.y, _e344, _e347), 0f) * _e334.member_2.y); - let _e373 = (vec4(fma(_e334.member_1.x, _e344, _e348), fma(_e334.member_1.y, _e344, -(_e347)), (1f - fma(_e334.member_1.x, _e342, (_e334.member_1.y * _e343))), 0f) * _e334.member_2.z); - if (_e80 >= 83u) { - phi_1492_ = (_e92 <= (_e80 - 83u)); + let _e325 = phi_819_; + let _e333 = (_e325.member_1.x + _e325.member_1.x); + let _e334 = (_e325.member_1.y + _e325.member_1.y); + let _e335 = (_e325.member_1.z + _e325.member_1.z); + let _e337 = (_e325.member_1.z * _e335); + let _e338 = (_e325.member_1.w * _e333); + let _e339 = (_e325.member_1.w * _e334); + let _e340 = (_e325.member_1.w * _e335); + let _e360 = (vec4((1f - fma(_e325.member_1.y, _e334, _e337)), fma(_e325.member_1.x, _e334, _e340), fma(_e325.member_1.x, _e335, -(_e339)), 0f) * _e325.member_2.x); + let _e362 = (vec4(fma(_e325.member_1.x, _e334, -(_e340)), (1f - fma(_e325.member_1.x, _e333, _e337)), fma(_e325.member_1.y, _e335, _e338), 0f) * _e325.member_2.y); + let _e364 = (vec4(fma(_e325.member_1.x, _e335, _e339), fma(_e325.member_1.y, _e335, -(_e338)), (1f - fma(_e325.member_1.x, _e333, (_e325.member_1.y * _e334))), 0f) * _e325.member_2.z); + if (_e79 >= 83u) { + phi_1483_ = (_e91 <= (_e79 - 83u)); } else { - phi_1492_ = false; + phi_1483_ = false; } - let _e381 = phi_1492_; - if _e381 { - let _e384 = global_1.member[_e92]; - let _e389 = global_1.member[(_e92 + 1u)]; - let _e394 = global_1.member[(_e92 + 2u)]; - let _e399 = global_1.member[(_e92 + 3u)]; - let _e405 = global_1.member[(_e92 + 4u)]; - let _e410 = global_1.member[(_e92 + 5u)]; - let _e415 = global_1.member[(_e92 + 6u)]; - let _e420 = global_1.member[(_e92 + 7u)]; - let _e426 = global_1.member[(_e92 + 8u)]; - let _e431 = global_1.member[(_e92 + 9u)]; - let _e436 = global_1.member[(_e92 + 10u)]; - let _e441 = global_1.member[(_e92 + 11u)]; - let _e447 = global_1.member[(_e92 + 12u)]; - let _e452 = global_1.member[(_e92 + 13u)]; - let _e457 = global_1.member[(_e92 + 14u)]; - let _e462 = global_1.member[(_e92 + 15u)]; - let _e469 = global_1.member[(_e92 + 16u)]; - let _e474 = global_1.member[(_e92 + 17u)]; - let _e479 = global_1.member[(_e92 + 18u)]; - let _e484 = global_1.member[(_e92 + 19u)]; - let _e490 = global_1.member[(_e92 + 20u)]; - let _e495 = global_1.member[(_e92 + 21u)]; - let _e500 = global_1.member[(_e92 + 22u)]; - let _e505 = global_1.member[(_e92 + 23u)]; - let _e511 = global_1.member[(_e92 + 24u)]; - let _e516 = global_1.member[(_e92 + 25u)]; - let _e521 = global_1.member[(_e92 + 26u)]; - let _e526 = global_1.member[(_e92 + 27u)]; - let _e532 = global_1.member[(_e92 + 28u)]; - let _e537 = global_1.member[(_e92 + 29u)]; - let _e542 = global_1.member[(_e92 + 30u)]; - let _e547 = global_1.member[(_e92 + 31u)]; - let _e554 = global_1.member[(_e92 + 32u)]; - let _e559 = global_1.member[(_e92 + 33u)]; - let _e564 = global_1.member[(_e92 + 34u)]; + let _e372 = phi_1483_; + if _e372 { + let _e375 = global_1.member[_e91]; + let _e380 = global_1.member[(_e91 + 1u)]; + let _e385 = global_1.member[(_e91 + 2u)]; + let _e390 = global_1.member[(_e91 + 3u)]; + let _e396 = global_1.member[(_e91 + 4u)]; + let _e401 = global_1.member[(_e91 + 5u)]; + let _e406 = global_1.member[(_e91 + 6u)]; + let _e411 = global_1.member[(_e91 + 7u)]; + let _e417 = global_1.member[(_e91 + 8u)]; + let _e422 = global_1.member[(_e91 + 9u)]; + let _e427 = global_1.member[(_e91 + 10u)]; + let _e432 = global_1.member[(_e91 + 11u)]; + let _e438 = global_1.member[(_e91 + 12u)]; + let _e443 = global_1.member[(_e91 + 13u)]; + let _e448 = global_1.member[(_e91 + 14u)]; + let _e453 = global_1.member[(_e91 + 15u)]; + let _e460 = global_1.member[(_e91 + 16u)]; + let _e465 = global_1.member[(_e91 + 17u)]; + let _e470 = global_1.member[(_e91 + 18u)]; + let _e475 = global_1.member[(_e91 + 19u)]; + let _e481 = global_1.member[(_e91 + 20u)]; + let _e486 = global_1.member[(_e91 + 21u)]; + let _e491 = global_1.member[(_e91 + 22u)]; + let _e496 = global_1.member[(_e91 + 23u)]; + let _e502 = global_1.member[(_e91 + 24u)]; + let _e507 = global_1.member[(_e91 + 25u)]; + let _e512 = global_1.member[(_e91 + 26u)]; + let _e517 = global_1.member[(_e91 + 27u)]; + let _e523 = global_1.member[(_e91 + 28u)]; + let _e528 = global_1.member[(_e91 + 29u)]; + let _e533 = global_1.member[(_e91 + 30u)]; + let _e538 = global_1.member[(_e91 + 31u)]; + let _e545 = global_1.member[(_e91 + 32u)]; + let _e550 = global_1.member[(_e91 + 33u)]; + let _e555 = global_1.member[(_e91 + 34u)]; local_1 = array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f)); - phi_985_ = type_22(0u, 6u); + phi_980_ = type_22(0u, 6u); + loop { + let _e560 = phi_980_; + if (_e560.member < _e560.member_1) { + phi_981_ = type_22((_e560.member + 1u), _e560.member_1); + phi_996_ = type_22(1u, _e560.member); + } else { + phi_981_ = _e560; + phi_996_ = type_22(0u, type_22().member_1); + } + let _e573 = phi_981_; + let _e575 = phi_996_; + switch bitcast(_e575.member) { + case 0: { + phi_1023_ = false; + break; + } + case 1: { + let _e580 = ((_e91 + 35u) + (_e575.member_1 * 4u)); + let _e583 = global_1.member[_e580]; + let _e588 = global_1.member[(_e580 + 1u)]; + let _e593 = global_1.member[(_e580 + 2u)]; + let _e598 = global_1.member[(_e580 + 3u)]; + local_1[_e575.member_1] = vec4(bitcast(_e583), bitcast(_e588), bitcast(_e593), bitcast(_e598)); + phi_1023_ = true; + break; + } + default: { + phi_1023_ = bool(); + break; + } + } + let _e603 = phi_1023_; + continue; + continuing { + phi_980_ = _e573; + break if !(_e603); + } + } + let _e605 = local_1; + local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); + phi_1029_ = type_22(0u, 8u); loop { - let _e569 = phi_985_; - if (_e569.member < _e569.member_1) { - phi_1001_ = type_22((_e569.member + 1u), _e569.member_1); - phi_1002_ = type_22(1u, _e569.member); + let _e608 = phi_1029_; + if (_e608.member < _e608.member_1) { + phi_1030_ = type_22((_e608.member + 1u), _e608.member_1); + phi_1045_ = type_22(1u, _e608.member); } else { - phi_1001_ = _e569; - phi_1002_ = type_22(0u, type_22().member_1); + phi_1030_ = _e608; + phi_1045_ = type_22(0u, type_22().member_1); } - let _e582 = phi_1001_; - let _e584 = phi_1002_; - switch bitcast(_e584.member) { + let _e621 = phi_1030_; + let _e623 = phi_1045_; + switch bitcast(_e623.member) { case 0: { - let _e588 = local_1; - local = array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)); - phi_1015_ = type_22(0u, 8u); - loop { - let _e591 = phi_1015_; - if (_e591.member < _e591.member_1) { - phi_1031_ = type_22((_e591.member + 1u), _e591.member_1); - phi_1032_ = type_22(1u, _e591.member); - } else { - phi_1031_ = _e591; - phi_1032_ = type_22(0u, type_22().member_1); - } - let _e604 = phi_1031_; - let _e606 = phi_1032_; - switch bitcast(_e606.member) { - case 0: { - let _e610 = local; - phi_1058_ = type_20(type_18(vec4(bitcast(_e384), bitcast(_e389), bitcast(_e394), bitcast(_e399)), vec4(bitcast(_e405), bitcast(_e410), bitcast(_e415), bitcast(_e420)), vec4(bitcast(_e426), bitcast(_e431), bitcast(_e436), bitcast(_e441)), vec4(bitcast(_e447), bitcast(_e452), bitcast(_e457), bitcast(_e462))), type_18(vec4(bitcast(_e469), bitcast(_e474), bitcast(_e479), bitcast(_e484)), vec4(bitcast(_e490), bitcast(_e495), bitcast(_e500), bitcast(_e505)), vec4(bitcast(_e511), bitcast(_e516), bitcast(_e521), bitcast(_e526)), vec4(bitcast(_e532), bitcast(_e537), bitcast(_e542), bitcast(_e547))), type_19(_e610, _e588), vec3(bitcast(_e554), bitcast(_e559), bitcast(_e564))); - phi_1059_ = false; - phi_1016_ = type_22(); - break; - } - case 1: { - let _e614 = ((_e92 + 59u) + (_e606.member_1 * 3u)); - let _e617 = global_1.member[_e614]; - let _e622 = global_1.member[(_e614 + 1u)]; - let _e627 = global_1.member[(_e614 + 2u)]; - local[_e606.member_1] = vec3(bitcast(_e617), bitcast(_e622), bitcast(_e627)); - phi_1058_ = type_20(); - phi_1059_ = true; - phi_1016_ = _e604; - break; - } - default: { - phi_1058_ = type_20(); - phi_1059_ = false; - phi_1016_ = type_22(); - break; - } - } - let _e632 = phi_1058_; - let _e634 = phi_1059_; - let _e636 = phi_1016_; - local_6 = _e632; - continue; - continuing { - phi_1015_ = _e636; - break if !(_e634); - } - } - let _e906 = local_6; - phi_1079_ = _e906; - phi_1080_ = false; - phi_986_ = type_22(); + phi_1068_ = false; break; } case 1: { - let _e639 = ((_e92 + 35u) + (_e584.member_1 * 4u)); - let _e642 = global_1.member[_e639]; - let _e647 = global_1.member[(_e639 + 1u)]; - let _e652 = global_1.member[(_e639 + 2u)]; - let _e657 = global_1.member[(_e639 + 3u)]; - local_1[_e584.member_1] = vec4(bitcast(_e642), bitcast(_e647), bitcast(_e652), bitcast(_e657)); - phi_1079_ = type_20(); - phi_1080_ = true; - phi_986_ = _e582; + let _e628 = ((_e91 + 59u) + (_e623.member_1 * 3u)); + let _e631 = global_1.member[_e628]; + let _e636 = global_1.member[(_e628 + 1u)]; + let _e641 = global_1.member[(_e628 + 2u)]; + local[_e623.member_1] = vec3(bitcast(_e631), bitcast(_e636), bitcast(_e641)); + phi_1068_ = true; break; } default: { - phi_1079_ = type_20(); - phi_1080_ = false; - phi_986_ = type_22(); + phi_1068_ = bool(); break; } } - let _e662 = phi_1079_; - let _e664 = phi_1080_; - let _e666 = phi_986_; - local_7 = _e662; + let _e646 = phi_1068_; continue; continuing { - phi_985_ = _e666; - break if !(_e664); + phi_1029_ = _e621; + break if !(_e646); } } - let _e911 = local_7; - phi_1085_ = _e911; + let _e648 = local; + phi_1076_ = type_20(type_18(vec4(bitcast(_e375), bitcast(_e380), bitcast(_e385), bitcast(_e390)), vec4(bitcast(_e396), bitcast(_e401), bitcast(_e406), bitcast(_e411)), vec4(bitcast(_e417), bitcast(_e422), bitcast(_e427), bitcast(_e432)), vec4(bitcast(_e438), bitcast(_e443), bitcast(_e448), bitcast(_e453))), type_18(vec4(bitcast(_e460), bitcast(_e465), bitcast(_e470), bitcast(_e475)), vec4(bitcast(_e481), bitcast(_e486), bitcast(_e491), bitcast(_e496)), vec4(bitcast(_e502), bitcast(_e507), bitcast(_e512), bitcast(_e517)), vec4(bitcast(_e523), bitcast(_e528), bitcast(_e533), bitcast(_e538))), type_19(_e648, _e605), vec3(bitcast(_e545), bitcast(_e550), bitcast(_e555))); } else { - phi_1085_ = type_20(type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); + phi_1076_ = type_20(type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_18(vec4(1f, 0f, 0f, 0f), vec4(0f, 1f, 0f, 0f), vec4(0f, 0f, 1f, 0f), vec4(0f, 0f, 0f, 1f)), type_19(array, 8>(vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f), vec3(0f, 0f, 0f)), array, 6>(vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f), vec4(0f, 0f, 0f, 0f))), vec3(0f, 0f, 0f)); } - let _e669 = phi_1085_; - let _e709 = fma(_e669.member.member_3.x, _e669.member_1.member.w, fma(_e669.member.member_2.x, _e669.member_1.member.z, fma(_e669.member.member.x, _e669.member_1.member.x, (_e669.member.member_1.x * _e669.member_1.member.y)))); - let _e710 = fma(_e669.member.member_3.y, _e669.member_1.member.w, fma(_e669.member.member_2.y, _e669.member_1.member.z, fma(_e669.member.member.y, _e669.member_1.member.x, (_e669.member.member_1.y * _e669.member_1.member.y)))); - let _e711 = fma(_e669.member.member_3.z, _e669.member_1.member.w, fma(_e669.member.member_2.z, _e669.member_1.member.z, fma(_e669.member.member.z, _e669.member_1.member.x, (_e669.member.member_1.z * _e669.member_1.member.y)))); - let _e712 = fma(_e669.member.member_3.w, _e669.member_1.member.w, fma(_e669.member.member_2.w, _e669.member_1.member.z, fma(_e669.member.member.w, _e669.member_1.member.x, (_e669.member.member_1.w * _e669.member_1.member.y)))); - let _e730 = fma(_e669.member.member_3.x, _e669.member_1.member_1.w, fma(_e669.member.member_2.x, _e669.member_1.member_1.z, fma(_e669.member.member.x, _e669.member_1.member_1.x, (_e669.member.member_1.x * _e669.member_1.member_1.y)))); - let _e731 = fma(_e669.member.member_3.y, _e669.member_1.member_1.w, fma(_e669.member.member_2.y, _e669.member_1.member_1.z, fma(_e669.member.member.y, _e669.member_1.member_1.x, (_e669.member.member_1.y * _e669.member_1.member_1.y)))); - let _e732 = fma(_e669.member.member_3.z, _e669.member_1.member_1.w, fma(_e669.member.member_2.z, _e669.member_1.member_1.z, fma(_e669.member.member.z, _e669.member_1.member_1.x, (_e669.member.member_1.z * _e669.member_1.member_1.y)))); - let _e733 = fma(_e669.member.member_3.w, _e669.member_1.member_1.w, fma(_e669.member.member_2.w, _e669.member_1.member_1.z, fma(_e669.member.member.w, _e669.member_1.member_1.x, (_e669.member.member_1.w * _e669.member_1.member_1.y)))); - let _e751 = fma(_e669.member.member_3.x, _e669.member_1.member_2.w, fma(_e669.member.member_2.x, _e669.member_1.member_2.z, fma(_e669.member.member.x, _e669.member_1.member_2.x, (_e669.member.member_1.x * _e669.member_1.member_2.y)))); - let _e752 = fma(_e669.member.member_3.y, _e669.member_1.member_2.w, fma(_e669.member.member_2.y, _e669.member_1.member_2.z, fma(_e669.member.member.y, _e669.member_1.member_2.x, (_e669.member.member_1.y * _e669.member_1.member_2.y)))); - let _e753 = fma(_e669.member.member_3.z, _e669.member_1.member_2.w, fma(_e669.member.member_2.z, _e669.member_1.member_2.z, fma(_e669.member.member.z, _e669.member_1.member_2.x, (_e669.member.member_1.z * _e669.member_1.member_2.y)))); - let _e754 = fma(_e669.member.member_3.w, _e669.member_1.member_2.w, fma(_e669.member.member_2.w, _e669.member_1.member_2.z, fma(_e669.member.member.w, _e669.member_1.member_2.x, (_e669.member.member_1.w * _e669.member_1.member_2.y)))); - let _e772 = fma(_e669.member.member_3.x, _e669.member_1.member_3.w, fma(_e669.member.member_2.x, _e669.member_1.member_3.z, fma(_e669.member.member.x, _e669.member_1.member_3.x, (_e669.member.member_1.x * _e669.member_1.member_3.y)))); - let _e773 = fma(_e669.member.member_3.y, _e669.member_1.member_3.w, fma(_e669.member.member_2.y, _e669.member_1.member_3.z, fma(_e669.member.member.y, _e669.member_1.member_3.x, (_e669.member.member_1.y * _e669.member_1.member_3.y)))); - let _e774 = fma(_e669.member.member_3.z, _e669.member_1.member_3.w, fma(_e669.member.member_2.z, _e669.member_1.member_3.z, fma(_e669.member.member.z, _e669.member_1.member_3.x, (_e669.member.member_1.z * _e669.member_1.member_3.y)))); - let _e775 = fma(_e669.member.member_3.w, _e669.member_1.member_3.w, fma(_e669.member.member_2.w, _e669.member_1.member_3.z, fma(_e669.member.member.w, _e669.member_1.member_3.x, (_e669.member.member_1.w * _e669.member_1.member_3.y)))); - global_2 = vec4((fma(fma(_e772, _e373.w, fma(_e751, _e373.z, fma(_e709, _e373.x, (_e730 * _e373.y)))), _e273.member.z, fma(fma(_e772, _e369.w, fma(_e751, _e369.z, fma(_e709, _e369.x, (_e730 * _e369.y)))), _e273.member.x, (fma(_e772, _e371.w, fma(_e751, _e371.z, fma(_e709, _e371.x, (_e730 * _e371.y)))) * _e273.member.y))) + (fma(_e751, _e334.member.z, fma(_e709, _e334.member.x, (_e730 * _e334.member.y))) + _e772)), (fma(fma(_e773, _e373.w, fma(_e752, _e373.z, fma(_e710, _e373.x, (_e731 * _e373.y)))), _e273.member.z, fma(fma(_e773, _e369.w, fma(_e752, _e369.z, fma(_e710, _e369.x, (_e731 * _e369.y)))), _e273.member.x, (fma(_e773, _e371.w, fma(_e752, _e371.z, fma(_e710, _e371.x, (_e731 * _e371.y)))) * _e273.member.y))) + (fma(_e752, _e334.member.z, fma(_e710, _e334.member.x, (_e731 * _e334.member.y))) + _e773)), (fma(fma(_e774, _e373.w, fma(_e753, _e373.z, fma(_e711, _e373.x, (_e732 * _e373.y)))), _e273.member.z, fma(fma(_e774, _e369.w, fma(_e753, _e369.z, fma(_e711, _e369.x, (_e732 * _e369.y)))), _e273.member.x, (fma(_e774, _e371.w, fma(_e753, _e371.z, fma(_e711, _e371.x, (_e732 * _e371.y)))) * _e273.member.y))) + (fma(_e753, _e334.member.z, fma(_e711, _e334.member.x, (_e732 * _e334.member.y))) + _e774)), (fma(fma(_e775, _e373.w, fma(_e754, _e373.z, fma(_e712, _e373.x, (_e733 * _e373.y)))), _e273.member.z, fma(fma(_e775, _e369.w, fma(_e754, _e369.z, fma(_e712, _e369.x, (_e733 * _e369.y)))), _e273.member.x, (fma(_e775, _e371.w, fma(_e754, _e371.z, fma(_e712, _e371.x, (_e733 * _e371.y)))) * _e273.member.y))) + (fma(_e754, _e334.member.z, fma(_e712, _e334.member.x, (_e733 * _e334.member.y))) + _e775))); + let _e652 = phi_1076_; + let _e692 = fma(_e652.member.member_3.x, _e652.member_1.member.w, fma(_e652.member.member_2.x, _e652.member_1.member.z, fma(_e652.member.member.x, _e652.member_1.member.x, (_e652.member.member_1.x * _e652.member_1.member.y)))); + let _e693 = fma(_e652.member.member_3.y, _e652.member_1.member.w, fma(_e652.member.member_2.y, _e652.member_1.member.z, fma(_e652.member.member.y, _e652.member_1.member.x, (_e652.member.member_1.y * _e652.member_1.member.y)))); + let _e694 = fma(_e652.member.member_3.z, _e652.member_1.member.w, fma(_e652.member.member_2.z, _e652.member_1.member.z, fma(_e652.member.member.z, _e652.member_1.member.x, (_e652.member.member_1.z * _e652.member_1.member.y)))); + let _e695 = fma(_e652.member.member_3.w, _e652.member_1.member.w, fma(_e652.member.member_2.w, _e652.member_1.member.z, fma(_e652.member.member.w, _e652.member_1.member.x, (_e652.member.member_1.w * _e652.member_1.member.y)))); + let _e713 = fma(_e652.member.member_3.x, _e652.member_1.member_1.w, fma(_e652.member.member_2.x, _e652.member_1.member_1.z, fma(_e652.member.member.x, _e652.member_1.member_1.x, (_e652.member.member_1.x * _e652.member_1.member_1.y)))); + let _e714 = fma(_e652.member.member_3.y, _e652.member_1.member_1.w, fma(_e652.member.member_2.y, _e652.member_1.member_1.z, fma(_e652.member.member.y, _e652.member_1.member_1.x, (_e652.member.member_1.y * _e652.member_1.member_1.y)))); + let _e715 = fma(_e652.member.member_3.z, _e652.member_1.member_1.w, fma(_e652.member.member_2.z, _e652.member_1.member_1.z, fma(_e652.member.member.z, _e652.member_1.member_1.x, (_e652.member.member_1.z * _e652.member_1.member_1.y)))); + let _e716 = fma(_e652.member.member_3.w, _e652.member_1.member_1.w, fma(_e652.member.member_2.w, _e652.member_1.member_1.z, fma(_e652.member.member.w, _e652.member_1.member_1.x, (_e652.member.member_1.w * _e652.member_1.member_1.y)))); + let _e734 = fma(_e652.member.member_3.x, _e652.member_1.member_2.w, fma(_e652.member.member_2.x, _e652.member_1.member_2.z, fma(_e652.member.member.x, _e652.member_1.member_2.x, (_e652.member.member_1.x * _e652.member_1.member_2.y)))); + let _e735 = fma(_e652.member.member_3.y, _e652.member_1.member_2.w, fma(_e652.member.member_2.y, _e652.member_1.member_2.z, fma(_e652.member.member.y, _e652.member_1.member_2.x, (_e652.member.member_1.y * _e652.member_1.member_2.y)))); + let _e736 = fma(_e652.member.member_3.z, _e652.member_1.member_2.w, fma(_e652.member.member_2.z, _e652.member_1.member_2.z, fma(_e652.member.member.z, _e652.member_1.member_2.x, (_e652.member.member_1.z * _e652.member_1.member_2.y)))); + let _e737 = fma(_e652.member.member_3.w, _e652.member_1.member_2.w, fma(_e652.member.member_2.w, _e652.member_1.member_2.z, fma(_e652.member.member.w, _e652.member_1.member_2.x, (_e652.member.member_1.w * _e652.member_1.member_2.y)))); + let _e755 = fma(_e652.member.member_3.x, _e652.member_1.member_3.w, fma(_e652.member.member_2.x, _e652.member_1.member_3.z, fma(_e652.member.member.x, _e652.member_1.member_3.x, (_e652.member.member_1.x * _e652.member_1.member_3.y)))); + let _e756 = fma(_e652.member.member_3.y, _e652.member_1.member_3.w, fma(_e652.member.member_2.y, _e652.member_1.member_3.z, fma(_e652.member.member.y, _e652.member_1.member_3.x, (_e652.member.member_1.y * _e652.member_1.member_3.y)))); + let _e757 = fma(_e652.member.member_3.z, _e652.member_1.member_3.w, fma(_e652.member.member_2.z, _e652.member_1.member_3.z, fma(_e652.member.member.z, _e652.member_1.member_3.x, (_e652.member.member_1.z * _e652.member_1.member_3.y)))); + let _e758 = fma(_e652.member.member_3.w, _e652.member_1.member_3.w, fma(_e652.member.member_2.w, _e652.member_1.member_3.z, fma(_e652.member.member.w, _e652.member_1.member_3.x, (_e652.member.member_1.w * _e652.member_1.member_3.y)))); + global_2 = vec4((fma(fma(_e755, _e364.w, fma(_e734, _e364.z, fma(_e692, _e364.x, (_e713 * _e364.y)))), _e264.member.z, fma(fma(_e755, _e360.w, fma(_e734, _e360.z, fma(_e692, _e360.x, (_e713 * _e360.y)))), _e264.member.x, (fma(_e755, _e362.w, fma(_e734, _e362.z, fma(_e692, _e362.x, (_e713 * _e362.y)))) * _e264.member.y))) + (fma(_e734, _e325.member.z, fma(_e692, _e325.member.x, (_e713 * _e325.member.y))) + _e755)), (fma(fma(_e756, _e364.w, fma(_e735, _e364.z, fma(_e693, _e364.x, (_e714 * _e364.y)))), _e264.member.z, fma(fma(_e756, _e360.w, fma(_e735, _e360.z, fma(_e693, _e360.x, (_e714 * _e360.y)))), _e264.member.x, (fma(_e756, _e362.w, fma(_e735, _e362.z, fma(_e693, _e362.x, (_e714 * _e362.y)))) * _e264.member.y))) + (fma(_e735, _e325.member.z, fma(_e693, _e325.member.x, (_e714 * _e325.member.y))) + _e756)), (fma(fma(_e757, _e364.w, fma(_e736, _e364.z, fma(_e694, _e364.x, (_e715 * _e364.y)))), _e264.member.z, fma(fma(_e757, _e360.w, fma(_e736, _e360.z, fma(_e694, _e360.x, (_e715 * _e360.y)))), _e264.member.x, (fma(_e757, _e362.w, fma(_e736, _e362.z, fma(_e694, _e362.x, (_e715 * _e362.y)))) * _e264.member.y))) + (fma(_e736, _e325.member.z, fma(_e694, _e325.member.x, (_e715 * _e325.member.y))) + _e757)), (fma(fma(_e758, _e364.w, fma(_e737, _e364.z, fma(_e695, _e364.x, (_e716 * _e364.y)))), _e264.member.z, fma(fma(_e758, _e360.w, fma(_e737, _e360.z, fma(_e695, _e360.x, (_e716 * _e360.y)))), _e264.member.x, (fma(_e758, _e362.w, fma(_e737, _e362.z, fma(_e695, _e362.x, (_e716 * _e362.y)))) * _e264.member.y))) + (fma(_e737, _e325.member.z, fma(_e695, _e325.member.x, (_e716 * _e325.member.y))) + _e758))); return; } diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.wgsl b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.wgsl index 7dd1ceca..0582f04a 100644 --- a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.wgsl +++ b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices.wgsl @@ -33,35 +33,29 @@ var global_4: u32; fn function() { var local: array; var local_1: array; - var phi_369_: bool; + var phi_365_: bool; var phi_148_: type_13; - var phi_395_: u32; - var phi_414_: bool; + var phi_391_: u32; + var phi_410_: bool; var phi_239_: type_13; - var phi_255_: type_13; - var phi_256_: type_13; - var phi_269_: type_13; - var phi_285_: type_13; - var phi_286_: type_13; - var phi_302_: type_18; - var phi_303_: bool; - var phi_270_: type_13; - var phi_309_: type_18; - var phi_310_: bool; var phi_240_: type_13; - var phi_312_: type_18; - var local_2: type_18; - var local_3: type_18; + var phi_255_: type_13; + var phi_268_: bool; + var phi_274_: type_13; + var phi_275_: type_13; + var phi_290_: type_13; + var phi_304_: bool; + var phi_308_: type_18; let _e45 = global_4; let _e46 = global; let _e48 = arrayLength((&global_1.member)); if (_e48 >= 2u) { - phi_369_ = (_e45 <= (_e48 - 2u)); + phi_365_ = (_e45 <= (_e48 - 2u)); } else { - phi_369_ = false; + phi_365_ = false; } - let _e53 = phi_369_; + let _e53 = phi_365_; if _e53 { let _e56 = global_1.member[_e45]; let _e60 = global_1.member[(_e45 + 1u)]; @@ -71,17 +65,17 @@ fn function() { } let _e63 = phi_148_; if (_e46 >= _e63.member_1) { - phi_395_ = 4294967295u; + phi_391_ = 4294967295u; } else { - phi_395_ = (_e63.member + (26u * _e46)); + phi_391_ = (_e63.member + (26u * _e46)); } - let _e70 = phi_395_; + let _e70 = phi_391_; if (_e48 >= 26u) { - phi_414_ = (_e70 <= (_e48 - 26u)); + phi_410_ = (_e70 <= (_e48 - 26u)); } else { - phi_414_ = false; + phi_410_ = false; } - let _e75 = phi_414_; + let _e75 = phi_410_; if _e75 { let _e78 = global_1.member[_e70]; let _e83 = global_1.member[(_e70 + 1u)]; @@ -106,102 +100,82 @@ fn function() { loop { let _e173 = phi_239_; if (_e173.member < _e173.member_1) { - phi_255_ = type_13((_e173.member + 1u), _e173.member_1); - phi_256_ = type_13(1u, _e173.member); + phi_240_ = type_13((_e173.member + 1u), _e173.member_1); + phi_255_ = type_13(1u, _e173.member); } else { - phi_255_ = _e173; - phi_256_ = type_13(0u, type_13().member_1); + phi_240_ = _e173; + phi_255_ = type_13(0u, type_13().member_1); } - let _e186 = phi_255_; - let _e188 = phi_256_; + let _e186 = phi_240_; + let _e188 = phi_255_; switch bitcast(_e188.member) { case 0: { - let _e192 = local_1; - local = array(0f, 0f, 0f, 0f); - phi_269_ = type_13(0u, 4u); - loop { - let _e195 = phi_269_; - if (_e195.member < _e195.member_1) { - phi_285_ = type_13((_e195.member + 1u), _e195.member_1); - phi_286_ = type_13(1u, _e195.member); - } else { - phi_285_ = _e195; - phi_286_ = type_13(0u, type_13().member_1); - } - let _e208 = phi_285_; - let _e210 = phi_286_; - switch bitcast(_e210.member) { - case 0: { - let _e214 = local; - phi_302_ = type_18(vec3(bitcast(_e78), bitcast(_e83), bitcast(_e88)), vec4(bitcast(_e94), bitcast(_e99), bitcast(_e104), bitcast(_e109)), vec3(bitcast(_e137), bitcast(_e142), bitcast(_e147)), vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), _e192, _e214, vec2(bitcast(_e115), bitcast(_e120)), vec2(bitcast(_e126), bitcast(_e131))); - phi_303_ = false; - phi_270_ = type_13(); - break; - } - case 1: { - let _e219 = global_1.member[((_e70 + 22u) + _e210.member_1)]; - local[_e210.member_1] = bitcast(_e219); - phi_302_ = type_18(); - phi_303_ = true; - phi_270_ = _e208; - break; - } - default: { - phi_302_ = type_18(); - phi_303_ = false; - phi_270_ = type_13(); - break; - } - } - let _e223 = phi_302_; - let _e225 = phi_303_; - let _e227 = phi_270_; - local_2 = _e223; - continue; - continuing { - phi_269_ = _e227; - break if !(_e225); - } - } - let _e264 = local_2; - phi_309_ = _e264; - phi_310_ = false; - phi_240_ = type_13(); + phi_268_ = false; + break; + } + case 1: { + let _e195 = global_1.member[((_e70 + 18u) + _e188.member_1)]; + local_1[_e188.member_1] = _e195; + phi_268_ = true; + break; + } + default: { + phi_268_ = bool(); + break; + } + } + let _e198 = phi_268_; + continue; + continuing { + phi_239_ = _e186; + break if !(_e198); + } + } + let _e200 = local_1; + local = array(0f, 0f, 0f, 0f); + phi_274_ = type_13(0u, 4u); + loop { + let _e203 = phi_274_; + if (_e203.member < _e203.member_1) { + phi_275_ = type_13((_e203.member + 1u), _e203.member_1); + phi_290_ = type_13(1u, _e203.member); + } else { + phi_275_ = _e203; + phi_290_ = type_13(0u, type_13().member_1); + } + let _e216 = phi_275_; + let _e218 = phi_290_; + switch bitcast(_e218.member) { + case 0: { + phi_304_ = false; break; } case 1: { - let _e232 = global_1.member[((_e70 + 18u) + _e188.member_1)]; - local_1[_e188.member_1] = _e232; - phi_309_ = type_18(); - phi_310_ = true; - phi_240_ = _e186; + let _e225 = global_1.member[((_e70 + 22u) + _e218.member_1)]; + local[_e218.member_1] = bitcast(_e225); + phi_304_ = true; break; } default: { - phi_309_ = type_18(); - phi_310_ = false; - phi_240_ = type_13(); + phi_304_ = bool(); break; } } - let _e235 = phi_309_; - let _e237 = phi_310_; - let _e239 = phi_240_; - local_3 = _e235; + let _e229 = phi_304_; continue; continuing { - phi_239_ = _e239; - break if !(_e237); + phi_274_ = _e216; + break if !(_e229); } } - let _e269 = local_3; - phi_312_ = _e269; + let _e231 = local; + phi_308_ = type_18(vec3(bitcast(_e78), bitcast(_e83), bitcast(_e88)), vec4(bitcast(_e94), bitcast(_e99), bitcast(_e104), bitcast(_e109)), vec3(bitcast(_e137), bitcast(_e142), bitcast(_e147)), vec4(bitcast(_e153), bitcast(_e158), bitcast(_e163), bitcast(_e168)), _e200, _e231, vec2(bitcast(_e115), bitcast(_e120)), vec2(bitcast(_e126), bitcast(_e131))); } else { - phi_312_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + phi_308_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); } - let _e242 = phi_312_; - global_2 = vec4(_e242.member.x, _e242.member.y, _e242.member.z, 1f); - global_3 = _e242.member_1; + let _e234 = phi_308_; + global_2 = vec4(_e234.member.x, _e234.member.y, _e234.member.z, 1f); + global_3 = _e234.member_1; return; } diff --git a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl index 244a8536..fa14608c 100644 --- a/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl +++ b/crates/renderling/shaders/tutorial-tutorial_slabbed_vertices_no_instance.wgsl @@ -32,32 +32,26 @@ var global_3: vec4; fn function() { var local: array; var local_1: array; - var phi_300_: bool; + var phi_296_: bool; var phi_179_: type_13; - var phi_195_: type_13; - var phi_196_: type_13; - var phi_209_: type_13; - var phi_225_: type_13; - var phi_226_: type_13; - var phi_242_: type_18; - var phi_243_: bool; - var phi_210_: type_13; - var phi_249_: type_18; - var phi_250_: bool; var phi_180_: type_13; - var phi_252_: type_18; - var local_2: type_18; - var local_3: type_18; + var phi_195_: type_13; + var phi_208_: bool; + var phi_214_: type_13; + var phi_215_: type_13; + var phi_230_: type_13; + var phi_244_: bool; + var phi_248_: type_18; let _e42 = global; let _e44 = arrayLength((&global_1.member)); let _e45 = (_e42 * 26u); if (_e44 >= 26u) { - phi_300_ = (_e45 <= (_e44 - 26u)); + phi_296_ = (_e45 <= (_e44 - 26u)); } else { - phi_300_ = false; + phi_296_ = false; } - let _e50 = phi_300_; + let _e50 = phi_296_; if _e50 { let _e53 = global_1.member[_e45]; let _e58 = global_1.member[(_e45 + 1u)]; @@ -82,102 +76,82 @@ fn function() { loop { let _e148 = phi_179_; if (_e148.member < _e148.member_1) { - phi_195_ = type_13((_e148.member + 1u), _e148.member_1); - phi_196_ = type_13(1u, _e148.member); + phi_180_ = type_13((_e148.member + 1u), _e148.member_1); + phi_195_ = type_13(1u, _e148.member); } else { - phi_195_ = _e148; - phi_196_ = type_13(0u, type_13().member_1); + phi_180_ = _e148; + phi_195_ = type_13(0u, type_13().member_1); } - let _e161 = phi_195_; - let _e163 = phi_196_; + let _e161 = phi_180_; + let _e163 = phi_195_; switch bitcast(_e163.member) { case 0: { - let _e167 = local_1; - local = array(0f, 0f, 0f, 0f); - phi_209_ = type_13(0u, 4u); - loop { - let _e170 = phi_209_; - if (_e170.member < _e170.member_1) { - phi_225_ = type_13((_e170.member + 1u), _e170.member_1); - phi_226_ = type_13(1u, _e170.member); - } else { - phi_225_ = _e170; - phi_226_ = type_13(0u, type_13().member_1); - } - let _e183 = phi_225_; - let _e185 = phi_226_; - switch bitcast(_e185.member) { - case 0: { - let _e189 = local; - phi_242_ = type_18(vec3(bitcast(_e53), bitcast(_e58), bitcast(_e63)), vec4(bitcast(_e69), bitcast(_e74), bitcast(_e79), bitcast(_e84)), vec3(bitcast(_e112), bitcast(_e117), bitcast(_e122)), vec4(bitcast(_e128), bitcast(_e133), bitcast(_e138), bitcast(_e143)), _e167, _e189, vec2(bitcast(_e90), bitcast(_e95)), vec2(bitcast(_e101), bitcast(_e106))); - phi_243_ = false; - phi_210_ = type_13(); - break; - } - case 1: { - let _e194 = global_1.member[((_e45 + 22u) + _e185.member_1)]; - local[_e185.member_1] = bitcast(_e194); - phi_242_ = type_18(); - phi_243_ = true; - phi_210_ = _e183; - break; - } - default: { - phi_242_ = type_18(); - phi_243_ = false; - phi_210_ = type_13(); - break; - } - } - let _e198 = phi_242_; - let _e200 = phi_243_; - let _e202 = phi_210_; - local_2 = _e198; - continue; - continuing { - phi_209_ = _e202; - break if !(_e200); - } - } - let _e236 = local_2; - phi_249_ = _e236; - phi_250_ = false; - phi_180_ = type_13(); + phi_208_ = false; + break; + } + case 1: { + let _e170 = global_1.member[((_e45 + 18u) + _e163.member_1)]; + local_1[_e163.member_1] = _e170; + phi_208_ = true; + break; + } + default: { + phi_208_ = bool(); + break; + } + } + let _e173 = phi_208_; + continue; + continuing { + phi_179_ = _e161; + break if !(_e173); + } + } + let _e175 = local_1; + local = array(0f, 0f, 0f, 0f); + phi_214_ = type_13(0u, 4u); + loop { + let _e178 = phi_214_; + if (_e178.member < _e178.member_1) { + phi_215_ = type_13((_e178.member + 1u), _e178.member_1); + phi_230_ = type_13(1u, _e178.member); + } else { + phi_215_ = _e178; + phi_230_ = type_13(0u, type_13().member_1); + } + let _e191 = phi_215_; + let _e193 = phi_230_; + switch bitcast(_e193.member) { + case 0: { + phi_244_ = false; break; } case 1: { - let _e207 = global_1.member[((_e45 + 18u) + _e163.member_1)]; - local_1[_e163.member_1] = _e207; - phi_249_ = type_18(); - phi_250_ = true; - phi_180_ = _e161; + let _e200 = global_1.member[((_e45 + 22u) + _e193.member_1)]; + local[_e193.member_1] = bitcast(_e200); + phi_244_ = true; break; } default: { - phi_249_ = type_18(); - phi_250_ = false; - phi_180_ = type_13(); + phi_244_ = bool(); break; } } - let _e210 = phi_249_; - let _e212 = phi_250_; - let _e214 = phi_180_; - local_3 = _e210; + let _e204 = phi_244_; continue; continuing { - phi_179_ = _e214; - break if !(_e212); + phi_214_ = _e191; + break if !(_e204); } } - let _e241 = local_3; - phi_252_ = _e241; + let _e206 = local; + phi_248_ = type_18(vec3(bitcast(_e53), bitcast(_e58), bitcast(_e63)), vec4(bitcast(_e69), bitcast(_e74), bitcast(_e79), bitcast(_e84)), vec3(bitcast(_e112), bitcast(_e117), bitcast(_e122)), vec4(bitcast(_e128), bitcast(_e133), bitcast(_e138), bitcast(_e143)), _e175, _e206, vec2(bitcast(_e90), bitcast(_e95)), vec2(bitcast(_e101), bitcast(_e106))); } else { - phi_252_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); + phi_248_ = type_18(vec3(0f, 0f, 0f), vec4(1f, 1f, 1f, 1f), vec3(0f, 0f, 1f), vec4(0f, 1f, 0f, 0f), array(0u, 0u, 0u, 0u), array(0f, 0f, 0f, 0f), vec2(0f, 0f), vec2(0f, 0f)); } - let _e217 = phi_252_; - global_2 = vec4(_e217.member.x, _e217.member.y, _e217.member.z, 1f); - global_3 = _e217.member_1; + let _e209 = phi_248_; + global_2 = vec4(_e209.member.x, _e209.member.y, _e209.member.z, 1f); + global_3 = _e209.member_1; return; } From 1aa402ad3143b64b9af4e72b190f8359e2aee0d5 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Mon, 11 Nov 2024 16:01:10 +1300 Subject: [PATCH 09/11] install toolchain --- .github/workflows/push.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 0df8617d..ffeda365 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -20,6 +20,8 @@ jobs: with: workspaces: shaders # ensure the shader binaries were properly checked in + - run: rustup toolchain add nightly-2024-04-24 + - run: rustup component add --toolchain nightly-2024-04-24 rust-src rustc-dev llvm-tools - run: cargo install --git https://github.com/rust-gpu/cargo-gpu - run: rm -rf crates/renderling/src/linkage/* - run: rm -rf crates/renderling/shaders From b0209996491c4ae899d85968af45849b7aef48e6 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Mon, 11 Nov 2024 16:22:41 +1300 Subject: [PATCH 10/11] shaders workflow --- .github/workflows/push.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index ffeda365..798f4ee5 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -15,18 +15,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: moonrepo/setup-rust@v1 - - uses: Swatinem/rust-cache@v2 + - uses: actions/cache@v4 with: - workspaces: shaders - # ensure the shader binaries were properly checked in + path: ~/.cache/rust-gpu + key: ${{ runner.os }} + - uses: moonrepo/setup-rust@v1 - run: rustup toolchain add nightly-2024-04-24 - run: rustup component add --toolchain nightly-2024-04-24 rust-src rustc-dev llvm-tools - run: cargo install --git https://github.com/rust-gpu/cargo-gpu - - run: rm -rf crates/renderling/src/linkage/* - - run: rm -rf crates/renderling/shaders + - run: rm -rf crates/renderling/src/linkage/* crates/renderling/shaders - run: RUST_LOG=trace cargo shaders - - run: git diff --exit-code --no-ext-diff crates/renderling/src/linkage + - run: cargo build -p renderling + - run: git diff --exit-code --no-ext-diff renderling-clippy: runs-on: ubuntu-latest From f135e3e9496df0c3a13b41e43b78cb3d91b80b82 Mon Sep 17 00:00:00 2001 From: Schell Carl Scivally Date: Mon, 11 Nov 2024 16:37:31 +1300 Subject: [PATCH 11/11] readme --- README.md | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 0d28069c..12f4901f 100644 --- a/README.md +++ b/README.md @@ -133,27 +133,22 @@ A small beast that looks cute up close, ready to do your graphics bidding. > Cute technology. ## Project Organization -* crates/renderling-shader - - Contains Rust shader code that can be shared on CPU and GPU (using `rust-gpu` to compile to SPIR-V). - Most of the shader code is here! - Certain tasks require atomics which doesn't work from `rust-gpu` to `wgpu` yet. See [NOTES.md](NOTES.md). - This crate is a member of the workspace so you get nice editor tooling while writing shaders in Rust. - You can also write sanity tests that run with `cargo test`. - Things just work like BAU. - -* shaders - - Contains a thin crate wrapper around `renderling-shader`. - Provides the spirv annotations for shaders. - Contains a program that compiles Rust into SPIR-V and copies **.spv** files into the main `renderling` crate. * crates/renderling - The main crate. + Main library crate. Contains CPU Rust code for creating pipelines and managing resources, making render passes, etc. + Contains GPU Rust code of the shader operations themselves. Contains tests, some using image comparison of actual frame renders for consistency and backwards compatibility. +* crates/renderling/shaders + + Contains **.spv** and **.wgsl** files generated by [`cargo-gpu`](https://github.com/rust-gpu/cargo-gpu). + +* crates/renderling/src/linkage* + + Contains autogenerated `wgpu` linkage for the generated shaders. + * img Image assets for tests (textures, etc.) @@ -178,13 +173,17 @@ cargo test ## Building the shaders -The `shaders/` folder is a crate that is excluded from the cargo workspace. -It compiles into a program that can be run to generate the shaders: +The `crates/renderling/shaders/` folder contains the generated SPIR-V files. + +To regenerate the shaders, run: ``` -cd shaders/ && cargo run --release +cargo shaders ``` +There is a `.cargo/config.toml` alias for `cargo shaders` that expands into a larger +shader compilation command. + ## Building on WASM ``` @@ -208,6 +207,8 @@ If you use it (outright or for inspiration), please consider donating. Many projects were born from first solving a need within `renderling`. Some of these solutions were then spun off into their own projects. +- [`cargo-gpu`](https://githu.com/rust-gpu/cargo-gpu) + A shader compilation cli tool. - [`crabslab`](https://github.com/schell/crabslab) A slab allocator for working across CPU/GPU boundaries. - [`loading-bytes`](crates/loading-bytes)