@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,763 @@
1
+ import { M as MAX_LIGHTS } from "./index-C8HOR2sB.js";
2
+ function ccDirectBlock(useClearcoat, useCcTint) {
3
+ if (!useClearcoat) {
4
+ return "";
5
+ }
6
+ const Ncc = "ccNormalW";
7
+ const NdotLcc = "ccNdotL";
8
+ const declCcNdotL = `let ccNdotL = clamp(dot(ccNormalW, L), 0.0000001, 1.0);`;
9
+ return `
10
+ ${declCcNdotL}
11
+ if (${NdotLcc} > 0.0 && atten > 0.0) {
12
+ let ccH = normalize(V + L);
13
+ let ccNdotH = clamp(dot(${Ncc}, ccH), 0.0000001, 1.0);
14
+ let ccVdotH = saturate(dot(V, ccH));
15
+ let ccD = nme_pbr_distGGX(ccNdotH, ccAlphaG);
16
+ let ccVis = 0.25 / (ccVdotH * ccVdotH + 0.0000001);
17
+ let ccF_d = nme_pbr_ccSchlick(ccF0, ccVdotH);
18
+ let ccTerm = ccF_d * ccD * ccVis * ${NdotLcc};
19
+ ccDirectSpecAcc = ccDirectSpecAcc + v3(ccTerm) * color * atten * ccIntensity * sh;
20
+ baseLayerAtten = 1.0 - ccF_d * ccIntensity;
21
+ ${useCcTint ? `let ccLRefract = -refract(L, ${Ncc}, ccIorInv);
22
+ let ccNdotLRefract = clamp(dot(${Ncc}, ccLRefract), 0.0000001, 1.0);
23
+ let ccDirectAbsorption = nme_pbr_cocaLambert(ccAbsorptionColor, ccTintThickness * ((ccNdotLRefract + ccNdotVRefract) / (ccNdotLRefract * ccNdotVRefract)));
24
+ baseLayerAbsorption = mix(v3(1.0), ccDirectAbsorption, v3(ccIntensity));` : ``}
25
+ }`;
26
+ }
27
+ function ccHemiBlock(useClearcoat, useCcTint) {
28
+ if (!useClearcoat) {
29
+ return "";
30
+ }
31
+ const Ncc = "ccNormalW";
32
+ return `
33
+ let ccNdotL_h = clamp(dot(${Ncc}, Ldir), 0.0000001, 1.0);
34
+ if (nl > 0.0) {
35
+ let ccH_h = normalize(V + Ldir);
36
+ let ccNdotH_h = clamp(dot(${Ncc}, ccH_h), 0.0000001, 1.0);
37
+ let ccVdotH_h = saturate(dot(V, ccH_h));
38
+ let ccD_h = nme_pbr_distGGX(ccNdotH_h, ccAlphaG);
39
+ let ccVis_h = 0.25 / (ccVdotH_h * ccVdotH_h + 0.0000001);
40
+ let ccF_h = nme_pbr_ccSchlick(ccF0, ccVdotH_h);
41
+ let ccTerm_h = ccF_h * ccD_h * ccVis_h * ccNdotL_h;
42
+ ccDirectSpecAcc = ccDirectSpecAcc + v3(ccTerm_h) * entry.vLightDiffuse.rgb * ccIntensity * sh;
43
+ baseLayerAtten = 1.0 - ccF_h * ccIntensity;
44
+ ${useCcTint ? `let ccLRefract_h = -refract(Ldir, ${Ncc}, ccIorInv);
45
+ let ccNdotLRefract_h = clamp(dot(${Ncc}, ccLRefract_h), 0.0000001, 1.0);
46
+ let ccDirectAbsorption_h = nme_pbr_cocaLambert(ccAbsorptionColor, ccTintThickness * ((ccNdotLRefract_h + ccNdotVRefract) / (ccNdotLRefract_h * ccNdotVRefract)));
47
+ baseLayerAbsorption = mix(v3(1.0), ccDirectAbsorption_h, v3(ccIntensity));` : ``}
48
+ }`;
49
+ }
50
+ function shDirectBlock(useSheen) {
51
+ if (!useSheen) {
52
+ return "";
53
+ }
54
+ return `
55
+ if (NdotL > 0.0 && atten > 0.0) {
56
+ let shH = normalize(V + L);
57
+ let shNdotH = clamp(dot(N, shH), 0.0000001, 1.0);
58
+ let shD = nme_pbr_charlieD(shNdotH, shAlphaG);
59
+ let shV = 1.0 / (4.0 * (NdotL + NdotV - NdotL * NdotV) + 0.0000001);
60
+ shDirectAcc = shDirectAcc + shColorScaled * shD * shV * NdotL * color * atten * sh * baseLayerAtten;
61
+ }`;
62
+ }
63
+ function shHemiBlock(useSheen) {
64
+ if (!useSheen) {
65
+ return "";
66
+ }
67
+ return `
68
+ if (nl > 0.0) {
69
+ let shH_h = normalize(V + Ldir);
70
+ let shNdotH_h = clamp(dot(N, shH_h), 0.0000001, 1.0);
71
+ let shD_h = nme_pbr_charlieD(shNdotH_h, shAlphaG);
72
+ let shV_h = 1.0 / (4.0 * (nl + NdotV - nl * NdotV) + 0.0000001);
73
+ shDirectAcc = shDirectAcc + shColorScaled * shD_h * shV_h * nl * entry.vLightSpecular.rgb * sh * baseLayerAtten;
74
+ }`;
75
+ }
76
+ function ssBlock(useSubsurface, useRefraction, useAnisotropy) {
77
+ if (!useSubsurface && !useRefraction) {
78
+ return `let finalRefraction = v3(0.0);
79
+ let refractionOpacity = 1.0;
80
+ let ssRefractionIrradiance = v3(0.0);`;
81
+ }
82
+ const refrPart = useRefraction ? `// Refraction: refract V through N at IOR, sample env at refraction LOD.
83
+ let refrIntensity = clamp(refrIntensityIn, 0.0, 1.0);
84
+ let invIor = 1.0 / max(refrIor, 1.0001);
85
+ let refrV_raw = refract(-V, ${useAnisotropy ? "aniN" : "N"}, invIor);
86
+ let refrV = v3(refrV_raw.x * cosA + refrV_raw.z * sinA, refrV_raw.y, -refrV_raw.x * sinA + refrV_raw.z * cosA);
87
+ let refrAlphaG = mix(alphaG, 0.0, clamp(invIor * 3.0 - 2.0, 0.0, 1.0));
88
+ let refrLod = log2(cubemapDim * refrAlphaG) * sceneU.vImageInfos.z;
89
+ let envRefr = textureSampleLevel(nmeIblTexture, nmeIblSampler, refrV, clamp(refrLod, 0.0, maxLod)).rgb;
90
+ let volumeAlbedo = nme_pbr_colorAtDistance(ssTintColor, refrTintAtDistance);
91
+ let refrTransmittance = v3(refrIntensity) * nme_pbr_cocaLambert(volumeAlbedo, ssThickness);
92
+ let finalRefractionRaw = envRefr * refrTransmittance * (v3(1.0) - refractionSpecEnvReflectance);
93
+ let refractionOpacity = 1.0 - refrIntensity;` : `let finalRefractionRaw = v3(0.0);
94
+ let refractionOpacity = 1.0;`;
95
+ const ssPart = useSubsurface ? `// Translucency: back-scattered SH irradiance with Burley transmittance.
96
+ let nN_raw = -N;
97
+ let nN_env = v3(nN_raw.x * cosA + nN_raw.z * sinA, nN_raw.y, -nN_raw.x * sinA + nN_raw.z * cosA);
98
+ let backIrradiance = (sceneU.vSphericalL00.xyz
99
+ + sceneU.vSphericalL1_1.xyz * nN_env.y + sceneU.vSphericalL10.xyz * nN_env.z + sceneU.vSphericalL11.xyz * nN_env.x
100
+ + sceneU.vSphericalL2_2.xyz * (nN_env.y * nN_env.x) + sceneU.vSphericalL2_1.xyz * (nN_env.y * nN_env.z)
101
+ + sceneU.vSphericalL20.xyz * (3.0 * nN_env.z * nN_env.z - 1.0) + sceneU.vSphericalL21.xyz * (nN_env.z * nN_env.x)
102
+ + sceneU.vSphericalL22.xyz * (nN_env.x * nN_env.x - nN_env.y * nN_env.y));
103
+ let ssRefractionIrradiance = backIrradiance * ssTransmittance;
104
+ finalIrradiance = finalIrradiance * refractionOpacity;
105
+ finalIrradiance = finalIrradiance * (1.0 - translucencyIntensity);` : `let ssRefractionIrradiance = v3(0.0);
106
+ finalIrradiance = finalIrradiance * refractionOpacity;`;
107
+ return `${refrPart}
108
+ ${ssPart}
109
+ let finalRefraction = finalRefractionRaw;`;
110
+ }
111
+ function buildPbrMrHelperFull(request) {
112
+ return HELPER_WGSL(
113
+ request.useEnv,
114
+ request.useClearcoat,
115
+ request.useSheen,
116
+ request.useRefraction,
117
+ request.useSubsurface,
118
+ request.useAnisotropy,
119
+ request.useIridescence,
120
+ request.useShAlbedoScaling,
121
+ request.useCcBump,
122
+ request.useCcTint,
123
+ request.useSpecularAA,
124
+ request.remapClearcoatF0
125
+ );
126
+ }
127
+ function HELPER_WGSL(useEnv, useClearcoat, useSheen, useRefraction, useSubsurface, useAnisotropy, useIridescence, useShAlbedoScaling, useCcBump, useCcTint, useSpecularAA, remapClearcoatF0) {
128
+ const ccDecls = useClearcoat ? `let ccIntensity = clamp(ccIntensityIn, 0.0, 1.0);
129
+ let ccRough = clamp(ccRoughnessIn, 0.0, 1.0);
130
+ let ccF0_raw = (ccIor - 1.0) / (ccIor + 1.0);
131
+ let ccF0 = ccF0_raw * ccF0_raw;
132
+ var ccDirectSpecAcc = v3(0.0);` : `let ccDirectSpecAcc = v3(0.0);`;
133
+ const ccAlphaSetup = useClearcoat ? `var ccAA_factor_y = 0.0;
134
+ ${useSpecularAA ? `{ let ccNdfdx_AA = dpdx(ccNormalW);
135
+ let ccNdfdy_AA = dpdy(ccNormalW);
136
+ let ccSlopeSquare_AA = max(dot(ccNdfdx_AA, ccNdfdx_AA), dot(ccNdfdy_AA, ccNdfdy_AA));
137
+ ccAA_factor_y = sqrt(ccSlopeSquare_AA) * 0.75; }` : ``}
138
+ let ccAlphaG = ccRough * ccRough + 0.0005 + ccAA_factor_y;` : ``;
139
+ const ccNormalSetup = useClearcoat ? useCcBump ? `let ccNormalW = nme_perturbNormal(worldPos, Ng, ccBumpUv, ccBumpColor, 1.0);
140
+ let ccNdotV = abs(dot(ccNormalW, V)) + 0.0000001;${useCcTint ? `
141
+ let ccIorInv = 1.0 / max(ccIor, 1.0001);
142
+ let ccAbsorptionColor = nme_pbr_colorAtDistance(max(ccTintColor, v3(0.0000001)), max(ccTintAtDistance, 0.0000001));
143
+ let ccVRefract = refract(-V, ccNormalW, ccIorInv);
144
+ let ccNdotVRefract = abs(dot(ccNormalW, ccVRefract)) + 0.0000001;` : ``}` : `let ccNormalW = Ng;
145
+ let ccNdotV = abs(dot(ccNormalW, V)) + 0.0000001;${useCcTint ? `
146
+ let ccIorInv = 1.0 / max(ccIor, 1.0001);
147
+ let ccAbsorptionColor = nme_pbr_colorAtDistance(max(ccTintColor, v3(0.0000001)), max(ccTintAtDistance, 0.0000001));
148
+ let ccVRefract = refract(-V, ccNormalW, ccIorInv);
149
+ let ccNdotVRefract = abs(dot(ccNormalW, ccVRefract)) + 0.0000001;` : ``}` : `let ccNormalW = N;
150
+ let ccNdotV: f32 = 0.0;`;
151
+ const shDecls = useSheen ? `let shIntensityRaw = clamp(shIntensityIn, 0.0, 1.0);
152
+ ${useShAlbedoScaling ? `let shIntensity = shIntensityRaw;` : `let reflectanceF0 = max(colorF0.r, max(colorF0.g, colorF0.b));
153
+ let shIntensity = shIntensityRaw * (1.0 - reflectanceF0);`}
154
+ let shRough = clamp(shRoughnessIn, 0.0, 1.0);
155
+ let shAlphaG = shRough * shRough + 0.0005;
156
+ let shColorScaled = shColorIn * shIntensity;
157
+ var shDirectAcc = v3(0.0);` : `let shDirectAcc = v3(0.0);`;
158
+ const shIblTerm = useEnv && useSheen ? `let shSpecLod = log2(cubemapDim * shAlphaG) * sceneU.vImageInfos.z;
159
+ let shEnvRadiance = textureSampleLevel(nmeIblTexture, nmeIblSampler, R, clamp(shSpecLod, 0.0, maxLod)).rgb;
160
+ let shBrdfBlue = textureSample(nmeBrdfLUT, nmeBrdfSampler, v2(NdotV, shRough)).b;
161
+ let shFinalIbl = shEnvRadiance * shColorScaled * shBrdfBlue * seo * eho;
162
+ ${useShAlbedoScaling ? `// SHEEN_ALBEDOSCALING: surface albedo and base specular scale by (1 - shInt × max(shColor) × envSheenBrdf.b).
163
+ let shAlbedoScaling = 1.0 - shIntensity * max(max(shColorIn.r, shColorIn.g), shColorIn.b) * shBrdfBlue;` : `let shAlbedoScaling: f32 = 1.0;`}` : `let shFinalIbl = v3(0.0);
164
+ let shAlbedoScaling: f32 = 1.0;`;
165
+ const directSpecR0Decl = useClearcoat && remapClearcoatF0 ? `let _directF0S = sqrt(max(colorF0, v3(0.0)));
166
+ let _directF0T = ((1.0 - ccIor) + (1.0 + ccIor) * _directF0S) / ((1.0 + ccIor) + (1.0 - ccIor) * _directF0S);
167
+ let directSpecR0 = mix(colorF0, clamp(_directF0T * _directF0T, v3(0.0), v3(1.0)), ccIntensity);` : `let directSpecR0 = colorF0;`;
168
+ const shIblScale = useClearcoat ? ` * ccConsIBL${useCcTint ? " * ccAbsorption" : ""}` : "";
169
+ const refrCcScale = useClearcoat ? " * ccConsIBL" : "";
170
+ const ccIblPre = useClearcoat ? `let ccFresnelIBL = nme_pbr_ccSchlick(ccF0, ccNdotV);
171
+ let ccConsIBL = 1.0 - ccFresnelIBL * ccIntensity;
172
+ let ccBrdfSample = textureSample(nmeBrdfLUT, nmeBrdfSampler, v2(ccNdotV, ccRough)).rgb;
173
+ let ccSpecEnvReflRaw = (v3(ccF0) * ccBrdfSample.y + (v3(1.0) - v3(ccF0)) * ccBrdfSample.x) * ccIntensity;
174
+ let ccEnergyConservation = 1.0 + _coloredR0 * (1.0 / max(ccBrdfSample.y, 0.001) - 1.0);
175
+ let ccEhoT = clamp(1.0 + 1.1 * dot(reflect(-V, ccNormalW), Ng), 0.0, 1.0);
176
+ let ccSpecEnvRefl = ccSpecEnvReflRaw * (ccEhoT * ccEhoT);
177
+ let ccSpecLod = log2(cubemapDim * ccAlphaG) * sceneU.vImageInfos.z;
178
+ let ccR_raw = reflect(-V, ccNormalW);
179
+ let ccR = v3(ccR_raw.x * cosA + ccR_raw.z * sinA, ccR_raw.y, -ccR_raw.x * sinA + ccR_raw.z * cosA);
180
+ let ccEnvRadiance = textureSampleLevel(nmeIblTexture, nmeIblSampler, ccR, clamp(ccSpecLod, 0.0, maxLod)).rgb;
181
+ ${useCcTint ? `// Clearcoat absorption: BJS Beer-Lambert path length through the coat.
182
+ let ccAbsorption = mix(v3(1.0), nme_pbr_cocaLambert(ccAbsorptionColor, ccTintThickness * ((ccNdotVRefract + ccNdotVRefract) / (ccNdotVRefract * ccNdotVRefract))), v3(ccIntensity));` : `let ccAbsorption = v3(1.0);`}
183
+ let ccFinalRadiance = ccEnvRadiance * ccSpecEnvRefl;` : ``;
184
+ const ccTintScale = useCcTint ? " * ccAbsorption" : "";
185
+ const ccIblFinal = useClearcoat ? `${ccIblPre}
186
+ ${shIblTerm}
187
+ r.lighting = finalIrradiance * shAlbedoScaling * ccConsIBL${ccTintScale}
188
+ + finalRadianceScaled * shAlbedoScaling * ccConsIBL${ccTintScale}
189
+ + ssRefractionIrradiance * ao_c
190
+ + finalSpecularScaledDirect * shAlbedoScaling
191
+ + diffuseAcc * shAlbedoScaling
192
+ + diffuseTransmissionAcc
193
+ + ccDirectSpecAcc * ccEnergyConservation
194
+ + ccFinalRadiance
195
+ + shDirectAcc
196
+ + shFinalIbl${shIblScale}
197
+ + finalRefraction${refrCcScale}${ccTintScale};` : `${shIblTerm}
198
+ r.lighting = finalIrradiance * shAlbedoScaling + ssRefractionIrradiance * ao_c + (finalRadianceScaled + finalSpecularScaledDirect + diffuseAcc) * shAlbedoScaling + diffuseTransmissionAcc + shDirectAcc + shFinalIbl + finalRefraction;`;
199
+ const ccDirectFinal = useClearcoat ? `r.lighting = diffuseAcc + specAcc + diffuseTransmissionAcc + ccDirectSpecAcc + shDirectAcc;` : `r.lighting = diffuseAcc + diffuseTransmissionAcc + specAcc + shDirectAcc;`;
200
+ const refractionSpecEnvReflectanceDecl = useRefraction ? `let refractionSpecEnvReflectance = baseSpecEnvReflectance;` : ``;
201
+ const iblBlock = useEnv ? `
202
+ let envRot = sceneU.envRotationY;
203
+ let cosA = cos(envRot); let sinA = sin(envRot);
204
+ let N_specSrc = ${useAnisotropy ? "aniN" : "N"};
205
+ let R_raw = reflect(-V, N_specSrc);
206
+ let R = v3(R_raw.x * cosA + R_raw.z * sinA, R_raw.y, -R_raw.x * sinA + R_raw.z * cosA);
207
+ let N_env = v3(Ng.x * cosA + Ng.z * sinA, Ng.y, -Ng.x * sinA + Ng.z * cosA);
208
+ let environmentIrradiance = (sceneU.vSphericalL00.xyz
209
+ + sceneU.vSphericalL1_1.xyz * N_env.y + sceneU.vSphericalL10.xyz * N_env.z + sceneU.vSphericalL11.xyz * N_env.x
210
+ + sceneU.vSphericalL2_2.xyz * (N_env.y * N_env.x) + sceneU.vSphericalL2_1.xyz * (N_env.y * N_env.z)
211
+ + sceneU.vSphericalL20.xyz * (3.0 * N_env.z * N_env.z - 1.0) + sceneU.vSphericalL21.xyz * (N_env.z * N_env.x)
212
+ + sceneU.vSphericalL22.xyz * (N_env.x * N_env.x - N_env.y * N_env.y));
213
+ let brdfSample = textureSample(nmeBrdfLUT, nmeBrdfSampler, v2(NdotV, rough_c));
214
+ let envBrdf = brdfSample.rgb;
215
+ let reflectanceF0Scalar = max(colorF0.r, max(colorF0.g, colorF0.b));
216
+ let baseSpecEnvReflectance = (colorF90 - v3(reflectanceF0Scalar)) * envBrdf.x + v3(reflectanceF0Scalar) * envBrdf.y;
217
+ let seo = clamp((NdotVUnclamped + ao_c) * (NdotVUnclamped + ao_c) - 1.0 + ao_c, 0.0, 1.0);
218
+ let _geoNF = select(-Ng, Ng, dot(Ng, V) > 0.0);
219
+ let _ehoRefl = reflect(-V, N);
220
+ let _ehoT = clamp(1.0 + 1.1 * dot(_ehoRefl, _geoNF), 0.0, 1.0);
221
+ let eho = _ehoT * _ehoT;
222
+ ${useClearcoat && remapClearcoatF0 ? `let _f0S = sqrt(max(colorF0, v3(0.0)));
223
+ let _f0T = ((1.0 - ccIor) + (1.0 + ccIor) * _f0S) / ((1.0 + ccIor) + (1.0 - ccIor) * _f0S);
224
+ let _coloredR0 = mix(colorF0, clamp(_f0T * _f0T, v3(0.0), v3(1.0)), ccIntensity);` : `let _coloredR0 = colorF0;`}
225
+ let colorSpecEnvReflectance = ((colorF90 - _coloredR0) * envBrdf.x + _coloredR0 * envBrdf.y) * seo * eho;
226
+ let energyConservation = 1.0 + _coloredR0 * (1.0 / max(envBrdf.y, 0.001) - 1.0);
227
+ let maxLod = f32(textureNumLevels(nmeIblTexture) - 1);
228
+ let cubemapDim = f32(textureDimensions(nmeIblTexture).x);
229
+ let specLod = log2(cubemapDim * alphaG) * sceneU.vImageInfos.z;
230
+ var environmentRadiance = textureSampleLevel(nmeIblTexture, nmeIblSampler, R, clamp(specLod, 0.0, maxLod)).rgb;
231
+ ${refractionSpecEnvReflectanceDecl}
232
+ var finalIrradiance = environmentIrradiance * surfaceAlbedo;
233
+ let finalRadianceScaled = environmentRadiance * colorSpecEnvReflectance * energyConservation;
234
+ let finalSpecularScaledDirect = specAcc * energyConservation;
235
+ ${ssBlock(useSubsurface, useRefraction, useAnisotropy)}
236
+ finalIrradiance = finalIrradiance * ao_c;
237
+ r.diffuseInd = finalIrradiance;
238
+ r.specularInd = finalRadianceScaled;
239
+ ${ccIblFinal}` : `
240
+ r.diffuseInd = v3(0.0);
241
+ r.specularInd = v3(0.0);
242
+ ${ccDirectFinal}`;
243
+ const ccSchlickFn = useClearcoat ? `fn nme_pbr_ccSchlick(f0: f32, cosTheta: f32) -> f32 {
244
+ let t = 1.0 - cosTheta;
245
+ let t2 = t * t;
246
+ return f0 + (1.0 - f0) * (t2 * t2 * t);
247
+ }
248
+ ` : ``;
249
+ const charlieFn = useSheen ? `fn nme_pbr_charlieD(NdotH: f32, alphaG: f32) -> f32 {
250
+ let invR = 1.0 / max(alphaG, 0.0005);
251
+ let cos2h = NdotH * NdotH;
252
+ let sin2h = 1.0 - cos2h;
253
+ return (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * NME_PBR_PI);
254
+ }
255
+ ` : ``;
256
+ const anisoFns = useAnisotropy ? `fn nme_pbr_anisoRoughness(alphaG: f32, anisotropy: f32) -> v2 {
257
+ let alphaT = max(alphaG * (1.0 + anisotropy), 0.0005);
258
+ let alphaB = max(alphaG * (1.0 - anisotropy), 0.0005);
259
+ return v2(alphaT, alphaB);
260
+ }
261
+ fn nme_pbr_anisoBentNormal(T: v3, B: v3, N: v3, V: v3, anisotropy: f32) -> v3 {
262
+ var anisotropicFrameDirection = B;
263
+ if (anisotropy < 0.0) {
264
+ anisotropicFrameDirection = T;
265
+ }
266
+ let anisoTan = cross(normalize(anisotropicFrameDirection), V);
267
+ let anisoNormal = cross(anisoTan, anisotropicFrameDirection);
268
+ return normalize(mix(N, anisoNormal, abs(anisotropy)));
269
+ }
270
+ fn nme_pbr_burleyAnisoD(NdotH: f32, TdotH: f32, BdotH: f32, alphaTB: v2) -> f32 {
271
+ let a2 = alphaTB.x * alphaTB.y;
272
+ let v = v3(alphaTB.y * TdotH, alphaTB.x * BdotH, a2 * NdotH);
273
+ let v2 = dot(v, v);
274
+ let w2 = a2 / max(v2, 0.0000001);
275
+ return a2 * w2 * w2 * (1.0 / NME_PBR_PI);
276
+ }
277
+ fn nme_pbr_visAnisoSmith(NdotL: f32, NdotV: f32, TdotV: f32, BdotV: f32, TdotL: f32, BdotL: f32, alphaTB: v2) -> f32 {
278
+ let lambdaV = NdotL * length(v3(alphaTB.x * TdotV, alphaTB.y * BdotV, NdotV));
279
+ let lambdaL = NdotV * length(v3(alphaTB.x * TdotL, alphaTB.y * BdotL, NdotL));
280
+ return 0.5 / max(lambdaV + lambdaL, 0.0000001);
281
+ }
282
+ ` : ``;
283
+ const ssFns = useSubsurface || useRefraction || useCcTint ? `fn nme_pbr_transmittanceBurley(tintColor: v3, diffusionDist: v3, thickness: f32) -> v3 {
284
+ let S = v3(1.0) / max(diffusionDist, v3(0.0000001));
285
+ let temp = exp(-0.333333333 * thickness * S);
286
+ return tintColor * 0.25 * (temp * temp * temp + 3.0 * temp);
287
+ }
288
+ fn nme_pbr_cocaLambert(volumeAlbedo: v3, distance: f32) -> v3 {
289
+ return exp(-volumeAlbedo * distance);
290
+ }
291
+ fn nme_pbr_colorAtDistance(color: v3, distance: f32) -> v3 {
292
+ return -log(color) / distance;
293
+ }
294
+ ` : ``;
295
+ const anisoSetup = useAnisotropy ? `let _adp1 = dpdx(worldPos);
296
+ let _adp2 = -dpdy(worldPos);
297
+ let _aduv1 = dpdx(anisoUv);
298
+ let _aduv2 = -dpdy(anisoUv);
299
+ let _adp2perp = cross(_adp2, Ng);
300
+ let _adp1perp = cross(Ng, _adp1);
301
+ let _atan = _adp2perp * _aduv1.x + _adp1perp * _aduv2.x;
302
+ let _abit = _adp2perp * _aduv1.y + _adp1perp * _aduv2.y;
303
+ let _adet = max(dot(_atan, _atan), dot(_abit, _abit));
304
+ let _ainvmax = select(0.0, inverseSqrt(_adet), _adet > 0.0);
305
+ let _aTBN0 = normalize(_atan * _ainvmax);
306
+ let _aTBN1 = normalize(_abit * _ainvmax);
307
+ let anisoIntensity = clamp(anisoIntensityIn, -1.0, 1.0);
308
+ let anisoDir = v3(anisoDirection, 0.0);
309
+ let anisoT_raw = _aTBN0 * anisoDir.x + _aTBN1 * anisoDir.y;
310
+ let anisoT = normalize(anisoT_raw);
311
+ let anisoB = normalize(cross(Ng, anisoT));
312
+ let aniAlphaTB = nme_pbr_anisoRoughness(alphaG, anisoIntensity);
313
+ let aniN = nme_pbr_anisoBentNormal(anisoT, anisoB, N, V, anisoIntensity);` : `let anisoT = v3(1.0, 0.0, 0.0);
314
+ let anisoB = v3(0.0, 0.0, 1.0);
315
+ let aniAlphaTB = v2(alphaG, alphaG);
316
+ let aniN = N;`;
317
+ const specularAABlock = useSpecularAA ? `var AA_factor_x = 0.0;
318
+ var AA_factor_y = 0.0;
319
+ { let nDfdx_AA = dpdx(N);
320
+ let nDfdy_AA = dpdy(N);
321
+ let slopeSquare_AA = max(dot(nDfdx_AA, nDfdx_AA), dot(nDfdy_AA, nDfdy_AA));
322
+ AA_factor_x = pow(saturate(slopeSquare_AA), 0.333);
323
+ AA_factor_y = sqrt(slopeSquare_AA) * 0.75;
324
+ alphaG = alphaG + AA_factor_y; }` : `let AA_factor_x = 0.0;
325
+ let AA_factor_y = 0.0;`;
326
+ return `alias v2 = vec2<f32>;
327
+ alias v3 = vec3<f32>;
328
+ alias v4 = vec4<f32>;
329
+ struct NmePbrMrResult {
330
+ lighting: v3,
331
+ diffuseDir: v3,
332
+ specularDir: v3,
333
+ diffuseInd: v3,
334
+ specularInd: v3,
335
+ shadow: f32,
336
+ lumOverAlpha: f32,
337
+ };
338
+ const NME_PBR_PI: f32 = 3.14159265358979323846;
339
+ fn nme_pbr_distGGX(NdotH: f32, alphaG: f32) -> f32 {
340
+ let a2 = alphaG * alphaG;
341
+ let d = NdotH * NdotH * (a2 - 1.0) + 1.0;
342
+ return a2 / (NME_PBR_PI * d * d);
343
+ }
344
+ fn nme_pbr_geomGGX(NdotL: f32, NdotV: f32, alphaG: f32) -> f32 {
345
+ let a2 = alphaG * alphaG;
346
+ let gl = NdotL * sqrt(NdotV * (NdotV - a2 * NdotV) + a2);
347
+ let gv = NdotV * sqrt(NdotL * (NdotL - a2 * NdotL) + a2);
348
+ return 0.5 / max(gl + gv, 0.00001);
349
+ }
350
+ fn nme_pbr_fresSchlick(c: f32, F0: v3, F90: v3) -> v3 {
351
+ let t = 1.0 - c;
352
+ let t2 = t * t;
353
+ return F0 + (F90 - F0) * (t2 * t2 * t);
354
+ }
355
+ fn nme_pbr_diffuseEON(albedo: v3, sigma: f32, NdotL: f32, NdotV: f32, LdotV: f32) -> v3 {
356
+ return albedo * (1.0 / NME_PBR_PI);
357
+ }
358
+ ${ccSchlickFn}${charlieFn}${anisoFns}${ssFns}fn nme_pbr_mr_compute(
359
+ worldPos: v3, geometricNormal: v3, worldNormal: v3, cameraPos: v3,
360
+ baseColor: v3, metallic: f32, roughness: f32, ao: f32,
361
+ ccIntensityIn: f32, ccRoughnessIn: f32, ccIor: f32,
362
+ ccBumpColor: v3, ccBumpUv: v2,
363
+ ccTintColor: v3, ccTintAtDistance: f32, ccTintThickness: f32,
364
+ shIntensityIn: f32, shColorIn: v3, shRoughnessIn: f32,
365
+ baseIor: f32,
366
+ refrIntensityIn: f32, refrIor: f32, refrTintAtDistance: f32,
367
+ ssTintColor: v3, ssThickness: f32,
368
+ ssTranslucencyIntensityIn: f32, ssDiffusionDist: v3,
369
+ anisoIntensityIn: f32, anisoDirection: v2, anisoUv: v2,
370
+ iridescenceIntensityIn: f32, iridescenceIorIn: f32, iridescenceThicknessIn: f32,
371
+ shadowFactors: array<f32, ${MAX_LIGHTS}>
372
+ ) -> NmePbrMrResult {
373
+ var r: NmePbrMrResult;
374
+ let Ng = normalize(geometricNormal);
375
+ let N = normalize(worldNormal);
376
+ let V = normalize(cameraPos - worldPos);
377
+ let NdotVUnclamped = dot(N, V);
378
+ let NdotV = abs(NdotVUnclamped) + 0.0000001;
379
+ let metallic_c = clamp(metallic, 0.0, 1.0);
380
+ let rough_c = clamp(roughness, 0.0, 1.0);
381
+ var alphaG = rough_c * rough_c + 0.0005;
382
+ ${specularAABlock}
383
+ let dielectricF0Raw = (baseIor - 1.0) / (baseIor + 1.0);
384
+ let dielectricF0Scalar = dielectricF0Raw * dielectricF0Raw;
385
+ let dielectricF0 = v3(dielectricF0Scalar);
386
+ var surfaceAlbedo = baseColor * (1.0 - metallic_c) * (1.0 - dielectricF0Scalar);
387
+ let colorF0Base = mix(dielectricF0, baseColor, metallic_c);
388
+ let colorF0 = ${useIridescence ? `mix(colorF0Base, nme_pbr_evalIridescence(1.0, max(iridescenceIorIn, 1.0001), NdotV, max(iridescenceThicknessIn, 0.0), colorF0Base), clamp(iridescenceIntensityIn, 0.0, 1.0))` : `colorF0Base`};
389
+ let colorF90 = v3(1.0);
390
+ let ao_c = clamp(ao, 0.0, 1.0);
391
+ let directRoughness = max(rough_c, AA_factor_x);
392
+ let directAlphaG = directRoughness * directRoughness + 0.0005;
393
+ ${anisoSetup}
394
+ ${ccDecls}
395
+ ${directSpecR0Decl}
396
+ ${ccNormalSetup}
397
+ ${ccAlphaSetup}
398
+ ${shDecls}
399
+ let translucencyIntensity = ${useSubsurface ? "clamp(ssTranslucencyIntensityIn, 0.0, 1.0)" : "0.0"};
400
+ let ssTransmittance = ${useSubsurface ? "nme_pbr_transmittanceBurley(ssTintColor, ssDiffusionDist, max(ssThickness, 0.0000001)) * translucencyIntensity" : "v3(0.0)"};
401
+ let directDiffuseTranslucencyScale = 1.0 - translucencyIntensity;
402
+ ${useRefraction ? `// LEGACY_SPECULAR_ENERGY_CONSERVATION is on for BJS NME PBR-MR. When refraction
403
+ let _refractionOpacityPre = 1.0 - clamp(refrIntensityIn, 0.0, 1.0);
404
+ surfaceAlbedo = surfaceAlbedo * _refractionOpacityPre;` : ``}
405
+ var diffuseAcc = v3(0.0);
406
+ var diffuseTransmissionAcc = v3(0.0);
407
+ var specAcc = v3(0.0);
408
+ var aggShadow: f32 = 0.0;
409
+ var nLights: f32 = 0.0;
410
+ let lc = min(meshU.lc, ${MAX_LIGHTS}u);
411
+ for (var i: u32 = 0u; i < lc; i = i + 1u) {
412
+ let lightIndex = nli(i);
413
+ let entry = nmeLights.lights[lightIndex];
414
+ let t = u32(entry.vLightData.w);
415
+ let sh = shadowFactors[lightIndex];
416
+ if (t == 3u) {
417
+ let Ldir = normalize(entry.vLightData.xyz);
418
+ let nl = clamp(0.5 + 0.5 * dot(N, Ldir), 0.0000001, 1.0);
419
+ let groundSky = mix(entry.vLightDirection.xyz, entry.vLightDiffuse.rgb, nl);
420
+ var baseLayerAtten: f32 = 1.0;
421
+ var baseLayerAbsorption = v3(1.0);${ccHemiBlock(useClearcoat, useCcTint)}
422
+ let H_h = normalize(V + Ldir);
423
+ let NdotH_h = clamp(dot(N, H_h), 0.0000001, 1.0);
424
+ let VdotH_h = saturate(dot(V, H_h));
425
+ let cF_h = nme_pbr_fresSchlick(VdotH_h, directSpecR0, colorF90);
426
+ ${useAnisotropy ? `let TdotH_h = dot(anisoT, H_h);
427
+ let BdotH_h = dot(anisoB, H_h);
428
+ let TdotV_h = dot(anisoT, V);
429
+ let BdotV_h = dot(anisoB, V);
430
+ let TdotL_h = dot(anisoT, Ldir);
431
+ let BdotL_h = dot(anisoB, Ldir);
432
+ let D_h = nme_pbr_burleyAnisoD(NdotH_h, TdotH_h, BdotH_h, aniAlphaTB);
433
+ let Vis_h = nme_pbr_visAnisoSmith(nl, NdotV, TdotV_h, BdotV_h, TdotL_h, BdotL_h, aniAlphaTB);
434
+ specAcc = specAcc + cF_h * D_h * Vis_h * nl * entry.vLightDiffuse.rgb * sh * baseLayerAtten * baseLayerAbsorption;` : `let D_h = nme_pbr_distGGX(NdotH_h, directAlphaG);
435
+ let G_h = nme_pbr_geomGGX(nl, NdotV, directAlphaG);
436
+ specAcc = specAcc + cF_h * D_h * G_h * nl * entry.vLightDiffuse.rgb * sh * baseLayerAtten * baseLayerAbsorption;`}
437
+ diffuseAcc = diffuseAcc + groundSky * surfaceAlbedo * sh * baseLayerAtten * baseLayerAbsorption;${shHemiBlock(useSheen)}
438
+ aggShadow = aggShadow + sh;
439
+ nLights = nLights + 1.0;
440
+ continue;
441
+ }
442
+ var L: v3;
443
+ var atten: f32 = 1.0;
444
+ let color = entry.vLightDiffuse.rgb;
445
+ if (t == 1u) {
446
+ L = normalize(-entry.vLightData.xyz);
447
+ } else {
448
+ let toL = entry.vLightData.xyz - worldPos;
449
+ let d2 = dot(toL, toL);
450
+ let dist = sqrt(d2);
451
+ L = toL / max(dist, 0.0001);
452
+ let range = entry.vLightDiffuse.a;
453
+ if (t == 2u) {
454
+ let invD2 = 1.0 / max(d2, 0.0000001);
455
+ let cosHalfAngle = entry.vLightDirection.w;
456
+ let kappa = 6.64385618977 / max(1.0 - cosHalfAngle, 0.0001);
457
+ let cd = dot(-entry.vLightDirection.xyz, L);
458
+ let dirFall = exp2(kappa * (cd - 1.0));
459
+ atten = invD2 * dirFall;
460
+ } else {
461
+ atten = 1.0 / max(d2, 0.0000001);
462
+ }
463
+ }
464
+ let NdotLUnclamped = dot(N, L);
465
+ let NdotL = clamp(NdotLUnclamped, 0.0000001, 1.0);
466
+ var baseLayerAtten: f32 = 1.0;
467
+ var baseLayerAbsorption = v3(1.0);${ccDirectBlock(useClearcoat, useCcTint)}
468
+ let _LdotV = select(0.0, dot(L, V), t == 1u);
469
+ let _eonDiffuse = nme_pbr_diffuseEON(surfaceAlbedo, 0.0, NdotL, NdotV, _LdotV);
470
+ diffuseAcc = diffuseAcc + _eonDiffuse * directDiffuseTranslucencyScale * NdotL * color * atten * sh * baseLayerAtten * baseLayerAbsorption;
471
+ if (NdotLUnclamped < 0.0 && translucencyIntensity > 0.0) {
472
+ let _trNdotL = abs(NdotLUnclamped) + 0.0000001;
473
+ let _wrapW = 0.02;
474
+ let _wrapT = 1.0 + _wrapW;
475
+ let _wrapNdotL = clamp((_trNdotL + _wrapW) / (_wrapT * _wrapT), 0.0, 1.0);
476
+ let _clampedAlbT = clamp(surfaceAlbedo, v3(0.1), v3(1.0));
477
+ let _eonTransmit = nme_pbr_diffuseEON(_clampedAlbT, 0.0, max(NdotL, 0.0000001), NdotV, _LdotV) / _clampedAlbT;
478
+ diffuseTransmissionAcc = diffuseTransmissionAcc + _eonTransmit * (ssTransmittance * _wrapNdotL) * color * atten * sh * baseLayerAtten * baseLayerAbsorption;
479
+ }
480
+ if (NdotL > 0.0 && atten > 0.0) {
481
+ let H = normalize(V + L);
482
+ let NdotH = clamp(dot(N, H), 0.0000001, 1.0);
483
+ let VdotH = saturate(dot(V, H));
484
+ let cF = nme_pbr_fresSchlick(VdotH, directSpecR0, colorF90);
485
+ ${useAnisotropy ? `let TdotH = dot(anisoT, H);
486
+ let BdotH = dot(anisoB, H);
487
+ let TdotV = dot(anisoT, V);
488
+ let BdotV = dot(anisoB, V);
489
+ let TdotL = dot(anisoT, L);
490
+ let BdotL = dot(anisoB, L);
491
+ let D = nme_pbr_burleyAnisoD(NdotH, TdotH, BdotH, aniAlphaTB);
492
+ let Vis = nme_pbr_visAnisoSmith(NdotL, NdotV, TdotV, BdotV, TdotL, BdotL, aniAlphaTB);
493
+ specAcc = specAcc + cF * D * Vis * NdotL * color * atten * sh * baseLayerAtten * baseLayerAbsorption;` : `let D = nme_pbr_distGGX(NdotH, directAlphaG);
494
+ let G = nme_pbr_geomGGX(NdotL, NdotV, directAlphaG);
495
+ specAcc = specAcc + cF * D * G * NdotL * color * atten * sh * baseLayerAtten * baseLayerAbsorption;`}
496
+ }${shDirectBlock(useSheen)}
497
+ aggShadow = aggShadow + sh;
498
+ nLights = nLights + 1.0;
499
+ }
500
+ r.diffuseDir = diffuseAcc;
501
+ r.specularDir = specAcc;
502
+ ${iblBlock}
503
+ ${useEnv ? `let _radLum = clamp(dot(finalRadianceScaled * shAlbedoScaling${useClearcoat ? ` * ccConsIBL${ccTintScale}` : ``}, v3(0.2126, 0.7152, 0.0722)), 0.0, 1.0);
504
+ let _specLum = clamp(dot(finalSpecularScaledDirect * shAlbedoScaling, v3(0.2126, 0.7152, 0.0722)), 0.0, 1.0);${useClearcoat ? `
505
+ let _ccLum = clamp(dot(ccFinalRadiance, v3(0.2126, 0.7152, 0.0722)), 0.0, 1.0);
506
+ r.lumOverAlpha = _radLum + _specLum + _ccLum;` : `
507
+ r.lumOverAlpha = _radLum + _specLum;`}` : `let _specLum = clamp(dot(specAcc, v3(0.2126, 0.7152, 0.0722)), 0.0, 1.0);
508
+ r.lumOverAlpha = _specLum;`}
509
+ var colorOut = max(r.lighting, v3(0.0)) * sceneU.vImageInfos.x;
510
+ if (sceneU.vImageInfos.w > 0.5) {
511
+ colorOut = 1.0 - exp2(-1.590579 * colorOut);
512
+ }
513
+ colorOut = pow(max(colorOut, v3(0.0)), v3(0.45454545));
514
+ colorOut = clamp(colorOut, v3(0.0), v3(1.0));
515
+ let highContrast = colorOut * colorOut * (v3(3.0) - colorOut * 2.0);
516
+ if (sceneU.vImageInfos.y < 1.0) {
517
+ colorOut = mix(v3(0.5), colorOut, sceneU.vImageInfos.y);
518
+ } else {
519
+ colorOut = mix(colorOut, highContrast, sceneU.vImageInfos.y - 1.0);
520
+ }
521
+ r.lighting = max(colorOut, v3(0.0));
522
+ if (nLights > 0.0) { r.shadow = aggShadow / nLights; } else { r.shadow = 1.0; }
523
+ return r;
524
+ }
525
+ `;
526
+ }
527
+ const HELPER_KEY_PREFIX = "nme_pbr_mr";
528
+ const SHADOW_FACTORS_ONE = `array<f32, ${MAX_LIGHTS}>(${new Array(MAX_LIGHTS).fill("1.0").join(", ")})`;
529
+ function resolveOptional(block, inputName, fallback, target, stage, state, ctx) {
530
+ const input = block.inputs.get(inputName);
531
+ if (input == null ? void 0 : input.source) {
532
+ return ctx.cast(ctx.resolve(block, inputName, stage, state), target).expr;
533
+ }
534
+ return fallback;
535
+ }
536
+ const emitter = {
537
+ className: "PBRMetallicRoughnessBlock",
538
+ stage: "fragment",
539
+ emit(block, outputName, stage, state, ctx) {
540
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
541
+ const reflectionConnected = !!((_a = block.inputs.get("reflection")) == null ? void 0 : _a.source);
542
+ if (reflectionConnected) {
543
+ state.usesEnv = true;
544
+ ctx.resolve(block, "reflection", stage, state);
545
+ }
546
+ const ccInputRef = (_b = block.inputs.get("clearcoat")) == null ? void 0 : _b.source;
547
+ let ccIntensityExpr = "0.0";
548
+ let ccRoughnessExpr = "0.0";
549
+ let ccIorExpr = "1.5";
550
+ let ccBumpExpr = "v3(0.5, 0.5, 1.0)";
551
+ let ccBumpUvExpr = "v2(0.0)";
552
+ let useCcBump = false;
553
+ let ccTintColorExpr = "v3(1.0)";
554
+ let ccTintAtDistanceExpr = "1.0";
555
+ let ccTintThicknessExpr = "0.0";
556
+ let useCcTint = false;
557
+ let useClearcoat = false;
558
+ let remapClearcoatF0 = false;
559
+ if (ccInputRef) {
560
+ const ccBlock = ctx.graph.blocks.get(ccInputRef.blockId);
561
+ if (ccBlock && ccBlock.className === "ClearCoatBlock") {
562
+ useClearcoat = true;
563
+ remapClearcoatF0 = ccBlock.serialized.remapF0OnInterfaceChange === true;
564
+ state.usesClearcoat = true;
565
+ ctx.resolveOutput(ccBlock, ccInputRef.outputName, stage, state);
566
+ ccIntensityExpr = resolveOptional(ccBlock, "intensity", "1.0", "f32", stage, state, ctx);
567
+ ccRoughnessExpr = resolveOptional(ccBlock, "roughness", "0.0", "f32", stage, state, ctx);
568
+ ccIorExpr = resolveOptional(ccBlock, "indexOfRefraction", "1.5", "f32", stage, state, ctx);
569
+ if ((_c = ccBlock.inputs.get("normalMapColor")) == null ? void 0 : _c.source) {
570
+ useCcBump = true;
571
+ ccBumpExpr = resolveOptional(ccBlock, "normalMapColor", "v3(0.5, 0.5, 1.0)", "vec3f", stage, state, ctx);
572
+ const uvIn = ccBlock.inputs.get("uv");
573
+ if (uvIn == null ? void 0 : uvIn.source) {
574
+ const e = ctx.resolve(ccBlock, "uv", stage, state);
575
+ ccBumpUvExpr = e.type === "vec2f" ? e.expr : `(${e.expr}).xy`;
576
+ }
577
+ }
578
+ if ((_d = ccBlock.inputs.get("tintColor")) == null ? void 0 : _d.source) {
579
+ useCcTint = true;
580
+ ccTintColorExpr = resolveOptional(ccBlock, "tintColor", "v3(1.0)", "vec3f", stage, state, ctx);
581
+ ccTintAtDistanceExpr = resolveOptional(ccBlock, "tintAtDistance", "1.0", "f32", stage, state, ctx);
582
+ ccTintThicknessExpr = resolveOptional(ccBlock, "tintThickness", "0.0", "f32", stage, state, ctx);
583
+ }
584
+ }
585
+ }
586
+ const shInputRef = (_e = block.inputs.get("sheen")) == null ? void 0 : _e.source;
587
+ let shIntensityExpr = "0.0";
588
+ let shColorExpr = "v3(1.0)";
589
+ let shRoughnessExpr = "0.0";
590
+ let useSheen = false;
591
+ let useShAlbedoScaling = false;
592
+ if (shInputRef) {
593
+ const shBlock = ctx.graph.blocks.get(shInputRef.blockId);
594
+ if (shBlock && shBlock.className === "SheenBlock") {
595
+ useSheen = true;
596
+ state.usesSheen = true;
597
+ useShAlbedoScaling = shBlock.serialized.albedoScaling === true;
598
+ ctx.resolveOutput(shBlock, shInputRef.outputName, stage, state);
599
+ shIntensityExpr = resolveOptional(shBlock, "intensity", "1.0", "f32", stage, state, ctx);
600
+ shColorExpr = resolveOptional(shBlock, "color", "v3(1.0)", "vec3f", stage, state, ctx);
601
+ const shrIn = shBlock.inputs.get("roughness");
602
+ shRoughnessExpr = (shrIn == null ? void 0 : shrIn.source) ? resolveOptional(shBlock, "roughness", "0.0", "f32", stage, state, ctx) : `clamp(${resolveOptional(block, "roughness", "0.5", "f32", stage, state, ctx)}, 0.0, 1.0)`;
603
+ }
604
+ }
605
+ const ssInputRef = (_f = block.inputs.get("subsurface")) == null ? void 0 : _f.source;
606
+ let useSubsurface = false;
607
+ let useRefraction = false;
608
+ let ssTintColorExpr = "v3(1.0)";
609
+ let ssThicknessExpr = "0.0";
610
+ let ssTranslucencyIntensityExpr = "0.0";
611
+ let ssDiffusionDistExpr = "v3(1.0)";
612
+ let refrIntensityExpr = "0.0";
613
+ let refrIorExpr = resolveOptional(block, "indexOfRefraction", "1.5", "f32", stage, state, ctx);
614
+ let refrTintAtDistanceExpr = "1.0";
615
+ if (ssInputRef) {
616
+ const ssBlk = ctx.graph.blocks.get(ssInputRef.blockId);
617
+ if (ssBlk && ssBlk.className === "SubSurfaceBlock") {
618
+ useSubsurface = true;
619
+ state.usesSubsurface = true;
620
+ ctx.resolveOutput(ssBlk, ssInputRef.outputName, stage, state);
621
+ ssTintColorExpr = resolveOptional(ssBlk, "tintColor", "v3(1.0)", "vec3f", stage, state, ctx);
622
+ ssThicknessExpr = resolveOptional(ssBlk, "thickness", "0.0", "f32", stage, state, ctx);
623
+ ssTranslucencyIntensityExpr = resolveOptional(ssBlk, "translucencyIntensity", "0.0", "f32", stage, state, ctx);
624
+ ssDiffusionDistExpr = resolveOptional(ssBlk, "translucencyDiffusionDist", "v3(1.0)", "vec3f", stage, state, ctx);
625
+ const refrInputRef = (_g = ssBlk.inputs.get("refraction")) == null ? void 0 : _g.source;
626
+ if (refrInputRef) {
627
+ const refrBlk = ctx.graph.blocks.get(refrInputRef.blockId);
628
+ if (refrBlk && refrBlk.className === "RefractionBlock") {
629
+ useRefraction = true;
630
+ ctx.resolveOutput(refrBlk, refrInputRef.outputName, stage, state);
631
+ refrIntensityExpr = resolveOptional(refrBlk, "intensity", "1.0", "f32", stage, state, ctx);
632
+ refrTintAtDistanceExpr = resolveOptional(refrBlk, "tintAtDistance", "1.0", "f32", stage, state, ctx);
633
+ const volIor = refrBlk.inputs.get("volumeIndexOfRefraction");
634
+ if (volIor == null ? void 0 : volIor.source) {
635
+ refrIorExpr = resolveOptional(refrBlk, "volumeIndexOfRefraction", "1.5", "f32", stage, state, ctx);
636
+ }
637
+ }
638
+ }
639
+ }
640
+ }
641
+ const aniInputRef = (_h = block.inputs.get("anisotropy")) == null ? void 0 : _h.source;
642
+ let useAnisotropy = false;
643
+ let anisoIntensityExpr = "0.0";
644
+ let anisoDirectionExpr = "v2(1.0, 0.0)";
645
+ let anisoUvExpr = "v2(0.0)";
646
+ if (aniInputRef) {
647
+ const aniBlk = ctx.graph.blocks.get(aniInputRef.blockId);
648
+ if (aniBlk && aniBlk.className === "AnisotropyBlock") {
649
+ useAnisotropy = true;
650
+ state.usesAnisotropy = true;
651
+ ctx.resolveOutput(aniBlk, aniInputRef.outputName, stage, state);
652
+ anisoIntensityExpr = resolveOptional(aniBlk, "intensity", "0.0", "f32", stage, state, ctx);
653
+ anisoDirectionExpr = resolveOptional(aniBlk, "direction", "v2(1.0, 0.0)", "vec3f", stage, state, ctx);
654
+ const dirIn = aniBlk.inputs.get("direction");
655
+ if (dirIn == null ? void 0 : dirIn.source) {
656
+ const e = ctx.resolve(aniBlk, "direction", stage, state);
657
+ anisoDirectionExpr = e.type === "vec2f" ? e.expr : `(${e.expr}).xy`;
658
+ }
659
+ const uvIn = aniBlk.inputs.get("uv");
660
+ if (uvIn == null ? void 0 : uvIn.source) {
661
+ const e = ctx.resolve(aniBlk, "uv", stage, state);
662
+ anisoUvExpr = e.type === "vec2f" ? e.expr : `(${e.expr}).xy`;
663
+ }
664
+ }
665
+ }
666
+ const iriInputRef = (_i = block.inputs.get("iridescence")) == null ? void 0 : _i.source;
667
+ let useIridescence = false;
668
+ let iriIntensityExpr = "1.0";
669
+ let iriIorExpr = "1.3";
670
+ let iriThicknessExpr = "400.0";
671
+ if (iriInputRef) {
672
+ const iriBlk = ctx.graph.blocks.get(iriInputRef.blockId);
673
+ if (iriBlk && iriBlk.className === "IridescenceBlock") {
674
+ useIridescence = true;
675
+ state.usesIridescence = true;
676
+ ctx.resolveOutput(iriBlk, iriInputRef.outputName, stage, state);
677
+ iriIntensityExpr = resolveOptional(iriBlk, "intensity", "1.0", "f32", stage, state, ctx);
678
+ iriIorExpr = resolveOptional(iriBlk, "indexOfRefraction", "1.3", "f32", stage, state, ctx);
679
+ iriThicknessExpr = resolveOptional(iriBlk, "thickness", "400.0", "f32", stage, state, ctx);
680
+ }
681
+ }
682
+ const useSpecularAA = block.serialized.enableSpecularAntiAliasing === true;
683
+ const helperKey = `${HELPER_KEY_PREFIX}_${reflectionConnected ? "env" : "noenv"}_${useClearcoat ? "cc" : "nocc"}_${remapClearcoatF0 ? "ccF0R" : "ccF0"}_${useSheen ? "sh" : "nosh"}_${useRefraction ? "refr" : "norefr"}_${useSubsurface ? "ss" : "noss"}_${useAnisotropy ? "ani" : "noani"}_${useIridescence ? "iri" : "noiri"}_${useShAlbedoScaling ? "shAS" : "noShAS"}_${useCcBump ? "ccB" : ""}_${useCcTint ? "ccT" : ""}_${useSpecularAA ? "aa" : "noaa"}`;
684
+ state.fragment.helpers.set(
685
+ helperKey,
686
+ buildPbrMrHelperFull({
687
+ useEnv: reflectionConnected,
688
+ useClearcoat,
689
+ useSheen,
690
+ useRefraction,
691
+ useSubsurface,
692
+ useAnisotropy,
693
+ useIridescence,
694
+ useShAlbedoScaling,
695
+ useCcBump,
696
+ useCcTint,
697
+ useSpecularAA,
698
+ remapClearcoatF0
699
+ })
700
+ );
701
+ state.usesLightsUbo = true;
702
+ const memoKey = `_pbrmr_${block.id}_call`;
703
+ let callVar;
704
+ const existing = state.fragment.memo.get(memoKey);
705
+ if (existing) {
706
+ callVar = existing.expr;
707
+ } else {
708
+ const wp = resolveOptional(block, "worldPosition", "v3(0.0)", "vec3f", stage, state, ctx);
709
+ const gn = resolveOptional(block, "worldNormal", "v3(0.0, 1.0, 0.0)", "vec3f", stage, state, ctx);
710
+ const perturbed = block.inputs.get("perturbedNormal");
711
+ const wn = (perturbed == null ? void 0 : perturbed.source) ? ctx.cast(ctx.resolve(block, "perturbedNormal", stage, state), "vec3f").expr : gn;
712
+ const cp = resolveOptional(block, "cameraPosition", "_NME_CAMERA_POS_", "vec3f", stage, state, ctx);
713
+ const bc = resolveOptional(block, "baseColor", "v3(1.0)", "vec3f", stage, state, ctx);
714
+ const me = resolveOptional(block, "metallic", "0.0", "f32", stage, state, ctx);
715
+ const ro = resolveOptional(block, "roughness", "0.5", "f32", stage, state, ctx);
716
+ const ao = resolveOptional(block, "ambientOcc", "1.0", "f32", stage, state, ctx);
717
+ const baseIorExpr = resolveOptional(block, "indexOfRefraction", "1.5", "f32", stage, state, ctx);
718
+ const sf = state.shadowLights.length > 0 ? `nme_computeShadowFactors(in)` : SHADOW_FACTORS_ONE;
719
+ callVar = `_pbrR${ctx.temp(state, "pbr")}`;
720
+ state.fragment.body.push(
721
+ `let ${callVar} = nme_pbr_mr_compute(${wp}, ${gn}, ${wn}, ${cp}, ${bc}, ${me}, ${ro}, ${ao}, ${ccIntensityExpr}, ${ccRoughnessExpr}, ${ccIorExpr}, ${ccBumpExpr}, ${ccBumpUvExpr}, ${ccTintColorExpr}, ${ccTintAtDistanceExpr}, ${ccTintThicknessExpr}, ${shIntensityExpr}, ${shColorExpr}, ${shRoughnessExpr}, ${baseIorExpr}, ${refrIntensityExpr}, ${refrIorExpr}, ${refrTintAtDistanceExpr}, ${ssTintColorExpr}, ${ssThicknessExpr}, ${ssTranslucencyIntensityExpr}, ${ssDiffusionDistExpr}, ${anisoIntensityExpr}, ${anisoDirectionExpr}, ${anisoUvExpr}, ${iriIntensityExpr}, ${iriIorExpr}, ${iriThicknessExpr}, ${sf});`
722
+ );
723
+ state.fragment.memo.set(memoKey, { expr: callVar, type: "vec4f" });
724
+ }
725
+ switch (outputName) {
726
+ case "lighting":
727
+ return { expr: `${callVar}.lighting`, type: "vec3f" };
728
+ case "diffuseDir":
729
+ return { expr: `${callVar}.diffuseDir`, type: "vec3f" };
730
+ case "specularDir":
731
+ return { expr: `${callVar}.specularDir`, type: "vec3f" };
732
+ case "diffuseInd":
733
+ return { expr: `${callVar}.diffuseInd`, type: "vec3f" };
734
+ case "specularInd":
735
+ return { expr: `${callVar}.specularInd`, type: "vec3f" };
736
+ case "shadow":
737
+ return { expr: `${callVar}.shadow`, type: "f32" };
738
+ case "alpha": {
739
+ const cfg = block.serialized;
740
+ const useOverAlpha = cfg.useSpecularOverAlpha === true || cfg.useRadianceOverAlpha === true;
741
+ const op = block.inputs.get("opacity");
742
+ const baseAlpha = (op == null ? void 0 : op.source) ? ctx.cast(ctx.resolve(block, "opacity", stage, state), "f32").expr : "1.0";
743
+ if (useOverAlpha) {
744
+ return { expr: `clamp(${baseAlpha} + ${callVar}.lumOverAlpha * ${callVar}.lumOverAlpha, 0.0, 1.0)`, type: "f32" };
745
+ }
746
+ return { expr: baseAlpha, type: "f32" };
747
+ }
748
+ case "ambientClr":
749
+ case "clearcoatDir":
750
+ case "clearcoatInd":
751
+ case "sheenDir":
752
+ case "sheenInd":
753
+ case "refraction":
754
+ return { expr: `v3(0.0)`, type: "vec3f" };
755
+ default:
756
+ return { expr: `${callVar}.lighting`, type: "vec3f" };
757
+ }
758
+ }
759
+ };
760
+ export {
761
+ emitter
762
+ };
763
+ //# sourceMappingURL=pbr-metallic-roughness-block-full-6vMm1Jk6.js.map