@babylonjs/lite 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/_math-factory-C-QqW-Wi.js +55 -0
  2. package/_math-factory-C-QqW-Wi.js.map +1 -0
  3. package/add-block-CikX5gWy.js +6 -0
  4. package/add-block-CikX5gWy.js.map +1 -0
  5. package/alpha-test-fragment-CUiHCw7W.js +22 -0
  6. package/alpha-test-fragment-CUiHCw7W.js.map +1 -0
  7. package/ambient-occlusion-block-DForhWL3.js +77 -0
  8. package/ambient-occlusion-block-DForhWL3.js.map +1 -0
  9. package/anisotropy-block-D5fXH_OY.js +12 -0
  10. package/anisotropy-block-D5fXH_OY.js.map +1 -0
  11. package/anisotropy-fragment-HgasXS7l.js +89 -0
  12. package/anisotropy-fragment-HgasXS7l.js.map +1 -0
  13. package/arc-tan2-block-d8sWt_x0.js +12 -0
  14. package/arc-tan2-block-d8sWt_x0.js.map +1 -0
  15. package/assets/splat-sort-worker-Crg3CaCc.js.map +1 -0
  16. package/background-dds-skybox-yHTqabU3.js +221 -0
  17. package/background-dds-skybox-yHTqabU3.js.map +1 -0
  18. package/background-ground-DIw6D3qf.js +235 -0
  19. package/background-ground-DIw6D3qf.js.map +1 -0
  20. package/background-hdr-skybox-c4uuTmkP.js +179 -0
  21. package/background-hdr-skybox-c4uuTmkP.js.map +1 -0
  22. package/background-solid-skybox-DPGBpPbm.js +235 -0
  23. package/background-solid-skybox-DPGBpPbm.js.map +1 -0
  24. package/bake-local-matrix-Dfpd3b06.js +28 -0
  25. package/bake-local-matrix-Dfpd3b06.js.map +1 -0
  26. package/billboard-renderable-D8mlVGCd.js +242 -0
  27. package/billboard-renderable-D8mlVGCd.js.map +1 -0
  28. package/biplanar-block-DZnKuV81.js +115 -0
  29. package/biplanar-block-DZnKuV81.js.map +1 -0
  30. package/bones-block-D6IhqUVV.js +31 -0
  31. package/bones-block-D6IhqUVV.js.map +1 -0
  32. package/clamp-block-BdII67hT.js +21 -0
  33. package/clamp-block-BdII67hT.js.map +1 -0
  34. package/clearcoat-block-BGML4npi.js +12 -0
  35. package/clearcoat-block-BGML4npi.js.map +1 -0
  36. package/clearcoat-fragment-LCiG98Rf.js +256 -0
  37. package/clearcoat-fragment-LCiG98Rf.js.map +1 -0
  38. package/clip-planes-block-BPfFJrbf.js +26 -0
  39. package/clip-planes-block-BPfFJrbf.js.map +1 -0
  40. package/cloud-block-BeVrangc.js +90 -0
  41. package/cloud-block-BeVrangc.js.map +1 -0
  42. package/color-converter-block-CvwKiW4k.js +123 -0
  43. package/color-converter-block-CvwKiW4k.js.map +1 -0
  44. package/color-merger-CCu21ZII.js +57 -0
  45. package/color-merger-CCu21ZII.js.map +1 -0
  46. package/color-splitter-CGn1G4ow.js +33 -0
  47. package/color-splitter-CGn1G4ow.js.map +1 -0
  48. package/conditional-block-Cd2pbejI.js +51 -0
  49. package/conditional-block-Cd2pbejI.js.map +1 -0
  50. package/create-skeleton-C9JdIJnb.js +44 -0
  51. package/create-skeleton-C9JdIJnb.js.map +1 -0
  52. package/cross-block-DCrLwCpt.js +12 -0
  53. package/cross-block-DCrLwCpt.js.map +1 -0
  54. package/cubemap-skybox-material-DvXMVc4k.js +79 -0
  55. package/cubemap-skybox-material-DvXMVc4k.js.map +1 -0
  56. package/curve-block-BlJpXVYv.js +89 -0
  57. package/curve-block-BlJpXVYv.js.map +1 -0
  58. package/debug-block-D2pg4Yf6.js +14 -0
  59. package/debug-block-D2pg4Yf6.js.map +1 -0
  60. package/derivative-block-B8KjtaWs.js +20 -0
  61. package/derivative-block-B8KjtaWs.js.map +1 -0
  62. package/desaturate-block-C1RghNSB.js +15 -0
  63. package/desaturate-block-C1RghNSB.js.map +1 -0
  64. package/discard-block-B2jKjaEL.js +21 -0
  65. package/discard-block-B2jKjaEL.js.map +1 -0
  66. package/distance-block-3NkgFZ3f.js +16 -0
  67. package/distance-block-3NkgFZ3f.js.map +1 -0
  68. package/divide-block-ZyepIg_-.js +6 -0
  69. package/divide-block-ZyepIg_-.js.map +1 -0
  70. package/dot-block-VlfAC6cD.js +16 -0
  71. package/dot-block-VlfAC6cD.js.map +1 -0
  72. package/elbow-block-NEOiIxzO.js +10 -0
  73. package/elbow-block-NEOiIxzO.js.map +1 -0
  74. package/emissive-fragment-BnNvbBCw.js +39 -0
  75. package/emissive-fragment-BnNvbBCw.js.map +1 -0
  76. package/esm-shadow-view-DGKdF1NI.js +18 -0
  77. package/esm-shadow-view-DGKdF1NI.js.map +1 -0
  78. package/esm-shadow-view-DN9HIaM4.js +15 -0
  79. package/esm-shadow-view-DN9HIaM4.js.map +1 -0
  80. package/esm-shadow-view-Dk9NFtLq.js +15 -0
  81. package/esm-shadow-view-Dk9NFtLq.js.map +1 -0
  82. package/fog-block-DJ9hEolm.js +41 -0
  83. package/fog-block-DJ9hEolm.js.map +1 -0
  84. package/frag-coord-block-DzXfFgfV.js +25 -0
  85. package/frag-coord-block-DzXfFgfV.js.map +1 -0
  86. package/frag-depth-block-UQbeKP2D.js +34 -0
  87. package/frag-depth-block-UQbeKP2D.js.map +1 -0
  88. package/fragment-output-BOphkIeh.js +26 -0
  89. package/fragment-output-BOphkIeh.js.map +1 -0
  90. package/fresnel-block-DefHWeO-.js +20 -0
  91. package/fresnel-block-DefHWeO-.js.map +1 -0
  92. package/front-facing-0d6aiyrv.js +11 -0
  93. package/front-facing-0d6aiyrv.js.map +1 -0
  94. package/gaussian-splatting-pipeline-sh-DgJl7l56.js +500 -0
  95. package/gaussian-splatting-pipeline-sh-DgJl7l56.js.map +1 -0
  96. package/gltf-animation-D7uyTyO3.js +245 -0
  97. package/gltf-animation-D7uyTyO3.js.map +1 -0
  98. package/gltf-ext-anisotropy-CknJiJK8.js +22 -0
  99. package/gltf-ext-anisotropy-CknJiJK8.js.map +1 -0
  100. package/gltf-ext-basisu-CPg5kPrx.js +452 -0
  101. package/gltf-ext-basisu-CPg5kPrx.js.map +1 -0
  102. package/gltf-ext-clearcoat-CLH2SVph.js +31 -0
  103. package/gltf-ext-clearcoat-CLH2SVph.js.map +1 -0
  104. package/gltf-ext-dielectric-qHzlnvdl.js +105 -0
  105. package/gltf-ext-dielectric-qHzlnvdl.js.map +1 -0
  106. package/gltf-ext-emissive-strength-nzGZXZVK.js +19 -0
  107. package/gltf-ext-emissive-strength-nzGZXZVK.js.map +1 -0
  108. package/gltf-ext-iridescence-C6bq7jiM.js +26 -0
  109. package/gltf-ext-iridescence-C6bq7jiM.js.map +1 -0
  110. package/gltf-ext-node-visibility-MafA9ot2.js +25 -0
  111. package/gltf-ext-node-visibility-MafA9ot2.js.map +1 -0
  112. package/gltf-ext-orm-CT18G_vQ.js +33 -0
  113. package/gltf-ext-orm-CT18G_vQ.js.map +1 -0
  114. package/gltf-ext-quantization-CpZyLDIz.js +94 -0
  115. package/gltf-ext-quantization-CpZyLDIz.js.map +1 -0
  116. package/gltf-ext-sheen-BgIxUzyZ.js +25 -0
  117. package/gltf-ext-sheen-BgIxUzyZ.js.map +1 -0
  118. package/gltf-ext-spec-gloss-D0LJLBUM.js +24 -0
  119. package/gltf-ext-spec-gloss-D0LJLBUM.js.map +1 -0
  120. package/gltf-ext-unlit-D2ANui0V.js +16 -0
  121. package/gltf-ext-unlit-D2ANui0V.js.map +1 -0
  122. package/gltf-ext-uv-transform-CE_-T1Tr.js +38 -0
  123. package/gltf-ext-uv-transform-CE_-T1Tr.js.map +1 -0
  124. package/gltf-feature-animation-pointer-BjpwOOqo.js +88 -0
  125. package/gltf-feature-animation-pointer-BjpwOOqo.js.map +1 -0
  126. package/gltf-feature-animations-CCizegp8.js +15 -0
  127. package/gltf-feature-animations-CCizegp8.js.map +1 -0
  128. package/gltf-feature-draco-yGSMGTE3.js +124 -0
  129. package/gltf-feature-draco-yGSMGTE3.js.map +1 -0
  130. package/gltf-feature-gpu-instancing-2e_CFQnl.js +151 -0
  131. package/gltf-feature-gpu-instancing-2e_CFQnl.js.map +1 -0
  132. package/gltf-feature-lights-punctual-DDDg4j0U.js +71 -0
  133. package/gltf-feature-lights-punctual-DDDg4j0U.js.map +1 -0
  134. package/gltf-feature-meshopt-Des96YFI.js +84 -0
  135. package/gltf-feature-meshopt-Des96YFI.js.map +1 -0
  136. package/gltf-feature-morph-CKCw6tkX.js +29 -0
  137. package/gltf-feature-morph-CKCw6tkX.js.map +1 -0
  138. package/gltf-feature-skeleton-D8hWLqi2.js +36 -0
  139. package/gltf-feature-skeleton-D8hWLqi2.js.map +1 -0
  140. package/gltf-feature-variants-Ds6v9byg.js +17 -0
  141. package/gltf-feature-variants-Ds6v9byg.js.map +1 -0
  142. package/gltf-feature-xmp-BUfq_IVG.js +15 -0
  143. package/gltf-feature-xmp-BUfq_IVG.js.map +1 -0
  144. package/gltf-glb-parser-D6UZWFuC.js +27 -0
  145. package/gltf-glb-parser-D6UZWFuC.js.map +1 -0
  146. package/gltf-interleave-DGnUlz28.js +241 -0
  147. package/gltf-interleave-DGnUlz28.js.map +1 -0
  148. package/gltf-pbr-builder-ext-BFOxOCnQ.js +85 -0
  149. package/gltf-pbr-builder-ext-BFOxOCnQ.js.map +1 -0
  150. package/gltf-variants-DFbr8EES.js +88 -0
  151. package/gltf-variants-DFbr8EES.js.map +1 -0
  152. package/gradient-block-DL_60sDc.js +50 -0
  153. package/gradient-block-DL_60sDc.js.map +1 -0
  154. package/gs-picking-pipeline-DzfMASL9.js +280 -0
  155. package/gs-picking-pipeline-DzfMASL9.js.map +1 -0
  156. package/height-to-normal-block-DhPHkDFg.js +65 -0
  157. package/height-to-normal-block-DhPHkDFg.js.map +1 -0
  158. package/ibl-fragment-DqQVi8k0.js +91 -0
  159. package/ibl-fragment-DqQVi8k0.js.map +1 -0
  160. package/ibl-skybox-wgsl-DCah0kWV.js +13 -0
  161. package/ibl-skybox-wgsl-DCah0kWV.js.map +1 -0
  162. package/image-processing-block-DwrhhmuF.js +40 -0
  163. package/image-processing-block-DwrhhmuF.js.map +1 -0
  164. package/image-source-BuMJgd9-.js +17 -0
  165. package/image-source-BuMJgd9-.js.map +1 -0
  166. package/index-C8HOR2sB.js +19222 -0
  167. package/index-C8HOR2sB.js.map +1 -0
  168. package/index.d.ts +4611 -0
  169. package/index.js +309 -0
  170. package/index.js.map +1 -0
  171. package/input-block-DgAJBzN_.js +109 -0
  172. package/input-block-DgAJBzN_.js.map +1 -0
  173. package/instances-block-BaSSiz8m.js +12 -0
  174. package/instances-block-BaSSiz8m.js.map +1 -0
  175. package/iridescence-block-B0pRFoOU.js +67 -0
  176. package/iridescence-block-B0pRFoOU.js.map +1 -0
  177. package/iridescence-fragment-Gymp7or5.js +243 -0
  178. package/iridescence-fragment-Gymp7or5.js.map +1 -0
  179. package/length-block-ChOkeiHR.js +11 -0
  180. package/length-block-ChOkeiHR.js.map +1 -0
  181. package/lerp-block-DjI2SfmI.js +18 -0
  182. package/lerp-block-DjI2SfmI.js.map +1 -0
  183. package/light-block-B11ew7FA.js +123 -0
  184. package/light-block-B11ew7FA.js.map +1 -0
  185. package/light-information-VJbW0jbs.js +19 -0
  186. package/light-information-VJbW0jbs.js.map +1 -0
  187. package/loop-block-Bb23EOMb.js +71 -0
  188. package/loop-block-Bb23EOMb.js.map +1 -0
  189. package/manifold-AS8POaOr.js +3022 -0
  190. package/manifold-AS8POaOr.js.map +1 -0
  191. package/manifold-RCa7RkKz.js +5 -0
  192. package/manifold-RCa7RkKz.js.map +1 -0
  193. package/matrix-blocks-acWn_V6g.js +51 -0
  194. package/matrix-blocks-acWn_V6g.js.map +1 -0
  195. package/max-block-CjFgljZ7.js +6 -0
  196. package/max-block-CjFgljZ7.js.map +1 -0
  197. package/mesh-attribute-exists-block-BfK8UiSL.js +44 -0
  198. package/mesh-attribute-exists-block-BfK8UiSL.js.map +1 -0
  199. package/mesh-features-BLENkYVt.js +341 -0
  200. package/mesh-features-BLENkYVt.js.map +1 -0
  201. package/min-block-CHtBngNl.js +6 -0
  202. package/min-block-CHtBngNl.js.map +1 -0
  203. package/mod-block-Ceizv8Y7.js +6 -0
  204. package/mod-block-Ceizv8Y7.js.map +1 -0
  205. package/morph-fragment-DOVo70gP.js +59 -0
  206. package/morph-fragment-DOVo70gP.js.map +1 -0
  207. package/morph-targets-55z342ZB.js +35 -0
  208. package/morph-targets-55z342ZB.js.map +1 -0
  209. package/multilight-wgsl-BGyiIOp3.js +112 -0
  210. package/multilight-wgsl-BGyiIOp3.js.map +1 -0
  211. package/multiply-block-DaXLJ7Ud.js +6 -0
  212. package/multiply-block-DaXLJ7Ud.js.map +1 -0
  213. package/negate-block-9CSLc5pM.js +6 -0
  214. package/negate-block-9CSLc5pM.js.map +1 -0
  215. package/nlerp-block-BNK1adIb.js +21 -0
  216. package/nlerp-block-BNK1adIb.js.map +1 -0
  217. package/node-env-BPZXZzBf.js +39 -0
  218. package/node-env-BPZXZzBf.js.map +1 -0
  219. package/node-registry-DwgC4yth.js +190 -0
  220. package/node-registry-DwgC4yth.js.map +1 -0
  221. package/node-registry-extra-advanced-2DJVt67-.js +45 -0
  222. package/node-registry-extra-advanced-2DJVt67-.js.map +1 -0
  223. package/node-registry-extra-compat-Dhrw8fDQ.js +41 -0
  224. package/node-registry-extra-compat-Dhrw8fDQ.js.map +1 -0
  225. package/node-registry-extra-math-CsAHvIZo.js +49 -0
  226. package/node-registry-extra-math-CsAHvIZo.js.map +1 -0
  227. package/node-registry-extra-procedural-5pLQ3Bhz.js +45 -0
  228. package/node-registry-extra-procedural-5pLQ3Bhz.js.map +1 -0
  229. package/node-renderable-DlLIdBmd.js +269 -0
  230. package/node-renderable-DlLIdBmd.js.map +1 -0
  231. package/node-shadow-DKrcqmNg.js +122 -0
  232. package/node-shadow-DKrcqmNg.js.map +1 -0
  233. package/node-snippet-DUMm9qEO.js +22 -0
  234. package/node-snippet-DUMm9qEO.js.map +1 -0
  235. package/normal-blend-block-BfH_nBoj.js +29 -0
  236. package/normal-blend-block-BfH_nBoj.js.map +1 -0
  237. package/normal-map-fragment-DpsIXrJf.js +38 -0
  238. package/normal-map-fragment-DpsIXrJf.js.map +1 -0
  239. package/normalize-block-F2bLNj9K.js +6 -0
  240. package/normalize-block-F2bLNj9K.js.map +1 -0
  241. package/oneminus-block-BP9x4Dc3.js +6 -0
  242. package/oneminus-block-BP9x4Dc3.js.map +1 -0
  243. package/opposite-block-Cnqmm-lH.js +6 -0
  244. package/opposite-block-Cnqmm-lH.js.map +1 -0
  245. package/package.json +26 -0
  246. package/panner-block-BwMQq-6Y.js +13 -0
  247. package/panner-block-BwMQq-6Y.js.map +1 -0
  248. package/parse-camera-DM3oJJeT.js +23 -0
  249. package/parse-camera-DM3oJJeT.js.map +1 -0
  250. package/pbr-aces-wgsl-HpiQHGN_.js +13 -0
  251. package/pbr-aces-wgsl-HpiQHGN_.js.map +1 -0
  252. package/pbr-metallic-roughness-block-full-6vMm1Jk6.js +763 -0
  253. package/pbr-metallic-roughness-block-full-6vMm1Jk6.js.map +1 -0
  254. package/pbr-metallic-roughness-block-h_KAOZrW.js +104 -0
  255. package/pbr-metallic-roughness-block-h_KAOZrW.js.map +1 -0
  256. package/pbr-mr-helper-core-CIwm-T1G.js +237 -0
  257. package/pbr-mr-helper-core-CIwm-T1G.js.map +1 -0
  258. package/pbr-refraction-DGmMSa2v.js +17 -0
  259. package/pbr-refraction-DGmMSa2v.js.map +1 -0
  260. package/pbr-renderable-BJxUtPBb.js +961 -0
  261. package/pbr-renderable-BJxUtPBb.js.map +1 -0
  262. package/pbr-shadow-fragment-LO9SlbJj.js +14 -0
  263. package/pbr-shadow-fragment-LO9SlbJj.js.map +1 -0
  264. package/pbr-template-ext-8q7BcTDf.js +88 -0
  265. package/pbr-template-ext-8q7BcTDf.js.map +1 -0
  266. package/pbr-tracking-B3alzn91.js +31 -0
  267. package/pbr-tracking-B3alzn91.js.map +1 -0
  268. package/pbr-transmission-ext-BxW4CEGu.js +581 -0
  269. package/pbr-transmission-ext-BxW4CEGu.js.map +1 -0
  270. package/perturb-normal-0Q8EM9ig.js +39 -0
  271. package/perturb-normal-0Q8EM9ig.js.map +1 -0
  272. package/posterize-block-DfdKsbEf.js +28 -0
  273. package/posterize-block-DfdKsbEf.js.map +1 -0
  274. package/pow-block-DI5ICzhc.js +13 -0
  275. package/pow-block-DI5ICzhc.js.map +1 -0
  276. package/random-number-block-2OyRYljF.js +15 -0
  277. package/random-number-block-2OyRYljF.js.map +1 -0
  278. package/reciprocal-block-Ck3CW-j-.js +14 -0
  279. package/reciprocal-block-Ck3CW-j-.js.map +1 -0
  280. package/reflect-block-CizpzrX4.js +12 -0
  281. package/reflect-block-CizpzrX4.js.map +1 -0
  282. package/reflectance-fragment-BCrgPmrt.js +143 -0
  283. package/reflectance-fragment-BCrgPmrt.js.map +1 -0
  284. package/reflection-block-DqcwyYqr.js +12 -0
  285. package/reflection-block-DqcwyYqr.js.map +1 -0
  286. package/reflection-texture-base-block-1xmJ0HDj.js +10 -0
  287. package/reflection-texture-base-block-1xmJ0HDj.js.map +1 -0
  288. package/reflection-texture-block-C3QtzoV8.js +60 -0
  289. package/reflection-texture-block-C3QtzoV8.js.map +1 -0
  290. package/refract-block-HHiAk-7U.js +13 -0
  291. package/refract-block-HHiAk-7U.js.map +1 -0
  292. package/refraction-block-U8y6XiXs.js +11 -0
  293. package/refraction-block-U8y6XiXs.js.map +1 -0
  294. package/refraction-dispersion-wgsl-DdQCyyO1.js +16 -0
  295. package/refraction-dispersion-wgsl-DdQCyyO1.js.map +1 -0
  296. package/remap-block-DxK1W1vp.js +27 -0
  297. package/remap-block-DxK1W1vp.js.map +1 -0
  298. package/replace-color-block-1m--hiru.js +17 -0
  299. package/replace-color-block-1m--hiru.js.map +1 -0
  300. package/rgbd-decode-DCvzUYeI.js +110 -0
  301. package/rgbd-decode-DCvzUYeI.js.map +1 -0
  302. package/rotate2d-block-nEe1N2MJ.js +15 -0
  303. package/rotate2d-block-nEe1N2MJ.js.map +1 -0
  304. package/scale-block-C5Z8159G.js +13 -0
  305. package/scale-block-C5Z8159G.js.map +1 -0
  306. package/scene-material-swap-C2ykv55W.js +34 -0
  307. package/scene-material-swap-C2ykv55W.js.map +1 -0
  308. package/screen-size-block-BVNnOvE8.js +21 -0
  309. package/screen-size-block-BVNnOvE8.js.map +1 -0
  310. package/screen-space-block-CwaxdfSe.js +28 -0
  311. package/screen-space-block-CwaxdfSe.js.map +1 -0
  312. package/shader-renderable-D-6796KR.js +531 -0
  313. package/shader-renderable-D-6796KR.js.map +1 -0
  314. package/shadow-fragment-core-DHN2G6FI.js +110 -0
  315. package/shadow-fragment-core-DHN2G6FI.js.map +1 -0
  316. package/shadow-map-CQNQC-Fw.js +13 -0
  317. package/shadow-map-CQNQC-Fw.js.map +1 -0
  318. package/sheen-block-BugfJqK3.js +12 -0
  319. package/sheen-block-BugfJqK3.js.map +1 -0
  320. package/sheen-fragment-Dze2f7XJ.js +215 -0
  321. package/sheen-fragment-Dze2f7XJ.js.map +1 -0
  322. package/simplex-perlin-3d-block-CcMtofzV.js +58 -0
  323. package/simplex-perlin-3d-block-CcMtofzV.js.map +1 -0
  324. package/singlelight-directional-wgsl-CmUDZxwz.js +39 -0
  325. package/singlelight-directional-wgsl-CmUDZxwz.js.map +1 -0
  326. package/singlelight-hemispheric-wgsl-t-83IP_s.js +40 -0
  327. package/singlelight-hemispheric-wgsl-t-83IP_s.js.map +1 -0
  328. package/singlelight-point-wgsl-CLzULIYV.js +45 -0
  329. package/singlelight-point-wgsl-CLzULIYV.js.map +1 -0
  330. package/singlelight-spot-wgsl-DEEUrfVM.js +47 -0
  331. package/singlelight-spot-wgsl-DEEUrfVM.js.map +1 -0
  332. package/skeleton-fragment-B_XlFbtx.js +71 -0
  333. package/skeleton-fragment-B_XlFbtx.js.map +1 -0
  334. package/skybox-renderable-DDwzu-PT.js +92 -0
  335. package/skybox-renderable-DDwzu-PT.js.map +1 -0
  336. package/skybox.vertex-DJgi072W.js +5 -0
  337. package/skybox.vertex-DJgi072W.js.map +1 -0
  338. package/smoothstep-block-Di4t37x-.js +15 -0
  339. package/smoothstep-block-Di4t37x-.js.map +1 -0
  340. package/splat-ply-compressed-BahdBG1r.js +394 -0
  341. package/splat-ply-compressed-BahdBG1r.js.map +1 -0
  342. package/standard-renderable-GjxL9xSf.js +636 -0
  343. package/standard-renderable-GjxL9xSf.js.map +1 -0
  344. package/std-ambient-fragment-BoUsD06w.js +37 -0
  345. package/std-ambient-fragment-BoUsD06w.js.map +1 -0
  346. package/std-cube-reflection-fragment-ulqc3bsP.js +31 -0
  347. package/std-cube-reflection-fragment-ulqc3bsP.js.map +1 -0
  348. package/std-emissive-fragment-DNGj1HdQ.js +40 -0
  349. package/std-emissive-fragment-DNGj1HdQ.js.map +1 -0
  350. package/std-lightmap-fragment-Bqj89aIe.js +37 -0
  351. package/std-lightmap-fragment-Bqj89aIe.js.map +1 -0
  352. package/std-opacity-fragment-KuPh5N2Z.js +37 -0
  353. package/std-opacity-fragment-KuPh5N2Z.js.map +1 -0
  354. package/std-reflection-fragment-BA5Ghn_M.js +57 -0
  355. package/std-reflection-fragment-BA5Ghn_M.js.map +1 -0
  356. package/std-shadow-fragment-FNQfrJuC.js +8 -0
  357. package/std-shadow-fragment-FNQfrJuC.js.map +1 -0
  358. package/std-specular-fragment-CE-6scqd.js +37 -0
  359. package/std-specular-fragment-CE-6scqd.js.map +1 -0
  360. package/std-tracking-CNKZ-hJN.js +15 -0
  361. package/std-tracking-CNKZ-hJN.js.map +1 -0
  362. package/step-block-BkywzTYm.js +13 -0
  363. package/step-block-BkywzTYm.js.map +1 -0
  364. package/storage-read-block-BdzhJfln.js +25 -0
  365. package/storage-read-block-BdzhJfln.js.map +1 -0
  366. package/storage-write-block-DjLKZ0Ro.js +11 -0
  367. package/storage-write-block-DjLKZ0Ro.js.map +1 -0
  368. package/subsurface-block-CBhxT9ui.js +12 -0
  369. package/subsurface-block-CBhxT9ui.js.map +1 -0
  370. package/subsurface-fragment-liM3y2-P.js +158 -0
  371. package/subsurface-fragment-liM3y2-P.js.map +1 -0
  372. package/subtract-block-NPfKvzQP.js +6 -0
  373. package/subtract-block-NPfKvzQP.js.map +1 -0
  374. package/swapchain-overlay-DcCSFDp7.js +35 -0
  375. package/swapchain-overlay-DcCSFDp7.js.map +1 -0
  376. package/tbn-block-ByOI6Y43.js +43 -0
  377. package/tbn-block-ByOI6Y43.js.map +1 -0
  378. package/teleport-in-block-BMa17cqq.js +10 -0
  379. package/teleport-in-block-BMa17cqq.js.map +1 -0
  380. package/teleport-out-block-5AkB25H6.js +19 -0
  381. package/teleport-out-block-5AkB25H6.js.map +1 -0
  382. package/texture-block-rr21KIL_.js +70 -0
  383. package/texture-block-rr21KIL_.js.map +1 -0
  384. package/thin-instance-fragment-hsv-RyDs.js +69 -0
  385. package/thin-instance-fragment-hsv-RyDs.js.map +1 -0
  386. package/thin-instance-gpu-C9Gv_Z1w.js +62 -0
  387. package/thin-instance-gpu-C9Gv_Z1w.js.map +1 -0
  388. package/tracking-primitives-wgdBY85t.js +82 -0
  389. package/tracking-primitives-wgdBY85t.js.map +1 -0
  390. package/transform-block-DbRph9JI.js +32 -0
  391. package/transform-block-DbRph9JI.js.map +1 -0
  392. package/trigonometry-block-BYQcTHiD.js +36 -0
  393. package/trigonometry-block-BYQcTHiD.js.map +1 -0
  394. package/triplanar-block-BZHkD9hX.js +148 -0
  395. package/triplanar-block-BZHkD9hX.js.map +1 -0
  396. package/twirl-block-78WtdiBd.js +39 -0
  397. package/twirl-block-78WtdiBd.js.map +1 -0
  398. package/unlit-fragment-BIlhJpz6.js +43 -0
  399. package/unlit-fragment-BIlhJpz6.js.map +1 -0
  400. package/uv-transform-fragment-hYujGpZg.js +47 -0
  401. package/uv-transform-fragment-hYujGpZg.js.map +1 -0
  402. package/vector-merger-CrW-ONB0.js +43 -0
  403. package/vector-merger-CrW-ONB0.js.map +1 -0
  404. package/vector-splitter-BoJuHrAU.js +34 -0
  405. package/vector-splitter-BoJuHrAU.js.map +1 -0
  406. package/vertex-output-Cvft64y0.js +14 -0
  407. package/vertex-output-Cvft64y0.js.map +1 -0
  408. package/view-direction-CWVucfnT.js +12 -0
  409. package/view-direction-CWVucfnT.js.map +1 -0
  410. package/voronoi-noise-block-iNQxa_Ls.js +43 -0
  411. package/voronoi-noise-block-iNQxa_Ls.js.map +1 -0
  412. package/wave-block-CY_mk1ec.js +41 -0
  413. package/wave-block-CY_mk1ec.js.map +1 -0
  414. package/wgsl-helpers-DyzNzCeE.js +48 -0
  415. package/wgsl-helpers-DyzNzCeE.js.map +1 -0
  416. package/worley-noise-3d-block-CyR2-k4s.js +58 -0
  417. package/worley-noise-3d-block-CyR2-k4s.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refraction-dispersion-wgsl-DdQCyyO1.js","sources":["../src/material/pbr/fragments/refraction-dispersion-wgsl.ts"],"sourcesContent":["// Chromatic-dispersion refracted-environment sample (KHR_materials_dispersion).\n//\n// A pure data module: the per-RGB 3-ray WGSL is dynamically imported only by\n// scenes that actually use dispersion (see pbr-refraction.ts), so it ships in\n// no other transmission scene's bundle. The string is injected into the\n// refraction fragment factory (makeRefractionRttExt) rather than mutating any\n// shared module state, keeping shader generation scene-isolated.\n//\n// Splits the refracted ray into per-RGB index-of-refraction offsets, matching\n// BJS pbrBlockSubSurface: realIOR=1/eta, spread=0.04*dispersion*(realIOR-1),\n// iors=[1/(realIOR-spread), eta, 1/(realIOR+spread)].\n\n/** Per-RGB chromatic-dispersion refracted-environment sample WGSL, injected into\n * the refraction fragment when a scene contains a dispersive transmissive material. */\nexport const DISPERSION_SAMPLE_WGSL = `let eta=material.refractionParams.y;\nlet realIOR=1.0/eta;\nlet spread=0.04*material.volumeParams.w*(realIOR-1.0);\nlet etaR=1.0/(realIOR-spread);\nlet etaB=1.0/(realIOR+spread);\nlet cpR=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,etaR)*th,1.0);\nlet cpG=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,eta)*th,1.0);\nlet cpB=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,etaB)*th,1.0);\nlet uvR=(cpR.xy/cpR.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet uvG=(cpG.xy/cpG.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet uvB=(cpB.xy/cpB.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet er=vec3<f32>(textureSampleLevel(refractionTexture,refractionSampler_,uvR,lv).r,textureSampleLevel(refractionTexture,refractionSampler_,uvG,lv).g,textureSampleLevel(refractionTexture,refractionSampler_,uvB,lv).b)*material.environmentIntensity;`;\n"],"names":[],"mappings":"AAcO,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,27 @@
