@zephyr3d/scene 0.6.0 → 0.7.0
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/README.md +1 -1
- package/dist/animation/animation.js +149 -27
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +173 -73
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +65 -10
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +41 -20
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/morphtarget.js +14 -38
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +59 -22
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/proptrack.js +190 -0
- package/dist/animation/proptrack.js.map +1 -0
- package/dist/animation/rotationtrack.js +29 -11
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +29 -11
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +241 -78
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/translationtrack.js +30 -11
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/api.js +43 -0
- package/dist/app/api.js.map +1 -0
- package/dist/app/app.js +153 -0
- package/dist/app/app.js.map +1 -0
- package/dist/app/engine.js +312 -0
- package/dist/app/engine.js.map +1 -0
- package/dist/app/inputmgr.js +351 -0
- package/dist/app/inputmgr.js.map +1 -0
- package/dist/app/runtimescript.js +62 -0
- package/dist/app/runtimescript.js.map +1 -0
- package/dist/app/scriptingsystem.js +220 -0
- package/dist/app/scriptingsystem.js.map +1 -0
- package/dist/app/scriptregistry.js +432 -0
- package/dist/app/scriptregistry.js.map +1 -0
- package/dist/asset/assetmanager.js +772 -291
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +7 -43
- package/dist/asset/builtin.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +17 -93
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +8 -18
- package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +36 -42
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/helpers.js +27 -14
- package/dist/asset/loaders/gltf/helpers.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +17 -12
- package/dist/asset/loaders/hdr/hdr.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +13 -16
- package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js +51 -50
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/model.js +158 -4
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +0 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +22 -23
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/box.js.map +1 -1
- package/dist/blitter/copy.js.map +1 -1
- package/dist/blitter/gaussianblur.js +23 -23
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +141 -34
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +653 -149
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +2 -10
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +132 -59
- package/dist/camera/orbit.js.map +1 -1
- package/dist/camera/orthocamera.js +37 -12
- package/dist/camera/orthocamera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +37 -20
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +18268 -6982
- package/dist/index.js +49 -16
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +5 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmaterial.js +6 -1
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js +6 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +346 -73
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +498 -156
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +5 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js +3 -3
- package/dist/material/mixins/foliage.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +18 -5
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +6 -6
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +235 -0
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -0
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +52 -15
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +27 -9
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +16 -4
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js +134 -0
- package/dist/material/mixins/pbr/brdf.js.map +1 -0
- package/dist/material/mixins/pbr/common.js +68 -85
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +98 -83
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js +6 -2
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/particle.js +272 -0
- package/dist/material/particle.js.map +1 -0
- package/dist/material/pbrblueprint.js +186 -0
- package/dist/material/pbrblueprint.js.map +1 -0
- package/dist/material/pbrmr.js +10 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +10 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +521 -287
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/terrain-cm.js +607 -0
- package/dist/material/terrain-cm.js.map +1 -0
- package/dist/material/terrainmaterial.js +59 -54
- package/dist/material/terrainmaterial.js.map +1 -1
- package/dist/material/unlit.js +5 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +415 -0
- package/dist/material/water.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +38 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +10 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +127 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +263 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +1 -0
- package/dist/node_modules/es-module-lexer/dist/lexer.js +5 -0
- package/dist/node_modules/es-module-lexer/dist/lexer.js.map +1 -0
- package/dist/posteffect/bloom.js +39 -54
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +95 -128
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js +10 -18
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js +9 -17
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js +105 -0
- package/dist/posteffect/motionblur.js.map +1 -0
- package/dist/posteffect/posteffect.js +66 -35
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +13 -21
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +60 -100
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/taa.js +175 -0
- package/dist/posteffect/taa.js.map +1 -0
- package/dist/posteffect/tonemap.js +12 -20
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +30 -19
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +429 -101
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +7 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +43 -3
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +14 -5
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +113 -40
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js +86 -141
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +234 -0
- package/dist/render/fbm_wavegenerator.js.map +1 -0
- package/dist/render/fft_wavegenerator.js +64 -50
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/fullscreenquad.js +2 -2
- package/dist/render/fullscreenquad.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +98 -48
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +4 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +6 -3
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +19 -18
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +4 -4
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/primitive.js +213 -104
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +40 -20
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderbundle_wrapper.js +65 -15
- package/dist/render/renderbundle_wrapper.js.map +1 -1
- package/dist/render/renderer.js +326 -185
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +20 -36
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadowmap_pass.js +3 -3
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +864 -541
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +13 -15
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/batchgroup.js +18 -5
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +78 -48
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js +2 -3
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +28 -89
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +218 -87
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js +371 -162
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/particlesys.js +684 -0
- package/dist/scene/particlesys.js.map +1 -0
- package/dist/scene/raycast_visitor.js +34 -5
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +309 -85
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +675 -102
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain/grass.js +48 -49
- package/dist/scene/terrain/grass.js.map +1 -1
- package/dist/scene/terrain/heightfield.js +46 -44
- package/dist/scene/terrain/heightfield.js.map +1 -1
- package/dist/scene/terrain/patch.js +20 -29
- package/dist/scene/terrain/patch.js.map +1 -1
- package/dist/scene/terrain/quadtree.js +58 -27
- package/dist/scene/terrain/quadtree.js.map +1 -1
- package/dist/scene/terrain/terrain.js +31 -45
- package/dist/scene/terrain/terrain.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +603 -0
- package/dist/scene/terrain-cm/grass.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +160 -0
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/terrain-cm.js +533 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -0
- package/dist/scene/water.js +378 -0
- package/dist/scene/water.js.map +1 -0
- package/dist/shaders/atmosphere.js +957 -0
- package/dist/shaders/atmosphere.js.map +1 -0
- package/dist/shaders/fog.js +116 -0
- package/dist/shaders/fog.js.map +1 -0
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +217 -8
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js +8 -8
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js +87 -39
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +216 -0
- package/dist/shaders/temporal.js.map +1 -0
- package/dist/shaders/water.js +42 -20
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +31 -13
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +12 -13
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +12 -13
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +38 -0
- package/dist/shadow/shader.js.map +1 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +67 -26
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +15 -16
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +33 -16
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/box.js +181 -83
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/cylinder.js +101 -43
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +70 -29
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/shape.js +120 -17
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +78 -44
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/shapes/tetrahedron.js +256 -0
- package/dist/shapes/tetrahedron.js.map +1 -0
- package/dist/shapes/torus.js +76 -55
- package/dist/shapes/torus.js.map +1 -1
- package/dist/src/animation/animation.js +127 -0
- package/dist/src/animation/animation.js.map +1 -0
- package/dist/src/animation/animationset.js +255 -0
- package/dist/src/animation/animationset.js.map +1 -0
- package/dist/src/animation/animationtrack.js +34 -0
- package/dist/src/animation/animationtrack.js.map +1 -0
- package/dist/src/animation/eulerrotationtrack.js +52 -0
- package/dist/src/animation/eulerrotationtrack.js.map +1 -0
- package/dist/src/animation/morphtarget.js +93 -0
- package/dist/src/animation/morphtarget.js.map +1 -0
- package/dist/src/animation/morphtrack.js +70 -0
- package/dist/src/animation/morphtrack.js.map +1 -0
- package/dist/src/animation/proptrack.js +161 -0
- package/dist/src/animation/proptrack.js.map +1 -0
- package/dist/src/animation/rotationtrack.js +51 -0
- package/dist/src/animation/rotationtrack.js.map +1 -0
- package/dist/src/animation/scaletrack.js +50 -0
- package/dist/src/animation/scaletrack.js.map +1 -0
- package/dist/src/animation/skeleton.js +204 -0
- package/dist/src/animation/skeleton.js.map +1 -0
- package/dist/src/animation/translationtrack.js +50 -0
- package/dist/src/animation/translationtrack.js.map +1 -0
- package/dist/{app.js → src/app/app.js} +18 -40
- package/dist/src/app/app.js.map +1 -0
- package/dist/{input → src/app}/inputmgr.js +41 -16
- package/dist/src/app/inputmgr.js.map +1 -0
- package/dist/src/asset/assetmanager.js +404 -0
- package/dist/src/asset/assetmanager.js.map +1 -0
- package/dist/src/asset/builtin.js +337 -0
- package/dist/src/asset/builtin.js.map +1 -0
- package/dist/src/asset/loaders/dds/dds.js +470 -0
- package/dist/src/asset/loaders/dds/dds.js.map +1 -0
- package/dist/src/asset/loaders/dds/dds_loader.js +28 -0
- package/dist/src/asset/loaders/dds/dds_loader.js.map +1 -0
- package/dist/src/asset/loaders/gltf/gltf_loader.js +1265 -0
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +1 -0
- package/dist/src/asset/loaders/gltf/helpers.js +327 -0
- package/dist/src/asset/loaders/gltf/helpers.js.map +1 -0
- package/dist/src/asset/loaders/hdr/hdr.js +180 -0
- package/dist/src/asset/loaders/hdr/hdr.js.map +1 -0
- package/dist/src/asset/loaders/image/tga_Loader.js +116 -0
- package/dist/src/asset/loaders/image/tga_Loader.js.map +1 -0
- package/dist/src/asset/loaders/image/webimage_loader.js +63 -0
- package/dist/src/asset/loaders/image/webimage_loader.js.map +1 -0
- package/dist/src/asset/loaders/loader.js +45 -0
- package/dist/src/asset/loaders/loader.js.map +1 -0
- package/dist/src/asset/model.js +414 -0
- package/dist/src/asset/model.js.map +1 -0
- package/dist/{blitter/depthlimitedgaussion.js → src/blitter/bilateralblur.js} +1 -2
- package/dist/src/blitter/bilateralblur.js.map +1 -0
- package/dist/src/blitter/blitter.js +390 -0
- package/dist/src/blitter/blitter.js.map +1 -0
- package/dist/src/blitter/box.js +118 -0
- package/dist/src/blitter/box.js.map +1 -0
- package/dist/src/blitter/copy.js +22 -0
- package/dist/src/blitter/copy.js.map +1 -0
- package/dist/src/blitter/gaussianblur.js +228 -0
- package/dist/src/blitter/gaussianblur.js.map +1 -0
- package/dist/src/camera/base.js +92 -0
- package/dist/src/camera/base.js.map +1 -0
- package/dist/src/camera/camera.js +1005 -0
- package/dist/src/camera/camera.js.map +1 -0
- package/dist/src/camera/fps.js +238 -0
- package/dist/src/camera/fps.js.map +1 -0
- package/dist/src/camera/orbit.js +245 -0
- package/dist/src/camera/orbit.js.map +1 -0
- package/dist/src/camera/orthocamera.js +167 -0
- package/dist/src/camera/orthocamera.js.map +1 -0
- package/dist/src/camera/perspectivecamera.js +141 -0
- package/dist/src/camera/perspectivecamera.js.map +1 -0
- package/dist/src/index.js +120 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/material/blinn.js +81 -0
- package/dist/src/material/blinn.js.map +1 -0
- package/dist/src/material/grassmaterial.js +113 -0
- package/dist/src/material/grassmaterial.js.map +1 -0
- package/dist/src/material/lambert.js +92 -0
- package/dist/src/material/lambert.js.map +1 -0
- package/dist/src/material/material.js +301 -0
- package/dist/src/material/material.js.map +1 -0
- package/dist/src/material/meshmaterial.js +704 -0
- package/dist/src/material/meshmaterial.js.map +1 -0
- package/dist/src/material/mixins/albedocolor.js +76 -0
- package/dist/src/material/mixins/albedocolor.js.map +1 -0
- package/dist/src/material/mixins/foliage.js +47 -0
- package/dist/src/material/mixins/foliage.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/blinnphong.js +112 -0
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/lambert.js +58 -0
- package/dist/src/material/mixins/lightmodel/lambert.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +178 -0
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +139 -0
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -0
- package/dist/src/material/mixins/lit.js +476 -0
- package/dist/src/material/mixins/lit.js.map +1 -0
- package/dist/src/material/mixins/pbr/common.js +918 -0
- package/dist/src/material/mixins/pbr/common.js.map +1 -0
- package/dist/src/material/mixins/texture.js +172 -0
- package/dist/src/material/mixins/texture.js.map +1 -0
- package/dist/src/material/mixins/vertexcolor.js +56 -0
- package/dist/src/material/mixins/vertexcolor.js.map +1 -0
- package/dist/src/material/particle.js +178 -0
- package/dist/src/material/particle.js.map +1 -0
- package/dist/src/material/pbrmr.js +97 -0
- package/dist/src/material/pbrmr.js.map +1 -0
- package/dist/src/material/pbrsg.js +97 -0
- package/dist/src/material/pbrsg.js.map +1 -0
- package/dist/src/material/shader/helper.js +1209 -0
- package/dist/src/material/shader/helper.js.map +1 -0
- package/dist/src/material/terrain-cm.js +606 -0
- package/dist/src/material/terrain-cm.js.map +1 -0
- package/dist/src/material/terrainmaterial.js +375 -0
- package/dist/src/material/terrainmaterial.js.map +1 -0
- package/dist/src/material/unlit.js +41 -0
- package/dist/src/material/unlit.js.map +1 -0
- package/dist/src/material/water.js +417 -0
- package/dist/src/material/water.js.map +1 -0
- package/dist/src/posteffect/bloom.js +361 -0
- package/dist/src/posteffect/bloom.js.map +1 -0
- package/dist/src/posteffect/compositor.js +226 -0
- package/dist/src/posteffect/compositor.js.map +1 -0
- package/dist/src/posteffect/fxaa.js +273 -0
- package/dist/src/posteffect/fxaa.js.map +1 -0
- package/dist/src/posteffect/grayscale.js +69 -0
- package/dist/src/posteffect/grayscale.js.map +1 -0
- package/dist/src/posteffect/motionblur.js +96 -0
- package/dist/src/posteffect/motionblur.js.map +1 -0
- package/dist/src/posteffect/posteffect.js +126 -0
- package/dist/src/posteffect/posteffect.js.map +1 -0
- package/dist/src/posteffect/sao.js +324 -0
- package/dist/src/posteffect/sao.js.map +1 -0
- package/dist/src/posteffect/ssr.js +489 -0
- package/dist/src/posteffect/ssr.js.map +1 -0
- package/dist/src/posteffect/taa.js +172 -0
- package/dist/src/posteffect/taa.js.map +1 -0
- package/dist/src/posteffect/tonemap.js +94 -0
- package/dist/src/posteffect/tonemap.js.map +1 -0
- package/dist/src/render/abuffer_oit.js +361 -0
- package/dist/src/render/abuffer_oit.js.map +1 -0
- package/dist/src/render/clipmap.js +851 -0
- package/dist/src/render/clipmap.js.map +1 -0
- package/dist/src/render/cluster_light.js +333 -0
- package/dist/src/render/cluster_light.js.map +1 -0
- package/dist/src/render/cull_visitor.js +187 -0
- package/dist/src/render/cull_visitor.js.map +1 -0
- package/dist/src/render/depthpass.js +68 -0
- package/dist/src/render/depthpass.js.map +1 -0
- package/dist/src/render/drawable_mixin.js +227 -0
- package/dist/src/render/drawable_mixin.js.map +1 -0
- package/dist/src/render/envlight.js +463 -0
- package/dist/src/render/envlight.js.map +1 -0
- package/dist/src/render/fbm_wavegenerator.js +251 -0
- package/dist/src/render/fbm_wavegenerator.js.map +1 -0
- package/dist/src/render/fft_wavegenerator.js +1006 -0
- package/dist/src/render/fft_wavegenerator.js.map +1 -0
- package/dist/src/render/fullscreenquad.js +38 -0
- package/dist/src/render/fullscreenquad.js.map +1 -0
- package/dist/src/render/gerstner_wavegenerator.js +314 -0
- package/dist/src/render/gerstner_wavegenerator.js.map +1 -0
- package/dist/src/render/globalbindgroup_allocator.js +60 -0
- package/dist/src/render/globalbindgroup_allocator.js.map +1 -0
- package/dist/src/render/hzb.js +273 -0
- package/dist/src/render/hzb.js.map +1 -0
- package/dist/src/render/lightpass.js +172 -0
- package/dist/src/render/lightpass.js.map +1 -0
- package/dist/src/render/objectcolorpass.js +51 -0
- package/dist/src/render/objectcolorpass.js.map +1 -0
- package/dist/src/render/primitive.js +364 -0
- package/dist/src/render/primitive.js.map +1 -0
- package/dist/src/render/render_queue.js +467 -0
- package/dist/src/render/render_queue.js.map +1 -0
- package/dist/src/render/renderbundle_wrapper.js +152 -0
- package/dist/src/render/renderbundle_wrapper.js.map +1 -0
- package/dist/src/render/renderer.js +455 -0
- package/dist/src/render/renderer.js.map +1 -0
- package/dist/src/render/renderpass.js +200 -0
- package/dist/src/render/renderpass.js.map +1 -0
- package/dist/src/render/shadowmap_pass.js +56 -0
- package/dist/src/render/shadowmap_pass.js.map +1 -0
- package/dist/src/render/sky.js +1103 -0
- package/dist/src/render/sky.js.map +1 -0
- package/dist/src/render/weightedblended_oit.js +168 -0
- package/dist/src/render/weightedblended_oit.js.map +1 -0
- package/dist/src/scene/batchgroup.js +162 -0
- package/dist/src/scene/batchgroup.js.map +1 -0
- package/dist/src/scene/environment.js +209 -0
- package/dist/src/scene/environment.js.map +1 -0
- package/dist/src/scene/graph_node.js +72 -0
- package/dist/src/scene/graph_node.js.map +1 -0
- package/dist/src/scene/light.js +416 -0
- package/dist/src/scene/light.js.map +1 -0
- package/dist/src/scene/mesh.js +341 -0
- package/dist/src/scene/mesh.js.map +1 -0
- package/dist/src/scene/octree.js +649 -0
- package/dist/src/scene/octree.js.map +1 -0
- package/dist/src/scene/particlesys.js +738 -0
- package/dist/src/scene/particlesys.js.map +1 -0
- package/dist/src/scene/raycast_visitor.js +103 -0
- package/dist/src/scene/raycast_visitor.js.map +1 -0
- package/dist/src/scene/scene.js +284 -0
- package/dist/src/scene/scene.js.map +1 -0
- package/dist/src/scene/scene_node.js +732 -0
- package/dist/src/scene/scene_node.js.map +1 -0
- package/dist/src/scene/terrain/grass.js +278 -0
- package/dist/src/scene/terrain/grass.js.map +1 -0
- package/dist/src/scene/terrain/heightfield.js +475 -0
- package/dist/src/scene/terrain/heightfield.js.map +1 -0
- package/dist/src/scene/terrain/patch.js +530 -0
- package/dist/src/scene/terrain/patch.js.map +1 -0
- package/dist/src/scene/terrain/quadtree.js +461 -0
- package/dist/src/scene/terrain/quadtree.js.map +1 -0
- package/dist/src/scene/terrain/terrain.js +246 -0
- package/dist/src/scene/terrain/terrain.js.map +1 -0
- package/dist/src/scene/terrain-cm/grass.js +594 -0
- package/dist/src/scene/terrain-cm/grass.js.map +1 -0
- package/dist/src/scene/terrain-cm/grassmaterial.js +159 -0
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +1 -0
- package/dist/src/scene/terrain-cm/terrain-cm.js +538 -0
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +1 -0
- package/dist/src/scene/water.js +374 -0
- package/dist/src/scene/water.js.map +1 -0
- package/dist/src/shaders/atmosphere.js +957 -0
- package/dist/src/shaders/atmosphere.js.map +1 -0
- package/dist/src/shaders/fog.js +112 -0
- package/dist/src/shaders/fog.js.map +1 -0
- package/dist/src/shaders/misc.js +266 -0
- package/dist/src/shaders/misc.js.map +1 -0
- package/dist/src/shaders/noise.js +222 -0
- package/dist/src/shaders/noise.js.map +1 -0
- package/dist/src/shaders/pbr.js +51 -0
- package/dist/src/shaders/pbr.js.map +1 -0
- package/dist/src/shaders/shadow.js +636 -0
- package/dist/src/shaders/shadow.js.map +1 -0
- package/dist/src/shaders/ssr.js +490 -0
- package/dist/src/shaders/ssr.js.map +1 -0
- package/dist/src/shaders/temporal.js +215 -0
- package/dist/src/shaders/temporal.js.map +1 -0
- package/dist/src/shaders/water.js +756 -0
- package/dist/src/shaders/water.js.map +1 -0
- package/dist/src/shadow/esm.js +237 -0
- package/dist/src/shadow/esm.js.map +1 -0
- package/dist/src/shadow/pcf_opt.js +181 -0
- package/dist/src/shadow/pcf_opt.js.map +1 -0
- package/dist/src/shadow/pcf_pd.js +189 -0
- package/dist/src/shadow/pcf_pd.js.map +1 -0
- package/dist/src/shadow/shader.js +37 -0
- package/dist/src/shadow/shader.js.map +1 -0
- package/dist/src/shadow/shadow_impl.js +15 -0
- package/dist/src/shadow/shadow_impl.js.map +1 -0
- package/dist/src/shadow/shadowmapper.js +790 -0
- package/dist/src/shadow/shadowmapper.js.map +1 -0
- package/dist/src/shadow/ssm.js +159 -0
- package/dist/src/shadow/ssm.js.map +1 -0
- package/dist/src/shadow/vsm.js +297 -0
- package/dist/src/shadow/vsm.js.map +1 -0
- package/dist/src/shapes/box.js +386 -0
- package/dist/src/shapes/box.js.map +1 -0
- package/dist/src/shapes/cylinder.js +125 -0
- package/dist/src/shapes/cylinder.js.map +1 -0
- package/dist/src/shapes/plane.js +88 -0
- package/dist/src/shapes/plane.js.map +1 -0
- package/dist/src/shapes/shape.js +87 -0
- package/dist/src/shapes/shape.js.map +1 -0
- package/dist/src/shapes/sphere.js +114 -0
- package/dist/src/shapes/sphere.js.map +1 -0
- package/dist/src/shapes/tetrahedron.js +188 -0
- package/dist/src/shapes/tetrahedron.js.map +1 -0
- package/dist/src/shapes/torus.js +111 -0
- package/dist/src/shapes/torus.js.map +1 -0
- package/dist/src/utility/aabbtree.js +400 -0
- package/dist/src/utility/aabbtree.js.map +1 -0
- package/dist/src/utility/bounding_volume.js +29 -0
- package/dist/src/utility/bounding_volume.js.map +1 -0
- package/dist/src/utility/debug.js +28 -0
- package/dist/src/utility/debug.js.map +1 -0
- package/dist/src/utility/draco/decoder.js +116 -0
- package/dist/src/utility/draco/decoder.js.map +1 -0
- package/dist/src/utility/misc.js +105 -0
- package/dist/src/utility/misc.js.map +1 -0
- package/dist/src/utility/panorama.js +163 -0
- package/dist/src/utility/panorama.js.map +1 -0
- package/dist/src/utility/pmrem.js +354 -0
- package/dist/src/utility/pmrem.js.map +1 -0
- package/dist/src/utility/rendermipmap.js +115 -0
- package/dist/src/utility/rendermipmap.js.map +1 -0
- package/dist/src/utility/serialization/json.js +402 -0
- package/dist/src/utility/serialization/json.js.map +1 -0
- package/dist/src/utility/serialization/manager.js +623 -0
- package/dist/src/utility/serialization/manager.js.map +1 -0
- package/dist/src/utility/serialization/scene/animation.js +248 -0
- package/dist/src/utility/serialization/scene/animation.js.map +1 -0
- package/dist/src/utility/serialization/scene/batch.js +59 -0
- package/dist/src/utility/serialization/scene/batch.js.map +1 -0
- package/dist/src/utility/serialization/scene/camera.js +790 -0
- package/dist/src/utility/serialization/scene/camera.js.map +1 -0
- package/dist/src/utility/serialization/scene/common.js +222 -0
- package/dist/src/utility/serialization/scene/common.js.map +1 -0
- package/dist/src/utility/serialization/scene/light.js +575 -0
- package/dist/src/utility/serialization/scene/light.js.map +1 -0
- package/dist/src/utility/serialization/scene/material.js +1111 -0
- package/dist/src/utility/serialization/scene/material.js.map +1 -0
- package/dist/src/utility/serialization/scene/mesh.js +148 -0
- package/dist/src/utility/serialization/scene/mesh.js.map +1 -0
- package/dist/src/utility/serialization/scene/misc.js +39 -0
- package/dist/src/utility/serialization/scene/misc.js.map +1 -0
- package/dist/src/utility/serialization/scene/node.js +451 -0
- package/dist/src/utility/serialization/scene/node.js.map +1 -0
- package/dist/src/utility/serialization/scene/particle.js +425 -0
- package/dist/src/utility/serialization/scene/particle.js.map +1 -0
- package/dist/src/utility/serialization/scene/primitive.js +692 -0
- package/dist/src/utility/serialization/scene/primitive.js.map +1 -0
- package/dist/src/utility/serialization/scene/scene.js +704 -0
- package/dist/src/utility/serialization/scene/scene.js.map +1 -0
- package/dist/src/utility/serialization/scene/terrain.js +488 -0
- package/dist/src/utility/serialization/scene/terrain.js.map +1 -0
- package/dist/src/utility/serialization/scene/water.js +465 -0
- package/dist/src/utility/serialization/scene/water.js.map +1 -0
- package/dist/src/utility/shprojector.js +297 -0
- package/dist/src/utility/shprojector.js.map +1 -0
- package/dist/{material/mixins → src/utility/textures}/ggxlut.js +1 -1
- package/dist/src/utility/textures/ggxlut.js.map +1 -0
- package/dist/src/utility/textures/gradientnoise.js +62 -0
- package/dist/src/utility/textures/gradientnoise.js.map +1 -0
- package/dist/src/utility/textures/randomnoise.js +41 -0
- package/dist/src/utility/textures/randomnoise.js.map +1 -0
- package/dist/src/values.js +162 -0
- package/dist/src/values.js.map +1 -0
- package/dist/utility/aabbtree.js +15 -5
- package/dist/utility/aabbtree.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +851 -0
- package/dist/utility/blueprint/common/constants.js.map +1 -0
- package/dist/utility/blueprint/common/math.js +2045 -0
- package/dist/utility/blueprint/common/math.js.map +1 -0
- package/dist/utility/blueprint/common.js +7 -0
- package/dist/utility/blueprint/common.js.map +1 -0
- package/dist/utility/blueprint/material/common.js +7 -0
- package/dist/utility/blueprint/material/common.js.map +1 -0
- package/dist/utility/blueprint/material/func.js +521 -0
- package/dist/utility/blueprint/material/func.js.map +1 -0
- package/dist/utility/blueprint/material/inputs.js +1659 -0
- package/dist/utility/blueprint/material/inputs.js.map +1 -0
- package/dist/utility/blueprint/material/ir.js +1311 -0
- package/dist/utility/blueprint/material/ir.js.map +1 -0
- package/dist/utility/blueprint/material/pbr.js +362 -0
- package/dist/utility/blueprint/material/pbr.js.map +1 -0
- package/dist/utility/blueprint/material/texture.js +1099 -0
- package/dist/utility/blueprint/material/texture.js.map +1 -0
- package/dist/utility/blueprint/node.js +187 -0
- package/dist/utility/blueprint/node.js.map +1 -0
- package/dist/utility/bounding_volume.js +0 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/debug.js +26 -0
- package/dist/utility/debug.js.map +1 -0
- package/dist/utility/draco/decoder.js +1 -1
- package/dist/utility/draco/decoder.js.map +1 -1
- package/dist/utility/misc.js +18 -6
- package/dist/utility/misc.js.map +1 -1
- package/dist/utility/panorama.js +8 -6
- package/dist/utility/panorama.js.map +1 -1
- package/dist/utility/pmrem.js +30 -18
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/rendermipmap.js +116 -0
- package/dist/utility/rendermipmap.js.map +1 -0
- package/dist/utility/serialization/blueprint/constants.js +255 -0
- package/dist/utility/serialization/blueprint/constants.js.map +1 -0
- package/dist/utility/serialization/blueprint/material/constants.js +203 -0
- package/dist/utility/serialization/blueprint/material/constants.js.map +1 -0
- package/dist/utility/serialization/blueprint/material/texture.js +165 -0
- package/dist/utility/serialization/blueprint/material/texture.js.map +1 -0
- package/dist/utility/serialization/json.js +402 -0
- package/dist/utility/serialization/json.js.map +1 -0
- package/dist/utility/serialization/manager.js +1176 -0
- package/dist/utility/serialization/manager.js.map +1 -0
- package/dist/utility/serialization/scene/animation.js +699 -0
- package/dist/utility/serialization/scene/animation.js.map +1 -0
- package/dist/utility/serialization/scene/batch.js +53 -0
- package/dist/utility/serialization/scene/batch.js.map +1 -0
- package/dist/utility/serialization/scene/camera.js +808 -0
- package/dist/utility/serialization/scene/camera.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +224 -0
- package/dist/utility/serialization/scene/common.js.map +1 -0
- package/dist/utility/serialization/scene/light.js +589 -0
- package/dist/utility/serialization/scene/light.js.map +1 -0
- package/dist/utility/serialization/scene/material.js +942 -0
- package/dist/utility/serialization/scene/material.js.map +1 -0
- package/dist/utility/serialization/scene/mesh.js +374 -0
- package/dist/utility/serialization/scene/mesh.js.map +1 -0
- package/dist/utility/serialization/scene/misc.js +39 -0
- package/dist/utility/serialization/scene/misc.js.map +1 -0
- package/dist/utility/serialization/scene/node.js +391 -0
- package/dist/utility/serialization/scene/node.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +425 -0
- package/dist/utility/serialization/scene/particle.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +582 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -0
- package/dist/utility/serialization/scene/scene.js +763 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -0
- package/dist/utility/serialization/scene/terrain.js +495 -0
- package/dist/utility/serialization/scene/terrain.js.map +1 -0
- package/dist/utility/serialization/scene/water.js +465 -0
- package/dist/utility/serialization/scene/water.js.map +1 -0
- package/dist/utility/shprojector.js +313 -0
- package/dist/utility/shprojector.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +4 -5
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/gradientnoise.js +2 -1
- package/dist/utility/textures/gradientnoise.js.map +1 -1
- package/dist/utility/textures/randomnoise.js +1 -0
- package/dist/utility/textures/randomnoise.js.map +1 -1
- package/dist/values.js +91 -4
- package/dist/values.js.map +1 -1
- package/package.json +29 -15
- package/dist/app.js.map +0 -1
- package/dist/blitter/depthlimitedgaussion.js.map +0 -1
- package/dist/input/inputmgr.js.map +0 -1
- package/dist/material/mixins/ggxlut.js.map +0 -1
- package/dist/posteffect/water.js +0 -508
- package/dist/posteffect/water.js.map +0 -1
- package/dist/render/oit.js +0 -16
- package/dist/render/oit.js.map +0 -1
- package/dist/render/scatteringlut.js +0 -634
- package/dist/render/scatteringlut.js.map +0 -1
- package/dist/render/watermesh.js +0 -193
- package/dist/render/watermesh.js.map +0 -1
- package/dist/render/wavegenerator.js +0 -8
- package/dist/render/wavegenerator.js.map +0 -1
- package/dist/scene/xform.js +0 -247
- package/dist/scene/xform.js.map +0 -1
- package/dist/utility/shprojection.js +0 -442
- package/dist/utility/shprojection.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"helper.js","sources":["../../../src/material/shader/helper.ts"],"sourcesContent":["import { Vector2, Vector3, Vector4 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../../render/drawable';\r\nimport {\r\n MaterialVaryingFlags,\r\n MAX_CLUSTERED_LIGHTS,\r\n MORPH_ATTRIBUTE_VECTOR_COUNT,\r\n MORPH_TARGET_NORMAL,\r\n MORPH_TARGET_POSITION,\r\n MORPH_TARGET_TANGENT,\r\n MORPH_WEIGHTS_VECTOR_COUNT,\r\n RENDER_PASS_TYPE_DEPTH,\r\n RENDER_PASS_TYPE_LIGHT,\r\n RENDER_PASS_TYPE_OBJECT_COLOR,\r\n RENDER_PASS_TYPE_SHADOWMAP\r\n} from '../../values';\r\nimport type {\r\n BindGroup,\r\n PBShaderExp,\r\n PBInsideFunctionScope,\r\n StructuredBuffer,\r\n Texture2D,\r\n PBGlobalScope,\r\n BindGroupLayout\r\n} from '@zephyr3d/device';\r\nimport { ProgramBuilder } from '@zephyr3d/device';\r\nimport type { PunctualLight } from '../../scene/light';\r\nimport { decodeNormalizedFloatFromRGBA, linearToGamma } from '../../shaders/misc';\r\nimport { fetchSampler } from '../../utility/misc';\r\nimport type { AtmosphereParams } from '../../shaders';\r\nimport { getAtmosphereParamsStruct, getDefaultAtmosphereParams } from '../../shaders';\r\nimport type { HeightFogParams } from '../../shaders/fog';\r\nimport { calculateFog, getDefaultHeightFogParams, getHeightFogParamsStruct } from '../../shaders/fog';\r\nimport { getDevice } from '../../app/api';\r\n\r\nconst UNIFORM_NAME_LIGHT_BUFFER = 'Z_UniformLightBuffer';\r\nconst UNIFORM_NAME_LIGHT_INDEX_TEXTURE = 'Z_UniformLightIndexTex';\r\nconst UNIFORM_NAME_BAKED_SKY_MAP = 'Z_UniformBakedSky';\r\nconst UNIFORM_NAME_AERIALPERSPECTIVE_LUT = 'Z_UniformAerialPerspectiveLUT';\r\nconst UNIFORM_NAME_SKYDISTANTLIGHT_LUT = 'Z_UniformSkyDistantLightLUT';\r\nconst UNIFORM_NAME_SHADOW_MAP = 'Z_UniformShadowMap';\r\nconst UNIFORM_NAME_LINEAR_DEPTH_MAP = 'Z_UniformLinearDepth';\r\nconst UNIFORM_NAME_LINEAR_DEPTH_MAP_SIZE = 'Z_UniformLinearDepthSize';\r\nconst UNIFORM_NAME_SCENE_COLOR_MAP = 'Z_UniformSceneColor';\r\nconst UNIFORM_NAME_SCENE_COLOR_MAP_SIZE = 'Z_UniformSceneColorSize';\r\nconst UNIFORM_NAME_HIZ_DEPTH_MAP = 'Z_UniformHiZDepth';\r\nconst UNIFORM_NAME_HIZ_DEPTH_MAP_INFO = 'Z_UniformHiZDepthInfo';\r\nconst UNIFORM_NAME_OBJECT_COLOR = 'Z_ObjectColor';\r\nconst UNIFORM_NAME_WORLD_MATRIX = 'Z_UniformWorldMatrix';\r\nconst UNIFORM_NAME_PREV_WORLD_MATRIX = 'Z_UniformPrevWorldMatrix';\r\nconst UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME = 'Z_UniformPrevWorldMatrixFrame';\r\nconst UNIFORM_NAME_INSTANCE_DATA_STRIDE = 'Z_UniformInstanceDataStride';\r\nconst UNIFORM_NAME_INSTANCE_DATA = 'Z_UniformInstanceData';\r\nconst UNIFORM_NAME_INSTANCE_DATA_OFFSET = 'Z_UniformInstanceDataOffset';\r\nconst UNIFORM_NAME_BONE_MATRICES = 'Z_UniformBoneMatrices';\r\nconst UNIFORM_NAME_BONE_TEXTURE_SIZE = 'Z_UniformBoneTexSize';\r\nconst UNIFORM_NAME_BONE_INV_BIND_MATRIX = 'Z_UniformBoneInvBindMatrix';\r\nconst UNIFORM_NAME_MORPH_DATA = 'Z_UniformMorphData';\r\nconst UNIFORM_NAME_MORPH_INFO = 'Z_UniformMorphInfo';\r\n\r\n/**\r\n * Helper shader functions for the builtin material system\r\n * @public\r\n */\r\nexport class ShaderHelper {\r\n static readonly BILLBOARD_SPHERICAL = 1;\r\n static readonly BILLBOARD_SYLINDRAL = 2;\r\n static readonly MATERIAL_INSTANCE_DATA_OFFSET = 9;\r\n /** @internal */\r\n static defaultSunDir = Vector3.one().inplaceNormalize();\r\n /** @internal */\r\n private static readonly SKIN_MATRIX_NAME = 'Z_SkinMatrix';\r\n private static readonly SKIN_PREV_MATRIX_NAME = 'Z_PrevSkinMatrix';\r\n private static readonly SKIN_BONE_OFFSET = 'Z_boneOffset';\r\n /** @internal */\r\n private static _drawableBindGroupLayouts: Record<string, BindGroupLayout> = {};\r\n /** @internal */\r\n private static readonly _lightUniformShadow = {\r\n sunDir: new Vector3(),\r\n envLightStrength: 1,\r\n shadowCascades: 1,\r\n positionAndRange: new Vector4(),\r\n directionAndCutoff: new Vector4(),\r\n diffuseAndIntensity: new Vector4(),\r\n cascadeDistances: new Vector4(),\r\n depthBiasValues: new Vector4(),\r\n shadowCameraParams: new Vector4(),\r\n depthBiasScales: new Vector4(),\r\n shadowMatrices: new Float32Array(16 * 4)\r\n };\r\n /** @internal */\r\n private static readonly _fogUniforms = {\r\n withAerialPerspective: 0,\r\n fogType: 0,\r\n additive: 0,\r\n atmosphereParams: getDefaultAtmosphereParams(),\r\n heightFogParams: getDefaultHeightFogParams()\r\n };\r\n static getObjectColorUniformName(): string {\r\n return UNIFORM_NAME_OBJECT_COLOR;\r\n }\r\n static getWorldMatrixUniformName(): string {\r\n return UNIFORM_NAME_WORLD_MATRIX;\r\n }\r\n static getPrevWorldMatrixUniformName(): string {\r\n return UNIFORM_NAME_PREV_WORLD_MATRIX;\r\n }\r\n static getPrevWorldMatrixFrameUniformName(): string {\r\n return UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME;\r\n }\r\n static getInstanceDataUniformName(): string {\r\n return UNIFORM_NAME_INSTANCE_DATA;\r\n }\r\n static getInstanceDataOffsetUniformName(): string {\r\n return UNIFORM_NAME_INSTANCE_DATA_OFFSET;\r\n }\r\n static getInstanceDataStrideUniformName(): string {\r\n return UNIFORM_NAME_INSTANCE_DATA_STRIDE;\r\n }\r\n static getBoneMatricesUniformName(): string {\r\n return UNIFORM_NAME_BONE_MATRICES;\r\n }\r\n static getBoneTextureSizeUniformName(): string {\r\n return UNIFORM_NAME_BONE_TEXTURE_SIZE;\r\n }\r\n static getBoneInvBindMatrixUniformName(): string {\r\n return UNIFORM_NAME_BONE_INV_BIND_MATRIX;\r\n }\r\n static getMorphDataUniformName(): string {\r\n return UNIFORM_NAME_MORPH_DATA;\r\n }\r\n static getMorphInfoUniformName(): string {\r\n return UNIFORM_NAME_MORPH_INFO;\r\n }\r\n static getLightBufferUniformName(): string {\r\n return UNIFORM_NAME_LIGHT_BUFFER;\r\n }\r\n static getDrawableBindGroupLayout(skinning: boolean, morphing: boolean, instancing: boolean) {\r\n const hash = `${skinning ? 1 : 0}${morphing ? 1 : 0}${instancing ? 1 : 0}`;\r\n let bindGroupLayout = this._drawableBindGroupLayouts[hash];\r\n if (!bindGroupLayout) {\r\n const device = getDevice();\r\n const buildInfo = new ProgramBuilder(device).buildRender({\r\n vertex(pb) {\r\n ShaderHelper.vertexShaderDrawableStuff(this, skinning, morphing, instancing);\r\n pb.main(function () {});\r\n },\r\n fragment(pb) {\r\n pb.main(function () {});\r\n }\r\n });\r\n bindGroupLayout = buildInfo[2][1];\r\n this._drawableBindGroupLayouts[hash] = bindGroupLayout;\r\n }\r\n return bindGroupLayout;\r\n }\r\n /**\r\n * Prepares the fragment shader which is going to be used in our material system\r\n *\r\n * @remarks\r\n * This function will setup all nessesary uniforms acoording to the drawing context\r\n *\r\n * @param pb - The program builder\r\n * @param ctx - The drawing context\r\n */\r\n static prepareFragmentShader(pb: ProgramBuilder, ctx: DrawContext) {\r\n this.setupGlobalUniforms(pb, ctx);\r\n }\r\n /**\r\n * Prepares the vertex shader which is going to be used in our material system\r\n *\r\n * @remarks\r\n * This function will setup all nessesary uniforms according to the drawing context\r\n *\r\n * @param pb - The program builder\r\n * @param ctx - The drawing context\r\n */\r\n static prepareVertexShader(pb: ProgramBuilder, ctx: DrawContext) {\r\n this.setupGlobalUniforms(pb, ctx);\r\n this.prepareVertexShaderCommon(pb, ctx);\r\n }\r\n /** @internal */\r\n private static setupGlobalUniforms(pb: ProgramBuilder, ctx: DrawContext) {\r\n const scope = pb.getGlobalScope();\r\n const cameraStruct = pb.defineStruct([\r\n pb.vec4('position'),\r\n pb.vec4('clipPlane'),\r\n pb.mat4('viewProjectionMatrix'),\r\n pb.mat4('invViewProjectionMatrix'),\r\n pb.mat4('unjitteredVPMatrix'),\r\n pb.mat4('jitteredInvVPMatrix'),\r\n pb.mat4('viewMatrix'),\r\n pb.mat4('worldMatrix'),\r\n pb.mat4('projectionMatrix'),\r\n pb.mat4('invProjectionMatrix'),\r\n pb.vec4('params'),\r\n ...(ctx.motionVectors && ctx.renderPass.type === RENDER_PASS_TYPE_DEPTH\r\n ? [pb.mat4('prevUnjitteredVPMatrix')]\r\n : []),\r\n pb.vec2('renderSize'),\r\n pb.vec2('jitterValue'),\r\n pb.float('roughnessFactor'),\r\n pb.float('frameDeltaTime'),\r\n pb.float('elapsedTime'),\r\n pb.int('framestamp')\r\n ]);\r\n if (ctx.renderPass.type === RENDER_PASS_TYPE_SHADOWMAP) {\r\n const lightStruct = pb.defineStruct([\r\n pb.vec4('positionAndRange'),\r\n pb.vec4('directionCutoff'),\r\n pb.mat4('viewMatrix'),\r\n pb.vec4('depthBias'),\r\n pb.int('lightType')\r\n ]);\r\n scope.camera = cameraStruct().uniform(0);\r\n scope.light = lightStruct().uniform(0);\r\n } else if (\r\n ctx.renderPass.type === RENDER_PASS_TYPE_DEPTH ||\r\n ctx.renderPass.type === RENDER_PASS_TYPE_OBJECT_COLOR\r\n ) {\r\n scope.camera = cameraStruct().uniform(0);\r\n } else if (ctx.renderPass.type === RENDER_PASS_TYPE_LIGHT) {\r\n const useClusteredLighting = !ctx.currentShadowLight;\r\n if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG) {\r\n const fogStructMembers: PBShaderExp[] = [\r\n pb.int('withAerialPerspective'),\r\n pb.int('fogType'),\r\n pb.int('additive'),\r\n getAtmosphereParamsStruct(pb)('atmosphereParams'),\r\n getHeightFogParamsStruct(pb)('heightFogParams')\r\n ];\r\n const fogStruct = pb.defineStruct(fogStructMembers);\r\n scope.fog = fogStruct().uniform(0);\r\n scope[UNIFORM_NAME_AERIALPERSPECTIVE_LUT] = pb.tex2D().uniform(0);\r\n scope[UNIFORM_NAME_SKYDISTANTLIGHT_LUT] = pb.tex2D().uniform(0);\r\n }\r\n const lightStruct = ctx.currentShadowLight\r\n ? pb.defineStruct([\r\n pb.vec3('sunDir'),\r\n pb.int('shadowCascades'),\r\n pb.vec4('positionAndRange'),\r\n pb.vec4('directionAndCutoff'),\r\n pb.vec4('diffuseAndIntensity'),\r\n pb.vec4('cascadeDistances'),\r\n pb.vec4('depthBiasValues'),\r\n pb.vec4('shadowCameraParams'),\r\n pb.vec4('depthBiasScales'),\r\n pb.vec4[16]('shadowMatrices'),\r\n pb.float('envLightStrength')\r\n ])\r\n : pb.defineStruct([\r\n pb.vec3('sunDir'),\r\n pb.float('envLightStrength'),\r\n pb.vec4('clusterParams'),\r\n pb.ivec4('countParams'),\r\n pb.ivec2('lightIndexTexSize')\r\n ]);\r\n scope.camera = cameraStruct().uniform(0);\r\n scope.light = lightStruct().uniform(0);\r\n if (useClusteredLighting) {\r\n scope[UNIFORM_NAME_LIGHT_BUFFER] = pb.vec4[(MAX_CLUSTERED_LIGHTS + 1) * 3]().uniformBuffer(0);\r\n scope[UNIFORM_NAME_LIGHT_INDEX_TEXTURE] = (\r\n pb.getDevice().type === 'webgl' ? pb.tex2D() : pb.utex2D()\r\n ).uniform(0);\r\n }\r\n scope[UNIFORM_NAME_BAKED_SKY_MAP] = pb.texCube().uniform(0);\r\n if (ctx.currentShadowLight) {\r\n const scope = pb.getGlobalScope();\r\n const shadowMapParams = ctx.shadowMapInfo.get(ctx.currentShadowLight);\r\n const tex = shadowMapParams.shadowMap.isTextureCube()\r\n ? shadowMapParams.shadowMap.isDepth()\r\n ? scope.$builder.texCubeShadow()\r\n : scope.$builder.texCube()\r\n : shadowMapParams.shadowMap.isTexture2D()\r\n ? shadowMapParams.shadowMap.isDepth()\r\n ? scope.$builder.tex2DShadow()\r\n : scope.$builder.tex2D()\r\n : shadowMapParams.shadowMap.isDepth()\r\n ? scope.$builder.tex2DArrayShadow()\r\n : scope.$builder.tex2DArray();\r\n if (\r\n !shadowMapParams.shadowMap.isDepth() &&\r\n !ctx.device.getDeviceCaps().textureCaps.getTextureFormatInfo(shadowMapParams.shadowMap.format)\r\n .filterable\r\n ) {\r\n tex.sampleType('unfilterable-float');\r\n }\r\n scope[UNIFORM_NAME_SHADOW_MAP] = tex.uniform(0);\r\n }\r\n if (ctx.drawEnvLight) {\r\n ctx.env.light.envLight.initShaderBindings(pb);\r\n }\r\n if (ctx.linearDepthTexture) {\r\n scope[UNIFORM_NAME_LINEAR_DEPTH_MAP] = pb.tex2D().uniform(0);\r\n scope[UNIFORM_NAME_LINEAR_DEPTH_MAP_SIZE] = pb.vec2().uniform(0);\r\n }\r\n if (ctx.sceneColorTexture) {\r\n scope[UNIFORM_NAME_SCENE_COLOR_MAP] = pb.tex2D().uniform(0);\r\n scope[UNIFORM_NAME_SCENE_COLOR_MAP_SIZE] = pb.vec2().uniform(0);\r\n }\r\n if (ctx.HiZTexture) {\r\n scope[UNIFORM_NAME_HIZ_DEPTH_MAP] = pb.tex2D().uniform(0);\r\n scope[UNIFORM_NAME_HIZ_DEPTH_MAP_INFO] = pb.vec4().uniform(0);\r\n }\r\n }\r\n }\r\n /**\r\n * This function checks if the shader needs to process skeletal animation.\r\n *\r\n * @param scope - Current shader scope\r\n *\r\n * @returns true if the shader needs to process skeletal animation, otherwise false.\r\n */\r\n static hasSkinning(scope: PBInsideFunctionScope): boolean {\r\n return !!scope[UNIFORM_NAME_BONE_MATRICES];\r\n }\r\n /**\r\n * This function checks if the shader needs to process morph target animation.\r\n *\r\n * @param scope - Current shader scope\r\n *\r\n * @returns true if the shader needs to process morph target animation, otherwise false.\r\n */\r\n static hasMorphing(scope: PBInsideFunctionScope): boolean {\r\n return !!scope[UNIFORM_NAME_MORPH_DATA];\r\n }\r\n /**\r\n * Calculate skinning matrix for current vertex\r\n *\r\n * @param scope - Current shader scope\r\n *\r\n * @returns Skinning matrix for current vertex, or null if there is not skeletal animation\r\n */\r\n static calculateSkinMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n if (!this.hasSkinning(scope)) {\r\n return null;\r\n }\r\n const pb = scope.$builder;\r\n const funcNameGetBoneMatrixFromTexture = 'Z_getBoneMatrixFromTexture';\r\n pb.func(funcNameGetBoneMatrixFromTexture, [pb.int('boneIndex')], function () {\r\n const boneTexture = this[UNIFORM_NAME_BONE_MATRICES];\r\n this.$l.uvOffsets = pb.textureSampleLevel(\r\n boneTexture,\r\n pb.div(pb.vec2(0.5), this[UNIFORM_NAME_BONE_TEXTURE_SIZE]),\r\n 0\r\n );\r\n this.$l.currentOffset = pb.int(this.uvOffsets.x);\r\n this.$l.w = this[UNIFORM_NAME_BONE_TEXTURE_SIZE].x;\r\n this.$l.pixelIndex = pb.float(pb.mul(pb.add(this.boneIndex, this.currentOffset), 4));\r\n this.$l.xIndex = pb.mod(this.pixelIndex, this.w);\r\n this.$l.yIndex = pb.floor(pb.div(this.pixelIndex, this.w));\r\n this.$l.u1 = pb.div(pb.add(this.xIndex, 0.5), this.w);\r\n this.$l.u2 = pb.div(pb.add(this.xIndex, 1.5), this.w);\r\n this.$l.u3 = pb.div(pb.add(this.xIndex, 2.5), this.w);\r\n this.$l.u4 = pb.div(pb.add(this.xIndex, 3.5), this.w);\r\n this.$l.v = pb.div(pb.add(this.yIndex, 0.5), this.w);\r\n this.$l.row1 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u1, this.v), 0);\r\n this.$l.row2 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u2, this.v), 0);\r\n this.$l.row3 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u3, this.v), 0);\r\n this.$l.row4 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u4, this.v), 0);\r\n this.$return(pb.mat4(this.row1, this.row2, this.row3, this.row4));\r\n });\r\n const funcNameGetSkinningMatrix = 'Z_getSkinningMatrix';\r\n pb.func(funcNameGetSkinningMatrix, [], function () {\r\n const invBindMatrix = this[UNIFORM_NAME_BONE_INV_BIND_MATRIX];\r\n const blendIndices = scope.$getVertexAttrib('blendIndices');\r\n const blendWeights = scope.$getVertexAttrib('blendWeights');\r\n this.$l.m0 = scope.$g[funcNameGetBoneMatrixFromTexture](pb.int(blendIndices[0]));\r\n this.$l.m1 = scope.$g[funcNameGetBoneMatrixFromTexture](pb.int(blendIndices[1]));\r\n this.$l.m2 = scope.$g[funcNameGetBoneMatrixFromTexture](pb.int(blendIndices[2]));\r\n this.$l.m3 = scope.$g[funcNameGetBoneMatrixFromTexture](pb.int(blendIndices[3]));\r\n this.$l.m = pb.add(\r\n pb.mul(this.m0, blendWeights.x),\r\n pb.mul(this.m1, blendWeights.y),\r\n pb.mul(this.m2, blendWeights.z),\r\n pb.mul(this.m3, blendWeights.w)\r\n );\r\n this.$return(pb.mul(invBindMatrix, this.m));\r\n });\r\n return scope.$g[funcNameGetSkinningMatrix]();\r\n }\r\n static calculateMorphDelta(scope: PBInsideFunctionScope, attrib: number): PBShaderExp {\r\n const pb = scope.$builder;\r\n const isWebGL1 = pb.getDevice().type === 'webgl';\r\n if (pb.shaderKind !== 'vertex') {\r\n throw new Error(`ShaderHelper.calculateMorphDelta(): must be called at vertex stage`);\r\n }\r\n const funcName = 'Z_calculateMorph';\r\n const that = this;\r\n pb.func(funcName, [pb.int('offset')], function () {\r\n this.$if(pb.lessThan(this.offset, 0), function () {\r\n this.$return(pb.vec4(0));\r\n });\r\n this.$l.vertexIndex = isWebGL1\r\n ? pb.int(scope.$inputs.zFakeVertexID)\r\n : pb.int(scope.$builtins.vertexIndex);\r\n const morphInfo = scope[that.getMorphInfoUniformName()];\r\n this.$l.metaData = pb.ivec4(morphInfo[0]);\r\n this.$l.texWidth = pb.float(this.metaData.x);\r\n this.$l.texHeight = pb.float(this.metaData.y);\r\n this.$l.numVertices = this.metaData.z;\r\n this.$l.numTargets = this.metaData.w;\r\n this.$l.value = pb.vec4(0);\r\n if (isWebGL1) {\r\n this.$for(pb.int('i'), 0, MORPH_WEIGHTS_VECTOR_COUNT, function () {\r\n this.$for(pb.int('j'), 0, 4, function () {\r\n this.$l.index = pb.add(pb.mul(this.i, 4), this.j);\r\n this.$if(pb.greaterThanEqual(this.index, this.numTargets), function () {\r\n this.$return(this.value);\r\n });\r\n this.$l.weight = morphInfo.at(pb.add(1, this.i)).at(this.j);\r\n this.$l.pixelIndex = pb.float(\r\n pb.add(this.offset, pb.mul(this.index, this.numVertices), this.vertexIndex)\r\n );\r\n this.$l.xIndex = pb.mod(this.pixelIndex, this.texWidth);\r\n this.$l.yIndex = pb.floor(pb.div(this.pixelIndex, this.texWidth));\r\n this.$l.u = pb.div(pb.add(this.xIndex, 0.5), this.texWidth);\r\n this.$l.v = pb.div(pb.add(this.yIndex, 0.5), this.texHeight);\r\n this.$l.morphValue = pb.textureSampleLevel(\r\n this[that.getMorphDataUniformName()],\r\n pb.vec2(this.u, this.v),\r\n 0\r\n );\r\n this.value = pb.add(this.value, pb.mul(this.morphValue, this.weight));\r\n });\r\n });\r\n } else {\r\n this.$for(pb.int('t'), 0, this.numTargets, function () {\r\n this.$l.i = pb.sar(this.t, 2);\r\n this.$l.j = pb.compAnd(this.t, 3);\r\n this.$l.weight = morphInfo.at(pb.add(1, this.i)).at(this.j);\r\n this.$l.pixelIndex = pb.float(\r\n pb.add(this.offset, pb.mul(this.t, this.numVertices), this.vertexIndex)\r\n );\r\n this.$l.xIndex = pb.mod(this.pixelIndex, this.texWidth);\r\n this.$l.yIndex = pb.floor(pb.div(this.pixelIndex, this.texWidth));\r\n this.$l.u = pb.div(pb.add(this.xIndex, 0.5), this.texWidth);\r\n this.$l.v = pb.div(pb.add(this.yIndex, 0.5), this.texHeight);\r\n this.$l.morphValue = pb.textureSampleLevel(\r\n this[that.getMorphDataUniformName()],\r\n pb.vec2(this.u, this.v),\r\n 0\r\n );\r\n this.value = pb.add(this.value, pb.mul(this.morphValue, this.weight));\r\n });\r\n }\r\n this.$return(this.value);\r\n });\r\n const pos = 1 + MORPH_WEIGHTS_VECTOR_COUNT + (attrib >> 2);\r\n const comp = attrib & 3;\r\n const offset = scope[this.getMorphInfoUniformName()][pos][comp];\r\n return scope[funcName](pb.int(offset));\r\n }\r\n /** @internal */\r\n static prepareSkinAnimation(scope: PBInsideFunctionScope) {\r\n if (!this.hasSkinning(scope)) {\r\n return;\r\n }\r\n const that = this;\r\n const pb = scope.$builder;\r\n const funcNameGetBoneMatrixFromTexture = 'Z_getBoneMatrixFromTexture';\r\n pb.func(funcNameGetBoneMatrixFromTexture, [pb.float('boneIndex'), pb.float('boneOffset')], function () {\r\n const boneTexture = this[UNIFORM_NAME_BONE_MATRICES];\r\n this.$l.w = this[UNIFORM_NAME_BONE_TEXTURE_SIZE].x;\r\n this.$l.pixelIndex = pb.mul(pb.add(this.boneIndex, this.boneOffset), 4);\r\n this.$l.xIndex = pb.mod(this.pixelIndex, this.w);\r\n this.$l.yIndex = pb.floor(pb.div(this.pixelIndex, this.w));\r\n this.$l.u1 = pb.div(pb.add(this.xIndex, 0.5), this.w);\r\n this.$l.u2 = pb.div(pb.add(this.xIndex, 1.5), this.w);\r\n this.$l.u3 = pb.div(pb.add(this.xIndex, 2.5), this.w);\r\n this.$l.u4 = pb.div(pb.add(this.xIndex, 3.5), this.w);\r\n this.$l.v = pb.div(pb.add(this.yIndex, 0.5), this.w);\r\n this.$l.row1 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u1, this.v), 0);\r\n this.$l.row2 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u2, this.v), 0);\r\n this.$l.row3 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u3, this.v), 0);\r\n this.$l.row4 = pb.textureSampleLevel(boneTexture, pb.vec2(this.u4, this.v), 0);\r\n this.$return(pb.mat4(this.row1, this.row2, this.row3, this.row4));\r\n });\r\n const funcNameGetSkinningMatrix = 'Z_getSkinningMatrix';\r\n pb.func(funcNameGetSkinningMatrix, [pb.float('boneOffset')], function () {\r\n const invBindMatrix = this[UNIFORM_NAME_BONE_INV_BIND_MATRIX];\r\n const blendIndices = scope.$getVertexAttrib('blendIndices');\r\n const blendWeights = scope.$getVertexAttrib('blendWeights');\r\n this.$l.m0 = scope.$g[funcNameGetBoneMatrixFromTexture](blendIndices[0], this.boneOffset);\r\n this.$l.m1 = scope.$g[funcNameGetBoneMatrixFromTexture](blendIndices[1], this.boneOffset);\r\n this.$l.m2 = scope.$g[funcNameGetBoneMatrixFromTexture](blendIndices[2], this.boneOffset);\r\n this.$l.m3 = scope.$g[funcNameGetBoneMatrixFromTexture](blendIndices[3], this.boneOffset);\r\n this.$l.m = pb.add(\r\n pb.mul(this.m0, blendWeights.x),\r\n pb.mul(this.m1, blendWeights.y),\r\n pb.mul(this.m2, blendWeights.z),\r\n pb.mul(this.m3, blendWeights.w)\r\n );\r\n this.$return(pb.mul(invBindMatrix, this.m));\r\n });\r\n const motionVector = !!this.getUnjitteredViewProjectionMatrix(scope);\r\n const boneTexture = scope[UNIFORM_NAME_BONE_MATRICES];\r\n scope.$l[that.SKIN_BONE_OFFSET] = pb.textureSampleLevel(\r\n boneTexture,\r\n pb.div(pb.vec2(0.5), scope[UNIFORM_NAME_BONE_TEXTURE_SIZE]),\r\n 0\r\n ).xy;\r\n scope.$l[that.SKIN_MATRIX_NAME] = scope[funcNameGetSkinningMatrix](scope[that.SKIN_BONE_OFFSET].x);\r\n if (motionVector) {\r\n scope.$l[that.SKIN_PREV_MATRIX_NAME] = scope[funcNameGetSkinningMatrix](scope[that.SKIN_BONE_OFFSET].y);\r\n }\r\n }\r\n /**\r\n * Calculates the vertex position of type vec3 in object space\r\n *\r\n * @param scope - Current shader scope\r\n * @param skinMatrix - The skinning matrix if there is skeletal animation, otherwise null\r\n * @returns The calculated vertex position in object space, or null if pos is null\r\n */\r\n static resolveVertexPosition(scope: PBInsideFunctionScope): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind !== 'vertex') {\r\n throw new Error(`ShaderHelper.resolveVertexPosition(): must be called at vertex stage`);\r\n }\r\n if (!pb.getGlobalScope().$getVertexAttrib('position')) {\r\n pb.getGlobalScope().$inputs.Z_pos = pb.vec3().attrib('position');\r\n }\r\n const that = this;\r\n const params =\r\n scope[that.SKIN_MATRIX_NAME] && scope[that.SKIN_PREV_MATRIX_NAME]\r\n ? [pb.mat4('skinMatrix'), pb.mat4('prevSkinMatrix')]\r\n : scope[that.SKIN_MATRIX_NAME]\r\n ? [pb.mat4('skinMatrix')]\r\n : [];\r\n pb.func('Z_resolveVertexPosition', params, function () {\r\n this.$l.opos = this.$getVertexAttrib('position').xyz;\r\n if (that.hasMorphing(scope)) {\r\n this.opos = pb.add(this.opos, that.calculateMorphDelta(this, MORPH_TARGET_POSITION).xyz);\r\n }\r\n if (this.skinMatrix) {\r\n this.$l.pos = pb.mul(this.skinMatrix, pb.vec4(this.opos, 1)).xyz;\r\n } else {\r\n this.$l.pos = this.opos;\r\n }\r\n const prevUnjitteredVPMatrix = that.getPrevUnjitteredViewProjectionMatrix(this);\r\n if (prevUnjitteredVPMatrix) {\r\n this.$l.unjitteredVPMatrix = that.getUnjitteredViewProjectionMatrix(this);\r\n this.$l.worldPos = pb.mul(that.getWorldMatrix(this), pb.vec4(this.pos, 1));\r\n if (this.prevSkinMatrix) {\r\n this.$l.prevWorldPos = pb.mul(\r\n that.getPrevWorldMatrix(this),\r\n pb.mul(this.prevSkinMatrix, pb.vec4(this.opos, 1))\r\n );\r\n } else {\r\n this.$l.prevWorldPos = pb.mul(that.getPrevWorldMatrix(this), pb.vec4(this.pos, 1));\r\n }\r\n this.$outputs.zMotionVectorPosCurrent = pb.mul(this.unjitteredVPMatrix, this.worldPos);\r\n this.$outputs.zMotionVectorPosPrev = pb.mul(prevUnjitteredVPMatrix, this.prevWorldPos);\r\n }\r\n this.$return(this.pos);\r\n });\r\n return scope[that.SKIN_MATRIX_NAME] && scope[that.SKIN_PREV_MATRIX_NAME]\r\n ? scope.Z_resolveVertexPosition(scope[that.SKIN_MATRIX_NAME], scope[that.SKIN_PREV_MATRIX_NAME])\r\n : scope[that.SKIN_MATRIX_NAME]\r\n ? scope.Z_resolveVertexPosition(scope[that.SKIN_MATRIX_NAME])\r\n : scope.Z_resolveVertexPosition();\r\n }\r\n /**\r\n * Resolve motion vector\r\n *\r\n * @param scope - Current shader scope\r\n * @param worldPos - Current object position in world space\r\n * @param prevWorldPos - Previous object position in world space\r\n */\r\n static resolveMotionVector(scope: PBInsideFunctionScope, worldPos: PBShaderExp, prevWorldPos: PBShaderExp) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n const prevUnjitteredVPMatrix = that.getPrevUnjitteredViewProjectionMatrix(scope);\r\n if (prevUnjitteredVPMatrix) {\r\n const unjitteredVPMatrix = that.getUnjitteredViewProjectionMatrix(scope);\r\n scope.$outputs.zMotionVectorPosCurrent = pb.mul(unjitteredVPMatrix, pb.vec4(worldPos.xyz, 1));\r\n scope.$outputs.zMotionVectorPosPrev = pb.mul(prevUnjitteredVPMatrix, pb.vec4(prevWorldPos.xyz, 1));\r\n }\r\n }\r\n /**\r\n * Calculates the normal vector of type vec3 in object space\r\n *\r\n * @param scope - Current shader scope\r\n * @param normal - Vertex normal input, must be type of vec3, null if no vertex normal input\r\n * @param skinMatrix - The skinning matrix if there is skeletal animation, otherwise null\r\n * @returns The calculated normal vector in object space, or null if normal is null\r\n */\r\n static resolveVertexNormal(scope: PBInsideFunctionScope, normal?: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind !== 'vertex') {\r\n throw new Error(`ShaderHelper.resolveVertexNormal(): must be called in vertex stage`);\r\n }\r\n const funcScope = pb.getCurrentFunctionScope();\r\n if (!funcScope || !funcScope.$isMain()) {\r\n throw new Error(`ShaderHelper.resolveVertexNormal(): must be called at entry function`);\r\n }\r\n if (!normal) {\r\n if (!scope.$getVertexAttrib('normal')) {\r\n scope.$inputs.Z_normal = pb.vec3().attrib('normal');\r\n }\r\n normal = scope.$getVertexAttrib('normal');\r\n }\r\n if (this.hasMorphing(scope)) {\r\n normal = pb.normalize(pb.add(normal, this.calculateMorphDelta(scope, MORPH_TARGET_NORMAL).xyz));\r\n }\r\n if (scope[this.SKIN_MATRIX_NAME]) {\r\n return pb.mul(scope[this.SKIN_MATRIX_NAME], pb.vec4(normal, 0)).xyz;\r\n } else {\r\n return normal;\r\n }\r\n }\r\n /**\r\n * Calculates the tangent vector of type vec3 in object space\r\n *\r\n * @param scope - Current shader scope\r\n * @param tangent - Vertex tangent input, must be type of vec4, null if no vertex tangent input\r\n * @param skinMatrix - The skinning matrix if there is skeletal animation, otherwise null\r\n * @returns The calculated tangent vector of type vec4 in object space, or null if tangent is null\r\n */\r\n static resolveVertexTangent(scope: PBInsideFunctionScope, tangent?: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind !== 'vertex') {\r\n throw new Error(`ShaderHelper.resolveVertexTangent(): must be called in vertex stage`);\r\n }\r\n const funcScope = pb.getCurrentFunctionScope();\r\n if (!funcScope || !funcScope.$isMain()) {\r\n throw new Error(`ShaderHelper.resolveVertexTangent(): must be called at entry function`);\r\n }\r\n if (!tangent) {\r\n if (!scope.$getVertexAttrib('tangent')) {\r\n scope.$inputs.Z_tangent = pb.vec4().attrib('tangent');\r\n }\r\n tangent = scope.$getVertexAttrib('tangent');\r\n }\r\n if (this.hasMorphing(scope)) {\r\n tangent = pb.normalize(\r\n pb.add(tangent, pb.vec4(this.calculateMorphDelta(scope, MORPH_TARGET_TANGENT).xyz, 0))\r\n );\r\n }\r\n if (scope[this.SKIN_MATRIX_NAME]) {\r\n return pb.vec4(pb.mul(scope[this.SKIN_MATRIX_NAME], pb.vec4(tangent.xyz, 0)).xyz, tangent.w);\r\n } else {\r\n return tangent;\r\n }\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the world matrix of current object to be drawn\r\n * @param scope - Current shader scope\r\n * @returns The world matrix of current object to be drawn\r\n */\r\n static getWorldMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n const pb = scope.$builder;\r\n return (\r\n scope[UNIFORM_NAME_WORLD_MATRIX] ??\r\n pb.mat4(\r\n this.getInstancedUniform(scope, 0),\r\n this.getInstancedUniform(scope, 1),\r\n this.getInstancedUniform(scope, 2),\r\n this.getInstancedUniform(scope, 3)\r\n )\r\n );\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the world matrix at previous frame of current object to be drawn\r\n * @param scope - Current shader scope\r\n * @returns The world matrix at previous frame of current object to be drawn\r\n */\r\n static getPrevWorldMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const framestamp = this.getFramestamp(scope);\r\n if (scope[UNIFORM_NAME_WORLD_MATRIX]) {\r\n if (pb.getDevice().type === 'webgpu') {\r\n pb.func('Z_getPrevWorldMatrix', [pb.int('framestamp')], function () {\r\n this.$if(pb.equal(this.framestamp, this[UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME]), function () {\r\n this.$return(this[UNIFORM_NAME_PREV_WORLD_MATRIX]);\r\n }).$else(function () {\r\n this.$return(this[UNIFORM_NAME_WORLD_MATRIX]);\r\n });\r\n });\r\n return scope.Z_getPrevWorldMatrix(framestamp);\r\n } else {\r\n return scope.$choice(\r\n pb.equal(framestamp, scope[UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME]),\r\n scope[UNIFORM_NAME_PREV_WORLD_MATRIX],\r\n scope[UNIFORM_NAME_WORLD_MATRIX]\r\n );\r\n }\r\n } else {\r\n pb.func('Z_getPrevWorldMatrix', [pb.int('framestamp')], function () {\r\n this.$l.prevFrame = pb.floatBitsToInt(that.getInstancedUniform(this, 4).x);\r\n this.$l.index = this.$choice(pb.equal(this.framestamp, this.prevFrame), pb.int(5), pb.int(0));\r\n this.$return(\r\n pb.mat4(\r\n that.getInstancedUniform(scope, this.index),\r\n that.getInstancedUniform(scope, pb.add(this.index, 1)),\r\n that.getInstancedUniform(scope, pb.add(this.index, 2)),\r\n that.getInstancedUniform(scope, pb.add(this.index, 3))\r\n )\r\n );\r\n });\r\n return scope.Z_getPrevWorldMatrix(framestamp);\r\n }\r\n }\r\n /**\r\n * Gets the instance uniform value of type vec4 by uniform index\r\n * @param scope - Current shader scope\r\n * @returns instance uniform value\r\n */\r\n static getInstancedUniform(scope: PBInsideFunctionScope, uniformIndex: number): PBShaderExp {\r\n const pb = scope.$builder;\r\n return scope[UNIFORM_NAME_INSTANCE_DATA].at(\r\n pb.add(\r\n pb.mul(scope[UNIFORM_NAME_INSTANCE_DATA_STRIDE], pb.uint(scope.$builtins.instanceIndex)),\r\n scope[UNIFORM_NAME_INSTANCE_DATA_OFFSET],\r\n pb.uint(uniformIndex)\r\n )\r\n );\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the normal matrix of current object to be drawn\r\n *\r\n * @param scope - Current shader scope\r\n * @returns The normal matrix of current object to be drawn\r\n */\r\n static getNormalMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return this.getWorldMatrix(scope);\r\n }\r\n /**\r\n * Vertex shader drawable stuff\r\n *\r\n * @param scope - Current shader scope\r\n * @param skinning - true if skinning is used, otherwise false.\r\n * @param instanced - true if instancing is used, otherwise false.\r\n */\r\n static vertexShaderDrawableStuff(\r\n scope: PBGlobalScope,\r\n skinning: boolean,\r\n morphing: boolean,\r\n instanced: boolean\r\n ): void {\r\n const pb = scope.$builder;\r\n if (instanced) {\r\n scope[UNIFORM_NAME_INSTANCE_DATA_STRIDE] = pb.uint().uniform(1);\r\n scope[UNIFORM_NAME_INSTANCE_DATA_OFFSET] = pb.uint().uniform(1);\r\n scope[UNIFORM_NAME_INSTANCE_DATA] = pb.vec4[65536 >> 4]().uniformBuffer(3);\r\n } else {\r\n scope[UNIFORM_NAME_WORLD_MATRIX] = pb.mat4().uniform(1);\r\n scope[UNIFORM_NAME_PREV_WORLD_MATRIX] = pb.mat4().uniform(1);\r\n scope[UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME] = pb.int().uniform(1);\r\n scope[UNIFORM_NAME_OBJECT_COLOR] = pb.vec4().uniform(1);\r\n }\r\n if (skinning) {\r\n scope[UNIFORM_NAME_BONE_MATRICES] = pb.tex2D().uniform(1).sampleType('unfilterable-float');\r\n scope[UNIFORM_NAME_BONE_INV_BIND_MATRIX] = pb.mat4().uniform(1);\r\n scope[UNIFORM_NAME_BONE_TEXTURE_SIZE] = pb.vec2().uniform(1);\r\n }\r\n if (morphing) {\r\n scope[UNIFORM_NAME_MORPH_DATA] = pb.tex2D().uniform(1).sampleType('unfilterable-float');\r\n scope[UNIFORM_NAME_MORPH_INFO] =\r\n pb.vec4[1 + MORPH_WEIGHTS_VECTOR_COUNT + MORPH_ATTRIBUTE_VECTOR_COUNT]().uniformBuffer(1);\r\n }\r\n }\r\n /** @internal */\r\n static prepareVertexShaderCommon(pb: ProgramBuilder, ctx: DrawContext) {\r\n this.vertexShaderDrawableStuff(\r\n pb.getGlobalScope(),\r\n !!(ctx.materialFlags & MaterialVaryingFlags.SKIN_ANIMATION),\r\n !!(ctx.materialFlags & MaterialVaryingFlags.MORPH_ANIMATION),\r\n !!(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)\r\n );\r\n }\r\n /** @internal */\r\n static setCameraUniforms(bindGroup: BindGroup, ctx: DrawContext, linear: boolean) {\r\n const pos = ctx.camera.getWorldPosition();\r\n const useJitter =\r\n ctx.motionVectors &&\r\n ctx.renderPass.type !== RENDER_PASS_TYPE_SHADOWMAP &&\r\n ctx.renderPass.type !== RENDER_PASS_TYPE_OBJECT_COLOR;\r\n const cameraStruct = {\r\n position: new Vector4(pos.x, pos.y, pos.z, ctx.camera.clipPlane ? 1 : 0),\r\n clipPlane: ctx.camera.clipPlane ?? Vector4.zero(),\r\n renderSize: new Vector2(ctx.renderWidth, ctx.renderHeight),\r\n viewProjectionMatrix: useJitter ? ctx.camera.jitteredVPMatrix : ctx.camera.viewProjectionMatrix,\r\n unjitteredVPMatrix: ctx.camera.viewProjectionMatrix,\r\n jitteredInvVPMatrix: useJitter ? ctx.camera.jitteredInvVPMatrix : ctx.camera.invViewProjectionMatrix,\r\n jitterValue: ctx.camera.jitterValue,\r\n invViewProjectionMatrix: ctx.camera.invViewProjectionMatrix,\r\n projectionMatrix: ctx.camera.getProjectionMatrix(),\r\n invProjectionMatrix: ctx.camera.getInvProjectionMatrix(),\r\n viewMatrix: ctx.camera.viewMatrix,\r\n worldMatrix: ctx.camera.worldMatrix,\r\n params: new Vector4(\r\n ctx.camera.getNearPlane(),\r\n ctx.camera.getFarPlane(),\r\n ctx.flip ? -1 : 1,\r\n linear ? 0 : 1\r\n ),\r\n roughnessFactor: ctx.camera.SSR ? ctx.camera.ssrRoughnessFactor : 1,\r\n frameDeltaTime: getDevice().frameInfo.elapsedFrame * 0.001,\r\n elapsedTime: getDevice().frameInfo.elapsedOverall * 0.001,\r\n framestamp: getDevice().frameInfo.frameCounter\r\n } as any;\r\n if (ctx.motionVectors && ctx.renderPass.type === RENDER_PASS_TYPE_DEPTH) {\r\n cameraStruct.prevUnjitteredVPMatrix = ctx.camera.prevVPMatrix;\r\n }\r\n if (ctx.renderPass.type === RENDER_PASS_TYPE_LIGHT) {\r\n if (ctx.linearDepthTexture) {\r\n bindGroup.setTexture(UNIFORM_NAME_LINEAR_DEPTH_MAP, ctx.linearDepthTexture);\r\n bindGroup.setValue(\r\n UNIFORM_NAME_LINEAR_DEPTH_MAP_SIZE,\r\n new Vector2(ctx.linearDepthTexture.width, ctx.linearDepthTexture.height)\r\n );\r\n }\r\n if (ctx.sceneColorTexture) {\r\n bindGroup.setTexture(UNIFORM_NAME_SCENE_COLOR_MAP, ctx.sceneColorTexture);\r\n bindGroup.setValue(\r\n UNIFORM_NAME_SCENE_COLOR_MAP_SIZE,\r\n new Vector2(ctx.sceneColorTexture.width, ctx.sceneColorTexture.height)\r\n );\r\n }\r\n if (ctx.HiZTexture) {\r\n bindGroup.setTexture(UNIFORM_NAME_HIZ_DEPTH_MAP, ctx.HiZTexture, fetchSampler('clamp_nearest'));\r\n bindGroup.setValue(\r\n UNIFORM_NAME_HIZ_DEPTH_MAP_INFO,\r\n new Vector4(ctx.HiZTexture.width, ctx.HiZTexture.height, ctx.HiZTexture.mipLevelCount, 0)\r\n );\r\n }\r\n }\r\n bindGroup.setValue('camera', cameraStruct);\r\n }\r\n /** @internal */\r\n static setLightUniformsShadowMap(bindGroup: BindGroup, ctx: DrawContext, light: PunctualLight) {\r\n if (light) {\r\n const shadowMapParams = ctx.shadowMapInfo.get(light);\r\n bindGroup.setValue('light', {\r\n positionAndRange: light.positionAndRange,\r\n directionCutoff: light.directionAndCutoff,\r\n viewMatrix: light.viewMatrix,\r\n depthBias: shadowMapParams.depthBiasValues[0],\r\n lightType: light.lightType\r\n });\r\n }\r\n }\r\n /** @internal */\r\n static setFogUniforms(\r\n bindGroup: BindGroup,\r\n withAerialPerspective: number,\r\n fogType: number,\r\n additive: number,\r\n atmosphereParams: AtmosphereParams,\r\n heightFogParams: HeightFogParams,\r\n aerialPerspectiveLUT: Texture2D,\r\n skyDistantLightLUT: Texture2D\r\n ) {\r\n this._fogUniforms.withAerialPerspective = withAerialPerspective;\r\n this._fogUniforms.fogType = fogType;\r\n this._fogUniforms.additive = additive;\r\n this._fogUniforms.atmosphereParams = atmosphereParams;\r\n this._fogUniforms.heightFogParams = heightFogParams;\r\n bindGroup.setValue('fog', this._fogUniforms);\r\n bindGroup.setTexture(UNIFORM_NAME_AERIALPERSPECTIVE_LUT, aerialPerspectiveLUT);\r\n bindGroup.setTexture(UNIFORM_NAME_SKYDISTANTLIGHT_LUT, skyDistantLightLUT);\r\n }\r\n /** @internal */\r\n static setLightUniforms(\r\n bindGroup: BindGroup,\r\n ctx: DrawContext,\r\n clusterParams: Float32Array<ArrayBuffer>,\r\n countParams: Int32Array<ArrayBuffer>,\r\n lightBuffer: StructuredBuffer,\r\n lightIndexTexture: Texture2D\r\n ) {\r\n bindGroup.setValue('light', {\r\n sunDir: ctx.sunLight ? ctx.sunLight.directionAndCutoff.xyz().scaleBy(-1) : this.defaultSunDir,\r\n clusterParams: clusterParams,\r\n countParams: countParams,\r\n envLightStrength: ctx.env.light.strength ?? 0,\r\n lightIndexTexSize: new Int32Array([lightIndexTexture.width, lightIndexTexture.height])\r\n });\r\n bindGroup.setBuffer(UNIFORM_NAME_LIGHT_BUFFER, lightBuffer);\r\n bindGroup.setTexture(UNIFORM_NAME_LIGHT_INDEX_TEXTURE, lightIndexTexture);\r\n bindGroup.setTexture(UNIFORM_NAME_BAKED_SKY_MAP, ctx.scene.env.sky.getBakedSkyTexture(ctx));\r\n if (ctx.drawEnvLight) {\r\n ctx.env.light.envLight.updateBindGroup(bindGroup);\r\n }\r\n }\r\n /** @internal */\r\n static setLightUniformsShadow(bindGroup: BindGroup, ctx: DrawContext, light: PunctualLight) {\r\n const shadowMapParams = ctx.shadowMapInfo.get(light);\r\n this._lightUniformShadow.sunDir = ctx.sunLight\r\n ? ctx.sunLight.directionAndCutoff.xyz().scaleBy(-1)\r\n : this.defaultSunDir;\r\n this._lightUniformShadow.envLightStrength = ctx.env?.light.strength ?? 0;\r\n this._lightUniformShadow.shadowCascades = shadowMapParams.numShadowCascades;\r\n this._lightUniformShadow.positionAndRange.set(light.positionAndRange);\r\n this._lightUniformShadow.directionAndCutoff.set(light.directionAndCutoff);\r\n this._lightUniformShadow.diffuseAndIntensity.set(light.diffuseAndIntensity);\r\n this._lightUniformShadow.cascadeDistances.set(shadowMapParams.cascadeDistances);\r\n this._lightUniformShadow.depthBiasValues.set(shadowMapParams.depthBiasValues[0]);\r\n this._lightUniformShadow.shadowCameraParams.set(shadowMapParams.cameraParams);\r\n this._lightUniformShadow.depthBiasScales.set(shadowMapParams.depthBiasScales);\r\n this._lightUniformShadow.shadowMatrices.set(shadowMapParams.shadowMatrices);\r\n bindGroup.setValue('light', this._lightUniformShadow);\r\n bindGroup.setTexture(\r\n UNIFORM_NAME_SHADOW_MAP,\r\n shadowMapParams.shadowMap,\r\n shadowMapParams.shadowMapSampler\r\n );\r\n bindGroup.setTexture(UNIFORM_NAME_BAKED_SKY_MAP, ctx.scene.env.sky.getBakedSkyTexture(ctx));\r\n if (ctx.drawEnvLight) {\r\n ctx.env.light.envLight.updateBindGroup(bindGroup);\r\n }\r\n }\r\n /**\r\n * Gets the uniform variable of type float which holds the strength of the environment light\r\n *\r\n * @remarks\r\n * This function can only be used in the fragment shader\r\n *\r\n * @param scope - Current shader scope\r\n * @returns The uniform variable of which presents the strength of the environment light\r\n */\r\n static getEnvLightStrength(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.envLightStrength;\r\n }\r\n /**\r\n * Gets current scene color texture\r\n * @param scope - Current shader scope\r\n * @returns current scene color texture\r\n */\r\n static getSceneColorTexture(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_SCENE_COLOR_MAP];\r\n }\r\n /**\r\n * Gets the size of current scene color texture\r\n * @param scope - Current shader scope\r\n * @returns The size of current scene color texture\r\n */\r\n static getSceneColorTextureSize(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_SCENE_COLOR_MAP_SIZE];\r\n }\r\n /**\r\n * Gets current linear depth texture\r\n * @param scope - Current shader scope\r\n * @returns current linear depth texture\r\n */\r\n static getLinearDepthTexture(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_LINEAR_DEPTH_MAP];\r\n }\r\n /**\r\n * Gets the size of current linear depth texture\r\n * @param scope - Current shader scope\r\n * @returns The size of current linear depth texture\r\n */\r\n static getLinearDepthTextureSize(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_LINEAR_DEPTH_MAP_SIZE];\r\n }\r\n /**\r\n * Gets current HiZ depth texture\r\n * @param scope - Current shader scope\r\n * @returns current HiZ depth texture\r\n */\r\n static getHiZDepthTexture(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_HIZ_DEPTH_MAP];\r\n }\r\n /**\r\n * Gets the size of current HiZ depth texture\r\n * @param scope - Current shader scope\r\n * @returns The size of current HiZ depth texture\r\n */\r\n static getHiZDepthTextureSize(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_HIZ_DEPTH_MAP_INFO].xy;\r\n }\r\n /**\r\n * Gets the mipmap levels count of current HiZ depth texture\r\n * @param scope - Current shader scope\r\n * @returns The mipmap levels count of current HiZ depth texture\r\n */\r\n static getHiZDepthTextureMipLevelCount(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_HIZ_DEPTH_MAP_INFO].z;\r\n }\r\n /**\r\n * Gets current baked skybox texture\r\n * @param scope - Current shader scope\r\n * @returns current baked skybox texture\r\n */\r\n static getBakedSkyTexture(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_BAKED_SKY_MAP];\r\n }\r\n /**\r\n * Gets the elapsed time in seconds\r\n * @param scope - Current shader scope\r\n * @returns The elapsed time in seconds\r\n */\r\n static getElapsedTime(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.elapsedTime;\r\n }\r\n /**\r\n * Gets the elapsed time since last frame in seconds\r\n * @param scope - Current shader scope\r\n * @returns The elapsed time since last frame in seconds\r\n */\r\n static getElapsedTimeFrame(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.frameDeltaTime;\r\n }\r\n /**\r\n * Gets the uniform variable of type vec3 which holds the camera position\r\n * @param scope - Current shader scope\r\n * @returns The camera position\r\n */\r\n static getCameraPosition(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.position.xyz;\r\n }\r\n /**\r\n * Gets the uniform variable of type float which holds the roughness factor\r\n * @param scope - Current shader scope\r\n * @returns The roughness factor\r\n */\r\n static getCameraRoughnessFactor(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.roughnessFactor;\r\n }\r\n /**\r\n * Gets framebuffer size for rendering\r\n * @param scope - Current shader scope\r\n * @returns The roughness factor\r\n */\r\n static getRenderSize(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.renderSize;\r\n }\r\n /**\r\n * Gets the uniform variable of type uint which holds the framestamp\r\n * @param scope - Current shader scope\r\n * @returns The framestamp\r\n */\r\n static getFramestamp(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.framestamp;\r\n }\r\n /**\r\n * Discard the fragment if it was clipped by the clip plane\r\n * @param scope - Current shader scope\r\n */\r\n static discardIfClipped(scope: PBInsideFunctionScope, worldPos: PBShaderExp) {\r\n const funcName = 'Z_discardIfClippped';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(funcName, [pb.vec3('worldPos')], function () {\r\n this.$if(pb.notEqual(that.getCameraClipPlaneFlag(this), 0), function () {\r\n this.$l.clipPlane = that.getCameraClipPlane(this);\r\n this.$if(\r\n pb.greaterThan(pb.add(pb.dot(this.worldPos.xyz, this.clipPlane.xyz), this.clipPlane.w), 0),\r\n function () {\r\n pb.discard();\r\n }\r\n );\r\n });\r\n });\r\n pb.getGlobalScope()[funcName](worldPos);\r\n }\r\n /**\r\n * Gets the clip plane flag\r\n * @param scope - Current shader scope\r\n * @returns A float value of 1 indices the clip plane presents, otherwise 0\r\n */\r\n static getCameraClipPlaneFlag(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.position.w;\r\n }\r\n /**\r\n * Gets the clip plane\r\n * @param scope - Current shader scope\r\n * @returns A vec4 presents the clip plane\r\n */\r\n static getCameraClipPlane(scope: PBInsideFunctionScope) {\r\n return scope.camera.clipPlane;\r\n }\r\n /**\r\n * Gets the uniform variable of type vec4 which holds the camera parameters\r\n * @param scope - Current shader scope\r\n * @returns The camera parameters\r\n */\r\n static getCameraParams(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.params;\r\n }\r\n /** @internal */\r\n static getClusterParams(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.clusterParams;\r\n }\r\n /** @internal */\r\n static getCountParams(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.countParams;\r\n }\r\n /** @internal */\r\n static getClusteredLightIndexTexture(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_LIGHT_INDEX_TEXTURE];\r\n }\r\n /**\r\n * Gets the uniform variable that contains atmosphere parameters\r\n * @param scope - Current shader scope\r\n * @returns The atmosphere parameters\r\n */\r\n static getAtmosphereParams(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.fog.atmosphereParams;\r\n }\r\n /**\r\n * Gets the aerial perspective LUT\r\n * @param scope - Current shader scope\r\n * @returns The aerial perspective LUT texture\r\n */\r\n static getAerialPerspectiveLUT(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_AERIALPERSPECTIVE_LUT];\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the view projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The view projection matrix of current camera\r\n */\r\n static getViewProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.viewProjectionMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the inversed view projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The inversed view projection matrix of current camera\r\n */\r\n static getInvViewProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.invViewProjectionMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The projection matrix of current camera\r\n */\r\n static getProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.projectionMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the inversed projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The inversed projection matrix of current camera\r\n */\r\n static getInvProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.invProjectionMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the unjittered view projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The unjittered view projection matrix of current camera\r\n */\r\n static getUnjitteredViewProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.unjitteredVPMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type vec2 which holds the jitter value of the projection matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The jitter value of projection matrix of current camera\r\n */\r\n static getProjectionMatrixJitterValue(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.jitterValue;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the jittered inversed view-projection matrix\r\n * @param scope - Current shader scope\r\n * @returns The jittered inversed view-projection matrix\r\n */\r\n static getJitteredInvVPMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.jitteredInvVPMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the unjittered view projection at previous frame matrix of current camera\r\n * @param scope - Current shader scope\r\n * @returns The unjittered view projection matrix at previous frame of current camera\r\n */\r\n static getPrevUnjitteredViewProjectionMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.prevUnjitteredVPMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the view matrix of current camera (world space to camera space)\r\n * @param scope - Current shader scope\r\n * @returns The view matrix of current camera\r\n */\r\n static getViewMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.viewMatrix;\r\n }\r\n /**\r\n * Gets the uniform variable of type mat4 which holds the inv-view matrix of current camera (camera space to world space)\r\n * @param scope - Current shader scope\r\n * @returns The inv-view matrix of current camera\r\n */\r\n static getInvViewMatrix(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.camera.worldMatrix;\r\n }\r\n /** @internal */\r\n static getCascadeDistances(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.cascadeDistances;\r\n }\r\n /** @internal */\r\n static getDepthBiasValues(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.depthBiasValues;\r\n }\r\n /** @internal */\r\n static getShadowCameraParams(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.shadowCameraParams;\r\n }\r\n /** @internal */\r\n static getDepthBiasScales(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.depthBiasScales;\r\n }\r\n /** @internal */\r\n static getNumLights(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.numLights;\r\n }\r\n /** @internal */\r\n static getSunLightDir(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.sunDir;\r\n }\r\n /** @internal */\r\n static getLightTypeForShadow(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.lightType;\r\n }\r\n /** @internal */\r\n static getLightPositionAndRangeForShadow(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.positionAndRange;\r\n }\r\n /** @internal */\r\n static getLightViewMatrixForShadow(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope.light.viewMatrix;\r\n }\r\n /** @internal */\r\n static calculateShadowSpaceVertex(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n cascade: PBShaderExp | number = 0\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (typeof cascade === 'number') {\r\n return pb.vec4(\r\n pb.dot(scope.light.shadowMatrices.at(cascade * 4 + 0), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(cascade * 4 + 1), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(cascade * 4 + 2), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(cascade * 4 + 3), worldPos)\r\n );\r\n } else {\r\n return pb.vec4(\r\n pb.dot(scope.light.shadowMatrices.at(pb.add(pb.mul(cascade, 4), 0)), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(pb.add(pb.mul(cascade, 4), 1)), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(pb.add(pb.mul(cascade, 4), 2)), worldPos),\r\n pb.dot(scope.light.shadowMatrices.at(pb.add(pb.mul(cascade, 4), 3)), worldPos)\r\n );\r\n }\r\n }\r\n /** @internal */\r\n static getLightPositionAndRange(\r\n scope: PBInsideFunctionScope,\r\n lightIndex: PBShaderExp | number\r\n ): PBShaderExp {\r\n return scope[UNIFORM_NAME_LIGHT_BUFFER].at(scope.$builder.mul(lightIndex, 3));\r\n }\r\n /** @internal */\r\n static getLightDirectionAndCutoff(\r\n scope: PBInsideFunctionScope,\r\n lightIndex: PBShaderExp | number\r\n ): PBShaderExp {\r\n return scope[UNIFORM_NAME_LIGHT_BUFFER].at(scope.$builder.add(scope.$builder.mul(lightIndex, 3), 1));\r\n }\r\n /** @internal */\r\n static getLightColorAndIntensity(\r\n scope: PBInsideFunctionScope,\r\n lightIndex: PBShaderExp | number\r\n ): PBShaderExp {\r\n return scope[UNIFORM_NAME_LIGHT_BUFFER].at(scope.$builder.add(scope.$builder.mul(lightIndex, 3), 2));\r\n }\r\n /**\r\n * Sets the clip space position in vertex shader\r\n *\r\n * @remarks\r\n * Use this function instead of using\r\n * <pre>\r\n * // Do not use this\r\n * this.$builtins.position = some_value;\r\n * // Use this\r\n * ShaderFramework.setClipSpacePosition(some_value);\r\n * </pre>,\r\n *\r\n * @param scope - Current shader scope\r\n * @param pos - The clip space position to be set\r\n */\r\n static setClipSpacePosition(scope: PBInsideFunctionScope, pos: PBShaderExp): void {\r\n const pb = scope.$builder;\r\n const cameraParams = this.getCameraParams(scope);\r\n if (cameraParams) {\r\n scope.$builtins.position = pb.mul(pos, pb.vec4(1, cameraParams.z, 1, 1));\r\n } else {\r\n scope.$builtins.position = pos;\r\n }\r\n }\r\n /**\r\n * Get shadow map uniform value\r\n *\r\n * @param scope - Shader scope\r\n * @returns The shadow map texture uniform\r\n */\r\n static getShadowMap(scope: PBInsideFunctionScope): PBShaderExp {\r\n return scope[UNIFORM_NAME_SHADOW_MAP];\r\n }\r\n /**\r\n * Calculates shadow of current fragment\r\n *\r\n * @param scope - Shader scope\r\n * @param NoL - NdotL vector\r\n * @returns Shadow of current fragment, 1 means no shadow and 0 means full shadowed.\r\n */\r\n static calculateShadow(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n NoL: PBShaderExp,\r\n ctx: DrawContext\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const shadowMapParams = ctx.shadowMapInfo.get(ctx.currentShadowLight);\r\n const funcName = 'Z_calculateShadow';\r\n pb.func(funcName, [pb.vec3('worldPos'), pb.float('NoL')], function () {\r\n if (shadowMapParams.numShadowCascades > 1) {\r\n this.$l.shadowCascades = this.light.shadowCascades;\r\n this.$l.shadowBound = pb.vec4(0, 0, 1, 1);\r\n this.$l.linearDepth = that.nonLinearDepthToLinear(this, this.$builtins.fragCoord.z);\r\n this.$l.splitDistances = that.getCascadeDistances(this);\r\n this.$l.comparison = pb.vec4(pb.greaterThan(pb.vec4(this.linearDepth), this.splitDistances));\r\n this.$l.cascadeFlags = pb.vec4(\r\n pb.float(pb.greaterThan(this.shadowCascades, 0)),\r\n pb.float(pb.greaterThan(this.shadowCascades, 1)),\r\n pb.float(pb.greaterThan(this.shadowCascades, 2)),\r\n pb.float(pb.greaterThan(this.shadowCascades, 3))\r\n );\r\n this.$l.split = pb.int(pb.dot(this.comparison, this.cascadeFlags));\r\n if (ctx.device.type === 'webgl') {\r\n this.$l.shadowVertex = pb.vec4();\r\n this.$for(pb.int('cascade'), 0, 4, function () {\r\n this.$if(pb.equal(this.cascade, this.split), function () {\r\n this.shadowVertex = that.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1),\r\n this.cascade\r\n );\r\n this.$break();\r\n });\r\n });\r\n } else {\r\n this.$l.shadowVertex = that.calculateShadowSpaceVertex(this, pb.vec4(this.worldPos, 1), this.split);\r\n }\r\n const shadowMapParams = ctx.shadowMapInfo.get(ctx.currentShadowLight);\r\n this.$l.shadow = shadowMapParams.impl.computeShadowCSM(\r\n shadowMapParams,\r\n this,\r\n this.shadowVertex,\r\n this.NoL,\r\n this.split\r\n );\r\n this.$l.shadowDistance = that.getShadowCameraParams(scope).w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(that.getCameraPosition(this), this.worldPos)\r\n )\r\n );\r\n this.$return(this.shadow);\r\n } else {\r\n this.$l.shadowVertex = that.calculateShadowSpaceVertex(this, pb.vec4(this.worldPos, 1));\r\n const shadowMapParams = ctx.shadowMapInfo.get(ctx.currentShadowLight);\r\n this.$l.shadow = shadowMapParams.impl.computeShadow(\r\n shadowMapParams,\r\n this,\r\n this.shadowVertex,\r\n this.NoL\r\n );\r\n this.$l.shadowDistance = that.getShadowCameraParams(scope).w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(that.getCameraPosition(this), this.worldPos)\r\n )\r\n );\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcName](worldPos, NoL);\r\n }\r\n static applyFog(scope: PBInsideFunctionScope, worldPos: PBShaderExp, color: PBShaderExp, ctx: DrawContext) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG) {\r\n const funcName = 'Z_applyFog';\r\n pb.func(funcName, [pb.vec3('worldPos'), pb.vec4('color').inout()], function () {\r\n this.$l.uv = pb.div(pb.vec2(this.$builtins.fragCoord.xy), that.getRenderSize(this));\r\n this.$l.fogging = calculateFog(\r\n this,\r\n this.fog.withAerialPerspective,\r\n this.fog.fogType,\r\n this.fog.atmosphereParams,\r\n this.fog.heightFogParams,\r\n this.uv,\r\n false,\r\n that.getCameraPosition(this).xyz,\r\n this.worldPos,\r\n this.fog.additive,\r\n this[UNIFORM_NAME_AERIALPERSPECTIVE_LUT],\r\n this[UNIFORM_NAME_SKYDISTANTLIGHT_LUT]\r\n );\r\n this.color = pb.vec4(pb.add(pb.mul(this.color.rgb, this.fogging.a), this.fogging.rgb), this.color.a);\r\n //this.color = pb.vec4(pb.vec3(pb.mix(this.u0, this.u1, this.factor)), this.color.a);\r\n });\r\n scope[funcName](worldPos, color);\r\n }\r\n }\r\n /**\r\n * Calculates the non-linear depth from linear depth\r\n *\r\n * @param scope - Current shader scope\r\n * @param depth - The linear depth\r\n * @param nearFar - A vector that contains the near clip plane in x component and the far clip plane in y component\r\n * @returns The calculated non-linear depth\r\n */\r\n static linearDepthToNonLinear(\r\n scope: PBInsideFunctionScope,\r\n depth: PBShaderExp,\r\n nearFar?: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n nearFar = nearFar ?? this.getCameraParams(scope);\r\n return pb.div(\r\n pb.sub(nearFar.y, pb.div(pb.mul(nearFar.x, nearFar.y), depth)),\r\n pb.sub(nearFar.y, nearFar.x)\r\n );\r\n }\r\n /**\r\n * Calculates the linear depth from non-linear depth\r\n *\r\n * @param scope - Current shader scope\r\n * @param depth - The non-linear depth\r\n * @param nearFar - A vector that contains the near clip plane in x component and the far clip plane in y component\r\n * @returns The calculated linear depth\r\n */\r\n static nonLinearDepthToLinear(\r\n scope: PBInsideFunctionScope,\r\n depth: PBShaderExp,\r\n nearFar?: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n nearFar = nearFar ?? this.getCameraParams(scope);\r\n return pb.div(pb.mul(nearFar.x, nearFar.y), pb.mix(nearFar.y, nearFar.x, depth));\r\n }\r\n /**\r\n * Calculates the normalized linear depth from non-linear depth\r\n *\r\n * @param scope - Current shader scope\r\n * @param depth - The non-linear depth\r\n * @param nearFar - A vector that contains the near clip plane in x component and the far clip plane in y component\r\n * @returns The calculated normalized linear depth\r\n */\r\n static nonLinearDepthToLinearNormalized(\r\n scope: PBInsideFunctionScope,\r\n depth: PBShaderExp,\r\n nearFar?: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n nearFar = nearFar ?? this.getCameraParams(scope);\r\n return pb.div(nearFar.x, pb.mix(nearFar.y, nearFar.x, depth));\r\n }\r\n /**\r\n * Sample linear depth from linear depth texture\r\n * @param scope - Current shader scope\r\n * @param tex - The linear depth texture\r\n * @param uv - The uv coordinates\r\n * @param level - The mipmap level to sample\r\n * @returns Linear depth value\r\n */\r\n static sampleLinearDepth(\r\n scope: PBInsideFunctionScope,\r\n tex: PBShaderExp,\r\n uv: PBShaderExp,\r\n level: PBShaderExp | number\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const depth = pb.textureSampleLevel(tex, uv, level);\r\n return pb.getDevice().type === 'webgl' ? decodeNormalizedFloatFromRGBA(scope, depth) : depth.r;\r\n }\r\n static samplePositionFromDepth(\r\n scope: PBInsideFunctionScope,\r\n depthTex: PBShaderExp,\r\n uv: PBShaderExp,\r\n mat: PBShaderExp,\r\n cameraNearFar: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n 'zSamplePositionFromDepth',\r\n [pb.vec2('uv'), pb.vec2('cameraNearFar'), pb.mat4('mat')],\r\n function () {\r\n this.$l.linearDepth = that.sampleLinearDepth(this, depthTex, this.uv, 0);\r\n this.$l.nonLinearDepth = pb.div(\r\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipSpacePos = pb.vec4(\r\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\r\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 1),\r\n 1\r\n );\r\n this.$l.wPos = pb.mul(this.mat, this.clipSpacePos);\r\n this.$return(pb.vec4(pb.div(this.wPos.xyz, this.wPos.w), this.linearDepth));\r\n }\r\n );\r\n return scope.zSamplePositionFromDepth(uv, cameraNearFar, mat);\r\n }\r\n /**\r\n * Sample linear depth from linear depth texture with backface\r\n * @param scope - Current shader scope\r\n * @param tex - The linear depth texture\r\n * @param uv - The uv coordinates\r\n * @param level - The mipmap level to sample\r\n * @returns Linear depth value\r\n */\r\n static sampleLinearDepthWithBackface(\r\n scope: PBInsideFunctionScope,\r\n tex: PBShaderExp,\r\n uv: PBShaderExp,\r\n level: PBShaderExp | number\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n return pb.textureSampleLevel(tex, uv, level).rg;\r\n }\r\n /**\r\n * Transform color to sRGB color space if nessesary\r\n *\r\n * @param scope - Current shader scope\r\n * @param outputColor - The color to be transformed\r\n * @returns The transformed color\r\n */\r\n static encodeColorOutput(scope: PBInsideFunctionScope, outputColor: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_encodeColorOutput';\r\n pb.func(funcName, [pb.vec4('outputColor')], function () {\r\n const params = that.getCameraParams(this);\r\n this.$if(pb.notEqual(params.w, 0), function () {\r\n this.$return(pb.vec4(linearToGamma(this, this.outputColor.rgb), this.outputColor.w));\r\n }).$else(function () {\r\n this.$return(this.outputColor);\r\n });\r\n });\r\n return pb.getGlobalScope()[funcName](outputColor);\r\n }\r\n}\r\n"],"names":["UNIFORM_NAME_LIGHT_BUFFER","UNIFORM_NAME_LIGHT_INDEX_TEXTURE","UNIFORM_NAME_BAKED_SKY_MAP","UNIFORM_NAME_AERIALPERSPECTIVE_LUT","UNIFORM_NAME_SKYDISTANTLIGHT_LUT","UNIFORM_NAME_SHADOW_MAP","UNIFORM_NAME_LINEAR_DEPTH_MAP","UNIFORM_NAME_LINEAR_DEPTH_MAP_SIZE","UNIFORM_NAME_SCENE_COLOR_MAP","UNIFORM_NAME_SCENE_COLOR_MAP_SIZE","UNIFORM_NAME_HIZ_DEPTH_MAP","UNIFORM_NAME_HIZ_DEPTH_MAP_INFO","UNIFORM_NAME_OBJECT_COLOR","UNIFORM_NAME_WORLD_MATRIX","UNIFORM_NAME_PREV_WORLD_MATRIX","UNIFORM_NAME_PREV_WORLD_MATRXI_FRAME","UNIFORM_NAME_INSTANCE_DATA_STRIDE","UNIFORM_NAME_INSTANCE_DATA","UNIFORM_NAME_INSTANCE_DATA_OFFSET","UNIFORM_NAME_BONE_MATRICES","UNIFORM_NAME_BONE_TEXTURE_SIZE","UNIFORM_NAME_BONE_INV_BIND_MATRIX","UNIFORM_NAME_MORPH_DATA","UNIFORM_NAME_MORPH_INFO","ShaderHelper","BILLBOARD_SPHERICAL","BILLBOARD_SYLINDRAL","MATERIAL_INSTANCE_DATA_OFFSET","defaultSunDir","Vector3","one","inplaceNormalize","SKIN_MATRIX_NAME","SKIN_PREV_MATRIX_NAME","SKIN_BONE_OFFSET","_drawableBindGroupLayouts","_lightUniformShadow","sunDir","envLightStrength","shadowCascades","positionAndRange","Vector4","directionAndCutoff","diffuseAndIntensity","cascadeDistances","depthBiasValues","shadowCameraParams","depthBiasScales","shadowMatrices","Float32Array","_fogUniforms","withAerialPerspective","fogType","additive","atmosphereParams","getDefaultAtmosphereParams","heightFogParams","getDefaultHeightFogParams","getObjectColorUniformName","getWorldMatrixUniformName","getPrevWorldMatrixUniformName","getPrevWorldMatrixFrameUniformName","getInstanceDataUniformName","getInstanceDataOffsetUniformName","getInstanceDataStrideUniformName","getBoneMatricesUniformName","getBoneTextureSizeUniformName","getBoneInvBindMatrixUniformName","getMorphDataUniformName","getMorphInfoUniformName","getLightBufferUniformName","getDrawableBindGroupLayout","skinning","morphing","instancing","hash","bindGroupLayout","device","getDevice","buildInfo","ProgramBuilder","buildRender","vertex","pb","vertexShaderDrawableStuff","main","fragment","prepareFragmentShader","ctx","setupGlobalUniforms","prepareVertexShader","prepareVertexShaderCommon","scope","getGlobalScope","cameraStruct","defineStruct","vec4","mat4","motionVectors","renderPass","type","RENDER_PASS_TYPE_DEPTH","vec2","float","int","RENDER_PASS_TYPE_SHADOWMAP","lightStruct","camera","uniform","light","RENDER_PASS_TYPE_OBJECT_COLOR","RENDER_PASS_TYPE_LIGHT","useClusteredLighting","currentShadowLight","materialFlags","MaterialVaryingFlags","APPLY_FOG","fogStructMembers","getAtmosphereParamsStruct","getHeightFogParamsStruct","fogStruct","fog","tex2D","vec3","ivec4","ivec2","MAX_CLUSTERED_LIGHTS","uniformBuffer","utex2D","texCube","shadowMapParams","shadowMapInfo","get","tex","shadowMap","isTextureCube","isDepth","$builder","texCubeShadow","isTexture2D","tex2DShadow","tex2DArrayShadow","tex2DArray","getDeviceCaps","textureCaps","getTextureFormatInfo","format","filterable","sampleType","drawEnvLight","env","envLight","initShaderBindings","linearDepthTexture","sceneColorTexture","HiZTexture","hasSkinning","hasMorphing","calculateSkinMatrix","funcNameGetBoneMatrixFromTexture","func","boneTexture","$l","uvOffsets","textureSampleLevel","div","currentOffset","x","w","pixelIndex","mul","add","boneIndex","xIndex","mod","yIndex","floor","u1","u2","u3","u4","v","row1","row2","row3","row4","$return","funcNameGetSkinningMatrix","invBindMatrix","blendIndices","$getVertexAttrib","blendWeights","m0","$g","m1","m2","m3","m","y","z","calculateMorphDelta","attrib","isWebGL1","shaderKind","Error","funcName","that","$if","lessThan","offset","vertexIndex","$inputs","zFakeVertexID","$builtins","morphInfo","metaData","texWidth","texHeight","numVertices","numTargets","value","$for","MORPH_WEIGHTS_VECTOR_COUNT","index","i","j","greaterThanEqual","weight","at","u","morphValue","sar","t","compAnd","pos","comp","prepareSkinAnimation","boneOffset","motionVector","getUnjitteredViewProjectionMatrix","xy","resolveVertexPosition","Z_pos","params","opos","xyz","MORPH_TARGET_POSITION","skinMatrix","prevUnjitteredVPMatrix","getPrevUnjitteredViewProjectionMatrix","unjitteredVPMatrix","worldPos","getWorldMatrix","prevSkinMatrix","prevWorldPos","getPrevWorldMatrix","$outputs","zMotionVectorPosCurrent","zMotionVectorPosPrev","Z_resolveVertexPosition","resolveMotionVector","resolveVertexNormal","normal","funcScope","getCurrentFunctionScope","$isMain","Z_normal","normalize","MORPH_TARGET_NORMAL","resolveVertexTangent","tangent","Z_tangent","MORPH_TARGET_TANGENT","getInstancedUniform","framestamp","getFramestamp","equal","$else","Z_getPrevWorldMatrix","$choice","prevFrame","floatBitsToInt","uniformIndex","uint","instanceIndex","getNormalMatrix","instanced","MORPH_ATTRIBUTE_VECTOR_COUNT","SKIN_ANIMATION","MORPH_ANIMATION","INSTANCING","setCameraUniforms","bindGroup","linear","getWorldPosition","useJitter","position","clipPlane","zero","renderSize","Vector2","renderWidth","renderHeight","viewProjectionMatrix","jitteredVPMatrix","jitteredInvVPMatrix","invViewProjectionMatrix","jitterValue","projectionMatrix","getProjectionMatrix","invProjectionMatrix","getInvProjectionMatrix","viewMatrix","worldMatrix","getNearPlane","getFarPlane","flip","roughnessFactor","SSR","ssrRoughnessFactor","frameDeltaTime","frameInfo","elapsedFrame","elapsedTime","elapsedOverall","frameCounter","prevVPMatrix","setTexture","setValue","width","height","fetchSampler","mipLevelCount","setLightUniformsShadowMap","directionCutoff","depthBias","lightType","setFogUniforms","aerialPerspectiveLUT","skyDistantLightLUT","setLightUniforms","clusterParams","countParams","lightBuffer","lightIndexTexture","sunLight","scaleBy","strength","lightIndexTexSize","Int32Array","setBuffer","scene","sky","getBakedSkyTexture","updateBindGroup","setLightUniformsShadow","numShadowCascades","set","cameraParams","shadowMapSampler","getEnvLightStrength","getSceneColorTexture","getSceneColorTextureSize","getLinearDepthTexture","getLinearDepthTextureSize","getHiZDepthTexture","getHiZDepthTextureSize","getHiZDepthTextureMipLevelCount","getElapsedTime","getElapsedTimeFrame","getCameraPosition","getCameraRoughnessFactor","getRenderSize","discardIfClipped","notEqual","getCameraClipPlaneFlag","getCameraClipPlane","greaterThan","dot","discard","getCameraParams","getClusterParams","getCountParams","getClusteredLightIndexTexture","getAtmosphereParams","getAerialPerspectiveLUT","getViewProjectionMatrix","getInvViewProjectionMatrix","getProjectionMatrixJitterValue","getJitteredInvVPMatrix","getViewMatrix","getInvViewMatrix","getCascadeDistances","getDepthBiasValues","getShadowCameraParams","getDepthBiasScales","getNumLights","numLights","getSunLightDir","getLightTypeForShadow","getLightPositionAndRangeForShadow","getLightViewMatrixForShadow","calculateShadowSpaceVertex","cascade","getLightPositionAndRange","lightIndex","getLightDirectionAndCutoff","getLightColorAndIntensity","setClipSpacePosition","getShadowMap","calculateShadow","NoL","shadowBound","linearDepth","nonLinearDepthToLinear","fragCoord","splitDistances","comparison","cascadeFlags","split","shadowVertex","$break","shadow","impl","computeShadowCSM","shadowDistance","mix","smoothStep","distance","computeShadow","applyFog","color","inout","uv","fogging","calculateFog","rgb","a","linearDepthToNonLinear","depth","nearFar","sub","nonLinearDepthToLinearNormalized","sampleLinearDepth","level","decodeNormalizedFloatFromRGBA","r","samplePositionFromDepth","depthTex","mat","cameraNearFar","nonLinearDepth","clipSpacePos","clamp","wPos","zSamplePositionFromDepth","sampleLinearDepthWithBackface","rg","encodeColorOutput","outputColor","linearToGamma"],"mappings":"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"}
|