@zephyr3d/scene 0.9.5 → 0.9.7
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/dist/animation/joint_dynamics/controller.js +92 -32
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +71 -27
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +21 -20
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/skeleton.js +7 -10
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/app/engine.js +134 -140
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +47 -16
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +3 -1
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +346 -7
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +20 -16
- package/dist/avatar/wardrobe.js.map +1 -1
- package/dist/camera/camera.js +416 -210
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +1350 -621
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +23 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +178 -23
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +4 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +2 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +1 -1
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +276 -65
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -3
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js +2 -2
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/mtoon.js +574 -0
- package/dist/material/mtoon.js.map +1 -0
- package/dist/material/pbrblueprint.js +499 -336
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +118 -100
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +324 -294
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +812 -0
- package/dist/material/subsurfaceprofile.js.map +1 -0
- package/dist/material/unlit.js +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/compositor.js +46 -11
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/ssr.js +422 -96
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +1053 -0
- package/dist/posteffect/sss.js.map +1 -0
- package/dist/posteffect/taa.js +61 -60
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +63 -12
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +6 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable.js +1 -5
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/drawable_mixin.js +2 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +2 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +2 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/lightpass.js +110 -23
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +51 -8
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +80 -66
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +8 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +481 -95
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +55 -0
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +3 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +10 -4
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sky.js +31 -1
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +23 -5
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +4 -2
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -1
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +11 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +21 -3
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +29 -14
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +5 -2
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +5 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +3 -1
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +6 -5
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +4 -2
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +2 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +4 -2
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +4 -2
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/shadow.js +26 -393
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shadow/esm.js +112 -12
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +2 -2
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +19 -10
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +58 -7
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +6 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +229 -0
- package/dist/shadow/shadow_region.js.map +1 -0
- package/dist/shadow/shadowmapper.js +67 -59
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/vsm.js +45 -19
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/text/font/cff_font.js +890 -0
- package/dist/text/font/cff_font.js.map +1 -0
- package/dist/text/font/font_asset.js +17 -3
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +8 -8
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +31 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +1 -17
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +327 -359
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +5 -2
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +249 -54
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +37 -1
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +42 -3
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1112 -646
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +7 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +31 -12
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +3 -1
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +18 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +6 -3
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +5 -2
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -1
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +6 -0
- package/dist/utility/textures/ltcdata.js.map +1 -0
- package/dist/utility/textures/ltclut.js +61 -0
- package/dist/utility/textures/ltclut.js.map +1 -0
- package/dist/values.js +9 -1
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/animation/ik/ik_pole_constraint.js +0 -123
- package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
- package/dist/animation/ik/ik_track.js +0 -96
- package/dist/animation/ik/ik_track.js.map +0 -1
- package/dist/animation/ik_postprocessor.js +0 -71
- package/dist/animation/ik_postprocessor.js.map +0 -1
- package/dist/animation/joint_dynamics/math.js +0 -16
- package/dist/animation/joint_dynamics/math.js.map +0 -1
- package/dist/animation/manual_transform_processor.js +0 -156
- package/dist/animation/manual_transform_processor.js.map +0 -1
- package/dist/animation/skeleton_postprocessor.js +0 -50
- package/dist/animation/skeleton_postprocessor.js.map +0 -1
- package/dist/animation/spring2/collision.js +0 -469
- package/dist/animation/spring2/collision.js.map +0 -1
- package/dist/animation/spring2/constraints.js +0 -329
- package/dist/animation/spring2/constraints.js.map +0 -1
- package/dist/animation/spring2/controller.js +0 -434
- package/dist/animation/spring2/controller.js.map +0 -1
- package/dist/animation/spring2/math.js +0 -16
- package/dist/animation/spring2/math.js.map +0 -1
- package/dist/animation/spring2/solver.js +0 -624
- package/dist/animation/spring2/solver.js.map +0 -1
- package/dist/animation/spring2/spring_system.js +0 -118
- package/dist/animation/spring2/spring_system.js.map +0 -1
- package/dist/animation/spring2/types.js +0 -19
- package/dist/animation/spring2/types.js.map +0 -1
- package/dist/animation/spring_postprocessor.js +0 -54
- package/dist/animation/spring_postprocessor.js.map +0 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
- package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/asset/loaders/gltf/helpers.js +0 -331
- package/dist/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/material/sprite3d.js +0 -301
- package/dist/material/sprite3d.js.map +0 -1
- package/dist/material/sprite3d_std.js +0 -116
- package/dist/material/sprite3d_std.js.map +0 -1
- package/dist/material/sprite3dblueprint.js +0 -235
- package/dist/material/sprite3dblueprint.js.map +0 -1
- package/dist/material/sprite_sdf.js +0 -106
- package/dist/material/sprite_sdf.js.map +0 -1
- package/dist/material/terrainmaterial.js +0 -368
- package/dist/material/terrainmaterial.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/render/deferredlightpass.js +0 -510
- package/dist/render/deferredlightpass.js.map +0 -1
- package/dist/render/deferredshadowlightpass.js +0 -428
- package/dist/render/deferredshadowlightpass.js.map +0 -1
- package/dist/render/gbufferpass.js +0 -50
- package/dist/render/gbufferpass.js.map +0 -1
- package/dist/scene/sdftextsprite.js +0 -322
- package/dist/scene/sdftextsprite.js.map +0 -1
- package/dist/scene/sprite3d.js +0 -18
- package/dist/scene/sprite3d.js.map +0 -1
- package/dist/scene/terrain/grass.js +0 -280
- package/dist/scene/terrain/grass.js.map +0 -1
- package/dist/scene/terrain/heightfield.js +0 -475
- package/dist/scene/terrain/heightfield.js.map +0 -1
- package/dist/scene/terrain/patch.js +0 -532
- package/dist/scene/terrain/patch.js.map +0 -1
- package/dist/scene/terrain/quadtree.js +0 -461
- package/dist/scene/terrain/quadtree.js.map +0 -1
- package/dist/scene/terrain/terrain.js +0 -231
- package/dist/scene/terrain/terrain.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
- package/dist/utility/serialization/scene/cloth_script.js +0 -834
- package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
- package/dist/utility/serialization/scene/spring_script.js +0 -596
- package/dist/utility/serialization/scene/spring_script.js.map +0 -1
package/dist/src/render/hzb.js
DELETED
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import { drawFullscreenQuad } from './fullscreenquad.js';
|
|
2
|
-
import { Application } from '../app/app.js';
|
|
3
|
-
import '@zephyr3d/base';
|
|
4
|
-
import '@zephyr3d/device';
|
|
5
|
-
import { CopyBlitter } from '../blitter/copy.js';
|
|
6
|
-
import { fetchSampler } from '../utility/misc.js';
|
|
7
|
-
|
|
8
|
-
let hzbProgram = null;
|
|
9
|
-
let hzbBindGroup = null;
|
|
10
|
-
let blitter = null;
|
|
11
|
-
let srcSize = null;
|
|
12
|
-
/*
|
|
13
|
-
vec3 trace_ray(vec3 ray_start, vec3 ray_dir)
|
|
14
|
-
{
|
|
15
|
-
|
|
16
|
-
if (ray_dir.z < 0.0) {
|
|
17
|
-
return vec3(0);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
ray_dir = normalize(ray_dir);
|
|
21
|
-
ivec2 work_size = SCREEN_SIZE_INT;
|
|
22
|
-
|
|
23
|
-
const int loop_max = 150;
|
|
24
|
-
int mipmap = 0;
|
|
25
|
-
int max_iter = loop_max;
|
|
26
|
-
|
|
27
|
-
vec3 pos = ray_start;
|
|
28
|
-
|
|
29
|
-
// Move pos by a small bias
|
|
30
|
-
pos += ray_dir * 0.008;
|
|
31
|
-
|
|
32
|
-
float hit_bias = 0.0017;
|
|
33
|
-
|
|
34
|
-
while (mipmap > -1 && max_iter --> 0)
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
// Check if we are out of screen bounds, if so, return
|
|
38
|
-
if (pos.x < 0.0 || pos.y < 0.0 || pos.x > 1.0 || pos.y > 1.0 || pos.z < 0.0 || pos.z > 1.0)
|
|
39
|
-
{
|
|
40
|
-
return vec3(0,0,0);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Fetch the current minimum cell plane height
|
|
44
|
-
float cell_z = textureLod(DownscaledDepth, pos.xy, mipmap).x;
|
|
45
|
-
|
|
46
|
-
// Compute the fractional part of the coordinate (scaled by the working size)
|
|
47
|
-
// so the values will be between 0.0 and 1.0
|
|
48
|
-
vec2 fract_coord = mod(pos.xy * work_size, 1.0);
|
|
49
|
-
|
|
50
|
-
// Modify fract coord based on which direction we are stepping in.
|
|
51
|
-
// Fract coord now contains the percentage how far we moved already in
|
|
52
|
-
// the current cell in each direction.
|
|
53
|
-
fract_coord.x = ray_dir.x > 0.0 ? fract_coord.x : 1.0 - fract_coord.x;
|
|
54
|
-
fract_coord.y = ray_dir.y > 0.0 ? fract_coord.y : 1.0 - fract_coord.y;
|
|
55
|
-
|
|
56
|
-
// Compute maximum k and minimum k for which the ray would still be
|
|
57
|
-
// inside of the cell.
|
|
58
|
-
vec2 max_k_v = (1.0 / abs(ray_dir.xy)) / work_size.xy;
|
|
59
|
-
vec2 min_k_v = -max_k_v * fract_coord.xy;
|
|
60
|
-
|
|
61
|
-
// Scale the maximum k by the percentage we already processed in the current cell,
|
|
62
|
-
// since e.g. if we already moved 50%, we can only move another 50%.
|
|
63
|
-
max_k_v *= 1.0 - fract_coord.xy;
|
|
64
|
-
|
|
65
|
-
// The maximum k is the minimum of the both sub-k's since if one component-maximum
|
|
66
|
-
// is reached, the ray is out of the cell
|
|
67
|
-
float max_k = min(max_k_v.x, max_k_v.y);
|
|
68
|
-
|
|
69
|
-
// Same applies to the min_k, but because min_k is negative we have to use max()
|
|
70
|
-
float min_k = max(min_k_v.x, min_k_v.y);
|
|
71
|
-
|
|
72
|
-
// Check if the ray intersects with the cell plane. We have the following
|
|
73
|
-
// equation:
|
|
74
|
-
// pos.z + k * ray_dir.z = cell.z
|
|
75
|
-
// So k is:
|
|
76
|
-
float k = (cell_z - pos.z) / ray_dir.z;
|
|
77
|
-
|
|
78
|
-
// Optional: Abort when ray didn't exactly intersect:
|
|
79
|
-
// if (k < min_k && mipmap <= 0) {
|
|
80
|
-
// return vec3(0);
|
|
81
|
-
// }
|
|
82
|
-
|
|
83
|
-
// Check if we intersected the cell
|
|
84
|
-
if (k < max_k + hit_bias)
|
|
85
|
-
{
|
|
86
|
-
// Clamp k
|
|
87
|
-
k = max(min_k, k);
|
|
88
|
-
|
|
89
|
-
if (mipmap < 1) {
|
|
90
|
-
pos += k * ray_dir;
|
|
91
|
-
return pos;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// If we hit anything at a higher mipmap, step up to a higher detailed
|
|
95
|
-
// mipmap:
|
|
96
|
-
mipmap -= 2;
|
|
97
|
-
work_size *= 4;
|
|
98
|
-
} else {
|
|
99
|
-
|
|
100
|
-
// If we hit nothing, move to the next cell, with a small bias
|
|
101
|
-
pos += max_k * ray_dir * 1.04;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
mipmap += 1;
|
|
105
|
-
work_size /= 2;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return vec3(0);
|
|
109
|
-
}
|
|
110
|
-
*/ /*
|
|
111
|
-
float2 cell(float2 ray, float2 cell_count, uint camera) {
|
|
112
|
-
return floor(ray.xy * cell_count);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
float2 cell_count(float level) {
|
|
116
|
-
return input_texture2_size / (level == 0.0 ? 1.0 : exp2(level));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
float3 intersect_cell_boundary(float3 pos, float3 dir, float2 cell_id, float2 cell_count, float2 cross_step, float2 cross_offset, uint camera) {
|
|
120
|
-
float2 cell_size = 1.0 / cell_count;
|
|
121
|
-
float2 planes = cell_id/cell_count + cell_size * cross_step;
|
|
122
|
-
|
|
123
|
-
float2 solutions = (planes - pos)/dir.xy;
|
|
124
|
-
float3 intersection_pos = pos + dir * min(solutions.x, solutions.y);
|
|
125
|
-
|
|
126
|
-
intersection_pos.xy += (solutions.x < solutions.y) ? float2(cross_offset.x, 0.0) : float2(0.0, cross_offset.y);
|
|
127
|
-
|
|
128
|
-
return intersection_pos;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
bool crossed_cell_boundary(float2 cell_id_one, float2 cell_id_two) {
|
|
132
|
-
return (int)cell_id_one.x != (int)cell_id_two.x || (int)cell_id_one.y != (int)cell_id_two.y;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
float minimum_depth_plane(float2 ray, float level, float2 cell_count, uint camera) {
|
|
136
|
-
return input_texture2.Load(int3(vr_stereo_to_mono(ray.xy, camera) * cell_count, level)).r;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
float3 hi_z_trace(float3 p, float3 v, in uint camera, out uint iterations) {
|
|
140
|
-
float level = HIZ_START_LEVEL;
|
|
141
|
-
float3 v_z = v/v.z;
|
|
142
|
-
float2 hi_z_size = cell_count(level);
|
|
143
|
-
float3 ray = p;
|
|
144
|
-
|
|
145
|
-
float2 cross_step = float2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);
|
|
146
|
-
float2 cross_offset = cross_step * 0.00001;
|
|
147
|
-
cross_step = saturate(cross_step);
|
|
148
|
-
|
|
149
|
-
float2 ray_cell = cell(ray.xy, hi_z_size.xy, camera);
|
|
150
|
-
ray = intersect_cell_boundary(ray, v, ray_cell, hi_z_size, cross_step, cross_offset, camera);
|
|
151
|
-
|
|
152
|
-
iterations = 0;
|
|
153
|
-
while(level >= HIZ_STOP_LEVEL && iterations < MAX_ITERATIONS) {
|
|
154
|
-
// get the cell number of the current ray
|
|
155
|
-
float2 current_cell_count = cell_count(level);
|
|
156
|
-
float2 old_cell_id = cell(ray.xy, current_cell_count, camera);
|
|
157
|
-
|
|
158
|
-
// get the minimum depth plane in which the current ray resides
|
|
159
|
-
float min_z = minimum_depth_plane(ray.xy, level, current_cell_count, camera);
|
|
160
|
-
|
|
161
|
-
// intersect only if ray depth is below the minimum depth plane
|
|
162
|
-
float3 tmp_ray = ray;
|
|
163
|
-
if(v.z > 0) {
|
|
164
|
-
float min_minus_ray = min_z - ray.z;
|
|
165
|
-
tmp_ray = min_minus_ray > 0 ? ray + v_z*min_minus_ray : tmp_ray;
|
|
166
|
-
float2 new_cell_id = cell(tmp_ray.xy, current_cell_count, camera);
|
|
167
|
-
if(crossed_cell_boundary(old_cell_id, new_cell_id)) {
|
|
168
|
-
tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
|
|
169
|
-
level = min(HIZ_MAX_LEVEL, level + 2.0f);
|
|
170
|
-
}else{
|
|
171
|
-
if(level == 1 && abs(min_minus_ray) > 0.0001) {
|
|
172
|
-
tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
|
|
173
|
-
level = 2;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
} else if(ray.z < min_z) {
|
|
177
|
-
tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
|
|
178
|
-
level = min(HIZ_MAX_LEVEL, level + 2.0f);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
ray.xyz = tmp_ray.xyz;
|
|
182
|
-
--level;
|
|
183
|
-
|
|
184
|
-
++iterations;
|
|
185
|
-
}
|
|
186
|
-
return ray;
|
|
187
|
-
}
|
|
188
|
-
*/ function buildHZBProgram(device) {
|
|
189
|
-
return device.buildRenderProgram({
|
|
190
|
-
label: 'HZBBuilder',
|
|
191
|
-
vertex (pb) {
|
|
192
|
-
this.$inputs.pos = pb.vec2().attrib('position');
|
|
193
|
-
this.$outputs.uv = pb.vec2();
|
|
194
|
-
pb.main(function() {
|
|
195
|
-
this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);
|
|
196
|
-
this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));
|
|
197
|
-
if (device.type === 'webgpu') {
|
|
198
|
-
this.$builtins.position.y = pb.neg(this.$builtins.position.y);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
},
|
|
202
|
-
fragment (pb) {
|
|
203
|
-
this.$outputs.color = pb.vec4();
|
|
204
|
-
this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);
|
|
205
|
-
this.srcSize = pb.ivec2().uniform(0);
|
|
206
|
-
if (device.type !== 'webgpu') {
|
|
207
|
-
this.srcMipLevel = pb.int().uniform(0);
|
|
208
|
-
}
|
|
209
|
-
pb.main(function() {
|
|
210
|
-
this.$l.coord = pb.mul(pb.ivec2(this.$builtins.fragCoord.xy), 2);
|
|
211
|
-
this.$l.minCoord = pb.ivec2(0, 0);
|
|
212
|
-
this.$l.maxCoord = pb.sub(this.srcSize, pb.ivec2(1, 1));
|
|
213
|
-
for(let i = 0; i < 4; i++){
|
|
214
|
-
this.$l[`d${i}`] = pb.textureLoad(this.srcTex, pb.clamp(pb.add(this.coord, pb.ivec2(i >> 1, i & 1)), this.minCoord, this.maxCoord), device.type === 'webgpu' ? 0 : this.srcMipLevel).r;
|
|
215
|
-
}
|
|
216
|
-
this.$l.d = pb.min(pb.min(this.d0, this.d1), pb.min(this.d2, this.d3));
|
|
217
|
-
this.$outputs.color = pb.vec4(this.d, 0, 0, 1);
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
function buildHiZLevel(device, miplevel, srcTexture, dstTexture) {
|
|
223
|
-
const sampler = fetchSampler('clamp_nearest');
|
|
224
|
-
const framebuffer = device.pool.fetchTemporalFramebuffer(false, 0, 0, [
|
|
225
|
-
dstTexture
|
|
226
|
-
], null, false, 1, true, miplevel + 1);
|
|
227
|
-
framebuffer.setColorAttachmentGenerateMipmaps(0, false);
|
|
228
|
-
srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);
|
|
229
|
-
srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);
|
|
230
|
-
hzbBindGroup.setValue('srcSize', srcSize);
|
|
231
|
-
if (device.type === 'webgpu') {
|
|
232
|
-
hzbBindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);
|
|
233
|
-
} else {
|
|
234
|
-
hzbBindGroup.setTexture('srcTex', srcTexture, sampler);
|
|
235
|
-
hzbBindGroup.setValue('srcMipLevel', miplevel);
|
|
236
|
-
}
|
|
237
|
-
device.setProgram(hzbProgram);
|
|
238
|
-
device.setBindGroup(0, hzbBindGroup);
|
|
239
|
-
device.setFramebuffer(framebuffer);
|
|
240
|
-
drawFullscreenQuad();
|
|
241
|
-
if (srcTexture !== dstTexture) {
|
|
242
|
-
device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);
|
|
243
|
-
}
|
|
244
|
-
device.pool.releaseFrameBuffer(framebuffer);
|
|
245
|
-
}
|
|
246
|
-
function buildHiZ(sourceTex, HiZFrameBuffer) {
|
|
247
|
-
const device = Application.instance.device;
|
|
248
|
-
if (!hzbProgram) {
|
|
249
|
-
hzbProgram = buildHZBProgram(device);
|
|
250
|
-
hzbBindGroup = device.createBindGroup(hzbProgram.bindGroupLayouts[0]);
|
|
251
|
-
blitter = new CopyBlitter();
|
|
252
|
-
srcSize = new Int32Array(2);
|
|
253
|
-
}
|
|
254
|
-
blitter.blit(sourceTex, HiZFrameBuffer, fetchSampler('clamp_nearest'));
|
|
255
|
-
device.pushDeviceStates();
|
|
256
|
-
const srcTex = HiZFrameBuffer.getColorAttachments()[0];
|
|
257
|
-
if (device.type === 'webgpu') {
|
|
258
|
-
for(let i = 0; i < srcTex.mipLevelCount - 1; i++){
|
|
259
|
-
buildHiZLevel(device, i, srcTex, srcTex);
|
|
260
|
-
}
|
|
261
|
-
} else {
|
|
262
|
-
const tmpFramebuffer = device.pool.fetchTemporalFramebuffer(false, HiZFrameBuffer.getWidth(), HiZFrameBuffer.getHeight(), HiZFrameBuffer.getColorAttachments()[0].format, null, true);
|
|
263
|
-
const dstTex = tmpFramebuffer.getColorAttachments()[0];
|
|
264
|
-
for(let i = 0; i < srcTex.mipLevelCount - 1; i++){
|
|
265
|
-
buildHiZLevel(device, i, srcTex, dstTex);
|
|
266
|
-
}
|
|
267
|
-
device.pool.releaseFrameBuffer(tmpFramebuffer);
|
|
268
|
-
}
|
|
269
|
-
device.popDeviceStates();
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export { buildHiZ };
|
|
273
|
-
//# sourceMappingURL=hzb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hzb.js","sources":["../../../src/render/hzb.ts"],"sourcesContent":["import type { AbstractDevice, BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\nimport { drawFullscreenQuad } from './fullscreenquad';\nimport { Application } from '../app/app';\nimport { CopyBlitter } from '../blitter';\nimport { fetchSampler } from '../utility/misc';\n\nlet hzbProgram: GPUProgram = null;\nlet hzbBindGroup: BindGroup = null;\nlet blitter: CopyBlitter = null;\nlet srcSize: Int32Array<ArrayBuffer> = null;\n\n/*\nvec3 trace_ray(vec3 ray_start, vec3 ray_dir)\n{\n\n if (ray_dir.z < 0.0) {\n return vec3(0);\n }\n\n ray_dir = normalize(ray_dir);\n ivec2 work_size = SCREEN_SIZE_INT;\n\n const int loop_max = 150;\n int mipmap = 0;\n int max_iter = loop_max;\n\n vec3 pos = ray_start;\n\n // Move pos by a small bias\n pos += ray_dir * 0.008;\n\n float hit_bias = 0.0017;\n\n while (mipmap > -1 && max_iter --> 0)\n {\n\n // Check if we are out of screen bounds, if so, return\n if (pos.x < 0.0 || pos.y < 0.0 || pos.x > 1.0 || pos.y > 1.0 || pos.z < 0.0 || pos.z > 1.0)\n {\n return vec3(0,0,0);\n }\n\n // Fetch the current minimum cell plane height\n float cell_z = textureLod(DownscaledDepth, pos.xy, mipmap).x;\n\n // Compute the fractional part of the coordinate (scaled by the working size)\n // so the values will be between 0.0 and 1.0\n vec2 fract_coord = mod(pos.xy * work_size, 1.0);\n\n // Modify fract coord based on which direction we are stepping in.\n // Fract coord now contains the percentage how far we moved already in\n // the current cell in each direction.\n fract_coord.x = ray_dir.x > 0.0 ? fract_coord.x : 1.0 - fract_coord.x;\n fract_coord.y = ray_dir.y > 0.0 ? fract_coord.y : 1.0 - fract_coord.y;\n\n // Compute maximum k and minimum k for which the ray would still be\n // inside of the cell.\n vec2 max_k_v = (1.0 / abs(ray_dir.xy)) / work_size.xy;\n vec2 min_k_v = -max_k_v * fract_coord.xy;\n\n // Scale the maximum k by the percentage we already processed in the current cell,\n // since e.g. if we already moved 50%, we can only move another 50%.\n max_k_v *= 1.0 - fract_coord.xy;\n\n // The maximum k is the minimum of the both sub-k's since if one component-maximum\n // is reached, the ray is out of the cell\n float max_k = min(max_k_v.x, max_k_v.y);\n\n // Same applies to the min_k, but because min_k is negative we have to use max()\n float min_k = max(min_k_v.x, min_k_v.y);\n\n // Check if the ray intersects with the cell plane. We have the following\n // equation:\n // pos.z + k * ray_dir.z = cell.z\n // So k is:\n float k = (cell_z - pos.z) / ray_dir.z;\n\n // Optional: Abort when ray didn't exactly intersect:\n // if (k < min_k && mipmap <= 0) {\n // return vec3(0);\n // }\n\n // Check if we intersected the cell\n if (k < max_k + hit_bias)\n {\n // Clamp k\n k = max(min_k, k);\n\n if (mipmap < 1) {\n pos += k * ray_dir;\n return pos;\n }\n\n // If we hit anything at a higher mipmap, step up to a higher detailed\n // mipmap:\n mipmap -= 2;\n work_size *= 4;\n } else {\n\n // If we hit nothing, move to the next cell, with a small bias\n pos += max_k * ray_dir * 1.04;\n }\n\n mipmap += 1;\n work_size /= 2;\n }\n\n return vec3(0);\n}\n*/\n/*\nfloat2 cell(float2 ray, float2 cell_count, uint camera) {\n return floor(ray.xy * cell_count);\n}\n\nfloat2 cell_count(float level) {\n return input_texture2_size / (level == 0.0 ? 1.0 : exp2(level));\n}\n\nfloat3 intersect_cell_boundary(float3 pos, float3 dir, float2 cell_id, float2 cell_count, float2 cross_step, float2 cross_offset, uint camera) {\n float2 cell_size = 1.0 / cell_count;\n float2 planes = cell_id/cell_count + cell_size * cross_step;\n\n float2 solutions = (planes - pos)/dir.xy;\n float3 intersection_pos = pos + dir * min(solutions.x, solutions.y);\n\n intersection_pos.xy += (solutions.x < solutions.y) ? float2(cross_offset.x, 0.0) : float2(0.0, cross_offset.y);\n\n return intersection_pos;\n}\n\nbool crossed_cell_boundary(float2 cell_id_one, float2 cell_id_two) {\n return (int)cell_id_one.x != (int)cell_id_two.x || (int)cell_id_one.y != (int)cell_id_two.y;\n}\n\nfloat minimum_depth_plane(float2 ray, float level, float2 cell_count, uint camera) {\n return input_texture2.Load(int3(vr_stereo_to_mono(ray.xy, camera) * cell_count, level)).r;\n}\n\nfloat3 hi_z_trace(float3 p, float3 v, in uint camera, out uint iterations) {\n float level = HIZ_START_LEVEL;\n float3 v_z = v/v.z;\n float2 hi_z_size = cell_count(level);\n float3 ray = p;\n\n float2 cross_step = float2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\n float2 cross_offset = cross_step * 0.00001;\n cross_step = saturate(cross_step);\n\n float2 ray_cell = cell(ray.xy, hi_z_size.xy, camera);\n ray = intersect_cell_boundary(ray, v, ray_cell, hi_z_size, cross_step, cross_offset, camera);\n\n iterations = 0;\n while(level >= HIZ_STOP_LEVEL && iterations < MAX_ITERATIONS) {\n // get the cell number of the current ray\n float2 current_cell_count = cell_count(level);\n float2 old_cell_id = cell(ray.xy, current_cell_count, camera);\n\n // get the minimum depth plane in which the current ray resides\n float min_z = minimum_depth_plane(ray.xy, level, current_cell_count, camera);\n\n // intersect only if ray depth is below the minimum depth plane\n float3 tmp_ray = ray;\n if(v.z > 0) {\n float min_minus_ray = min_z - ray.z;\n tmp_ray = min_minus_ray > 0 ? ray + v_z*min_minus_ray : tmp_ray;\n float2 new_cell_id = cell(tmp_ray.xy, current_cell_count, camera);\n if(crossed_cell_boundary(old_cell_id, new_cell_id)) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = min(HIZ_MAX_LEVEL, level + 2.0f);\n }else{\n if(level == 1 && abs(min_minus_ray) > 0.0001) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = 2;\n }\n }\n } else if(ray.z < min_z) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = min(HIZ_MAX_LEVEL, level + 2.0f);\n }\n\n ray.xyz = tmp_ray.xyz;\n --level;\n\n ++iterations;\n }\n return ray;\n}\n*/\n\nfunction buildHZBProgram(device: AbstractDevice): GPUProgram {\n return device.buildRenderProgram({\n label: 'HZBBuilder',\n vertex(pb) {\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n if (device.type === 'webgpu') {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n }\n });\n },\n fragment(pb) {\n this.$outputs.color = pb.vec4();\n this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);\n this.srcSize = pb.ivec2().uniform(0);\n if (device.type !== 'webgpu') {\n this.srcMipLevel = pb.int().uniform(0);\n }\n pb.main(function () {\n this.$l.coord = pb.mul(pb.ivec2(this.$builtins.fragCoord.xy), 2);\n this.$l.minCoord = pb.ivec2(0, 0);\n this.$l.maxCoord = pb.sub(this.srcSize, pb.ivec2(1, 1));\n for (let i = 0; i < 4; i++) {\n this.$l[`d${i}`] = pb.textureLoad(\n this.srcTex,\n pb.clamp(pb.add(this.coord, pb.ivec2(i >> 1, i & 1)), this.minCoord, this.maxCoord),\n device.type === 'webgpu' ? 0 : this.srcMipLevel\n ).r;\n }\n this.$l.d = pb.min(pb.min(this.d0, this.d1), pb.min(this.d2, this.d3));\n this.$outputs.color = pb.vec4(this.d, 0, 0, 1);\n });\n }\n });\n}\n\nfunction buildHiZLevel(\n device: AbstractDevice,\n miplevel: number,\n srcTexture: Texture2D,\n dstTexture: Texture2D\n): void {\n const sampler = fetchSampler('clamp_nearest');\n const framebuffer = device.pool.fetchTemporalFramebuffer(\n false,\n 0,\n 0,\n [dstTexture],\n null,\n false,\n 1,\n true,\n miplevel + 1\n );\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\n srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);\n srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);\n hzbBindGroup.setValue('srcSize', srcSize);\n if (device.type === 'webgpu') {\n hzbBindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);\n } else {\n hzbBindGroup.setTexture('srcTex', srcTexture, sampler);\n hzbBindGroup.setValue('srcMipLevel', miplevel);\n }\n device.setProgram(hzbProgram);\n device.setBindGroup(0, hzbBindGroup);\n device.setFramebuffer(framebuffer);\n drawFullscreenQuad();\n if (srcTexture !== dstTexture) {\n device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);\n }\n device.pool.releaseFrameBuffer(framebuffer);\n}\n\nexport function buildHiZ(sourceTex: Texture2D, HiZFrameBuffer: FrameBuffer) {\n const device = Application.instance.device;\n if (!hzbProgram) {\n hzbProgram = buildHZBProgram(device);\n hzbBindGroup = device.createBindGroup(hzbProgram.bindGroupLayouts[0]);\n blitter = new CopyBlitter();\n srcSize = new Int32Array(2);\n }\n blitter.blit(sourceTex, HiZFrameBuffer, fetchSampler('clamp_nearest'));\n device.pushDeviceStates();\n const srcTex = HiZFrameBuffer.getColorAttachments()[0] as Texture2D;\n if (device.type === 'webgpu') {\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\n buildHiZLevel(device, i, srcTex, srcTex);\n }\n } else {\n const tmpFramebuffer = device.pool.fetchTemporalFramebuffer(\n false,\n HiZFrameBuffer.getWidth(),\n HiZFrameBuffer.getHeight(),\n HiZFrameBuffer.getColorAttachments()[0].format,\n null,\n true\n );\n const dstTex = tmpFramebuffer.getColorAttachments()[0] as Texture2D;\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\n buildHiZLevel(device, i, srcTex, dstTex);\n }\n device.pool.releaseFrameBuffer(tmpFramebuffer);\n }\n device.popDeviceStates();\n}\n"],"names":["hzbProgram","hzbBindGroup","blitter","srcSize","buildHZBProgram","device","buildRenderProgram","label","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","type","y","neg","fragment","color","srcTex","tex2D","sampleType","uniform","ivec2","srcMipLevel","int","$l","coord","fragCoord","minCoord","maxCoord","sub","i","textureLoad","clamp","r","d","min","d0","d1","d2","d3","buildHiZLevel","miplevel","srcTexture","dstTexture","sampler","fetchSampler","framebuffer","pool","fetchTemporalFramebuffer","setColorAttachmentGenerateMipmaps","Math","max","width","height","setValue","setTextureView","setTexture","setProgram","setBindGroup","setFramebuffer","drawFullscreenQuad","copyFramebufferToTexture2D","releaseFrameBuffer","buildHiZ","sourceTex","HiZFrameBuffer","Application","instance","createBindGroup","bindGroupLayouts","CopyBlitter","Int32Array","blit","pushDeviceStates","getColorAttachments","mipLevelCount","tmpFramebuffer","getWidth","getHeight","format","dstTex","popDeviceStates"],"mappings":"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"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { RenderPass } from './renderpass.js';
|
|
2
|
-
import { RENDER_PASS_TYPE_LIGHT, MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT } from '../values.js';
|
|
3
|
-
import { Vector4 } from '@zephyr3d/base';
|
|
4
|
-
import { ShaderHelper } from '../material/shader/helper.js';
|
|
5
|
-
import { PostEffectLayer } from '../posteffect/posteffect.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Forward render pass
|
|
9
|
-
* @internal
|
|
10
|
-
*/ class LightPass extends RenderPass {
|
|
11
|
-
/** @internal */ _shadowMapHash;
|
|
12
|
-
/** @internal */ _transmission;
|
|
13
|
-
/**
|
|
14
|
-
* Creates an instance of ForwardRenderPass
|
|
15
|
-
*/ constructor(){
|
|
16
|
-
super(RENDER_PASS_TYPE_LIGHT);
|
|
17
|
-
this._shadowMapHash = null;
|
|
18
|
-
this._clearColor = Vector4.zero();
|
|
19
|
-
}
|
|
20
|
-
/** @internal */ get transmission() {
|
|
21
|
-
return this._transmission;
|
|
22
|
-
}
|
|
23
|
-
set transmission(val) {
|
|
24
|
-
this._transmission = val;
|
|
25
|
-
}
|
|
26
|
-
/** @internal */ _getGlobalBindGroupHash(ctx) {
|
|
27
|
-
return `${this._shadowMapHash}:${ctx.oit?.calculateHash() ?? ''}:${ctx.env.getHash(ctx)}:${ctx.materialFlags}:${ctx.linearDepthTexture?.uid ?? 0}:${ctx.sceneColorTexture?.uid ?? 0}:${ctx.HiZTexture?.uid ?? 0}`;
|
|
28
|
-
}
|
|
29
|
-
/** @internal */ renderLightPass(ctx, itemList, lights, flags) {
|
|
30
|
-
const baseLightPass = !ctx.lightBlending;
|
|
31
|
-
ctx.drawEnvLight = baseLightPass && ctx.env.light.type !== 'none' && (ctx.env.light.envLight.hasRadiance() || ctx.env.light.envLight.hasIrradiance());
|
|
32
|
-
ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);
|
|
33
|
-
const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);
|
|
34
|
-
if (!flags.cameraSet[ctx.renderPassHash]) {
|
|
35
|
-
ShaderHelper.setCameraUniforms(bindGroup, ctx, !!ctx.device.getFramebuffer());
|
|
36
|
-
flags.cameraSet[ctx.renderPassHash] = 1;
|
|
37
|
-
}
|
|
38
|
-
if (ctx.currentShadowLight) {
|
|
39
|
-
ShaderHelper.setLightUniformsShadow(bindGroup, ctx, lights[0]);
|
|
40
|
-
} else {
|
|
41
|
-
if (!flags.lightSet[ctx.renderPassHash]) {
|
|
42
|
-
ShaderHelper.setLightUniforms(bindGroup, ctx, ctx.clusteredLight.clusterParam, ctx.clusteredLight.countParam, ctx.clusteredLight.lightBuffer, ctx.clusteredLight.lightIndexTexture);
|
|
43
|
-
flags.lightSet[ctx.renderPassHash] = 1;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG && !flags.fogSet[ctx.renderPassHash]) {
|
|
47
|
-
ShaderHelper.setFogUniforms(bindGroup, ctx.env.sky.skyType === 'scatter' ? 1 : 0, ctx.env.sky.mappedFogType, baseLightPass ? 0 : 1, ctx.env.sky.atmosphereParams, ctx.env.sky.heightFogParams, ctx.env.sky.getAerialPerspectiveLUT(ctx), ctx.env.sky.getSkyDistantLightLUT(ctx));
|
|
48
|
-
flags.fogSet[ctx.renderPassHash] = 1;
|
|
49
|
-
}
|
|
50
|
-
ctx.device.setBindGroup(0, bindGroup);
|
|
51
|
-
const reverseWinding = ctx.camera.worldMatrixDet < 0;
|
|
52
|
-
for (const lit of itemList.lit){
|
|
53
|
-
this.drawItemList(lit, ctx, reverseWinding);
|
|
54
|
-
}
|
|
55
|
-
if (!ctx.lightBlending) {
|
|
56
|
-
for (const unlit of itemList.unlit){
|
|
57
|
-
this.drawItemList(unlit, ctx, reverseWinding);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/** @internal */ renderItems(ctx, renderQueue) {
|
|
62
|
-
ctx.fogFlags = 0;
|
|
63
|
-
ctx.renderPassHash = null;
|
|
64
|
-
ctx.env = ctx.scene.env;
|
|
65
|
-
ctx.drawEnvLight = false;
|
|
66
|
-
ctx.flip = this.isAutoFlip(ctx);
|
|
67
|
-
const ssr = !!(ctx.materialFlags & MaterialVaryingFlags.SSR_STORE_ROUGHNESS);
|
|
68
|
-
const tmpFramebuffer = ssr ? ctx.device.pool.fetchTemporalFramebuffer(false, ctx.device.getDrawingBufferWidth(), ctx.device.getDrawingBufferHeight(), ctx.device.getFramebuffer().getColorAttachments()[0], ctx.device.getFramebuffer().getDepthAttachment()) : null;
|
|
69
|
-
const oit = renderQueue.drawTransparent && ctx.primaryCamera.oit && ctx.primaryCamera.oit.supportDevice(ctx.device.type) ? ctx.primaryCamera.oit : null;
|
|
70
|
-
if (!oit && renderQueue.drawTransparent) {
|
|
71
|
-
renderQueue.sortTransparentItems(ctx.primaryCamera.getWorldPosition());
|
|
72
|
-
}
|
|
73
|
-
const flags = {
|
|
74
|
-
lightSet: {},
|
|
75
|
-
cameraSet: {},
|
|
76
|
-
fogSet: {}
|
|
77
|
-
};
|
|
78
|
-
const items = renderQueue.itemList;
|
|
79
|
-
const lists = this._transmission ? [
|
|
80
|
-
items?.transmission,
|
|
81
|
-
items?.transmission_trans,
|
|
82
|
-
items?.transparent
|
|
83
|
-
] : [
|
|
84
|
-
items?.opaque,
|
|
85
|
-
items?.transparent
|
|
86
|
-
];
|
|
87
|
-
const transparentPass = lists.length - 1;
|
|
88
|
-
for(let i = 0; i < lists.length; i++){
|
|
89
|
-
if (lists[i]) {
|
|
90
|
-
ctx.queue = i === 0 ? QUEUE_OPAQUE : QUEUE_TRANSPARENT;
|
|
91
|
-
ctx.oit = i === 0 || !items ? null : oit;
|
|
92
|
-
if (ctx.queue === QUEUE_TRANSPARENT && ctx.scene.env.sky.fogPresents) {
|
|
93
|
-
ctx.materialFlags |= MaterialVaryingFlags.APPLY_FOG;
|
|
94
|
-
}
|
|
95
|
-
const numOitPasses = ctx.oit ? ctx.oit.begin(ctx) : 1;
|
|
96
|
-
for(let p = 0; p < numOitPasses; p++){
|
|
97
|
-
if (ctx.oit) {
|
|
98
|
-
if (!ctx.oit.beginPass(ctx, p)) {
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let lightIndex = 0;
|
|
103
|
-
if (ctx.shadowMapInfo) {
|
|
104
|
-
for (const k of ctx.shadowMapInfo.keys()){
|
|
105
|
-
ctx.currentShadowLight = k;
|
|
106
|
-
ctx.lightBlending = lightIndex > 0;
|
|
107
|
-
this._shadowMapHash = ctx.shadowMapInfo.get(k).shaderHash;
|
|
108
|
-
this.renderLightPass(ctx, lists[i], [
|
|
109
|
-
k
|
|
110
|
-
], flags);
|
|
111
|
-
lightIndex++;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (lightIndex === 0 || renderQueue.unshadowedLights.length > 0) {
|
|
115
|
-
ctx.currentShadowLight = null;
|
|
116
|
-
ctx.lightBlending = lightIndex > 0;
|
|
117
|
-
this._shadowMapHash = '';
|
|
118
|
-
if (ctx.lightBlending && tmpFramebuffer) {
|
|
119
|
-
ctx.materialFlags &= ~MaterialVaryingFlags.SSR_STORE_ROUGHNESS;
|
|
120
|
-
ctx.device.pushDeviceStates();
|
|
121
|
-
ctx.device.setFramebuffer(tmpFramebuffer);
|
|
122
|
-
}
|
|
123
|
-
this.renderLightPass(ctx, lists[i], renderQueue.unshadowedLights, flags);
|
|
124
|
-
if (ctx.lightBlending && tmpFramebuffer) {
|
|
125
|
-
ctx.materialFlags |= MaterialVaryingFlags.SSR_STORE_ROUGHNESS;
|
|
126
|
-
ctx.device.popDeviceStates();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (ctx.oit) {
|
|
130
|
-
ctx.oit.endPass(ctx, p);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (ctx.oit) {
|
|
134
|
-
ctx.oit.end(ctx);
|
|
135
|
-
}
|
|
136
|
-
ctx.materialFlags &= ~MaterialVaryingFlags.APPLY_FOG;
|
|
137
|
-
}
|
|
138
|
-
if (i === 0 && !ctx.sceneColorTexture) {
|
|
139
|
-
if (tmpFramebuffer) {
|
|
140
|
-
ctx.device.pushDeviceStates();
|
|
141
|
-
ctx.device.setFramebuffer(tmpFramebuffer);
|
|
142
|
-
}
|
|
143
|
-
ctx.env.sky.skyWorldMatrix = ctx.scene.rootNode.worldMatrix;
|
|
144
|
-
ctx.env.sky.renderSky(ctx);
|
|
145
|
-
if (tmpFramebuffer) {
|
|
146
|
-
ctx.device.popDeviceStates();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (!renderQueue.needSceneColor() || ctx.sceneColorTexture) {
|
|
150
|
-
if (i === 0) {
|
|
151
|
-
if (tmpFramebuffer) {
|
|
152
|
-
ctx.device.pushDeviceStates();
|
|
153
|
-
ctx.device.setFramebuffer(tmpFramebuffer);
|
|
154
|
-
}
|
|
155
|
-
ctx.env.sky.renderFog(ctx);
|
|
156
|
-
if (tmpFramebuffer) {
|
|
157
|
-
ctx.device.popDeviceStates();
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (i === 0 || i === transparentPass) {
|
|
161
|
-
ctx.compositor?.drawPostEffects(ctx, i === 0 ? PostEffectLayer.opaque : PostEffectLayer.transparent, ctx.linearDepthTexture);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (tmpFramebuffer) {
|
|
166
|
-
ctx.device.pool.releaseFrameBuffer(tmpFramebuffer);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export { LightPass };
|
|
172
|
-
//# sourceMappingURL=lightpass.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lightpass.js","sources":["../../../src/render/lightpass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_LIGHT } from '../values';\r\nimport { Vector4 } from '@zephyr3d/base';\r\nimport type { RenderItemListBundle, RenderQueue } from './render_queue';\r\nimport type { PunctualLight } from '../scene/light';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { PostEffectLayer } from '../posteffect/posteffect';\r\n\r\n/**\r\n * Forward render pass\r\n * @internal\r\n */\r\nexport class LightPass extends RenderPass {\r\n /** @internal */\r\n protected _shadowMapHash: string;\r\n /** @internal */\r\n protected _transmission: boolean;\r\n /**\r\n * Creates an instance of ForwardRenderPass\r\n */\r\n constructor() {\r\n super(RENDER_PASS_TYPE_LIGHT);\r\n this._shadowMapHash = null;\r\n this._clearColor = Vector4.zero();\r\n }\r\n /** @internal */\r\n get transmission(): boolean {\r\n return this._transmission;\r\n }\r\n set transmission(val: boolean) {\r\n this._transmission = val;\r\n }\r\n /** @internal */\r\n protected _getGlobalBindGroupHash(ctx: DrawContext) {\r\n return `${this._shadowMapHash}:${ctx.oit?.calculateHash() ?? ''}:${ctx.env.getHash(ctx)}:${\r\n ctx.materialFlags\r\n }:${ctx.linearDepthTexture?.uid ?? 0}:${ctx.sceneColorTexture?.uid ?? 0}:${ctx.HiZTexture?.uid ?? 0}`;\r\n }\r\n /** @internal */\r\n protected renderLightPass(\r\n ctx: DrawContext,\r\n itemList: RenderItemListBundle,\r\n lights: PunctualLight[],\r\n flags: any\r\n ) {\r\n const baseLightPass = !ctx.lightBlending;\r\n ctx.drawEnvLight =\r\n baseLightPass &&\r\n ctx.env.light.type !== 'none' &&\r\n (ctx.env.light.envLight.hasRadiance() || ctx.env.light.envLight.hasIrradiance());\r\n ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);\r\n const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);\r\n if (!flags.cameraSet[ctx.renderPassHash]) {\r\n ShaderHelper.setCameraUniforms(bindGroup, ctx, !!ctx.device.getFramebuffer());\r\n flags.cameraSet[ctx.renderPassHash] = 1;\r\n }\r\n if (ctx.currentShadowLight) {\r\n ShaderHelper.setLightUniformsShadow(bindGroup, ctx, lights[0]);\r\n } else {\r\n if (!flags.lightSet[ctx.renderPassHash]) {\r\n ShaderHelper.setLightUniforms(\r\n bindGroup,\r\n ctx,\r\n ctx.clusteredLight.clusterParam,\r\n ctx.clusteredLight.countParam,\r\n ctx.clusteredLight.lightBuffer,\r\n ctx.clusteredLight.lightIndexTexture\r\n );\r\n flags.lightSet[ctx.renderPassHash] = 1;\r\n }\r\n }\r\n if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG && !flags.fogSet[ctx.renderPassHash]) {\r\n ShaderHelper.setFogUniforms(\r\n bindGroup,\r\n ctx.env.sky.skyType === 'scatter' ? 1 : 0,\r\n ctx.env.sky.mappedFogType,\r\n baseLightPass ? 0 : 1,\r\n ctx.env.sky.atmosphereParams,\r\n ctx.env.sky.heightFogParams,\r\n ctx.env.sky.getAerialPerspectiveLUT(ctx),\r\n ctx.env.sky.getSkyDistantLightLUT(ctx)\r\n );\r\n flags.fogSet[ctx.renderPassHash] = 1;\r\n }\r\n ctx.device.setBindGroup(0, bindGroup);\r\n const reverseWinding = ctx.camera.worldMatrixDet < 0;\r\n for (const lit of itemList.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n if (!ctx.lightBlending) {\r\n for (const unlit of itemList.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n }\r\n }\r\n /** @internal */\r\n protected renderItems(ctx: DrawContext, renderQueue: RenderQueue) {\r\n ctx.fogFlags = 0;\r\n ctx.renderPassHash = null;\r\n ctx.env = ctx.scene.env;\r\n ctx.drawEnvLight = false;\r\n ctx.flip = this.isAutoFlip(ctx);\r\n const ssr = !!(ctx.materialFlags & MaterialVaryingFlags.SSR_STORE_ROUGHNESS);\r\n const tmpFramebuffer = ssr\r\n ? ctx.device.pool.fetchTemporalFramebuffer(\r\n false,\r\n ctx.device.getDrawingBufferWidth(),\r\n ctx.device.getDrawingBufferHeight(),\r\n ctx.device.getFramebuffer().getColorAttachments()[0],\r\n ctx.device.getFramebuffer().getDepthAttachment()\r\n )\r\n : null;\r\n const oit =\r\n renderQueue.drawTransparent &&\r\n ctx.primaryCamera.oit &&\r\n ctx.primaryCamera.oit.supportDevice(ctx.device.type)\r\n ? ctx.primaryCamera.oit\r\n : null;\r\n if (!oit && renderQueue.drawTransparent) {\r\n renderQueue.sortTransparentItems(ctx.primaryCamera.getWorldPosition());\r\n }\r\n const flags: any = {\r\n lightSet: {},\r\n cameraSet: {},\r\n fogSet: {}\r\n };\r\n const items = renderQueue.itemList;\r\n const lists = this._transmission\r\n ? [items?.transmission, items?.transmission_trans, items?.transparent]\r\n : [items?.opaque, items?.transparent];\r\n const transparentPass = lists.length - 1;\r\n for (let i = 0; i < lists.length; i++) {\r\n if (lists[i]) {\r\n ctx.queue = i === 0 ? QUEUE_OPAQUE : QUEUE_TRANSPARENT;\r\n ctx.oit = i === 0 || !items ? null : oit;\r\n if (ctx.queue === QUEUE_TRANSPARENT && ctx.scene.env.sky.fogPresents) {\r\n ctx.materialFlags |= MaterialVaryingFlags.APPLY_FOG;\r\n }\r\n const numOitPasses = ctx.oit ? ctx.oit.begin(ctx) : 1;\r\n for (let p = 0; p < numOitPasses; p++) {\r\n if (ctx.oit) {\r\n if (!ctx.oit.beginPass(ctx, p)) {\r\n continue;\r\n }\r\n }\r\n let lightIndex = 0;\r\n if (ctx.shadowMapInfo) {\r\n for (const k of ctx.shadowMapInfo.keys()) {\r\n ctx.currentShadowLight = k;\r\n ctx.lightBlending = lightIndex > 0;\r\n this._shadowMapHash = ctx.shadowMapInfo.get(k).shaderHash;\r\n this.renderLightPass(ctx, lists[i], [k], flags);\r\n lightIndex++;\r\n }\r\n }\r\n if (lightIndex === 0 || renderQueue.unshadowedLights.length > 0) {\r\n ctx.currentShadowLight = null;\r\n ctx.lightBlending = lightIndex > 0;\r\n this._shadowMapHash = '';\r\n if (ctx.lightBlending && tmpFramebuffer) {\r\n ctx.materialFlags &= ~MaterialVaryingFlags.SSR_STORE_ROUGHNESS;\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n this.renderLightPass(ctx, lists[i], renderQueue.unshadowedLights, flags);\r\n if (ctx.lightBlending && tmpFramebuffer) {\r\n ctx.materialFlags |= MaterialVaryingFlags.SSR_STORE_ROUGHNESS;\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (ctx.oit) {\r\n ctx.oit.endPass(ctx, p);\r\n }\r\n }\r\n if (ctx.oit) {\r\n ctx.oit.end(ctx);\r\n }\r\n ctx.materialFlags &= ~MaterialVaryingFlags.APPLY_FOG;\r\n }\r\n if (i === 0 && !ctx.sceneColorTexture) {\r\n if (tmpFramebuffer) {\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n ctx.env.sky.skyWorldMatrix = ctx.scene.rootNode.worldMatrix;\r\n ctx.env.sky.renderSky(ctx);\r\n if (tmpFramebuffer) {\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (!renderQueue.needSceneColor() || ctx.sceneColorTexture) {\r\n if (i === 0) {\r\n if (tmpFramebuffer) {\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n ctx.env.sky.renderFog(ctx);\r\n if (tmpFramebuffer) {\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (i === 0 || i === transparentPass) {\r\n ctx.compositor?.drawPostEffects(\r\n ctx,\r\n i === 0 ? PostEffectLayer.opaque : PostEffectLayer.transparent,\r\n ctx.linearDepthTexture\r\n );\r\n }\r\n }\r\n }\r\n if (tmpFramebuffer) {\r\n ctx.device.pool.releaseFrameBuffer(tmpFramebuffer);\r\n }\r\n }\r\n}\r\n"],"names":["LightPass","RenderPass","RENDER_PASS_TYPE_LIGHT","_shadowMapHash","_clearColor","Vector4","zero","transmission","_transmission","val","_getGlobalBindGroupHash","ctx","oit","calculateHash","env","getHash","materialFlags","linearDepthTexture","uid","sceneColorTexture","HiZTexture","renderLightPass","itemList","lights","flags","baseLightPass","lightBlending","drawEnvLight","light","type","envLight","hasRadiance","hasIrradiance","renderPassHash","getGlobalBindGroupHash","bindGroup","globalBindGroupAllocator","getGlobalBindGroup","cameraSet","ShaderHelper","setCameraUniforms","device","getFramebuffer","currentShadowLight","setLightUniformsShadow","lightSet","setLightUniforms","clusteredLight","clusterParam","countParam","lightBuffer","lightIndexTexture","MaterialVaryingFlags","APPLY_FOG","fogSet","setFogUniforms","sky","skyType","mappedFogType","atmosphereParams","heightFogParams","getAerialPerspectiveLUT","getSkyDistantLightLUT","setBindGroup","reverseWinding","camera","worldMatrixDet","lit","drawItemList","unlit","renderItems","renderQueue","fogFlags","scene","flip","isAutoFlip","ssr","SSR_STORE_ROUGHNESS","tmpFramebuffer","pool","fetchTemporalFramebuffer","getDrawingBufferWidth","getDrawingBufferHeight","getColorAttachments","getDepthAttachment","drawTransparent","primaryCamera","supportDevice","sortTransparentItems","getWorldPosition","items","lists","transmission_trans","transparent","opaque","transparentPass","length","i","queue","QUEUE_OPAQUE","QUEUE_TRANSPARENT","fogPresents","numOitPasses","begin","p","beginPass","lightIndex","shadowMapInfo","k","keys","get","shaderHash","unshadowedLights","pushDeviceStates","setFramebuffer","popDeviceStates","endPass","end","skyWorldMatrix","rootNode","worldMatrix","renderSky","needSceneColor","renderFog","compositor","drawPostEffects","PostEffectLayer","releaseFrameBuffer"],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { RenderPass } from './renderpass.js';
|
|
2
|
-
import { RENDER_PASS_TYPE_OBJECT_COLOR } from '../values.js';
|
|
3
|
-
import { ShaderHelper } from '../material/shader/helper.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Object color render pass
|
|
7
|
-
* @internal
|
|
8
|
-
*/ class ObjectColorPass extends RenderPass {
|
|
9
|
-
/**
|
|
10
|
-
* Creates an instance of ForwardRenderPass
|
|
11
|
-
*/ constructor(){
|
|
12
|
-
super(RENDER_PASS_TYPE_OBJECT_COLOR);
|
|
13
|
-
}
|
|
14
|
-
/** @internal */ _getGlobalBindGroupHash(_ctx) {
|
|
15
|
-
return '';
|
|
16
|
-
}
|
|
17
|
-
/** @internal */ renderItems(ctx, renderQueue) {
|
|
18
|
-
const items = renderQueue.itemList;
|
|
19
|
-
if (items) {
|
|
20
|
-
ctx.fogFlags = 0;
|
|
21
|
-
ctx.drawEnvLight = false;
|
|
22
|
-
ctx.env = null;
|
|
23
|
-
ctx.picking = true;
|
|
24
|
-
ctx.flip = this.isAutoFlip(ctx);
|
|
25
|
-
ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);
|
|
26
|
-
const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);
|
|
27
|
-
ctx.device.setBindGroup(0, bindGroup);
|
|
28
|
-
ShaderHelper.setCameraUniforms(bindGroup, ctx, true);
|
|
29
|
-
const reverseWinding = ctx.camera.worldMatrixDet < 0;
|
|
30
|
-
for (const list of [
|
|
31
|
-
items.opaque,
|
|
32
|
-
items.transmission,
|
|
33
|
-
items.transparent,
|
|
34
|
-
items.transmission_trans
|
|
35
|
-
]){
|
|
36
|
-
if (list) {
|
|
37
|
-
for (const lit of list.lit){
|
|
38
|
-
this.drawItemList(lit, ctx, reverseWinding);
|
|
39
|
-
}
|
|
40
|
-
for (const unlit of list.unlit){
|
|
41
|
-
this.drawItemList(unlit, ctx, reverseWinding);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
ctx.picking = false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { ObjectColorPass };
|
|
51
|
-
//# sourceMappingURL=objectcolorpass.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectcolorpass.js","sources":["../../../src/render/objectcolorpass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { RENDER_PASS_TYPE_OBJECT_COLOR } from '../values';\r\nimport type { RenderQueue } from './render_queue';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\n\r\n/**\r\n * Object color render pass\r\n * @internal\r\n */\r\nexport class ObjectColorPass extends RenderPass {\r\n /**\r\n * Creates an instance of ForwardRenderPass\r\n */\r\n constructor() {\r\n super(RENDER_PASS_TYPE_OBJECT_COLOR);\r\n }\r\n /** @internal */\r\n protected _getGlobalBindGroupHash(_ctx: DrawContext) {\r\n return '';\r\n }\r\n /** @internal */\r\n protected renderItems(ctx: DrawContext, renderQueue: RenderQueue) {\r\n const items = renderQueue.itemList;\r\n if (items) {\r\n ctx.fogFlags = 0;\r\n ctx.drawEnvLight = false;\r\n ctx.env = null;\r\n ctx.picking = true;\r\n ctx.flip = this.isAutoFlip(ctx);\r\n ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);\r\n const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);\r\n ctx.device.setBindGroup(0, bindGroup);\r\n ShaderHelper.setCameraUniforms(bindGroup, ctx, true);\r\n const reverseWinding = ctx.camera.worldMatrixDet < 0;\r\n for (const list of [items.opaque, items.transmission, items.transparent, items.transmission_trans]) {\r\n if (list) {\r\n for (const lit of list.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n for (const unlit of list.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n }\r\n }\r\n ctx.picking = false;\r\n }\r\n }\r\n}\r\n"],"names":["ObjectColorPass","RenderPass","RENDER_PASS_TYPE_OBJECT_COLOR","_getGlobalBindGroupHash","_ctx","renderItems","ctx","renderQueue","items","itemList","fogFlags","drawEnvLight","env","picking","flip","isAutoFlip","renderPassHash","getGlobalBindGroupHash","bindGroup","globalBindGroupAllocator","getGlobalBindGroup","device","setBindGroup","ShaderHelper","setCameraUniforms","reverseWinding","camera","worldMatrixDet","list","opaque","transmission","transparent","transmission_trans","lit","drawItemList","unlit"],"mappings":";;;;AAMA;;;IAIO,MAAMA,eAAwBC,SAAAA,UAAAA,CAAAA;AACnC;;AAEC,MACD,WAAc,EAAA;AACZ,QAAA,KAAK,CAACC,6BAAAA,CAAAA;AACR;AACA,qBACUC,uBAAwBC,CAAAA,IAAiB,EAAE;QACnD,OAAO,EAAA;AACT;AACA,qBACA,WAAUC,CAAYC,GAAgB,EAAEC,WAAwB,EAAE;QAChE,MAAMC,KAAAA,GAAQD,YAAYE,QAAQ;AAClC,QAAA,IAAID,KAAO,EAAA;AACTF,YAAAA,GAAAA,CAAII,QAAQ,GAAG,CAAA;AACfJ,YAAAA,GAAAA,CAAIK,YAAY,GAAG,KAAA;AACnBL,YAAAA,GAAAA,CAAIM,GAAG,GAAG,IAAA;AACVN,YAAAA,GAAAA,CAAIO,OAAO,GAAG,IAAA;AACdP,YAAAA,GAAAA,CAAIQ,IAAI,GAAG,IAAI,CAACC,UAAU,CAACT,GAAAA,CAAAA;AAC3BA,YAAAA,GAAAA,CAAIU,cAAc,GAAG,IAAI,CAACC,sBAAsB,CAACX,GAAAA,CAAAA;AACjD,YAAA,MAAMY,SAAYZ,GAAAA,GAAAA,CAAIa,wBAAwB,CAACC,kBAAkB,CAACd,GAAAA,CAAAA;AAClEA,YAAAA,GAAAA,CAAIe,MAAM,CAACC,YAAY,CAAC,CAAGJ,EAAAA,SAAAA,CAAAA;YAC3BK,YAAaC,CAAAA,iBAAiB,CAACN,SAAAA,EAAWZ,GAAK,EAAA,IAAA,CAAA;AAC/C,YAAA,MAAMmB,cAAiBnB,GAAAA,GAAAA,CAAIoB,MAAM,CAACC,cAAc,GAAG,CAAA;AACnD,YAAA,KAAK,MAAMC,IAAQ,IAAA;AAACpB,gBAAAA,KAAAA,CAAMqB,MAAM;AAAErB,gBAAAA,KAAAA,CAAMsB,YAAY;AAAEtB,gBAAAA,KAAAA,CAAMuB,WAAW;AAAEvB,gBAAAA,KAAAA,CAAMwB;aAAmB,CAAE;AAClG,gBAAA,IAAIJ,IAAM,EAAA;AACR,oBAAA,KAAK,MAAMK,GAAAA,IAAOL,IAAKK,CAAAA,GAAG,CAAE;AAC1B,wBAAA,IAAI,CAACC,YAAY,CAACD,GAAAA,EAAK3B,GAAKmB,EAAAA,cAAAA,CAAAA;AAC9B;AACA,oBAAA,KAAK,MAAMU,KAAAA,IAASP,IAAKO,CAAAA,KAAK,CAAE;AAC9B,wBAAA,IAAI,CAACD,YAAY,CAACC,KAAAA,EAAO7B,GAAKmB,EAAAA,cAAAA,CAAAA;AAChC;AACF;AACF;AACAnB,YAAAA,GAAAA,CAAIO,OAAO,GAAG,KAAA;AAChB;AACF;AACF;;;;"}
|