1
+ import { f as formatFloat } from "./_math-factory-C-QqW-Wi.js";
2
+ function resolveOrSerialized(block, inputName, serializedKey, fallback, stage, state, ctx) {
3
+ const input = block.inputs.get(inputName);
4
+ if (input == null ? void 0 : input.source) {
5
+ return ctx.cast(ctx.resolve(block, inputName, stage, state), "f32").expr;
6
+ }
7
+ const raw = block.serialized[serializedKey];
8
+ return formatFloat(typeof raw === "number" ? raw : fallback);
9
+ }
10
+ const emitter = {
11
+ className: "RemapBlock",
12
+ emit(block, _outputName, stage, state, ctx) {
13
+ const input = ctx.resolve(block, "input", stage, state);
14
+ const sMin = resolveOrSerialized(block, "sourceMin", "sourceRange.x", -1, stage, state, ctx);
15
+ const sMax = resolveOrSerialized(block, "sourceMax", "sourceRange.y", 1, stage, state, ctx);
16
+ const tMin = resolveOrSerialized(block, "targetMin", "targetRange.x", 0, stage, state, ctx);
17
+ const tMax = resolveOrSerialized(block, "targetMax", "targetRange.y", 1, stage, state, ctx);
18
+ return {
19
+ expr: `(${tMin} + (${input.expr} - ${sMin}) * (${tMax} - ${tMin}) / (${sMax} - ${sMin}))`,
20
+ type: input.type
21
+ };
22
+ }
23
+ };
24
+ export {
25
+ emitter
26
+ };
27
+ //# sourceMappingURL=remap-block-DxK1W1vp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remap-block-DxK1W1vp.js","sources":["../src/material/node/blocks/remap-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\nimport { formatFloat } from \"./_math-factory.js\";\n\nfunction resolveOrSerialized(\n block: Parameters<BlockEmitter[\"emit\"]>[0],\n inputName: string,\n serializedKey: string,\n fallback: number,\n stage: Parameters<BlockEmitter[\"emit\"]>[2],\n state: Parameters<BlockEmitter[\"emit\"]>[3],\n ctx: Parameters<BlockEmitter[\"emit\"]>[4]\n): string {\n const input = block.inputs.get(inputName);\n if (input?.source) {\n return ctx.cast(ctx.resolve(block, inputName, stage, state), \"f32\").expr;\n }\n const raw = block.serialized[serializedKey];\n return formatFloat(typeof raw === \"number\" ? raw : fallback);\n}\n\nexport const emitter: BlockEmitter = {\n className: \"RemapBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const sMin = resolveOrSerialized(block, \"sourceMin\", \"sourceRange.x\", -1, stage, state, ctx);\n const sMax = resolveOrSerialized(block, \"sourceMax\", \"sourceRange.y\", 1, stage, state, ctx);\n const tMin = resolveOrSerialized(block, \"targetMin\", \"targetRange.x\", 0, stage, state, ctx);\n const tMax = resolveOrSerialized(block, \"targetMax\", \"targetRange.y\", 1, stage, state, ctx);\n // t + (v - s0) * (t1 - t0) / (s1 - s0)\n return {\n expr: `(${tMin} + (${input.expr} - ${sMin}) * (${tMax} - ${tMin}) / (${sMax} - ${sMin}))`,\n type: input.type,\n };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,oBACL,OACA,WACA,eACA,UACA,OACA,OACA,KACM;AACN,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,+BAAO,QAAQ;AACf,WAAO,IAAI,KAAK,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK,GAAG,KAAK,EAAE;AAAA,EACxE;AACA,QAAM,MAAM,MAAM,WAAW,aAAa;AAC1C,SAAO,YAAY,OAAO,QAAQ,WAAW,MAAM,QAAQ;AAC/D;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,IAAI,OAAO,OAAO,GAAG;AAC3F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAC1F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAC1F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAE1F,WAAO;AAAA,MACH,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI;AAAA,MACrF,MAAM,MAAM;AAAA,IAAA;AAAA,EAEpB;AACJ;"}
@@ -0,0 +1,17 @@
1
+ const emitter = {
2
+ className: "ReplaceColorBlock",
3
+ emit(block, _outputName, stage, state, ctx) {
4
+ const value = ctx.resolve(block, "value", stage, state);
5
+ if (value.type === "f32" || value.type === "mat4f" || value.type === "texture2d" || value.type === "textureCube") {
6
+ throw new Error(`NodeMaterial: ReplaceColorBlock requires a vector/color value; got ${value.type}`);
7
+ }
8
+ const reference = ctx.cast(ctx.resolve(block, "reference", stage, state), value.type).expr;
9
+ const distance = ctx.cast(ctx.resolve(block, "distance", stage, state), "f32").expr;
10
+ const replacement = ctx.cast(ctx.resolve(block, "replacement", stage, state), value.type).expr;
11
+ return { expr: `select(${value.expr}, ${replacement}, length(${value.expr} - ${reference}) < ${distance})`, type: value.type };
12
+ }
13
+ };
14
+ export {
15
+ emitter
16
+ };
17
+ //# sourceMappingURL=replace-color-block-1m--hiru.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-color-block-1m--hiru.js","sources":["../src/material/node/blocks/replace-color-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"ReplaceColorBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const value = ctx.resolve(block, \"value\", stage, state);\n if (value.type === \"f32\" || value.type === \"mat4f\" || value.type === \"texture2d\" || value.type === \"textureCube\") {\n throw new Error(`NodeMaterial: ReplaceColorBlock requires a vector/color value; got ${value.type}`);\n }\n const reference = ctx.cast(ctx.resolve(block, \"reference\", stage, state), value.type).expr;\n const distance = ctx.cast(ctx.resolve(block, \"distance\", stage, state), \"f32\").expr;\n const replacement = ctx.cast(ctx.resolve(block, \"replacement\", stage, state), value.type).expr;\n return { expr: `select(${value.expr}, ${replacement}, length(${value.expr} - ${reference}) < ${distance})`, type: value.type };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,QAAI,MAAM,SAAS,SAAS,MAAM,SAAS,WAAW,MAAM,SAAS,eAAe,MAAM,SAAS,eAAe;AAC9G,YAAM,IAAI,MAAM,sEAAsE,MAAM,IAAI,EAAE;AAAA,IACtG;AACA,UAAM,YAAY,IAAI,KAAK,IAAI,QAAQ,OAAO,aAAa,OAAO,KAAK,GAAG,MAAM,IAAI,EAAE;AACtF,UAAM,WAAW,IAAI,KAAK,IAAI,QAAQ,OAAO,YAAY,OAAO,KAAK,GAAG,KAAK,EAAE;AAC/E,UAAM,cAAc,IAAI,KAAK,IAAI,QAAQ,OAAO,eAAe,OAAO,KAAK,GAAG,MAAM,IAAI,EAAE;AAC1F,WAAO,EAAE,MAAM,UAAU,MAAM,IAAI,KAAK,WAAW,YAAY,MAAM,IAAI,MAAM,SAAS,OAAO,QAAQ,KAAK,MAAM,MAAM,KAAA;AAAA,EAC5H;AACJ;"}
@@ -0,0 +1,110 @@
1
+ const WGSL = `override f:bool=false;@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var o:texture_storage_2d<rgba16float,write>;@compute @workgroup_size(8,8)fn main(@builtin(global_invocation_id)g:vec3u){let d=textureDimensions(t);if(any(g.xy>=d)){return;}let c=textureLoad(t,vec2u(g.x,select(g.y,d.y-1u-g.y,f)),0);textureStore(o,g.xy,vec4f(pow(c.rgb,vec3f(2.2))/max(c.a,1.0/255.0),1));}`;
2
+ let _device = null;
3
+ let _module = null;
4
+ let _noFlip = null;
5
+ let _flip = null;
6
+ function getPipeline(device, flipY) {
7
+ if (device !== _device) {
8
+ _device = device;
9
+ _module = device.createShaderModule({ code: WGSL });
10
+ _noFlip = null;
11
+ _flip = null;
12
+ }
13
+ const slot = flipY ? _flip : _noFlip;
14
+ if (slot) {
15
+ return slot;
16
+ }
17
+ const p = device.createComputePipeline({
18
+ layout: "auto",
19
+ compute: { module: _module, entryPoint: "main", constants: { f: flipY ? 1 : 0 } }
20
+ });
21
+ if (flipY) {
22
+ _flip = p;
23
+ } else {
24
+ _noFlip = p;
25
+ }
26
+ return p;
27
+ }
28
+ function makeBindGroup(device, pipeline, inView, outView) {
29
+ return device.createBindGroup({
30
+ layout: pipeline.getBindGroupLayout(0),
31
+ entries: [
32
+ { binding: 0, resource: inView },
33
+ { binding: 1, resource: outView }
34
+ ]
35
+ });
36
+ }
37
+ function encodeDispatch(encoder, pipeline, bg, w, h) {
38
+ const pass = encoder.beginComputePass();
39
+ pass.setPipeline(pipeline);
40
+ pass.setBindGroup(0, bg);
41
+ pass.dispatchWorkgroups(Math.ceil(w / 8), Math.ceil(h / 8));
42
+ pass.end();
43
+ }
44
+ function decodeBrdfPng(engine, image) {
45
+ const device = engine._device;
46
+ const pipeline = getPipeline(device, false);
47
+ const w = image.width;
48
+ const h = image.height;
49
+ const inputTex = device.createTexture({
50
+ size: { width: w, height: h },
51
+ format: "rgba8unorm",
52
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
53
+ });
54
+ device.queue.copyExternalImageToTexture({ source: image, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: w, height: h });
55
+ const texture = device.createTexture({
56
+ size: { width: w, height: h },
57
+ format: "rgba16float",
58
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING
59
+ });
60
+ const bg = makeBindGroup(device, pipeline, inputTex.createView(), texture.createView());
61
+ const enc = device.createCommandEncoder();
62
+ encodeDispatch(enc, pipeline, bg, w, h);
63
+ device.queue.submit([enc.finish()]);
64
+ inputTex.destroy();
65
+ return texture;
66
+ }
67
+ function uploadCubemapRGBD(engine, images, width, mipCount) {
68
+ const device = engine._device;
69
+ const pipeline = getPipeline(device, true);
70
+ const texture = device.createTexture({
71
+ size: { width, height: width, depthOrArrayLayers: 6 },
72
+ format: "rgba16float",
73
+ mipLevelCount: mipCount,
74
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,
75
+ dimension: "2d"
76
+ });
77
+ for (let mip = 0; mip < mipCount; mip++) {
78
+ const mipSize = Math.max(1, width >> mip);
79
+ const inputTex = device.createTexture({
80
+ size: { width: mipSize, height: mipSize },
81
+ format: "rgba8unorm",
82
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
83
+ });
84
+ const outputTex = device.createTexture({
85
+ size: { width: mipSize, height: mipSize },
86
+ format: "rgba16float",
87
+ usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC
88
+ });
89
+ const bindGroup = makeBindGroup(device, pipeline, inputTex.createView(), outputTex.createView());
90
+ for (let face = 0; face < 6; face++) {
91
+ const idx = mip * 6 + face;
92
+ if (idx >= images.length) {
93
+ break;
94
+ }
95
+ device.queue.copyExternalImageToTexture({ source: images[idx], flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: mipSize, height: mipSize });
96
+ const encoder = device.createCommandEncoder();
97
+ encodeDispatch(encoder, pipeline, bindGroup, mipSize, mipSize);
98
+ encoder.copyTextureToTexture({ texture: outputTex }, { texture, origin: { x: 0, y: 0, z: face }, mipLevel: mip }, { width: mipSize, height: mipSize });
99
+ device.queue.submit([encoder.finish()]);
100
+ }
101
+ inputTex.destroy();
102
+ outputTex.destroy();
103
+ }
104
+ return texture;
105
+ }
106
+ export {
107
+ decodeBrdfPng,
108
+ uploadCubemapRGBD
109
+ };
110
+ //# sourceMappingURL=rgbd-decode-DCvzUYeI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rgbd-decode-DCvzUYeI.js","sources":["../src/loader-env/rgbd-decode.ts"],"sourcesContent":["/** RGBD decoder — decodes Babylon BRDF PNG and .env cubemap faces into rgba16float. */\n\nimport type { EngineContext } from \"../engine/engine.js\";\n\nconst WGSL = `override f:bool=false;@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var o:texture_storage_2d<rgba16float,write>;@compute @workgroup_size(8,8)fn main(@builtin(global_invocation_id)g:vec3u){let d=textureDimensions(t);if(any(g.xy>=d)){return;}let c=textureLoad(t,vec2u(g.x,select(g.y,d.y-1u-g.y,f)),0);textureStore(o,g.xy,vec4f(pow(c.rgb,vec3f(2.2))/max(c.a,1.0/255.0),1));}`;\n\nlet _device: GPUDevice | null = null;\nlet _module: GPUShaderModule | null = null;\nlet _noFlip: GPUComputePipeline | null = null;\nlet _flip: GPUComputePipeline | null = null;\n\nfunction getPipeline(device: GPUDevice, flipY: boolean): GPUComputePipeline {\n if (device !== _device) {\n _device = device;\n _module = device.createShaderModule({ code: WGSL });\n _noFlip = null;\n _flip = null;\n }\n const slot = flipY ? _flip : _noFlip;\n if (slot) {\n return slot;\n }\n const p = device.createComputePipeline({\n layout: \"auto\",\n compute: { module: _module!, entryPoint: \"main\", constants: { f: flipY ? 1 : 0 } },\n });\n if (flipY) {\n _flip = p;\n } else {\n _noFlip = p;\n }\n return p;\n}\n\nfunction makeBindGroup(device: GPUDevice, pipeline: GPUComputePipeline, inView: GPUTextureView, outView: GPUTextureView): GPUBindGroup {\n return device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: inView },\n { binding: 1, resource: outView },\n ],\n });\n}\n\nfunction encodeDispatch(encoder: GPUCommandEncoder, pipeline: GPUComputePipeline, bg: GPUBindGroup, w: number, h: number): void {\n const pass = encoder.beginComputePass();\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bg);\n pass.dispatchWorkgroups(Math.ceil(w / 8), Math.ceil(h / 8));\n pass.end();\n}\n\n/** Decode a single RGBD PNG (e.g. BRDF LUT) `->` rgba16float 2D texture. No Y-flip. */\nexport function decodeBrdfPng(engine: EngineContext, image: ImageBitmap): GPUTexture {\n const device = engine._device;\n const pipeline = getPipeline(device, false);\n const w = image.width;\n const h = image.height;\n const inputTex = device.createTexture({\n size: { width: w, height: h },\n format: \"rgba8unorm\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n device.queue.copyExternalImageToTexture({ source: image, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: w, height: h });\n const texture = device.createTexture({\n size: { width: w, height: h },\n format: \"rgba16float\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING,\n });\n const bg = makeBindGroup(device, pipeline, inputTex.createView(), texture.createView());\n const enc = device.createCommandEncoder();\n encodeDispatch(enc, pipeline, bg, w, h);\n device.queue.submit([enc.finish()]);\n inputTex.destroy();\n return texture;\n}\n\n/** Decode and upload a RGBD cubemap (6 faces × N mips) → rgba16float cube texture.\n * Y-flipped on read (BJS uploads cubemap faces with invertY=true). */\nexport function uploadCubemapRGBD(engine: EngineContext, images: ImageBitmap[], width: number, mipCount: number): GPUTexture {\n const device = engine._device;\n const pipeline = getPipeline(device, true);\n\n const texture = device.createTexture({\n size: { width, height: width, depthOrArrayLayers: 6 },\n format: \"rgba16float\",\n mipLevelCount: mipCount,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n dimension: \"2d\",\n });\n\n for (let mip = 0; mip < mipCount; mip++) {\n const mipSize = Math.max(1, width >> mip);\n\n const inputTex = device.createTexture({\n size: { width: mipSize, height: mipSize },\n format: \"rgba8unorm\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n\n const outputTex = device.createTexture({\n size: { width: mipSize, height: mipSize },\n format: \"rgba16float\",\n usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC,\n });\n\n const bindGroup = makeBindGroup(device, pipeline, inputTex.createView(), outputTex.createView());\n\n for (let face = 0; face < 6; face++) {\n const idx = mip * 6 + face;\n if (idx >= images.length) {\n break;\n }\n\n device.queue.copyExternalImageToTexture({ source: images[idx]!, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: mipSize, height: mipSize });\n\n const encoder = device.createCommandEncoder();\n encodeDispatch(encoder, pipeline, bindGroup, mipSize, mipSize);\n encoder.copyTextureToTexture({ texture: outputTex }, { texture, origin: { x: 0, y: 0, z: face }, mipLevel: mip }, { width: mipSize, height: mipSize });\n\n // One submit per face ensures sequential hazards on the reused input/output.\n device.queue.submit([encoder.finish()]);\n }\n\n inputTex.destroy();\n outputTex.destroy();\n }\n\n return texture;\n}\n"],"names":[],"mappings":"AAIA,MAAM,OAAO;AAEb,IAAI,UAA4B;AAChC,IAAI,UAAkC;AACtC,IAAI,UAAqC;AACzC,IAAI,QAAmC;AAEvC,SAAS,YAAY,QAAmB,OAAoC;AACxE,MAAI,WAAW,SAAS;AACpB,cAAU;AACV,cAAU,OAAO,mBAAmB,EAAE,MAAM,MAAM;AAClD,cAAU;AACV,YAAQ;AAAA,EACZ;AACA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,MAAI,MAAM;AACN,WAAO;AAAA,EACX;AACA,QAAM,IAAI,OAAO,sBAAsB;AAAA,IACnC,QAAQ;AAAA,IACR,SAAS,EAAE,QAAQ,SAAU,YAAY,QAAQ,WAAW,EAAE,GAAG,QAAQ,IAAI,EAAA,EAAE;AAAA,EAAE,CACpF;AACD,MAAI,OAAO;AACP,YAAQ;AAAA,EACZ,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;AAEA,SAAS,cAAc,QAAmB,UAA8B,QAAwB,SAAuC;AACnI,SAAO,OAAO,gBAAgB;AAAA,IAC1B,QAAQ,SAAS,mBAAmB,CAAC;AAAA,IACrC,SAAS;AAAA,MACL,EAAE,SAAS,GAAG,UAAU,OAAA;AAAA,MACxB,EAAE,SAAS,GAAG,UAAU,QAAA;AAAA,IAAQ;AAAA,EACpC,CACH;AACL;AAEA,SAAS,eAAe,SAA4B,UAA8B,IAAkB,GAAW,GAAiB;AAC5H,QAAM,OAAO,QAAQ,iBAAA;AACrB,OAAK,YAAY,QAAQ;AACzB,OAAK,aAAa,GAAG,EAAE;AACvB,OAAK,mBAAmB,KAAK,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC;AAC1D,OAAK,IAAA;AACT;AAGO,SAAS,cAAc,QAAuB,OAAgC;AACjF,QAAM,SAAS,OAAO;AACtB,QAAM,WAAW,YAAY,QAAQ,KAAK;AAC1C,QAAM,IAAI,MAAM;AAChB,QAAM,IAAI,MAAM;AAChB,QAAM,WAAW,OAAO,cAAc;AAAA,IAClC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AAAA,IAC1B,QAAQ;AAAA,IACR,OAAO,gBAAgB,kBAAkB,gBAAgB,WAAW,gBAAgB;AAAA,EAAA,CACvF;AACD,SAAO,MAAM,2BAA2B,EAAE,QAAQ,OAAO,OAAO,SAAS,EAAE,SAAS,UAAU,oBAAoB,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG;AAClJ,QAAM,UAAU,OAAO,cAAc;AAAA,IACjC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AAAA,IAC1B,QAAQ;AAAA,IACR,OAAO,gBAAgB,kBAAkB,gBAAgB;AAAA,EAAA,CAC5D;AACD,QAAM,KAAK,cAAc,QAAQ,UAAU,SAAS,WAAA,GAAc,QAAQ,YAAY;AACtF,QAAM,MAAM,OAAO,qBAAA;AACnB,iBAAe,KAAK,UAAU,IAAI,GAAG,CAAC;AACtC,SAAO,MAAM,OAAO,CAAC,IAAI,OAAA,CAAQ,CAAC;AAClC,WAAS,QAAA;AACT,SAAO;AACX;AAIO,SAAS,kBAAkB,QAAuB,QAAuB,OAAe,UAA8B;AACzH,QAAM,SAAS,OAAO;AACtB,QAAM,WAAW,YAAY,QAAQ,IAAI;AAEzC,QAAM,UAAU,OAAO,cAAc;AAAA,IACjC,MAAM,EAAE,OAAO,QAAQ,OAAO,oBAAoB,EAAA;AAAA,IAClD,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,OAAO,gBAAgB,kBAAkB,gBAAgB,WAAW,gBAAgB,WAAW,gBAAgB;AAAA,IAC/G,WAAW;AAAA,EAAA,CACd;AAED,WAAS,MAAM,GAAG,MAAM,UAAU,OAAO;AACrC,UAAM,UAAU,KAAK,IAAI,GAAG,SAAS,GAAG;AAExC,UAAM,WAAW,OAAO,cAAc;AAAA,MAClC,MAAM,EAAE,OAAO,SAAS,QAAQ,QAAA;AAAA,MAChC,QAAQ;AAAA,MACR,OAAO,gBAAgB,kBAAkB,gBAAgB,WAAW,gBAAgB;AAAA,IAAA,CACvF;AAED,UAAM,YAAY,OAAO,cAAc;AAAA,MACnC,MAAM,EAAE,OAAO,SAAS,QAAQ,QAAA;AAAA,MAChC,QAAQ;AAAA,MACR,OAAO,gBAAgB,kBAAkB,gBAAgB;AAAA,IAAA,CAC5D;AAED,UAAM,YAAY,cAAc,QAAQ,UAAU,SAAS,WAAA,GAAc,UAAU,YAAY;AAE/F,aAAS,OAAO,GAAG,OAAO,GAAG,QAAQ;AACjC,YAAM,MAAM,MAAM,IAAI;AACtB,UAAI,OAAO,OAAO,QAAQ;AACtB;AAAA,MACJ;AAEA,aAAO,MAAM,2BAA2B,EAAE,QAAQ,OAAO,GAAG,GAAI,OAAO,MAAA,GAAS,EAAE,SAAS,UAAU,oBAAoB,MAAA,GAAS,EAAE,OAAO,SAAS,QAAQ,SAAS;AAErK,YAAM,UAAU,OAAO,qBAAA;AACvB,qBAAe,SAAS,UAAU,WAAW,SAAS,OAAO;AAC7D,cAAQ,qBAAqB,EAAE,SAAS,UAAA,GAAa,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,UAAU,IAAA,GAAO,EAAE,OAAO,SAAS,QAAQ,SAAS;AAGrJ,aAAO,MAAM,OAAO,CAAC,QAAQ,OAAA,CAAQ,CAAC;AAAA,IAC1C;AAEA,aAAS,QAAA;AACT,cAAU,QAAA;AAAA,EACd;AAEA,SAAO;AACX;"}
@@ -0,0 +1,15 @@
1
+ const emitter = {
2
+ className: "Rotate2dBlock",
3
+ emit(block, _outputName, stage, state, ctx) {
4
+ const input = ctx.cast(ctx.resolve(block, "input", stage, state), "vec2f");
5
+ const angle = ctx.cast(ctx.resolve(block, "angle", stage, state), "f32");
6
+ return {
7
+ expr: `vec2<f32>(cos(${angle.expr}) * (${input.expr}).x - sin(${angle.expr}) * (${input.expr}).y, sin(${angle.expr}) * (${input.expr}).x + cos(${angle.expr}) * (${input.expr}).y)`,
8
+ type: "vec2f"
9
+ };
10
+ }
11
+ };
12
+ export {
13
+ emitter
14
+ };
15
+ //# sourceMappingURL=rotate2d-block-nEe1N2MJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate2d-block-nEe1N2MJ.js","sources":["../src/material/node/blocks/rotate2d-block.ts"],"sourcesContent":["/** Rotate2dBlock — rotates a vec2 by angle radians around the origin. */\n\nimport type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"Rotate2dBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.cast(ctx.resolve(block, \"input\", stage, state), \"vec2f\");\n const angle = ctx.cast(ctx.resolve(block, \"angle\", stage, state), \"f32\");\n return {\n expr: `vec2<f32>(cos(${angle.expr}) * (${input.expr}).x - sin(${angle.expr}) * (${input.expr}).y, sin(${angle.expr}) * (${input.expr}).x + cos(${angle.expr}) * (${input.expr}).y)`,\n type: \"vec2f\",\n };\n },\n};\n"],"names":[],"mappings":"AAIO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,OAAO;AACzE,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,KAAK;AACvE,WAAO;AAAA,MACH,MAAM,iBAAiB,MAAM,IAAI,QAAQ,MAAM,IAAI,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI,YAAY,MAAM,IAAI,QAAQ,MAAM,IAAI,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI;AAAA,MAC7K,MAAM;AAAA,IAAA;AAAA,EAEd;AACJ;"}
@@ -0,0 +1,13 @@
1
+ const emitter = {
2
+ className: "ScaleBlock",
3
+ emit(block, _outputName, stage, state, ctx) {
4
+ const input = ctx.resolve(block, "input", stage, state);
5
+ const factor = ctx.resolve(block, "factor", stage, state);
6
+ const fc = ctx.cast(factor, "f32").expr;
7
+ return { expr: `(${input.expr} * ${fc})`, type: input.type };
8
+ }
9
+ };
10
+ export {
11
+ emitter
12
+ };
13
+ //# sourceMappingURL=scale-block-C5Z8159G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale-block-C5Z8159G.js","sources":["../src/material/node/blocks/scale-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"ScaleBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const factor = ctx.resolve(block, \"factor\", stage, state);\n // factor is always scalar in BJS\n const fc = ctx.cast(factor, \"f32\").expr;\n return { expr: `(${input.expr} * ${fc})`, type: input.type };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,UAAM,SAAS,IAAI,QAAQ,OAAO,UAAU,OAAO,KAAK;AAExD,UAAM,KAAK,IAAI,KAAK,QAAQ,KAAK,EAAE;AACnC,WAAO,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,KAAK,MAAM,MAAM,KAAA;AAAA,EAC1D;AACJ;"}
@@ -0,0 +1,34 @@
1
+ function processMaterialSwaps(scene) {
2
+ const q = scene._materialSwapQueue;
3
+ for (const mesh of q) {
4
+ mesh._materialDirty = false;
5
+ const old = scene._meshDisposables.get(mesh);
6
+ if (old) {
7
+ for (const fn of old) {
8
+ fn();
9
+ }
10
+ scene._meshDisposables.delete(mesh);
11
+ }
12
+ const mat = mesh.material;
13
+ const builder = mat == null ? void 0 : mat._buildGroup;
14
+ if (!builder) {
15
+ continue;
16
+ }
17
+ const rebuild = builder._rebuildSingle;
18
+ if (!rebuild) {
19
+ continue;
20
+ }
21
+ const renderable = rebuild(scene, mesh);
22
+ let i = scene._renderables.length;
23
+ while (i > 0 && scene._renderables[i - 1].order > renderable.order) {
24
+ i--;
25
+ }
26
+ scene._renderables.splice(i, 0, renderable);
27
+ }
28
+ q.length = 0;
29
+ scene._renderableVersion++;
30
+ }
31
+ export {
32
+ processMaterialSwaps
33
+ };
34
+ //# sourceMappingURL=scene-material-swap-C2ykv55W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-material-swap-C2ykv55W.js","sources":["../src/scene/scene-material-swap.ts"],"sourcesContent":["import type { SceneContext } from \"./scene-core.js\";\nimport type { Mesh } from \"../mesh/mesh.js\";\n\n/** @internal Drain _materialSwapQueue: dispose old resources and rebuild renderables. */\nexport function processMaterialSwaps(scene: SceneContext): void {\n const q = scene._materialSwapQueue;\n for (const mesh of q) {\n (mesh as Mesh)._materialDirty = false;\n const old = scene._meshDisposables.get(mesh);\n if (old) {\n for (const fn of old) {\n fn();\n }\n scene._meshDisposables.delete(mesh);\n }\n\n const mat = mesh.material;\n const builder = mat?._buildGroup;\n if (!builder) {\n continue;\n }\n const rebuild = builder._rebuildSingle;\n if (!rebuild) {\n continue;\n }\n const renderable = rebuild(scene, mesh);\n // Insert by `order` so the renderable list stays sorted (frame-graph\n // tasks bucket opaque/direct/transparent at bind time).\n let i = scene._renderables.length;\n while (i > 0 && scene._renderables[i - 1]!.order > renderable.order) {\n i--;\n }\n scene._renderables.splice(i, 0, renderable);\n }\n q.length = 0;\n scene._renderableVersion++;\n}\n"],"names":[],"mappings":"AAIO,SAAS,qBAAqB,OAA2B;AAC5D,QAAM,IAAI,MAAM;AAChB,aAAW,QAAQ,GAAG;AACjB,SAAc,iBAAiB;AAChC,UAAM,MAAM,MAAM,iBAAiB,IAAI,IAAI;AAC3C,QAAI,KAAK;AACL,iBAAW,MAAM,KAAK;AAClB,WAAA;AAAA,MACJ;AACA,YAAM,iBAAiB,OAAO,IAAI;AAAA,IACtC;AAEA,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,2BAAK;AACrB,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AACA,UAAM,UAAU,QAAQ;AACxB,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AACA,UAAM,aAAa,QAAQ,OAAO,IAAI;AAGtC,QAAI,IAAI,MAAM,aAAa;AAC3B,WAAO,IAAI,KAAK,MAAM,aAAa,IAAI,CAAC,EAAG,QAAQ,WAAW,OAAO;AACjE;AAAA,IACJ;AACA,UAAM,aAAa,OAAO,GAAG,GAAG,UAAU;AAAA,EAC9C;AACA,IAAE,SAAS;AACX,QAAM;AACV;"}
@@ -0,0 +1,21 @@
1
+ const OUTPUTS = {
2
+ xy: { swizzle: "", type: "vec2f" },
3
+ x: { swizzle: ".x", type: "f32" },
4
+ y: { swizzle: ".y", type: "f32" }
5
+ };
6
+ const emitter = {
7
+ className: "ScreenSizeBlock",
8
+ stage: "fragment",
9
+ emit(_block, outputName, _stage, state) {
10
+ state.usesScreenSize = true;
11
+ const out = OUTPUTS[outputName];
12
+ if (!out) {
13
+ throw new Error(`NodeMaterial: ScreenSizeBlock has no output "${outputName}"`);
14
+ }
15
+ return { expr: `_NME_SCREEN_SIZE_${out.swizzle}`, type: out.type };
16
+ }
17
+ };
18
+ export {
19
+ emitter
20
+ };
21
+ //# sourceMappingURL=screen-size-block-BVNnOvE8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-size-block-BVNnOvE8.js","sources":["../src/material/node/blocks/screen-size-block.ts"],"sourcesContent":["/** ScreenSizeBlock — exposes current render size in physical canvas pixels. */\n\nimport type { BlockEmitter, NodeValueType } from \"../node-types.js\";\n\nconst OUTPUTS: Record<string, { readonly swizzle: string; readonly type: NodeValueType }> = {\n xy: { swizzle: \"\", type: \"vec2f\" },\n x: { swizzle: \".x\", type: \"f32\" },\n y: { swizzle: \".y\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ScreenSizeBlock\",\n stage: \"fragment\",\n emit(_block, outputName, _stage, state) {\n state.usesScreenSize = true;\n const out = OUTPUTS[outputName];\n if (!out) {\n throw new Error(`NodeMaterial: ScreenSizeBlock has no output \"${outputName}\"`);\n }\n return { expr: `_NME_SCREEN_SIZE_${out.swizzle}`, type: out.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,UAAsF;AAAA,EACxF,IAAI,EAAE,SAAS,IAAI,MAAM,QAAA;AAAA,EACzB,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK,QAAQ,YAAY,QAAQ,OAAO;AACpC,UAAM,iBAAiB;AACvB,UAAM,MAAM,QAAQ,UAAU;AAC9B,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,gDAAgD,UAAU,GAAG;AAAA,IACjF;AACA,WAAO,EAAE,MAAM,oBAAoB,IAAI,OAAO,IAAI,MAAM,IAAI,KAAA;AAAA,EAChE;AACJ;"}
@@ -0,0 +1,28 @@
1
+ const OUTPUTS = {
2
+ output: { swizzle: ".xy", type: "vec2f" },
3
+ x: { swizzle: ".x", type: "f32" },
4
+ y: { swizzle: ".y", type: "f32" }
5
+ };
6
+ const emitter = {
7
+ className: "ScreenSpaceBlock",
8
+ stage: "fragment",
9
+ emit(block, outputName, stage, state, ctx) {
10
+ const vectorRaw = ctx.resolve(block, "vector", stage, state);
11
+ const vector = vectorRaw.type === "vec4f" ? vectorRaw : ctx.cast(vectorRaw, "vec3f");
12
+ const wvp = ctx.cast(ctx.resolve(block, "worldViewProjection", stage, state), "mat4f");
13
+ const clip = ctx.temp(state, "screenClip");
14
+ const uv = ctx.temp(state, "screenUv");
15
+ const vectorExpr = vector.type === "vec4f" ? vector.expr : `vec4<f32>(${vector.expr}, 1.0)`;
16
+ state.fragment.body.push(`let ${clip} = ${wvp.expr} * ${vectorExpr};`);
17
+ state.fragment.body.push(`let ${uv} = (${clip}.xy / ${clip}.w) * 0.5 + vec2<f32>(0.5, 0.5);`);
18
+ const out = OUTPUTS[outputName];
19
+ if (!out) {
20
+ throw new Error(`NodeMaterial: ScreenSpaceBlock has no output "${outputName}"`);
21
+ }
22
+ return { expr: `${uv}${out.swizzle}`, type: out.type };
23
+ }
24
+ };
25
+ export {
26
+ emitter
27
+ };
28
+ //# sourceMappingURL=screen-space-block-CwaxdfSe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-space-block-CwaxdfSe.js","sources":["../src/material/node/blocks/screen-space-block.ts"],"sourcesContent":["/** ScreenSpaceBlock — transforms a vec3/vec4 by WVP and maps clip XY to 0..1 screen space. */\n\nimport type { BlockEmitter, NodeValueType } from \"../node-types.js\";\n\nconst OUTPUTS: Record<string, { readonly swizzle: string; readonly type: NodeValueType }> = {\n output: { swizzle: \".xy\", type: \"vec2f\" },\n x: { swizzle: \".x\", type: \"f32\" },\n y: { swizzle: \".y\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ScreenSpaceBlock\",\n stage: \"fragment\",\n emit(block, outputName, stage, state, ctx) {\n const vectorRaw = ctx.resolve(block, \"vector\", stage, state);\n const vector = vectorRaw.type === \"vec4f\" ? vectorRaw : ctx.cast(vectorRaw, \"vec3f\");\n const wvp = ctx.cast(ctx.resolve(block, \"worldViewProjection\", stage, state), \"mat4f\");\n const clip = ctx.temp(state, \"screenClip\");\n const uv = ctx.temp(state, \"screenUv\");\n const vectorExpr = vector.type === \"vec4f\" ? vector.expr : `vec4<f32>(${vector.expr}, 1.0)`;\n state.fragment.body.push(`let ${clip} = ${wvp.expr} * ${vectorExpr};`);\n state.fragment.body.push(`let ${uv} = (${clip}.xy / ${clip}.w) * 0.5 + vec2<f32>(0.5, 0.5);`);\n const out = OUTPUTS[outputName];\n if (!out) {\n throw new Error(`NodeMaterial: ScreenSpaceBlock has no output \"${outputName}\"`);\n }\n return { expr: `${uv}${out.swizzle}`, type: out.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,UAAsF;AAAA,EACxF,QAAQ,EAAE,SAAS,OAAO,MAAM,QAAA;AAAA,EAChC,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,YAAY,IAAI,QAAQ,OAAO,UAAU,OAAO,KAAK;AAC3D,UAAM,SAAS,UAAU,SAAS,UAAU,YAAY,IAAI,KAAK,WAAW,OAAO;AACnF,UAAM,MAAM,IAAI,KAAK,IAAI,QAAQ,OAAO,uBAAuB,OAAO,KAAK,GAAG,OAAO;AACrF,UAAM,OAAO,IAAI,KAAK,OAAO,YAAY;AACzC,UAAM,KAAK,IAAI,KAAK,OAAO,UAAU;AACrC,UAAM,aAAa,OAAO,SAAS,UAAU,OAAO,OAAO,aAAa,OAAO,IAAI;AACnF,UAAM,SAAS,KAAK,KAAK,OAAO,IAAI,MAAM,IAAI,IAAI,MAAM,UAAU,GAAG;AACrE,UAAM,SAAS,KAAK,KAAK,OAAO,EAAE,OAAO,IAAI,SAAS,IAAI,kCAAkC;AAC5F,UAAM,MAAM,QAAQ,UAAU;AAC9B,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,iDAAiD,UAAU,GAAG;AAAA,IAClF;AACA,WAAO,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,OAAO,IAAI,MAAM,IAAI,KAAA;AAAA,EACpD;AACJ;"}