@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":"cloud-block-BeVrangc.js","sources":["../src/material/node/blocks/cloud-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction optional(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n return input?.source ? ctx.resolve(block, inputName, stage, state) : null;\n}\n\nfunction scalarOffset(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): string | null {\n const value = optional(block, inputName, stage, state, ctx);\n return value ? ctx.cast(value, \"f32\").expr : null;\n}\n\nexport const emitter: BlockEmitter = {\n className: \"CloudBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const seed = ctx.resolve(block, \"seed\", stage, state);\n if (seed.type !== \"vec2f\" && seed.type !== \"vec3f\") {\n throw new Error(`NodeMaterial: CloudBlock requires vec2 or vec3 seed; got ${seed.type}`);\n }\n\n state[stage].helpers.set(\n \"nme_cloudNoise\",\n `fn nme_cloudRandom(p: f32) -> f32 {\nvar temp = fract(p * 0.011);\ntemp *= temp + 7.5;\ntemp *= temp + temp;\nreturn fract(temp);\n}\nfn nme_cloudNoise2(x: vec2<f32>, chaos: vec2<f32>) -> f32 {\nlet stepv = chaos * vec2<f32>(75.0, 120.0) + vec2<f32>(75.0, 120.0);\nlet i = floor(x);\nlet f = fract(x);\nlet n = dot(i, stepv);\nlet u = f * f * (vec2<f32>(3.0) - 2.0 * f);\nreturn mix(mix(nme_cloudRandom(n + dot(stepv, vec2<f32>(0.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec2<f32>(1.0, 0.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec2<f32>(0.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec2<f32>(1.0, 1.0))), u.x), u.y);\n}\nfn nme_cloudNoise3(x: vec3<f32>, chaos: vec3<f32>) -> f32 {\nlet stepv = chaos * vec3<f32>(60.0, 120.0, 75.0) + vec3<f32>(60.0, 120.0, 75.0);\nlet i = floor(x);\nlet f = fract(x);\nlet n = dot(i, stepv);\nlet u = f * f * (vec3<f32>(3.0) - 2.0 * f);\nreturn mix(mix(mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 0.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 0.0, 0.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 1.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 1.0, 0.0))), u.x), u.y), mix(mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 0.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 0.0, 1.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 1.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 1.0, 1.0))), u.x), u.y), u.z);\n}`\n );\n\n const octaves = Math.max(0, Math.trunc(typeof block.serialized.octaves === \"number\" ? block.serialized.octaves : 6));\n const helperKey = `nme_cloudFbm_${octaves}`;\n state[stage].helpers.set(\n helperKey,\n `fn nme_cloudFbm2_${octaves}(st: vec2<f32>, chaos: vec2<f32>) -> f32 {\nvar value = 0.0;\nvar amplitude = 0.5;\nvar tempST = st;\nfor (var i = 0; i < ${octaves}; i = i + 1) {\nvalue += amplitude * nme_cloudNoise2(tempST, chaos);\ntempST *= 2.0;\namplitude *= 0.5;\n}\nreturn value;\n}\nfn nme_cloudFbm3_${octaves}(x: vec3<f32>, chaos: vec3<f32>) -> f32 {\nvar value = 0.0;\nvar amplitude = 0.5;\nvar tempX = x;\nfor (var i = 0; i < ${octaves}; i = i + 1) {\nvalue += amplitude * nme_cloudNoise3(tempX, chaos);\ntempX *= 2.0;\namplitude *= 0.5;\n}\nreturn value;\n}`\n );\n\n const st = ctx.temp(state, \"cloudSeed\");\n state[stage].body.push(`var ${st}: ${seed.type === \"vec2f\" ? \"vec2<f32>\" : \"vec3<f32>\"} = ${seed.expr};`);\n const offsetX = scalarOffset(block, \"offsetX\", stage, state, ctx);\n const offsetY = scalarOffset(block, \"offsetY\", stage, state, ctx);\n const offsetZ = scalarOffset(block, \"offsetZ\", stage, state, ctx);\n if (offsetX) {\n state[stage].body.push(`${st}.x += 0.1 * ${offsetX};`);\n }\n if (offsetY) {\n state[stage].body.push(`${st}.y += 0.1 * ${offsetY};`);\n }\n if (offsetZ && seed.type === \"vec3f\") {\n state[stage].body.push(`${st}.z += 0.1 * ${offsetZ};`);\n }\n\n const chaos = optional(block, \"chaos\", stage, state, ctx);\n const chaosExpr = chaos ? ctx.cast(chaos, seed.type).expr : seed.type === \"vec2f\" ? \"vec2<f32>(0.0, 0.0)\" : \"vec3<f32>(0.0, 0.0, 0.0)\";\n return { expr: seed.type === \"vec2f\" ? `nme_cloudFbm2_${octaves}(${st}, ${chaosExpr})` : `nme_cloudFbm3_${octaves}(${st}, ${chaosExpr})`, type: \"f32\" };\n },\n};\n"],"names":[],"mappings":"AAEA,SAAS,SAAS,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AAC/H,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,UAAO,+BAAO,UAAS,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK,IAAI;AACzE;AAEA,SAAS,aAAa,OAAkB,WAAmB,OAAc,OAAuB,KAAqC;AACjI,QAAM,QAAQ,SAAS,OAAO,WAAW,OAAO,OAAO,GAAG;AAC1D,SAAO,QAAQ,IAAI,KAAK,OAAO,KAAK,EAAE,OAAO;AACjD;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,OAAO,IAAI,QAAQ,OAAO,QAAQ,OAAO,KAAK;AACpD,QAAI,KAAK,SAAS,WAAW,KAAK,SAAS,SAAS;AAChD,YAAM,IAAI,MAAM,4DAA4D,KAAK,IAAI,EAAE;AAAA,IAC3F;AAEA,UAAM,KAAK,EAAE,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAwBJ,UAAM,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,MAAM,WAAW,YAAY,WAAW,MAAM,WAAW,UAAU,CAAC,CAAC;AACnH,UAAM,YAAY,gBAAgB,OAAO;AACzC,UAAM,KAAK,EAAE,QAAQ;AAAA,MACjB;AAAA,MACA,oBAAoB,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIjB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAOV,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIJ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AASrB,UAAM,KAAK,IAAI,KAAK,OAAO,WAAW;AACtC,UAAM,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,KAAK,SAAS,UAAU,cAAc,WAAW,MAAM,KAAK,IAAI,GAAG;AACxG,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,QAAI,SAAS;AACT,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AACA,QAAI,SAAS;AACT,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AACA,QAAI,WAAW,KAAK,SAAS,SAAS;AAClC,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AAEA,UAAM,QAAQ,SAAS,OAAO,SAAS,OAAO,OAAO,GAAG;AACxD,UAAM,YAAY,QAAQ,IAAI,KAAK,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK,SAAS,UAAU,wBAAwB;AAC5G,WAAO,EAAE,MAAM,KAAK,SAAS,UAAU,iBAAiB,OAAO,IAAI,EAAE,KAAK,SAAS,MAAM,iBAAiB,OAAO,IAAI,EAAE,KAAK,SAAS,KAAK,MAAM,MAAA;AAAA,EACpJ;AACJ;"}
@@ -0,0 +1,123 @@
1
+ function tryResolve(block, inputName, stage, state, ctx) {
2
+ const input = block.inputs.get(inputName);
3
+ if (!(input == null ? void 0 : input.source)) {
4
+ return null;
5
+ }
6
+ return ctx.resolve(block, inputName, stage, state);
7
+ }
8
+ function ensureRgb2HslHelper(state, stage) {
9
+ state[stage].helpers.set(
10
+ "nme_rgb2hsl",
11
+ `fn nme_rgb2hsl(color: vec3<f32>) -> vec3<f32> {
12
+ let r = color.x;
13
+ let g = color.y;
14
+ let b = color.z;
15
+ let maxc = max(r, max(g, b));
16
+ let minc = min(r, min(g, b));
17
+ var h = 0.0;
18
+ var s = 0.0;
19
+ let l = (maxc + minc) / 2.0;
20
+ if (maxc != minc) {
21
+ let d = maxc - minc;
22
+ if (l > 0.5) {
23
+ s = d / (2.0 - maxc - minc);
24
+ } else {
25
+ s = d / (maxc + minc);
26
+ }
27
+ if (maxc == r) {
28
+ var add = 0.0;
29
+ if (g < b) {
30
+ add = 6.0;
31
+ }
32
+ h = (g - b) / d + add;
33
+ } else if (maxc == g) {
34
+ h = (b - r) / d + 2.0;
35
+ } else if (maxc == b) {
36
+ h = (r - g) / d + 4.0;
37
+ }
38
+ h = h / 6.0;
39
+ }
40
+ return vec3<f32>(h, s, l);
41
+ }`
42
+ );
43
+ }
44
+ function ensureHsl2RgbHelper(state, stage) {
45
+ state[stage].helpers.set(
46
+ "nme_hue2rgb",
47
+ `fn nme_hue2rgb(p: f32, q: f32, tt: f32) -> f32 {
48
+ var t = tt;
49
+ if (t < 0.0) {
50
+ t = t + 1.0;
51
+ }
52
+ if (t > 1.0) {
53
+ t = t - 1.0;
54
+ }
55
+ if (t < 1.0 / 6.0) {
56
+ return p + (q - p) * 6.0 * t;
57
+ }
58
+ if (t < 1.0 / 2.0) {
59
+ return q;
60
+ }
61
+ if (t < 2.0 / 3.0) {
62
+ return p + (q - p) * (2.0 / 3.0 - t) * 6.0;
63
+ }
64
+ return p;
65
+ }`
66
+ );
67
+ state[stage].helpers.set(
68
+ "nme_hsl2rgb",
69
+ `fn nme_hsl2rgb(hsl: vec3<f32>) -> vec3<f32> {
70
+ let h = hsl.x;
71
+ let s = hsl.y;
72
+ let l = hsl.z;
73
+ var r: f32;
74
+ var g: f32;
75
+ var b: f32;
76
+ if (s == 0.0) {
77
+ r = l;
78
+ g = l;
79
+ b = l;
80
+ } else {
81
+ var q: f32;
82
+ if (l < 0.5) {
83
+ q = l * (1.0 + s);
84
+ } else {
85
+ q = l + s - l * s;
86
+ }
87
+ let p = 2.0 * l - q;
88
+ r = nme_hue2rgb(p, q, h + 1.0 / 3.0);
89
+ g = nme_hue2rgb(p, q, h);
90
+ b = nme_hue2rgb(p, q, h - 1.0 / 3.0);
91
+ }
92
+ return vec3<f32>(r, g, b);
93
+ }`
94
+ );
95
+ }
96
+ const emitter = {
97
+ className: "ColorConverterBlock",
98
+ emit(block, outputName, stage, state, ctx) {
99
+ const rgb = tryResolve(block, "rgb", stage, state, ctx);
100
+ if (rgb) {
101
+ const rgbExpr = ctx.cast(rgb, "vec3f").expr;
102
+ if (outputName === "hsl") {
103
+ ensureRgb2HslHelper(state, stage);
104
+ return { expr: `nme_rgb2hsl(${rgbExpr})`, type: "vec3f" };
105
+ }
106
+ return { expr: rgbExpr, type: "vec3f" };
107
+ }
108
+ const hsl = tryResolve(block, "hsl", stage, state, ctx);
109
+ if (hsl) {
110
+ const hslExpr = ctx.cast(hsl, "vec3f").expr;
111
+ if (outputName === "rgb") {
112
+ ensureHsl2RgbHelper(state, stage);
113
+ return { expr: `nme_hsl2rgb(${hslExpr})`, type: "vec3f" };
114
+ }
115
+ return { expr: hslExpr, type: "vec3f" };
116
+ }
117
+ return { expr: "vec3<f32>(0.0, 0.0, 0.0)", type: "vec3f" };
118
+ }
119
+ };
120
+ export {
121
+ emitter
122
+ };
123
+ //# sourceMappingURL=color-converter-block-CvwKiW4k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-converter-block-CvwKiW4k.js","sources":["../src/material/node/blocks/color-converter-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction tryResolve(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n if (!input?.source) {\n return null;\n }\n return ctx.resolve(block, inputName, stage, state);\n}\n\nfunction ensureRgb2HslHelper(state: NodeBuildState, stage: Stage): void {\n state[stage].helpers.set(\n \"nme_rgb2hsl\",\n `fn nme_rgb2hsl(color: vec3<f32>) -> vec3<f32> {\n let r = color.x;\n let g = color.y;\n let b = color.z;\n let maxc = max(r, max(g, b));\n let minc = min(r, min(g, b));\n var h = 0.0;\n var s = 0.0;\n let l = (maxc + minc) / 2.0;\n if (maxc != minc) {\n let d = maxc - minc;\n if (l > 0.5) {\n s = d / (2.0 - maxc - minc);\n } else {\n s = d / (maxc + minc);\n }\n if (maxc == r) {\n var add = 0.0;\n if (g < b) {\n add = 6.0;\n }\n h = (g - b) / d + add;\n } else if (maxc == g) {\n h = (b - r) / d + 2.0;\n } else if (maxc == b) {\n h = (r - g) / d + 4.0;\n }\n h = h / 6.0;\n }\n return vec3<f32>(h, s, l);\n}`\n );\n}\n\nfunction ensureHsl2RgbHelper(state: NodeBuildState, stage: Stage): void {\n state[stage].helpers.set(\n \"nme_hue2rgb\",\n `fn nme_hue2rgb(p: f32, q: f32, tt: f32) -> f32 {\n var t = tt;\n if (t < 0.0) {\n t = t + 1.0;\n }\n if (t > 1.0) {\n t = t - 1.0;\n }\n if (t < 1.0 / 6.0) {\n return p + (q - p) * 6.0 * t;\n }\n if (t < 1.0 / 2.0) {\n return q;\n }\n if (t < 2.0 / 3.0) {\n return p + (q - p) * (2.0 / 3.0 - t) * 6.0;\n }\n return p;\n}`\n );\n state[stage].helpers.set(\n \"nme_hsl2rgb\",\n `fn nme_hsl2rgb(hsl: vec3<f32>) -> vec3<f32> {\n let h = hsl.x;\n let s = hsl.y;\n let l = hsl.z;\n var r: f32;\n var g: f32;\n var b: f32;\n if (s == 0.0) {\n r = l;\n g = l;\n b = l;\n } else {\n var q: f32;\n if (l < 0.5) {\n q = l * (1.0 + s);\n } else {\n q = l + s - l * s;\n }\n let p = 2.0 * l - q;\n r = nme_hue2rgb(p, q, h + 1.0 / 3.0);\n g = nme_hue2rgb(p, q, h);\n b = nme_hue2rgb(p, q, h - 1.0 / 3.0);\n }\n return vec3<f32>(r, g, b);\n}`\n );\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ColorConverterBlock\",\n emit(block, outputName, stage, state, ctx) {\n const rgb = tryResolve(block, \"rgb\", stage, state, ctx);\n if (rgb) {\n const rgbExpr = ctx.cast(rgb, \"vec3f\").expr;\n if (outputName === \"hsl\") {\n ensureRgb2HslHelper(state, stage);\n return { expr: `nme_rgb2hsl(${rgbExpr})`, type: \"vec3f\" };\n }\n return { expr: rgbExpr, type: \"vec3f\" };\n }\n\n const hsl = tryResolve(block, \"hsl\", stage, state, ctx);\n if (hsl) {\n const hslExpr = ctx.cast(hsl, \"vec3f\").expr;\n if (outputName === \"rgb\") {\n ensureHsl2RgbHelper(state, stage);\n return { expr: `nme_hsl2rgb(${hslExpr})`, type: \"vec3f\" };\n }\n return { expr: hslExpr, type: \"vec3f\" };\n }\n\n return { expr: \"vec3<f32>(0.0, 0.0, 0.0)\", type: \"vec3f\" };\n },\n};\n"],"names":[],"mappings":"AAEA,SAAS,WAAW,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AACjI,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,EAAC,+BAAO,SAAQ;AAChB,WAAO;AAAA,EACX;AACA,SAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AACrD;AAEA,SAAS,oBAAoB,OAAuB,OAAoB;AACpE,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAgCR;AAEA,SAAS,oBAAoB,OAAuB,OAAoB;AACpE,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAoBJ,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AA0BR;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,UAAI,eAAe,OAAO;AACtB,4BAAoB,OAAO,KAAK;AAChC,eAAO,EAAE,MAAM,eAAe,OAAO,KAAK,MAAM,QAAA;AAAA,MACpD;AACA,aAAO,EAAE,MAAM,SAAS,MAAM,QAAA;AAAA,IAClC;AAEA,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,UAAI,eAAe,OAAO;AACtB,4BAAoB,OAAO,KAAK;AAChC,eAAO,EAAE,MAAM,eAAe,OAAO,KAAK,MAAM,QAAA;AAAA,MACpD;AACA,aAAO,EAAE,MAAM,SAAS,MAAM,QAAA;AAAA,IAClC;AAEA,WAAO,EAAE,MAAM,4BAA4B,MAAM,QAAA;AAAA,EACrD;AACJ;"}
@@ -0,0 +1,57 @@
1
+ function tryResolve(block, inputName, stage, state, ctx) {
2
+ const input = block.inputs.get(inputName);
3
+ if (!(input == null ? void 0 : input.source)) {
4
+ return null;
5
+ }
6
+ return ctx.resolve(block, inputName, stage, state);
7
+ }
8
+ function swizzleChar(raw, fallback) {
9
+ const s = typeof raw === "string" && raw.length > 0 ? raw[0] : fallback;
10
+ if (s === "r" || s === "x") {
11
+ return "x";
12
+ }
13
+ if (s === "g" || s === "y") {
14
+ return "y";
15
+ }
16
+ if (s === "b" || s === "z") {
17
+ return "z";
18
+ }
19
+ if (s === "a" || s === "w") {
20
+ return "w";
21
+ }
22
+ return fallback;
23
+ }
24
+ function swizzle(block, len) {
25
+ const s = swizzleChar(block.serialized.rSwizzle, "x") + swizzleChar(block.serialized.gSwizzle, "y") + swizzleChar(block.serialized.bSwizzle, "z") + swizzleChar(block.serialized.aSwizzle, "w");
26
+ return `.${s.slice(0, len)}`;
27
+ }
28
+ const emitter = {
29
+ className: "ColorMergerBlock",
30
+ emit(block, outputName, stage, state, ctx) {
31
+ const rgb = tryResolve(block, "rgb", stage, state, ctx);
32
+ const a = tryResolve(block, "a", stage, state, ctx);
33
+ if (rgb) {
34
+ const rgbExpr = ctx.cast(rgb, "vec3f").expr;
35
+ const aExpr2 = a ? ctx.cast(a, "f32").expr : "0.0";
36
+ if (outputName === "rgba") {
37
+ return { expr: `(vec4<f32>(${rgbExpr}, ${aExpr2})${swizzle(block, 4)})`, type: "vec4f" };
38
+ }
39
+ return { expr: `((${rgbExpr})${swizzle(block, 3)})`, type: "vec3f" };
40
+ }
41
+ const r = tryResolve(block, "r", stage, state, ctx);
42
+ const g = tryResolve(block, "g", stage, state, ctx);
43
+ const b = tryResolve(block, "b", stage, state, ctx);
44
+ const rExpr = r ? ctx.cast(r, "f32").expr : "0.0";
45
+ const gExpr = g ? ctx.cast(g, "f32").expr : "0.0";
46
+ const bExpr = b ? ctx.cast(b, "f32").expr : "0.0";
47
+ const aExpr = a ? ctx.cast(a, "f32").expr : "0.0";
48
+ if (outputName === "rgba") {
49
+ return { expr: `(vec4<f32>(${rExpr}, ${gExpr}, ${bExpr}, ${aExpr})${swizzle(block, 4)})`, type: "vec4f" };
50
+ }
51
+ return { expr: `(vec3<f32>(${rExpr}, ${gExpr}, ${bExpr})${swizzle(block, 3)})`, type: "vec3f" };
52
+ }
53
+ };
54
+ export {
55
+ emitter
56
+ };
57
+ //# sourceMappingURL=color-merger-CCu21ZII.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-merger-CCu21ZII.js","sources":["../src/material/node/blocks/color-merger.ts"],"sourcesContent":["/** ColorMergerBlock emitter.\n *\n * BJS inputs: `rgb `, `r`, `g`, `b`, `a`. Outputs: `rgba`, `rgb`.\n * The serialized swizzle fields (`rSwizzle`, `gSwizzle`, `bSwizzle`,\n * `aSwizzle`) remap components after construction.\n */\n\nimport type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction tryResolve(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n if (!input?.source) {\n return null;\n }\n return ctx.resolve(block, inputName, stage, state);\n}\n\nfunction swizzleChar(raw: unknown, fallback: string): string {\n const s = typeof raw === \"string\" && raw.length > 0 ? raw[0]! : fallback;\n if (s === \"r\" || s === \"x\") {\n return \"x\";\n }\n if (s === \"g\" || s === \"y\") {\n return \"y\";\n }\n if (s === \"b\" || s === \"z\") {\n return \"z\";\n }\n if (s === \"a\" || s === \"w\") {\n return \"w\";\n }\n return fallback;\n}\n\nfunction swizzle(block: NodeBlock, len: 3 | 4): string {\n const s =\n swizzleChar(block.serialized.rSwizzle, \"x\") +\n swizzleChar(block.serialized.gSwizzle, \"y\") +\n swizzleChar(block.serialized.bSwizzle, \"z\") +\n swizzleChar(block.serialized.aSwizzle, \"w\");\n return `.${s.slice(0, len)}`;\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ColorMergerBlock\",\n emit(block, outputName, stage, state, ctx) {\n const rgb = tryResolve(block, \"rgb\", stage, state, ctx);\n const a = tryResolve(block, \"a\", stage, state, ctx);\n\n if (rgb) {\n const rgbExpr = ctx.cast(rgb, \"vec3f\").expr;\n const aExpr = a ? ctx.cast(a, \"f32\").expr : \"0.0\";\n if (outputName === \"rgba\") {\n return { expr: `(vec4<f32>(${rgbExpr}, ${aExpr})${swizzle(block, 4)})`, type: \"vec4f\" };\n }\n return { expr: `((${rgbExpr})${swizzle(block, 3)})`, type: \"vec3f\" };\n }\n\n const r = tryResolve(block, \"r\", stage, state, ctx);\n const g = tryResolve(block, \"g\", stage, state, ctx);\n const b = tryResolve(block, \"b\", stage, state, ctx);\n const rExpr = r ? ctx.cast(r, \"f32\").expr : \"0.0\";\n const gExpr = g ? ctx.cast(g, \"f32\").expr : \"0.0\";\n const bExpr = b ? ctx.cast(b, \"f32\").expr : \"0.0\";\n const aExpr = a ? ctx.cast(a, \"f32\").expr : \"0.0\";\n if (outputName === \"rgba\") {\n return { expr: `(vec4<f32>(${rExpr}, ${gExpr}, ${bExpr}, ${aExpr})${swizzle(block, 4)})`, type: \"vec4f\" };\n }\n return { expr: `(vec3<f32>(${rExpr}, ${gExpr}, ${bExpr})${swizzle(block, 3)})`, type: \"vec3f\" };\n },\n};\n"],"names":["aExpr"],"mappings":"AASA,SAAS,WAAW,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AACjI,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,EAAC,+BAAO,SAAQ;AAChB,WAAO;AAAA,EACX;AACA,SAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AACrD;AAEA,SAAS,YAAY,KAAc,UAA0B;AACzD,QAAM,IAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,IAAK;AAChE,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEA,SAAS,QAAQ,OAAkB,KAAoB;AACnD,QAAM,IACF,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG;AAC9C,SAAO,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAElD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,YAAMA,SAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAI,eAAe,QAAQ;AACvB,eAAO,EAAE,MAAM,cAAc,OAAO,KAAKA,MAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,MAClF;AACA,aAAO,EAAE,MAAM,KAAK,OAAO,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,IAC/D;AAEA,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,QAAI,eAAe,QAAQ;AACvB,aAAO,EAAE,MAAM,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,IACpG;AACA,WAAO,EAAE,MAAM,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,EAC1F;AACJ;"}
@@ -0,0 +1,33 @@
1
+ const COMPONENT = {
2
+ rgba: { swizzle: "", type: "vec4f" },
3
+ rgb: { swizzle: ".xyz", type: "vec3f" },
4
+ r: { swizzle: ".x", type: "f32" },
5
+ g: { swizzle: ".y", type: "f32" },
6
+ b: { swizzle: ".z", type: "f32" },
7
+ a: { swizzle: ".w", type: "f32" }
8
+ };
9
+ const emitter = {
10
+ className: "ColorSplitterBlock",
11
+ emit(block, outputName, stage, state, ctx) {
12
+ var _a;
13
+ let source = null;
14
+ for (const key of ["rgba", "rgb"]) {
15
+ if ((_a = block.inputs.get(key)) == null ? void 0 : _a.source) {
16
+ source = ctx.resolve(block, key, stage, state);
17
+ break;
18
+ }
19
+ }
20
+ if (!source) {
21
+ throw new Error(`NodeMaterial: ColorSplitterBlock (id=${block.id}) has no connected input`);
22
+ }
23
+ const c = COMPONENT[outputName];
24
+ if (!c) {
25
+ throw new Error(`NodeMaterial: ColorSplitterBlock has no output "${outputName}"`);
26
+ }
27
+ return { expr: `(${source.expr})${c.swizzle}`, type: c.type };
28
+ }
29
+ };
30
+ export {
31
+ emitter
32
+ };
33
+ //# sourceMappingURL=color-splitter-CGn1G4ow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-splitter-CGn1G4ow.js","sources":["../src/material/node/blocks/color-splitter.ts"],"sourcesContent":["/** ColorSplitterBlock — identical to VectorSplitter but with r/g/b/a naming. */\n\nimport type { BlockEmitter, NodeExpr, NodeValueType } from \"../node-types.js\";\n\nconst COMPONENT: Record<string, { swizzle: string; type: NodeValueType }> = {\n rgba: { swizzle: \"\", type: \"vec4f\" },\n rgb: { swizzle: \".xyz\", type: \"vec3f\" },\n r: { swizzle: \".x\", type: \"f32\" },\n g: { swizzle: \".y\", type: \"f32\" },\n b: { swizzle: \".z\", type: \"f32\" },\n a: { swizzle: \".w\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ColorSplitterBlock\",\n emit(block, outputName, stage, state, ctx) {\n let source: NodeExpr | null = null;\n for (const key of [\"rgba\", \"rgb\"] as const) {\n if (block.inputs.get(key)?.source) {\n source = ctx.resolve(block, key, stage, state);\n break;\n }\n }\n if (!source) {\n throw new Error(`NodeMaterial: ColorSplitterBlock (id=${block.id}) has no connected input`);\n }\n const c = COMPONENT[outputName];\n if (!c) {\n throw new Error(`NodeMaterial: ColorSplitterBlock has no output \"${outputName}\"`);\n }\n return { expr: `(${source.expr})${c.swizzle}`, type: c.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,YAAsE;AAAA,EACxE,MAAM,EAAE,SAAS,IAAI,MAAM,QAAA;AAAA,EAC3B,KAAK,EAAE,SAAS,QAAQ,MAAM,QAAA;AAAA,EAC9B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AAX/C;AAYQ,QAAI,SAA0B;AAC9B,eAAW,OAAO,CAAC,QAAQ,KAAK,GAAY;AACxC,WAAI,WAAM,OAAO,IAAI,GAAG,MAApB,mBAAuB,QAAQ;AAC/B,iBAAS,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK;AAC7C;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,wCAAwC,MAAM,EAAE,0BAA0B;AAAA,IAC9F;AACA,UAAM,IAAI,UAAU,UAAU;AAC9B,QAAI,CAAC,GAAG;AACJ,YAAM,IAAI,MAAM,mDAAmD,UAAU,GAAG;AAAA,IACpF;AACA,WAAO,EAAE,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,MAAM,EAAE,KAAA;AAAA,EAC3D;AACJ;"}
@@ -0,0 +1,51 @@
1
+ import { w as widerType } from "./_math-factory-C-QqW-Wi.js";
2
+ function connectedOrDefault(block, inputName, fallback, type, stage, state, ctx) {
3
+ const input = block.inputs.get(inputName);
4
+ if (input == null ? void 0 : input.source) {
5
+ return ctx.resolve(block, inputName, stage, state);
6
+ }
7
+ return { expr: fallback, type };
8
+ }
9
+ function conditionExpr(condition, a, b) {
10
+ switch (condition) {
11
+ case 0:
12
+ return `${a} == ${b}`;
13
+ case 1:
14
+ return `${a} != ${b}`;
15
+ case 2:
16
+ return `${a} < ${b}`;
17
+ case 3:
18
+ return `${a} > ${b}`;
19
+ case 4:
20
+ return `${a} <= ${b}`;
21
+ case 5:
22
+ return `${a} >= ${b}`;
23
+ case 6:
24
+ return `(((${a} + ${b}) - 2.0 * floor((${a} + ${b}) / 2.0)) > 0.0)`;
25
+ case 7:
26
+ return `(min(${a} + ${b}, 1.0) > 0.0)`;
27
+ case 8:
28
+ return `(${a} * ${b} > 0.0)`;
29
+ default:
30
+ throw new Error(`NodeMaterial: unknown ConditionalBlock condition ${condition}`);
31
+ }
32
+ }
33
+ const emitter = {
34
+ className: "ConditionalBlock",
35
+ emit(block, _outputName, stage, state, ctx) {
36
+ const a = ctx.cast(ctx.resolve(block, "a", stage, state), "f32").expr;
37
+ const b = ctx.cast(ctx.resolve(block, "b", stage, state), "f32").expr;
38
+ const trueValue = connectedOrDefault(block, "true", "1.0", "f32", stage, state, ctx);
39
+ const falseValue = connectedOrDefault(block, "false", "0.0", "f32", stage, state, ctx);
40
+ const outputType = widerType(trueValue.type, falseValue.type);
41
+ const t = ctx.cast(trueValue, outputType).expr;
42
+ const f = ctx.cast(falseValue, outputType).expr;
43
+ const rawCondition = block.serialized.condition;
44
+ const condition = typeof rawCondition === "number" ? rawCondition : 2;
45
+ return { expr: `select(${f}, ${t}, ${conditionExpr(condition, a, b)})`, type: outputType };
46
+ }
47
+ };
48
+ export {
49
+ emitter
50
+ };
51
+ //# sourceMappingURL=conditional-block-Cd2pbejI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-block-Cd2pbejI.js","sources":["../src/material/node/blocks/conditional-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeExpr, NodeValueType } from \"../node-types.js\";\nimport { widerType } from \"./_math-factory.js\";\n\nfunction connectedOrDefault(\n block: Parameters<BlockEmitter[\"emit\"]>[0],\n inputName: string,\n fallback: string,\n type: NodeValueType,\n stage: Parameters<BlockEmitter[\"emit\"]>[2],\n state: Parameters<BlockEmitter[\"emit\"]>[3],\n ctx: Parameters<BlockEmitter[\"emit\"]>[4]\n): NodeExpr {\n const input = block.inputs.get(inputName);\n if (input?.source) {\n return ctx.resolve(block, inputName, stage, state);\n }\n return { expr: fallback, type };\n}\n\nfunction conditionExpr(condition: number, a: string, b: string): string {\n switch (condition) {\n case 0:\n return `${a} == ${b}`;\n case 1:\n return `${a} != ${b}`;\n case 2:\n return `${a} < ${b}`;\n case 3:\n return `${a} > ${b}`;\n case 4:\n return `${a} <= ${b}`;\n case 5:\n return `${a} >= ${b}`;\n case 6:\n return `(((${a} + ${b}) - 2.0 * floor((${a} + ${b}) / 2.0)) > 0.0)`;\n case 7:\n return `(min(${a} + ${b}, 1.0) > 0.0)`;\n case 8:\n return `(${a} * ${b} > 0.0)`;\n default:\n throw new Error(`NodeMaterial: unknown ConditionalBlock condition ${condition}`);\n }\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ConditionalBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const a = ctx.cast(ctx.resolve(block, \"a\", stage, state), \"f32\").expr;\n const b = ctx.cast(ctx.resolve(block, \"b\", stage, state), \"f32\").expr;\n const trueValue = connectedOrDefault(block, \"true\", \"1.0\", \"f32\", stage, state, ctx);\n const falseValue = connectedOrDefault(block, \"false\", \"0.0\", \"f32\", stage, state, ctx);\n const outputType = widerType(trueValue.type, falseValue.type);\n const t = ctx.cast(trueValue, outputType).expr;\n const f = ctx.cast(falseValue, outputType).expr;\n const rawCondition = block.serialized.condition;\n const condition = typeof rawCondition === \"number\" ? rawCondition : 2;\n return { expr: `select(${f}, ${t}, ${conditionExpr(condition, a, b)})`, type: outputType };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,mBACL,OACA,WACA,UACA,MACA,OACA,OACA,KACQ;AACR,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,+BAAO,QAAQ;AACf,WAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AAAA,EACrD;AACA,SAAO,EAAE,MAAM,UAAU,KAAA;AAC7B;AAEA,SAAS,cAAc,WAAmB,GAAW,GAAmB;AACpE,UAAQ,WAAA;AAAA,IACJ,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,MAAM,CAAC;AAAA,IACtB,KAAK;AACD,aAAO,GAAG,CAAC,MAAM,CAAC;AAAA,IACtB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAAA,IACrD,KAAK;AACD,aAAO,QAAQ,CAAC,MAAM,CAAC;AAAA,IAC3B,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC;AAAA,IACvB;AACI,YAAM,IAAI,MAAM,oDAAoD,SAAS,EAAE;AAAA,EAAA;AAE3F;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,IAAI,IAAI,KAAK,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK,GAAG,KAAK,EAAE;AACjE,UAAM,IAAI,IAAI,KAAK,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK,GAAG,KAAK,EAAE;AACjE,UAAM,YAAY,mBAAmB,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,GAAG;AACnF,UAAM,aAAa,mBAAmB,OAAO,SAAS,OAAO,OAAO,OAAO,OAAO,GAAG;AACrF,UAAM,aAAa,UAAU,UAAU,MAAM,WAAW,IAAI;AAC5D,UAAM,IAAI,IAAI,KAAK,WAAW,UAAU,EAAE;AAC1C,UAAM,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AAC3C,UAAM,eAAe,MAAM,WAAW;AACtC,UAAM,YAAY,OAAO,iBAAiB,WAAW,eAAe;AACpE,WAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,cAAc,WAAW,GAAG,CAAC,CAAC,KAAK,MAAM,WAAA;AAAA,EAClF;AACJ;"}
@@ -0,0 +1,44 @@
1
+ import { e as createMappedBuffer } from "./index-C8HOR2sB.js";
2
+ function createSkeleton(engine, joints, weights, boneCount, boneData, joints1, weights1) {
3
+ const device = engine._device;
4
+ const texWidth = boneCount * 4;
5
+ const boneTexture = device.createTexture({
6
+ size: [texWidth, 1],
7
+ format: "rgba32float",
8
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
9
+ });
10
+ device.queue.writeTexture({ texture: boneTexture }, boneData.buffer, { bytesPerRow: texWidth * 16 }, { width: texWidth, height: 1 });
11
+ const joints32 = new Uint32Array(joints.length);
12
+ for (let i = 0; i < joints.length; i++) {
13
+ joints32[i] = joints[i];
14
+ }
15
+ const jointsBuffer = createMappedBuffer(engine, joints32, GPUBufferUsage.VERTEX);
16
+ const weightsBuffer = createMappedBuffer(engine, weights, GPUBufferUsage.VERTEX);
17
+ let joints1Buffer = null;
18
+ let weights1Buffer = null;
19
+ if (joints1 && weights1) {
20
+ const joints132 = new Uint32Array(joints1.length);
21
+ for (let i = 0; i < joints1.length; i++) {
22
+ joints132[i] = joints1[i];
23
+ }
24
+ joints1Buffer = createMappedBuffer(engine, joints132, GPUBufferUsage.VERTEX);
25
+ weights1Buffer = createMappedBuffer(engine, weights1, GPUBufferUsage.VERTEX);
26
+ }
27
+ return {
28
+ boneTexture,
29
+ boneCount,
30
+ jointsBuffer,
31
+ weightsBuffer,
32
+ joints,
33
+ weights,
34
+ boneMatrices: boneData,
35
+ joints1Buffer,
36
+ weights1Buffer,
37
+ joints1: joints1 ?? null,
38
+ weights1: weights1 ?? null
39
+ };
40
+ }
41
+ export {
42
+ createSkeleton
43
+ };
44
+ //# sourceMappingURL=create-skeleton-C9JdIJnb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-skeleton-C9JdIJnb.js","sources":["../src/skeleton/create-skeleton.ts"],"sourcesContent":["/** Skeleton GPU resource factory.\n *\n * Dynamically imported by load-gltf.ts when a mesh has skeletal data.\n * Scenes without skeletons never import this module.\n * Skinning WGSL is now provided by the skeleton ShaderFragment\n * (shader/fragments/skeleton-fragment.ts) and composed at pipeline\n * creation time — no global registration needed. */\n\nimport type { EngineContext } from \"../engine/engine.js\";\nimport type { SkeletonData } from \"../animation/types.js\";\nimport { createMappedBuffer } from \"../resource/gpu-buffers.js\";\n\n/** Create skeleton GPU data from parsed glTF skin.\n * @param engine - Engine context (provides GPUDevice)\n * @param joints - Joint indices (4 per vertex, u8 or u16)\n * @param weights - Blend weights (4 per vertex, f32)\n * @param boneCount - Number of bones (joints) in the skeleton\n * @param boneData - Initial bone matrices (Float32Array, 16 floats per bone)\n * @param joints1 - Extra joint indices for 8-bone skinning (JOINTS_1)\n * @param weights1 - Extra blend weights for 8-bone skinning (WEIGHTS_1)\n */\nexport function createSkeleton(\n engine: EngineContext,\n joints: Uint16Array | Uint8Array,\n weights: Float32Array,\n boneCount: number,\n boneData: Float32Array,\n joints1?: Uint16Array | Uint8Array | null,\n weights1?: Float32Array | null\n): SkeletonData {\n const device = engine._device;\n // Bone texture: rgba32float, 4 texels per bone (one mat4 column each)\n const texWidth = boneCount * 4;\n const boneTexture = device.createTexture({\n size: [texWidth, 1],\n format: \"rgba32float\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n });\n device.queue.writeTexture({ texture: boneTexture }, boneData.buffer, { bytesPerRow: texWidth * 16 }, { width: texWidth, height: 1 });\n\n // Expand joints to Uint32Array — pipeline reads uint32x4 vertex format\n const joints32 = new Uint32Array(joints.length);\n for (let i = 0; i < joints.length; i++) {\n joints32[i] = joints[i]!;\n }\n\n const jointsBuffer = createMappedBuffer(engine, joints32, GPUBufferUsage.VERTEX);\n const weightsBuffer = createMappedBuffer(engine, weights, GPUBufferUsage.VERTEX);\n\n let joints1Buffer: GPUBuffer | null = null;\n let weights1Buffer: GPUBuffer | null = null;\n if (joints1 && weights1) {\n const joints132 = new Uint32Array(joints1.length);\n for (let i = 0; i < joints1.length; i++) {\n joints132[i] = joints1[i]!;\n }\n joints1Buffer = createMappedBuffer(engine, joints132, GPUBufferUsage.VERTEX);\n weights1Buffer = createMappedBuffer(engine, weights1, GPUBufferUsage.VERTEX);\n }\n\n return {\n boneTexture,\n boneCount,\n jointsBuffer,\n weightsBuffer,\n joints,\n weights,\n boneMatrices: boneData,\n joints1Buffer,\n weights1Buffer,\n joints1: joints1 ?? null,\n weights1: weights1 ?? null,\n };\n}\n"],"names":[],"mappings":";AAqBO,SAAS,eACZ,QACA,QACA,SACA,WACA,UACA,SACA,UACY;AACZ,QAAM,SAAS,OAAO;AAEtB,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,OAAO,cAAc;AAAA,IACrC,MAAM,CAAC,UAAU,CAAC;AAAA,IAClB,QAAQ;AAAA,IACR,OAAO,gBAAgB,kBAAkB,gBAAgB;AAAA,EAAA,CAC5D;AACD,SAAO,MAAM,aAAa,EAAE,SAAS,YAAA,GAAe,SAAS,QAAQ,EAAE,aAAa,WAAW,MAAM,EAAE,OAAO,UAAU,QAAQ,GAAG;AAGnI,QAAM,WAAW,IAAI,YAAY,OAAO,MAAM;AAC9C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,aAAS,CAAC,IAAI,OAAO,CAAC;AAAA,EAC1B;AAEA,QAAM,eAAe,mBAAmB,QAAQ,UAAU,eAAe,MAAM;AAC/E,QAAM,gBAAgB,mBAAmB,QAAQ,SAAS,eAAe,MAAM;AAE/E,MAAI,gBAAkC;AACtC,MAAI,iBAAmC;AACvC,MAAI,WAAW,UAAU;AACrB,UAAM,YAAY,IAAI,YAAY,QAAQ,MAAM;AAChD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,gBAAU,CAAC,IAAI,QAAQ,CAAC;AAAA,IAC5B;AACA,oBAAgB,mBAAmB,QAAQ,WAAW,eAAe,MAAM;AAC3E,qBAAiB,mBAAmB,QAAQ,UAAU,eAAe,MAAM;AAAA,EAC/E;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,IACpB,UAAU,YAAY;AAAA,EAAA;AAE9B;"}
@@ -0,0 +1,12 @@
1
+ const emitter = {
2
+ className: "CrossBlock",
3
+ emit(block, _outputName, stage, state, ctx) {
4
+ const left = ctx.cast(ctx.resolve(block, "left", stage, state), "vec3f").expr;
5
+ const right = ctx.cast(ctx.resolve(block, "right", stage, state), "vec3f").expr;
6
+ return { expr: `cross(${left}, ${right})`, type: "vec3f" };
7
+ }
8
+ };
9
+ export {
10
+ emitter
11
+ };
12
+ //# sourceMappingURL=cross-block-DCrLwCpt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-block-DCrLwCpt.js","sources":["../src/material/node/blocks/cross-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"CrossBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const left = ctx.cast(ctx.resolve(block, \"left\", stage, state), \"vec3f\").expr;\n const right = ctx.cast(ctx.resolve(block, \"right\", stage, state), \"vec3f\").expr;\n return { expr: `cross(${left}, ${right})`, type: \"vec3f\" };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,OAAO,IAAI,KAAK,IAAI,QAAQ,OAAO,QAAQ,OAAO,KAAK,GAAG,OAAO,EAAE;AACzE,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,OAAO,EAAE;AAC3E,WAAO,EAAE,MAAM,SAAS,IAAI,KAAK,KAAK,KAAK,MAAM,QAAA;AAAA,EACrD;AACJ;"}
@@ -0,0 +1,79 @@
1
+ import { D as targetSignatureKey, E as createDefaultPipelineDescriptor, F as getSceneBindGroupLayout } from "./index-C8HOR2sB.js";
2
+ const SKYBOX_POS_BUFFER = [{ arrayStride: 12, attributes: [{ shaderLocation: 0, offset: 0, format: "float32x3" }] }];
3
+ const _cmPipelines = /* @__PURE__ */ new Map();
4
+ const _cmLayouts = /* @__PURE__ */ new Map();
5
+ let _cmCachedDevice = null;
6
+ function createCubemapSkyboxMaterial(label, vertCode, fragCode) {
7
+ function getLayout(engine) {
8
+ const device = engine._device;
9
+ if (_cmCachedDevice !== device) {
10
+ _cmPipelines.clear();
11
+ _cmLayouts.clear();
12
+ _cmCachedDevice = device;
13
+ }
14
+ const cached = _cmLayouts.get(label);
15
+ if (cached) {
16
+ return cached;
17
+ }
18
+ const layout = device.createBindGroupLayout({
19
+ label: `${label}-material`,
20
+ entries: [
21
+ { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: "uniform" } },
22
+ { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: "float", viewDimension: "cube" } },
23
+ { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: { type: "filtering" } }
24
+ ]
25
+ });
26
+ _cmLayouts.set(label, layout);
27
+ return layout;
28
+ }
29
+ return {
30
+ getPipeline(_engine, sig) {
31
+ const device = _engine._device;
32
+ if (_cmCachedDevice !== device) {
33
+ _cmPipelines.clear();
34
+ _cmLayouts.clear();
35
+ _cmCachedDevice = device;
36
+ }
37
+ const key = `${label}|${targetSignatureKey(sig)}`;
38
+ const cached = _cmPipelines.get(key);
39
+ if (cached) {
40
+ return cached;
41
+ }
42
+ const _vertModule = device.createShaderModule({ code: vertCode, label: `${label}-vert` });
43
+ const _fragModule = device.createShaderModule({ code: fragCode, label: `${label}-frag` });
44
+ const pipeline = device.createRenderPipeline(
45
+ createDefaultPipelineDescriptor({
46
+ _label: `${label}-pipeline`,
47
+ _engine,
48
+ _bgls: [getSceneBindGroupLayout(_engine), getLayout(_engine)],
49
+ _vertModule,
50
+ _fragModule,
51
+ _vertexBuffers: SKYBOX_POS_BUFFER,
52
+ _format: sig._colorFormat,
53
+ _depthStencilFormat: sig._depthStencilFormat,
54
+ _depthCompare: sig._depthCompare,
55
+ _msaaSamples: sig._sampleCount,
56
+ _depthWriteEnabled: false,
57
+ _flipY: sig._flipY
58
+ })
59
+ );
60
+ _cmPipelines.set(key, pipeline);
61
+ return pipeline;
62
+ },
63
+ createBindGroup(engine, meshUBO, cubeView, cubeSampler) {
64
+ const device = engine._device;
65
+ return device.createBindGroup({
66
+ layout: getLayout(engine),
67
+ entries: [
68
+ { binding: 0, resource: { buffer: meshUBO } },
69
+ { binding: 1, resource: cubeView },
70
+ { binding: 2, resource: cubeSampler }
71
+ ]
72
+ });
73
+ }
74
+ };
75
+ }
76
+ export {
77
+ createCubemapSkyboxMaterial as c
78
+ };
79
+ //# sourceMappingURL=cubemap-skybox-material-DvXMVc4k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubemap-skybox-material-DvXMVc4k.js","sources":["../src/material/pbr/cubemap-skybox-material.ts"],"sourcesContent":["/** Shared cubemap skybox material factory — used by DDS and HDR skyboxes.\n * BGL: binding 0 = uniform buffer, binding 1 = cube texture, binding 2 = sampler. */\n\nimport type { EngineContext } from \"../../engine/engine.js\";\nimport type { RenderTargetSignature } from \"../../engine/render-target.js\";\nimport { createDefaultPipelineDescriptor, getSceneBindGroupLayout } from \"../../render/scene-helpers.js\";\nimport { targetSignatureKey } from \"../../engine/render-target.js\";\n\nconst SKYBOX_POS_BUFFER: GPUVertexBufferLayout[] = [{ arrayStride: 12, attributes: [{ shaderLocation: 0, offset: 0, format: \"float32x3\" as GPUVertexFormat }] }];\n\nexport interface CubemapSkyboxMaterial {\n getPipeline(engine: EngineContext, sig: RenderTargetSignature): GPURenderPipeline;\n createBindGroup(engine: EngineContext, meshUBO: GPUBuffer, cubeView: GPUTextureView, cubeSampler: GPUSampler): GPUBindGroup;\n}\n\n/** Module-global pipeline + layout caches shared across all cubemap-skybox instances.\n * Keyed by `${label}|${sigKey}` so HDR and DDS variants don't collide. */\nconst _cmPipelines = new Map<string, GPURenderPipeline>();\nconst _cmLayouts = new Map<string, GPUBindGroupLayout>();\nlet _cmCachedDevice: GPUDevice | null = null;\n\nexport function createCubemapSkyboxMaterial(label: string, vertCode: string, fragCode: string): CubemapSkyboxMaterial {\n function getLayout(engine: EngineContext): GPUBindGroupLayout {\n const device = engine._device;\n if (_cmCachedDevice !== device) {\n _cmPipelines.clear();\n _cmLayouts.clear();\n _cmCachedDevice = device;\n }\n const cached = _cmLayouts.get(label);\n if (cached) {\n return cached;\n }\n const layout = device.createBindGroupLayout({\n label: `${label}-material`,\n entries: [\n { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: \"uniform\" } },\n { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: \"float\", viewDimension: \"cube\" } },\n { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: { type: \"filtering\" } },\n ],\n });\n _cmLayouts.set(label, layout);\n return layout;\n }\n\n return {\n getPipeline(_engine, sig) {\n const device = _engine._device;\n if (_cmCachedDevice !== device) {\n _cmPipelines.clear();\n _cmLayouts.clear();\n _cmCachedDevice = device;\n }\n const key = `${label}|${targetSignatureKey(sig)}`;\n const cached = _cmPipelines.get(key);\n if (cached) {\n return cached;\n }\n const _vertModule = device.createShaderModule({ code: vertCode, label: `${label}-vert` });\n const _fragModule = device.createShaderModule({ code: fragCode, label: `${label}-frag` });\n\n const pipeline = device.createRenderPipeline(\n createDefaultPipelineDescriptor({\n _label: `${label}-pipeline`,\n _engine,\n _bgls: [getSceneBindGroupLayout(_engine), getLayout(_engine)],\n _vertModule,\n _fragModule,\n _vertexBuffers: SKYBOX_POS_BUFFER,\n _format: sig._colorFormat!,\n _depthStencilFormat: sig._depthStencilFormat,\n _depthCompare: sig._depthCompare,\n _msaaSamples: sig._sampleCount,\n _depthWriteEnabled: false,\n _flipY: sig._flipY,\n })\n );\n _cmPipelines.set(key, pipeline);\n return pipeline;\n },\n\n createBindGroup(engine, meshUBO, cubeView, cubeSampler) {\n const device = engine._device;\n return device.createBindGroup({\n layout: getLayout(engine),\n entries: [\n { binding: 0, resource: { buffer: meshUBO } },\n { binding: 1, resource: cubeView },\n { binding: 2, resource: cubeSampler },\n ],\n });\n },\n };\n}\n"],"names":[],"mappings":";AAQA,MAAM,oBAA6C,CAAC,EAAE,aAAa,IAAI,YAAY,CAAC,EAAE,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,YAAA,CAAgC,GAAG;AAS/J,MAAM,mCAAmB,IAAA;AACzB,MAAM,iCAAiB,IAAA;AACvB,IAAI,kBAAoC;AAEjC,SAAS,4BAA4B,OAAe,UAAkB,UAAyC;AAClH,WAAS,UAAU,QAA2C;AAC1D,UAAM,SAAS,OAAO;AACtB,QAAI,oBAAoB,QAAQ;AAC5B,mBAAa,MAAA;AACb,iBAAW,MAAA;AACX,wBAAkB;AAAA,IACtB;AACA,UAAM,SAAS,WAAW,IAAI,KAAK;AACnC,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AACA,UAAM,SAAS,OAAO,sBAAsB;AAAA,MACxC,OAAO,GAAG,KAAK;AAAA,MACf,SAAS;AAAA,QACL,EAAE,SAAS,GAAG,YAAY,eAAe,SAAS,eAAe,UAAU,QAAQ,EAAE,MAAM,UAAA,EAAU;AAAA,QACrG,EAAE,SAAS,GAAG,YAAY,eAAe,UAAU,SAAS,EAAE,YAAY,SAAS,eAAe,OAAA,EAAO;AAAA,QACzG,EAAE,SAAS,GAAG,YAAY,eAAe,UAAU,SAAS,EAAE,MAAM,YAAA,EAAY;AAAA,MAAE;AAAA,IACtF,CACH;AACD,eAAW,IAAI,OAAO,MAAM;AAC5B,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IACH,YAAY,SAAS,KAAK;AACtB,YAAM,SAAS,QAAQ;AACvB,UAAI,oBAAoB,QAAQ;AAC5B,qBAAa,MAAA;AACb,mBAAW,MAAA;AACX,0BAAkB;AAAA,MACtB;AACA,YAAM,MAAM,GAAG,KAAK,IAAI,mBAAmB,GAAG,CAAC;AAC/C,YAAM,SAAS,aAAa,IAAI,GAAG;AACnC,UAAI,QAAQ;AACR,eAAO;AAAA,MACX;AACA,YAAM,cAAc,OAAO,mBAAmB,EAAE,MAAM,UAAU,OAAO,GAAG,KAAK,QAAA,CAAS;AACxF,YAAM,cAAc,OAAO,mBAAmB,EAAE,MAAM,UAAU,OAAO,GAAG,KAAK,QAAA,CAAS;AAExF,YAAM,WAAW,OAAO;AAAA,QACpB,gCAAgC;AAAA,UAC5B,QAAQ,GAAG,KAAK;AAAA,UAChB;AAAA,UACA,OAAO,CAAC,wBAAwB,OAAO,GAAG,UAAU,OAAO,CAAC;AAAA,UAC5D;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,UAChB,SAAS,IAAI;AAAA,UACb,qBAAqB,IAAI;AAAA,UACzB,eAAe,IAAI;AAAA,UACnB,cAAc,IAAI;AAAA,UAClB,oBAAoB;AAAA,UACpB,QAAQ,IAAI;AAAA,QAAA,CACf;AAAA,MAAA;AAEL,mBAAa,IAAI,KAAK,QAAQ;AAC9B,aAAO;AAAA,IACX;AAAA,IAEA,gBAAgB,QAAQ,SAAS,UAAU,aAAa;AACpD,YAAM,SAAS,OAAO;AACtB,aAAO,OAAO,gBAAgB;AAAA,QAC1B,QAAQ,UAAU,MAAM;AAAA,QACxB,SAAS;AAAA,UACL,EAAE,SAAS,GAAG,UAAU,EAAE,QAAQ,UAAQ;AAAA,UAC1C,EAAE,SAAS,GAAG,UAAU,SAAA;AAAA,UACxB,EAAE,SAAS,GAAG,UAAU,YAAA;AAAA,QAAY;AAAA,MACxC,CACH;AAAA,IACL;AAAA,EAAA;AAER;"}
@@ -0,0 +1,89 @@
1
+ import { aS as WGSL } from "./index-C8HOR2sB.js";
2
+ function curveScalar(type, v) {
3
+ switch (type) {
4
+ case 0:
5
+ return `(1.0 - cos((${v} * 3.1415) / 2.0))`;
6
+ case 1:
7
+ return `sin((${v} * 3.1415) / 2.0)`;
8
+ case 2:
9
+ return `(-((cos(${v} * 3.1415) - 1.0)) / 2.0)`;
10
+ case 3:
11
+ return `(${v} * ${v})`;
12
+ case 4:
13
+ return `((1.0 - ${v}) * (1.0 - ${v}))`;
14
+ case 5:
15
+ return `select(1.0 - pow(-2.0 * ${v} + 2.0, 2.0) / 2.0, 2.0 * ${v} * ${v}, ${v} < 0.5)`;
16
+ case 6:
17
+ return `(${v} * ${v} * ${v})`;
18
+ case 7:
19
+ return `(1.0 - pow(1.0 - ${v}, 3.0))`;
20
+ case 8:
21
+ return `select(1.0 - pow(-2.0 * ${v} + 2.0, 3.0) / 2.0, 4.0 * ${v} * ${v} * ${v}, ${v} < 0.5)`;
22
+ case 9:
23
+ return `(${v} * ${v} * ${v} * ${v})`;
24
+ case 10:
25
+ return `(1.0 - pow(1.0 - ${v}, 4.0))`;
26
+ case 11:
27
+ return `select(1.0 - pow(-2.0 * ${v} + 2.0, 4.0) / 2.0, 8.0 * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;
28
+ case 12:
29
+ return `(${v} * ${v} * ${v} * ${v} * ${v})`;
30
+ case 13:
31
+ return `(1.0 - pow(1.0 - ${v}, 5.0))`;
32
+ case 14:
33
+ return `select(1.0 - pow(-2.0 * ${v} + 2.0, 5.0) / 2.0, 16.0 * ${v} * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;
34
+ case 15:
35
+ return `select(pow(2.0, 10.0 * ${v} - 10.0), 0.0, ${v} == 0.0)`;
36
+ case 16:
37
+ return `select(1.0 - pow(2.0, -10.0 * ${v}), 1.0, ${v} == 1.0)`;
38
+ case 17:
39
+ return `select(select(select((2.0 - pow(2.0, -20.0 * ${v} + 10.0)) / 2.0, pow(2.0, 20.0 * ${v} - 10.0) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
40
+ case 18:
41
+ return `(1.0 - sqrt(1.0 - pow(${v}, 2.0)))`;
42
+ case 19:
43
+ return `sqrt(1.0 - pow(${v} - 1.0, 2.0))`;
44
+ case 20:
45
+ return `select((sqrt(1.0 - pow(-2.0 * ${v} + 2.0, 2.0)) + 1.0) / 2.0, (1.0 - sqrt(1.0 - pow(2.0 * ${v}, 2.0))) / 2.0, ${v} < 0.5)`;
46
+ case 21:
47
+ return `(2.70158 * ${v} * ${v} * ${v} - 1.70158 * ${v} * ${v})`;
48
+ case 22:
49
+ return `(2.70158 * pow(${v} - 1.0, 3.0) + 1.70158 * pow(${v} - 1.0, 2.0))`;
50
+ case 23:
51
+ return `select((pow(2.0 * ${v} - 2.0, 2.0) * (3.5949095 * (${v} * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0, (pow(2.0 * ${v}, 2.0) * (3.5949095 * 2.0 * ${v} - 2.5949095)) / 2.0, ${v} < 0.5)`;
52
+ case 24:
53
+ return `select(select(-pow(2.0, 10.0 * ${v} - 10.0) * sin((${v} * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0)), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
54
+ case 25:
55
+ return `select(select(pow(2.0, -10.0 * ${v}) * sin((${v} * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0, 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
56
+ case 26:
57
+ return `select(select(select((pow(2.0, -20.0 * ${v} + 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0, -(pow(2.0, 20.0 * ${v} - 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
58
+ default:
59
+ throw new Error(`NodeMaterial: unknown CurveBlock curveType ${type}`);
60
+ }
61
+ }
62
+ function curveExpr(type, input, inputType) {
63
+ if (inputType === "f32") {
64
+ return curveScalar(type, input);
65
+ }
66
+ if (inputType === "vec2f") {
67
+ return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)})`;
68
+ }
69
+ if (inputType === "vec3f") {
70
+ return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)})`;
71
+ }
72
+ if (inputType === "vec4f") {
73
+ return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)}, ${curveScalar(type, `(${input}).w`)})`;
74
+ }
75
+ throw new Error(`NodeMaterial: CurveBlock does not support ${inputType}`);
76
+ }
77
+ const emitter = {
78
+ className: "CurveBlock",
79
+ emit(block, _outputName, stage, state, ctx) {
80
+ const input = ctx.resolve(block, "input", stage, state);
81
+ const rawCurveType = block.serialized.curveType;
82
+ const curveType = typeof rawCurveType === "number" ? rawCurveType : 2;
83
+ return { expr: curveExpr(curveType, input.expr, input.type), type: input.type };
84
+ }
85
+ };
86
+ export {
87
+ emitter
88
+ };
89
+ //# sourceMappingURL=curve-block-BlJpXVYv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve-block-BlJpXVYv.js","sources":["../src/material/node/blocks/curve-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeValueType } from \"../node-types.js\";\nimport { WGSL } from \"../node-types.js\";\n\nfunction curveScalar(type: number, v: string): string {\n switch (type) {\n case 0:\n return `(1.0 - cos((${v} * 3.1415) / 2.0))`;\n case 1:\n return `sin((${v} * 3.1415) / 2.0)`;\n case 2:\n return `(-((cos(${v} * 3.1415) - 1.0)) / 2.0)`;\n case 3:\n return `(${v} * ${v})`;\n case 4:\n return `((1.0 - ${v}) * (1.0 - ${v}))`;\n case 5:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 2.0) / 2.0, 2.0 * ${v} * ${v}, ${v} < 0.5)`;\n case 6:\n return `(${v} * ${v} * ${v})`;\n case 7:\n return `(1.0 - pow(1.0 - ${v}, 3.0))`;\n case 8:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 3.0) / 2.0, 4.0 * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 9:\n return `(${v} * ${v} * ${v} * ${v})`;\n case 10:\n return `(1.0 - pow(1.0 - ${v}, 4.0))`;\n case 11:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 4.0) / 2.0, 8.0 * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 12:\n return `(${v} * ${v} * ${v} * ${v} * ${v})`;\n case 13:\n return `(1.0 - pow(1.0 - ${v}, 5.0))`;\n case 14:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 5.0) / 2.0, 16.0 * ${v} * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 15:\n return `select(pow(2.0, 10.0 * ${v} - 10.0), 0.0, ${v} == 0.0)`;\n case 16:\n return `select(1.0 - pow(2.0, -10.0 * ${v}), 1.0, ${v} == 1.0)`;\n case 17:\n return `select(select(select((2.0 - pow(2.0, -20.0 * ${v} + 10.0)) / 2.0, pow(2.0, 20.0 * ${v} - 10.0) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 18:\n return `(1.0 - sqrt(1.0 - pow(${v}, 2.0)))`;\n case 19:\n return `sqrt(1.0 - pow(${v} - 1.0, 2.0))`;\n case 20:\n return `select((sqrt(1.0 - pow(-2.0 * ${v} + 2.0, 2.0)) + 1.0) / 2.0, (1.0 - sqrt(1.0 - pow(2.0 * ${v}, 2.0))) / 2.0, ${v} < 0.5)`;\n case 21:\n return `(2.70158 * ${v} * ${v} * ${v} - 1.70158 * ${v} * ${v})`;\n case 22:\n return `(2.70158 * pow(${v} - 1.0, 3.0) + 1.70158 * pow(${v} - 1.0, 2.0))`;\n case 23:\n return `select((pow(2.0 * ${v} - 2.0, 2.0) * (3.5949095 * (${v} * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0, (pow(2.0 * ${v}, 2.0) * (3.5949095 * 2.0 * ${v} - 2.5949095)) / 2.0, ${v} < 0.5)`;\n case 24:\n return `select(select(-pow(2.0, 10.0 * ${v} - 10.0) * sin((${v} * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0)), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 25:\n return `select(select(pow(2.0, -10.0 * ${v}) * sin((${v} * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0, 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 26:\n return `select(select(select((pow(2.0, -20.0 * ${v} + 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0, -(pow(2.0, 20.0 * ${v} - 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n default:\n throw new Error(`NodeMaterial: unknown CurveBlock curveType ${type}`);\n }\n}\n\nfunction curveExpr(type: number, input: string, inputType: NodeValueType): string {\n if (inputType === \"f32\") {\n return curveScalar(type, input);\n }\n if (inputType === \"vec2f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)})`;\n }\n if (inputType === \"vec3f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)})`;\n }\n if (inputType === \"vec4f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)}, ${curveScalar(type, `(${input}).w`)})`;\n }\n throw new Error(`NodeMaterial: CurveBlock does not support ${inputType}`);\n}\n\nexport const emitter: BlockEmitter = {\n className: \"CurveBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const rawCurveType = block.serialized.curveType;\n const curveType = typeof rawCurveType === \"number\" ? rawCurveType : 2;\n return { expr: curveExpr(curveType, input.expr, input.type), type: input.type };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,YAAY,MAAc,GAAmB;AAClD,UAAQ,MAAA;AAAA,IACJ,KAAK;AACD,aAAO,eAAe,CAAC;AAAA,IAC3B,KAAK;AACD,aAAO,QAAQ,CAAC;AAAA,IACpB,KAAK;AACD,aAAO,WAAW,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,WAAW,CAAC,cAAc,CAAC;AAAA,IACtC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IAClF,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IAC9B,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IACzF,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IACrC,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IAChG,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IAC5C,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IACxG,KAAK;AACD,aAAO,0BAA0B,CAAC,kBAAkB,CAAC;AAAA,IACzD,KAAK;AACD,aAAO,iCAAiC,CAAC,WAAW,CAAC;AAAA,IACzD,KAAK;AACD,aAAO,gDAAgD,CAAC,oCAAoC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAAA,IAC1J,KAAK;AACD,aAAO,yBAAyB,CAAC;AAAA,IACrC,KAAK;AACD,aAAO,kBAAkB,CAAC;AAAA,IAC9B,KAAK;AACD,aAAO,iCAAiC,CAAC,2DAA2D,CAAC,mBAAmB,CAAC;AAAA,IAC7H,KAAK;AACD,aAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAAA,IAChE,KAAK;AACD,aAAO,kBAAkB,CAAC,gCAAgC,CAAC;AAAA,IAC/D,KAAK;AACD,aAAO,qBAAqB,CAAC,gCAAgC,CAAC,uDAAuD,CAAC,+BAA+B,CAAC,yBAAyB,CAAC;AAAA,IACpL,KAAK;AACD,aAAO,kCAAkC,CAAC,mBAAmB,CAAC,oDAAoD,CAAC,kBAAkB,CAAC;AAAA,IAC1I,KAAK;AACD,aAAO,kCAAkC,CAAC,YAAY,CAAC,yDAAyD,CAAC,kBAAkB,CAAC;AAAA,IACxI,KAAK;AACD,aAAO,0CAA0C,CAAC,0BAA0B,CAAC,wEAAwE,CAAC,0BAA0B,CAAC,gDAAgD,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAAA,IAC3Q;AACI,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,EAAA;AAEhF;AAEA,SAAS,UAAU,MAAc,OAAe,WAAkC;AAC9E,MAAI,cAAc,OAAO;AACrB,WAAO,YAAY,MAAM,KAAK;AAAA,EAClC;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EACxG;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EAC9I;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EACpL;AACA,QAAM,IAAI,MAAM,6CAA6C,SAAS,EAAE;AAC5E;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,eAAe,MAAM,WAAW;AACtC,UAAM,YAAY,OAAO,iBAAiB,WAAW,eAAe;AACpE,WAAO,EAAE,MAAM,UAAU,WAAW,MAAM,MAAM,MAAM,IAAI,GAAG,MAAM,MAAM,KAAA;AAAA,EAC7E;AACJ;"}
@@ -0,0 +1,14 @@
1
+ const emitter = {
2
+ className: "NodeMaterialDebugBlock",
3
+ emit(block, _outputName, stage, state, ctx) {
4
+ const input = block.inputs.get("debug");
5
+ if (!(input == null ? void 0 : input.source)) {
6
+ return { expr: "0.0", type: "f32" };
7
+ }
8
+ return ctx.resolve(block, "debug", stage, state);
9
+ }
10
+ };
11
+ export {
12
+ emitter
13
+ };
14
+ //# sourceMappingURL=debug-block-D2pg4Yf6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-block-D2pg4Yf6.js","sources":["../src/material/node/blocks/debug-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"NodeMaterialDebugBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = block.inputs.get(\"debug\");\n if (!input?.source) {\n return { expr: \"0.0\", type: \"f32\" };\n }\n return ctx.resolve(block, \"debug\", stage, state);\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,MAAM,OAAO,IAAI,OAAO;AACtC,QAAI,EAAC,+BAAO,SAAQ;AAChB,aAAO,EAAE,MAAM,OAAO,MAAM,MAAA;AAAA,IAChC;AACA,WAAO,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AAAA,EACnD;AACJ;"}
@@ -0,0 +1,20 @@
1
+ const OUTPUT_FN = {
2
+ dx: "dpdx",
3
+ dy: "dpdy"
4
+ };
5
+ const emitter = {
6
+ className: "DerivativeBlock",
7
+ stage: "fragment",
8
+ emit(block, outputName, stage, state, ctx) {
9
+ const fn = OUTPUT_FN[outputName];
10
+ if (!fn) {
11
+ throw new Error(`NodeMaterial: DerivativeBlock output "${outputName}" is not supported`);
12
+ }
13
+ const input = ctx.resolve(block, "input", stage, state);
14
+ return { expr: `${fn}(${input.expr})`, type: input.type };
15
+ }
16
+ };
17
+ export {
18
+ emitter
19
+ };
20
+ //# sourceMappingURL=derivative-block-B8KjtaWs.js.map