@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.
- package/_math-factory-C-QqW-Wi.js +55 -0
- package/_math-factory-C-QqW-Wi.js.map +1 -0
- package/add-block-CikX5gWy.js +6 -0
- package/add-block-CikX5gWy.js.map +1 -0
- package/alpha-test-fragment-CUiHCw7W.js +22 -0
- package/alpha-test-fragment-CUiHCw7W.js.map +1 -0
- package/ambient-occlusion-block-DForhWL3.js +77 -0
- package/ambient-occlusion-block-DForhWL3.js.map +1 -0
- package/anisotropy-block-D5fXH_OY.js +12 -0
- package/anisotropy-block-D5fXH_OY.js.map +1 -0
- package/anisotropy-fragment-HgasXS7l.js +89 -0
- package/anisotropy-fragment-HgasXS7l.js.map +1 -0
- package/arc-tan2-block-d8sWt_x0.js +12 -0
- package/arc-tan2-block-d8sWt_x0.js.map +1 -0
- package/assets/splat-sort-worker-Crg3CaCc.js.map +1 -0
- package/background-dds-skybox-yHTqabU3.js +221 -0
- package/background-dds-skybox-yHTqabU3.js.map +1 -0
- package/background-ground-DIw6D3qf.js +235 -0
- package/background-ground-DIw6D3qf.js.map +1 -0
- package/background-hdr-skybox-c4uuTmkP.js +179 -0
- package/background-hdr-skybox-c4uuTmkP.js.map +1 -0
- package/background-solid-skybox-DPGBpPbm.js +235 -0
- package/background-solid-skybox-DPGBpPbm.js.map +1 -0
- package/bake-local-matrix-Dfpd3b06.js +28 -0
- package/bake-local-matrix-Dfpd3b06.js.map +1 -0
- package/billboard-renderable-D8mlVGCd.js +242 -0
- package/billboard-renderable-D8mlVGCd.js.map +1 -0
- package/biplanar-block-DZnKuV81.js +115 -0
- package/biplanar-block-DZnKuV81.js.map +1 -0
- package/bones-block-D6IhqUVV.js +31 -0
- package/bones-block-D6IhqUVV.js.map +1 -0
- package/clamp-block-BdII67hT.js +21 -0
- package/clamp-block-BdII67hT.js.map +1 -0
- package/clearcoat-block-BGML4npi.js +12 -0
- package/clearcoat-block-BGML4npi.js.map +1 -0
- package/clearcoat-fragment-LCiG98Rf.js +256 -0
- package/clearcoat-fragment-LCiG98Rf.js.map +1 -0
- package/clip-planes-block-BPfFJrbf.js +26 -0
- package/clip-planes-block-BPfFJrbf.js.map +1 -0
- package/cloud-block-BeVrangc.js +90 -0
- package/cloud-block-BeVrangc.js.map +1 -0
- package/color-converter-block-CvwKiW4k.js +123 -0
- package/color-converter-block-CvwKiW4k.js.map +1 -0
- package/color-merger-CCu21ZII.js +57 -0
- package/color-merger-CCu21ZII.js.map +1 -0
- package/color-splitter-CGn1G4ow.js +33 -0
- package/color-splitter-CGn1G4ow.js.map +1 -0
- package/conditional-block-Cd2pbejI.js +51 -0
- package/conditional-block-Cd2pbejI.js.map +1 -0
- package/create-skeleton-C9JdIJnb.js +44 -0
- package/create-skeleton-C9JdIJnb.js.map +1 -0
- package/cross-block-DCrLwCpt.js +12 -0
- package/cross-block-DCrLwCpt.js.map +1 -0
- package/cubemap-skybox-material-DvXMVc4k.js +79 -0
- package/cubemap-skybox-material-DvXMVc4k.js.map +1 -0
- package/curve-block-BlJpXVYv.js +89 -0
- package/curve-block-BlJpXVYv.js.map +1 -0
- package/debug-block-D2pg4Yf6.js +14 -0
- package/debug-block-D2pg4Yf6.js.map +1 -0
- package/derivative-block-B8KjtaWs.js +20 -0
- package/derivative-block-B8KjtaWs.js.map +1 -0
- package/desaturate-block-C1RghNSB.js +15 -0
- package/desaturate-block-C1RghNSB.js.map +1 -0
- package/discard-block-B2jKjaEL.js +21 -0
- package/discard-block-B2jKjaEL.js.map +1 -0
- package/distance-block-3NkgFZ3f.js +16 -0
- package/distance-block-3NkgFZ3f.js.map +1 -0
- package/divide-block-ZyepIg_-.js +6 -0
- package/divide-block-ZyepIg_-.js.map +1 -0
- package/dot-block-VlfAC6cD.js +16 -0
- package/dot-block-VlfAC6cD.js.map +1 -0
- package/elbow-block-NEOiIxzO.js +10 -0
- package/elbow-block-NEOiIxzO.js.map +1 -0
- package/emissive-fragment-BnNvbBCw.js +39 -0
- package/emissive-fragment-BnNvbBCw.js.map +1 -0
- package/esm-shadow-view-DGKdF1NI.js +18 -0
- package/esm-shadow-view-DGKdF1NI.js.map +1 -0
- package/esm-shadow-view-DN9HIaM4.js +15 -0
- package/esm-shadow-view-DN9HIaM4.js.map +1 -0
- package/esm-shadow-view-Dk9NFtLq.js +15 -0
- package/esm-shadow-view-Dk9NFtLq.js.map +1 -0
- package/fog-block-DJ9hEolm.js +41 -0
- package/fog-block-DJ9hEolm.js.map +1 -0
- package/frag-coord-block-DzXfFgfV.js +25 -0
- package/frag-coord-block-DzXfFgfV.js.map +1 -0
- package/frag-depth-block-UQbeKP2D.js +34 -0
- package/frag-depth-block-UQbeKP2D.js.map +1 -0
- package/fragment-output-BOphkIeh.js +26 -0
- package/fragment-output-BOphkIeh.js.map +1 -0
- package/fresnel-block-DefHWeO-.js +20 -0
- package/fresnel-block-DefHWeO-.js.map +1 -0
- package/front-facing-0d6aiyrv.js +11 -0
- package/front-facing-0d6aiyrv.js.map +1 -0
- package/gaussian-splatting-pipeline-sh-DgJl7l56.js +500 -0
- package/gaussian-splatting-pipeline-sh-DgJl7l56.js.map +1 -0
- package/gltf-animation-D7uyTyO3.js +245 -0
- package/gltf-animation-D7uyTyO3.js.map +1 -0
- package/gltf-ext-anisotropy-CknJiJK8.js +22 -0
- package/gltf-ext-anisotropy-CknJiJK8.js.map +1 -0
- package/gltf-ext-basisu-CPg5kPrx.js +452 -0
- package/gltf-ext-basisu-CPg5kPrx.js.map +1 -0
- package/gltf-ext-clearcoat-CLH2SVph.js +31 -0
- package/gltf-ext-clearcoat-CLH2SVph.js.map +1 -0
- package/gltf-ext-dielectric-qHzlnvdl.js +105 -0
- package/gltf-ext-dielectric-qHzlnvdl.js.map +1 -0
- package/gltf-ext-emissive-strength-nzGZXZVK.js +19 -0
- package/gltf-ext-emissive-strength-nzGZXZVK.js.map +1 -0
- package/gltf-ext-iridescence-C6bq7jiM.js +26 -0
- package/gltf-ext-iridescence-C6bq7jiM.js.map +1 -0
- package/gltf-ext-node-visibility-MafA9ot2.js +25 -0
- package/gltf-ext-node-visibility-MafA9ot2.js.map +1 -0
- package/gltf-ext-orm-CT18G_vQ.js +33 -0
- package/gltf-ext-orm-CT18G_vQ.js.map +1 -0
- package/gltf-ext-quantization-CpZyLDIz.js +94 -0
- package/gltf-ext-quantization-CpZyLDIz.js.map +1 -0
- package/gltf-ext-sheen-BgIxUzyZ.js +25 -0
- package/gltf-ext-sheen-BgIxUzyZ.js.map +1 -0
- package/gltf-ext-spec-gloss-D0LJLBUM.js +24 -0
- package/gltf-ext-spec-gloss-D0LJLBUM.js.map +1 -0
- package/gltf-ext-unlit-D2ANui0V.js +16 -0
- package/gltf-ext-unlit-D2ANui0V.js.map +1 -0
- package/gltf-ext-uv-transform-CE_-T1Tr.js +38 -0
- package/gltf-ext-uv-transform-CE_-T1Tr.js.map +1 -0
- package/gltf-feature-animation-pointer-BjpwOOqo.js +88 -0
- package/gltf-feature-animation-pointer-BjpwOOqo.js.map +1 -0
- package/gltf-feature-animations-CCizegp8.js +15 -0
- package/gltf-feature-animations-CCizegp8.js.map +1 -0
- package/gltf-feature-draco-yGSMGTE3.js +124 -0
- package/gltf-feature-draco-yGSMGTE3.js.map +1 -0
- package/gltf-feature-gpu-instancing-2e_CFQnl.js +151 -0
- package/gltf-feature-gpu-instancing-2e_CFQnl.js.map +1 -0
- package/gltf-feature-lights-punctual-DDDg4j0U.js +71 -0
- package/gltf-feature-lights-punctual-DDDg4j0U.js.map +1 -0
- package/gltf-feature-meshopt-Des96YFI.js +84 -0
- package/gltf-feature-meshopt-Des96YFI.js.map +1 -0
- package/gltf-feature-morph-CKCw6tkX.js +29 -0
- package/gltf-feature-morph-CKCw6tkX.js.map +1 -0
- package/gltf-feature-skeleton-D8hWLqi2.js +36 -0
- package/gltf-feature-skeleton-D8hWLqi2.js.map +1 -0
- package/gltf-feature-variants-Ds6v9byg.js +17 -0
- package/gltf-feature-variants-Ds6v9byg.js.map +1 -0
- package/gltf-feature-xmp-BUfq_IVG.js +15 -0
- package/gltf-feature-xmp-BUfq_IVG.js.map +1 -0
- package/gltf-glb-parser-D6UZWFuC.js +27 -0
- package/gltf-glb-parser-D6UZWFuC.js.map +1 -0
- package/gltf-interleave-DGnUlz28.js +241 -0
- package/gltf-interleave-DGnUlz28.js.map +1 -0
- package/gltf-pbr-builder-ext-BFOxOCnQ.js +85 -0
- package/gltf-pbr-builder-ext-BFOxOCnQ.js.map +1 -0
- package/gltf-variants-DFbr8EES.js +88 -0
- package/gltf-variants-DFbr8EES.js.map +1 -0
- package/gradient-block-DL_60sDc.js +50 -0
- package/gradient-block-DL_60sDc.js.map +1 -0
- package/gs-picking-pipeline-DzfMASL9.js +280 -0
- package/gs-picking-pipeline-DzfMASL9.js.map +1 -0
- package/height-to-normal-block-DhPHkDFg.js +65 -0
- package/height-to-normal-block-DhPHkDFg.js.map +1 -0
- package/ibl-fragment-DqQVi8k0.js +91 -0
- package/ibl-fragment-DqQVi8k0.js.map +1 -0
- package/ibl-skybox-wgsl-DCah0kWV.js +13 -0
- package/ibl-skybox-wgsl-DCah0kWV.js.map +1 -0
- package/image-processing-block-DwrhhmuF.js +40 -0
- package/image-processing-block-DwrhhmuF.js.map +1 -0
- package/image-source-BuMJgd9-.js +17 -0
- package/image-source-BuMJgd9-.js.map +1 -0
- package/index-C8HOR2sB.js +19222 -0
- package/index-C8HOR2sB.js.map +1 -0
- package/index.d.ts +4611 -0
- package/index.js +309 -0
- package/index.js.map +1 -0
- package/input-block-DgAJBzN_.js +109 -0
- package/input-block-DgAJBzN_.js.map +1 -0
- package/instances-block-BaSSiz8m.js +12 -0
- package/instances-block-BaSSiz8m.js.map +1 -0
- package/iridescence-block-B0pRFoOU.js +67 -0
- package/iridescence-block-B0pRFoOU.js.map +1 -0
- package/iridescence-fragment-Gymp7or5.js +243 -0
- package/iridescence-fragment-Gymp7or5.js.map +1 -0
- package/length-block-ChOkeiHR.js +11 -0
- package/length-block-ChOkeiHR.js.map +1 -0
- package/lerp-block-DjI2SfmI.js +18 -0
- package/lerp-block-DjI2SfmI.js.map +1 -0
- package/light-block-B11ew7FA.js +123 -0
- package/light-block-B11ew7FA.js.map +1 -0
- package/light-information-VJbW0jbs.js +19 -0
- package/light-information-VJbW0jbs.js.map +1 -0
- package/loop-block-Bb23EOMb.js +71 -0
- package/loop-block-Bb23EOMb.js.map +1 -0
- package/manifold-AS8POaOr.js +3022 -0
- package/manifold-AS8POaOr.js.map +1 -0
- package/manifold-RCa7RkKz.js +5 -0
- package/manifold-RCa7RkKz.js.map +1 -0
- package/matrix-blocks-acWn_V6g.js +51 -0
- package/matrix-blocks-acWn_V6g.js.map +1 -0
- package/max-block-CjFgljZ7.js +6 -0
- package/max-block-CjFgljZ7.js.map +1 -0
- package/mesh-attribute-exists-block-BfK8UiSL.js +44 -0
- package/mesh-attribute-exists-block-BfK8UiSL.js.map +1 -0
- package/mesh-features-BLENkYVt.js +341 -0
- package/mesh-features-BLENkYVt.js.map +1 -0
- package/min-block-CHtBngNl.js +6 -0
- package/min-block-CHtBngNl.js.map +1 -0
- package/mod-block-Ceizv8Y7.js +6 -0
- package/mod-block-Ceizv8Y7.js.map +1 -0
- package/morph-fragment-DOVo70gP.js +59 -0
- package/morph-fragment-DOVo70gP.js.map +1 -0
- package/morph-targets-55z342ZB.js +35 -0
- package/morph-targets-55z342ZB.js.map +1 -0
- package/multilight-wgsl-BGyiIOp3.js +112 -0
- package/multilight-wgsl-BGyiIOp3.js.map +1 -0
- package/multiply-block-DaXLJ7Ud.js +6 -0
- package/multiply-block-DaXLJ7Ud.js.map +1 -0
- package/negate-block-9CSLc5pM.js +6 -0
- package/negate-block-9CSLc5pM.js.map +1 -0
- package/nlerp-block-BNK1adIb.js +21 -0
- package/nlerp-block-BNK1adIb.js.map +1 -0
- package/node-env-BPZXZzBf.js +39 -0
- package/node-env-BPZXZzBf.js.map +1 -0
- package/node-registry-DwgC4yth.js +190 -0
- package/node-registry-DwgC4yth.js.map +1 -0
- package/node-registry-extra-advanced-2DJVt67-.js +45 -0
- package/node-registry-extra-advanced-2DJVt67-.js.map +1 -0
- package/node-registry-extra-compat-Dhrw8fDQ.js +41 -0
- package/node-registry-extra-compat-Dhrw8fDQ.js.map +1 -0
- package/node-registry-extra-math-CsAHvIZo.js +49 -0
- package/node-registry-extra-math-CsAHvIZo.js.map +1 -0
- package/node-registry-extra-procedural-5pLQ3Bhz.js +45 -0
- package/node-registry-extra-procedural-5pLQ3Bhz.js.map +1 -0
- package/node-renderable-DlLIdBmd.js +269 -0
- package/node-renderable-DlLIdBmd.js.map +1 -0
- package/node-shadow-DKrcqmNg.js +122 -0
- package/node-shadow-DKrcqmNg.js.map +1 -0
- package/node-snippet-DUMm9qEO.js +22 -0
- package/node-snippet-DUMm9qEO.js.map +1 -0
- package/normal-blend-block-BfH_nBoj.js +29 -0
- package/normal-blend-block-BfH_nBoj.js.map +1 -0
- package/normal-map-fragment-DpsIXrJf.js +38 -0
- package/normal-map-fragment-DpsIXrJf.js.map +1 -0
- package/normalize-block-F2bLNj9K.js +6 -0
- package/normalize-block-F2bLNj9K.js.map +1 -0
- package/oneminus-block-BP9x4Dc3.js +6 -0
- package/oneminus-block-BP9x4Dc3.js.map +1 -0
- package/opposite-block-Cnqmm-lH.js +6 -0
- package/opposite-block-Cnqmm-lH.js.map +1 -0
- package/package.json +26 -0
- package/panner-block-BwMQq-6Y.js +13 -0
- package/panner-block-BwMQq-6Y.js.map +1 -0
- package/parse-camera-DM3oJJeT.js +23 -0
- package/parse-camera-DM3oJJeT.js.map +1 -0
- package/pbr-aces-wgsl-HpiQHGN_.js +13 -0
- package/pbr-aces-wgsl-HpiQHGN_.js.map +1 -0
- package/pbr-metallic-roughness-block-full-6vMm1Jk6.js +763 -0
- package/pbr-metallic-roughness-block-full-6vMm1Jk6.js.map +1 -0
- package/pbr-metallic-roughness-block-h_KAOZrW.js +104 -0
- package/pbr-metallic-roughness-block-h_KAOZrW.js.map +1 -0
- package/pbr-mr-helper-core-CIwm-T1G.js +237 -0
- package/pbr-mr-helper-core-CIwm-T1G.js.map +1 -0
- package/pbr-refraction-DGmMSa2v.js +17 -0
- package/pbr-refraction-DGmMSa2v.js.map +1 -0
- package/pbr-renderable-BJxUtPBb.js +961 -0
- package/pbr-renderable-BJxUtPBb.js.map +1 -0
- package/pbr-shadow-fragment-LO9SlbJj.js +14 -0
- package/pbr-shadow-fragment-LO9SlbJj.js.map +1 -0
- package/pbr-template-ext-8q7BcTDf.js +88 -0
- package/pbr-template-ext-8q7BcTDf.js.map +1 -0
- package/pbr-tracking-B3alzn91.js +31 -0
- package/pbr-tracking-B3alzn91.js.map +1 -0
- package/pbr-transmission-ext-BxW4CEGu.js +581 -0
- package/pbr-transmission-ext-BxW4CEGu.js.map +1 -0
- package/perturb-normal-0Q8EM9ig.js +39 -0
- package/perturb-normal-0Q8EM9ig.js.map +1 -0
- package/posterize-block-DfdKsbEf.js +28 -0
- package/posterize-block-DfdKsbEf.js.map +1 -0
- package/pow-block-DI5ICzhc.js +13 -0
- package/pow-block-DI5ICzhc.js.map +1 -0
- package/random-number-block-2OyRYljF.js +15 -0
- package/random-number-block-2OyRYljF.js.map +1 -0
- package/reciprocal-block-Ck3CW-j-.js +14 -0
- package/reciprocal-block-Ck3CW-j-.js.map +1 -0
- package/reflect-block-CizpzrX4.js +12 -0
- package/reflect-block-CizpzrX4.js.map +1 -0
- package/reflectance-fragment-BCrgPmrt.js +143 -0
- package/reflectance-fragment-BCrgPmrt.js.map +1 -0
- package/reflection-block-DqcwyYqr.js +12 -0
- package/reflection-block-DqcwyYqr.js.map +1 -0
- package/reflection-texture-base-block-1xmJ0HDj.js +10 -0
- package/reflection-texture-base-block-1xmJ0HDj.js.map +1 -0
- package/reflection-texture-block-C3QtzoV8.js +60 -0
- package/reflection-texture-block-C3QtzoV8.js.map +1 -0
- package/refract-block-HHiAk-7U.js +13 -0
- package/refract-block-HHiAk-7U.js.map +1 -0
- package/refraction-block-U8y6XiXs.js +11 -0
- package/refraction-block-U8y6XiXs.js.map +1 -0
- package/refraction-dispersion-wgsl-DdQCyyO1.js +16 -0
- package/refraction-dispersion-wgsl-DdQCyyO1.js.map +1 -0
- package/remap-block-DxK1W1vp.js +27 -0
- package/remap-block-DxK1W1vp.js.map +1 -0
- package/replace-color-block-1m--hiru.js +17 -0
- package/replace-color-block-1m--hiru.js.map +1 -0
- package/rgbd-decode-DCvzUYeI.js +110 -0
- package/rgbd-decode-DCvzUYeI.js.map +1 -0
- package/rotate2d-block-nEe1N2MJ.js +15 -0
- package/rotate2d-block-nEe1N2MJ.js.map +1 -0
- package/scale-block-C5Z8159G.js +13 -0
- package/scale-block-C5Z8159G.js.map +1 -0
- package/scene-material-swap-C2ykv55W.js +34 -0
- package/scene-material-swap-C2ykv55W.js.map +1 -0
- package/screen-size-block-BVNnOvE8.js +21 -0
- package/screen-size-block-BVNnOvE8.js.map +1 -0
- package/screen-space-block-CwaxdfSe.js +28 -0
- package/screen-space-block-CwaxdfSe.js.map +1 -0
- package/shader-renderable-D-6796KR.js +531 -0
- package/shader-renderable-D-6796KR.js.map +1 -0
- package/shadow-fragment-core-DHN2G6FI.js +110 -0
- package/shadow-fragment-core-DHN2G6FI.js.map +1 -0
- package/shadow-map-CQNQC-Fw.js +13 -0
- package/shadow-map-CQNQC-Fw.js.map +1 -0
- package/sheen-block-BugfJqK3.js +12 -0
- package/sheen-block-BugfJqK3.js.map +1 -0
- package/sheen-fragment-Dze2f7XJ.js +215 -0
- package/sheen-fragment-Dze2f7XJ.js.map +1 -0
- package/simplex-perlin-3d-block-CcMtofzV.js +58 -0
- package/simplex-perlin-3d-block-CcMtofzV.js.map +1 -0
- package/singlelight-directional-wgsl-CmUDZxwz.js +39 -0
- package/singlelight-directional-wgsl-CmUDZxwz.js.map +1 -0
- package/singlelight-hemispheric-wgsl-t-83IP_s.js +40 -0
- package/singlelight-hemispheric-wgsl-t-83IP_s.js.map +1 -0
- package/singlelight-point-wgsl-CLzULIYV.js +45 -0
- package/singlelight-point-wgsl-CLzULIYV.js.map +1 -0
- package/singlelight-spot-wgsl-DEEUrfVM.js +47 -0
- package/singlelight-spot-wgsl-DEEUrfVM.js.map +1 -0
- package/skeleton-fragment-B_XlFbtx.js +71 -0
- package/skeleton-fragment-B_XlFbtx.js.map +1 -0
- package/skybox-renderable-DDwzu-PT.js +92 -0
- package/skybox-renderable-DDwzu-PT.js.map +1 -0
- package/skybox.vertex-DJgi072W.js +5 -0
- package/skybox.vertex-DJgi072W.js.map +1 -0
- package/smoothstep-block-Di4t37x-.js +15 -0
- package/smoothstep-block-Di4t37x-.js.map +1 -0
- package/splat-ply-compressed-BahdBG1r.js +394 -0
- package/splat-ply-compressed-BahdBG1r.js.map +1 -0
- package/standard-renderable-GjxL9xSf.js +636 -0
- package/standard-renderable-GjxL9xSf.js.map +1 -0
- package/std-ambient-fragment-BoUsD06w.js +37 -0
- package/std-ambient-fragment-BoUsD06w.js.map +1 -0
- package/std-cube-reflection-fragment-ulqc3bsP.js +31 -0
- package/std-cube-reflection-fragment-ulqc3bsP.js.map +1 -0
- package/std-emissive-fragment-DNGj1HdQ.js +40 -0
- package/std-emissive-fragment-DNGj1HdQ.js.map +1 -0
- package/std-lightmap-fragment-Bqj89aIe.js +37 -0
- package/std-lightmap-fragment-Bqj89aIe.js.map +1 -0
- package/std-opacity-fragment-KuPh5N2Z.js +37 -0
- package/std-opacity-fragment-KuPh5N2Z.js.map +1 -0
- package/std-reflection-fragment-BA5Ghn_M.js +57 -0
- package/std-reflection-fragment-BA5Ghn_M.js.map +1 -0
- package/std-shadow-fragment-FNQfrJuC.js +8 -0
- package/std-shadow-fragment-FNQfrJuC.js.map +1 -0
- package/std-specular-fragment-CE-6scqd.js +37 -0
- package/std-specular-fragment-CE-6scqd.js.map +1 -0
- package/std-tracking-CNKZ-hJN.js +15 -0
- package/std-tracking-CNKZ-hJN.js.map +1 -0
- package/step-block-BkywzTYm.js +13 -0
- package/step-block-BkywzTYm.js.map +1 -0
- package/storage-read-block-BdzhJfln.js +25 -0
- package/storage-read-block-BdzhJfln.js.map +1 -0
- package/storage-write-block-DjLKZ0Ro.js +11 -0
- package/storage-write-block-DjLKZ0Ro.js.map +1 -0
- package/subsurface-block-CBhxT9ui.js +12 -0
- package/subsurface-block-CBhxT9ui.js.map +1 -0
- package/subsurface-fragment-liM3y2-P.js +158 -0
- package/subsurface-fragment-liM3y2-P.js.map +1 -0
- package/subtract-block-NPfKvzQP.js +6 -0
- package/subtract-block-NPfKvzQP.js.map +1 -0
- package/swapchain-overlay-DcCSFDp7.js +35 -0
- package/swapchain-overlay-DcCSFDp7.js.map +1 -0
- package/tbn-block-ByOI6Y43.js +43 -0
- package/tbn-block-ByOI6Y43.js.map +1 -0
- package/teleport-in-block-BMa17cqq.js +10 -0
- package/teleport-in-block-BMa17cqq.js.map +1 -0
- package/teleport-out-block-5AkB25H6.js +19 -0
- package/teleport-out-block-5AkB25H6.js.map +1 -0
- package/texture-block-rr21KIL_.js +70 -0
- package/texture-block-rr21KIL_.js.map +1 -0
- package/thin-instance-fragment-hsv-RyDs.js +69 -0
- package/thin-instance-fragment-hsv-RyDs.js.map +1 -0
- package/thin-instance-gpu-C9Gv_Z1w.js +62 -0
- package/thin-instance-gpu-C9Gv_Z1w.js.map +1 -0
- package/tracking-primitives-wgdBY85t.js +82 -0
- package/tracking-primitives-wgdBY85t.js.map +1 -0
- package/transform-block-DbRph9JI.js +32 -0
- package/transform-block-DbRph9JI.js.map +1 -0
- package/trigonometry-block-BYQcTHiD.js +36 -0
- package/trigonometry-block-BYQcTHiD.js.map +1 -0
- package/triplanar-block-BZHkD9hX.js +148 -0
- package/triplanar-block-BZHkD9hX.js.map +1 -0
- package/twirl-block-78WtdiBd.js +39 -0
- package/twirl-block-78WtdiBd.js.map +1 -0
- package/unlit-fragment-BIlhJpz6.js +43 -0
- package/unlit-fragment-BIlhJpz6.js.map +1 -0
- package/uv-transform-fragment-hYujGpZg.js +47 -0
- package/uv-transform-fragment-hYujGpZg.js.map +1 -0
- package/vector-merger-CrW-ONB0.js +43 -0
- package/vector-merger-CrW-ONB0.js.map +1 -0
- package/vector-splitter-BoJuHrAU.js +34 -0
- package/vector-splitter-BoJuHrAU.js.map +1 -0
- package/vertex-output-Cvft64y0.js +14 -0
- package/vertex-output-Cvft64y0.js.map +1 -0
- package/view-direction-CWVucfnT.js +12 -0
- package/view-direction-CWVucfnT.js.map +1 -0
- package/voronoi-noise-block-iNQxa_Ls.js +43 -0
- package/voronoi-noise-block-iNQxa_Ls.js.map +1 -0
- package/wave-block-CY_mk1ec.js +41 -0
- package/wave-block-CY_mk1ec.js.map +1 -0
- package/wgsl-helpers-DyzNzCeE.js +48 -0
- package/wgsl-helpers-DyzNzCeE.js.map +1 -0
- package/worley-noise-3d-block-CyR2-k4s.js +58 -0
- 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
|