@zephyr3d/scene 0.9.4 → 0.9.6
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/animationmask.js +224 -0
- package/dist/animation/animationmask.js.map +1 -0
- package/dist/animation/animationset.js +268 -67
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +3 -0
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/fixed_geometry_cache_track.js +7 -0
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
- package/dist/animation/ik_modifier.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +6 -4
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +390 -43
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +4 -3
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +2 -0
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/morphtarget.js +3 -72
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -0
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/pca_geometry_cache_track.js +3 -0
- package/dist/animation/pca_geometry_cache_track.js.map +1 -1
- package/dist/animation/proptrack.js +3 -0
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +3 -0
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +3 -0
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +254 -79
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/animation/translationtrack.js +3 -0
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/engine.js +171 -107
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +251 -80
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +344 -365
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/loader.js +1 -6
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
- package/dist/asset/model.js +1000 -131
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +474 -0
- package/dist/avatar/wardrobe.js.map +1 -0
- package/dist/index.d.ts +1126 -199
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +72 -15
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/msdf_text_sprite.js +4 -4
- package/dist/material/msdf_text_sprite.js.map +1 -1
- package/dist/material/pbrblueprint.js +102 -102
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/render/envlight.js +54 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/sky.js +9 -0
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/batchgroup.js +11 -13
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +15 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/mesh.js +79 -16
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene.js +1 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +203 -2
- package/dist/scene/scene_node.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/text/msdf/generator.js.map +1 -1
- package/dist/text/msdf/shape.js +4 -1
- package/dist/text/msdf/shape.js.map +1 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +1157 -1154
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/pmrem.js +34 -8
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/serialization/manager.js +22 -9
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +700 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +64 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +187 -8
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/textures/sheenlut.js +138 -0
- package/dist/utility/textures/sheenlut.js.map +1 -0
- package/package.json +2 -2
- 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 -1273
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmrem.js","sources":["../../src/utility/pmrem.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n FrameBuffer,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube,\r\n TextureSampler,\r\n VertexLayout\r\n} from '@zephyr3d/device';\r\nimport { getDevice } from '../app/api';\r\nimport { fetchSampler } from './misc';\r\n\r\n// reference: https://placeholderart.wordpress.com/2015/07/28/implementation-notes-runtime-environment-map-filtering-for-image-based-lighting/\r\n\r\ntype DistributionType = 'lambertian' | 'ggx';\r\n\r\nlet vertexLayout: Nullable<VertexLayout> = null;\r\nlet renderStates: Nullable<RenderStateSet> = null;\r\nconst programs: Record<\r\n string,\r\n {\r\n program: GPUProgram;\r\n bindgroup: BindGroup;\r\n }\r\n> = {};\r\n\r\nconst faceDirections = [\r\n [new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)],\r\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)],\r\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)]\r\n];\r\n\r\nfunction init() {\r\n const device = getDevice();\r\n const vertices = new Float32Array([1, 1, -1, 1, -1, -1, 1, -1]);\r\n const indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\r\n vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n {\r\n buffer: device.createVertexBuffer('position_f32x2', vertices)!\r\n }\r\n ],\r\n indexBuffer: device.createIndexBuffer(indices)\r\n });\r\n renderStates = device.createRenderStateSet();\r\n renderStates.useRasterizerState().setCullMode('none');\r\n renderStates.useDepthState().enableTest(false).enableWrite(false);\r\n}\r\n\r\nfunction getProgramInfo(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const hash = `${type}:${numSamples}`;\r\n let ret = programs[hash];\r\n if (!ret) {\r\n const program = createPMREMProgram(type, numSamples);\r\n const bindgroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n programs[hash] = ret = { program, bindgroup };\r\n }\r\n return ret;\r\n}\r\n\r\nfunction createPMREMProgram(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const pb = device;\r\n return pb.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.up = pb.vec3().uniform(0);\r\n this.right = pb.vec3().uniform(0);\r\n this.front = pb.vec3().uniform(0);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.direction = pb.mul(\r\n pb.mat3(this.up, this.right, this.front),\r\n pb.vec3(this.$inputs.pos, 1)\r\n );\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n if (type === 'ggx') {\r\n this.alphaG = pb.float().uniform(0);\r\n }\r\n this.vFilteringInfo = pb.vec3().uniform(0);\r\n this.hdrScale = pb.float().uniform(0);\r\n this.inputTexture = pb.texCube().uniform(0);\r\n this.NUM_SAMPLES_FLOAT = pb.float(numSamples);\r\n this.NUM_SAMPLES_FLOAT_INVERSED = pb.float(1 / numSamples);\r\n this.K = pb.float(4);\r\n this.$outputs.outcolor = pb.vec4();\r\n if (device.type === 'webgl') {\r\n pb.func('radicalInverse_VdC', [pb.int('bits')], function () {\r\n this.$l.rand = pb.float(0);\r\n this.$l.denom = pb.float(1);\r\n this.$l.invBase = pb.float(0.5);\r\n this.$l.n = this.bits;\r\n this.$for(pb.int('i'), 0, 32, function () {\r\n this.denom = pb.mul(this.denom, 2);\r\n this.rand = pb.add(this.rand, pb.div(pb.mod(pb.float(this.n), 2), this.denom));\r\n this.n = pb.div(this.n, 2);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$break();\r\n });\r\n });\r\n this.$return(this.rand);\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));\r\n });\r\n } else {\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n }\r\n pb.func('log4', [pb.float('x')], function () {\r\n this.$return(pb.mul(pb.log2(this.x), 0.5));\r\n });\r\n if (type === 'lambertian') {\r\n pb.func('hemisphereCosSample', [pb.vec2('u')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.sub(1, this.u.y);\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func('irradiance', [pb.vec3('direction'), pb.vec3('vFilteringInfo')], function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.colorScale = this.vFilteringInfo.z;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.Ls = pb.normalize(this.hemisphereCosSample(this.Xi));\r\n this.$l.Ns = pb.vec3(0, 0, 1);\r\n this.$l.NoL = pb.dot(this.Ns, this.Ls);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(Math.PI, this.NoL);\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)), this.log4(this.K));\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.Ls),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, this.c);\r\n });\r\n });\r\n this.result = pb.mul(this.result, this.NUM_SAMPLES_FLOAT_INVERSED, this.colorScale);\r\n this.$return(this.result);\r\n });\r\n }\r\n if (type === 'ggx') {\r\n pb.func('hemisphereImportanceSampleDggx', [pb.vec2('u'), pb.float('a')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.div(\r\n pb.sub(1, this.u.y),\r\n pb.add(pb.mul(pb.add(this.a, 1), pb.sub(this.a, 1), this.u.y), 1)\r\n );\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(pb.cos(this.phi), this.sinTheta),\r\n pb.mul(pb.sin(this.phi), this.sinTheta),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'normalDistributionFunction_TrowbridgeReitzGGX',\r\n [pb.float('NoH'), pb.float('alphaG')],\r\n function () {\r\n this.$l.a2 = pb.mul(this.alphaG, this.alphaG);\r\n this.$l.d = pb.add(pb.mul(this.NoH, this.NoH, pb.sub(this.a2, 1)), 1);\r\n this.$return(pb.div(this.a2, pb.mul(this.d, this.d, Math.PI)));\r\n }\r\n );\r\n pb.func(\r\n 'radiance',\r\n [pb.float('alphaG'), pb.vec3('direction'), pb.vec3('vFilteringInfo')],\r\n function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$if(pb.equal(this.alphaG, 0), function () {\r\n this.$l.c = pb.textureSampleLevel(this.inputTexture, this.n, 0).rgb;\r\n this.$return(this.c);\r\n }).$else(function () {\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$l.weight = pb.float(0);\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.H = this.hemisphereImportanceSampleDggx(this.Xi, this.alphaG);\r\n this.$l.NoV = pb.float(1);\r\n this.$l.NoH = this.H.z;\r\n this.$l.NoH2 = pb.mul(this.H.z, this.H.z);\r\n this.$l.NoL = pb.sub(pb.mul(this.NoH2, 2), 1);\r\n this.$l.L = pb.normalize(\r\n pb.vec3(pb.mul(this.NoH, this.H.x, 2), pb.mul(this.NoH, this.H.y, 2), this.NoL)\r\n );\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(\r\n 4,\r\n this.normalDistributionFunction_TrowbridgeReitzGGX(this.NoH, this.alphaG)\r\n );\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(\r\n pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)),\r\n this.log4(this.K)\r\n );\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.weight = pb.add(this.weight, this.NoL);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.L),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, pb.mul(this.c, this.NoL));\r\n });\r\n });\r\n this.result = pb.div(this.result, this.weight);\r\n this.$return(this.result);\r\n });\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n if (type === 'ggx') {\r\n this.$l.color = this.radiance(this.alphaG, this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n if (type === 'lambertian') {\r\n this.$l.color = this.irradiance(this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n this.$outputs.outcolor = pb.vec4(pb.mul(this.color, this.hdrScale), 1);\r\n });\r\n }\r\n })!;\r\n}\r\nfunction doPrefilterCubemap(\r\n type: DistributionType,\r\n roughness: number,\r\n miplevel: number,\r\n srcTexture: TextureCube,\r\n sampler: TextureSampler,\r\n dstFramebuffer: FrameBuffer,\r\n filteringInfo: Vector3,\r\n numSamples: number\r\n) {\r\n const device = getDevice();\r\n const framebuffer = dstFramebuffer;\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel);\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n const { program, bindgroup } = getProgramInfo(type, numSamples);\r\n bindgroup.setValue('vFilteringInfo', filteringInfo);\r\n bindgroup.setValue('hdrScale', 1);\r\n bindgroup.setTexture('inputTexture', srcTexture);\r\n if (type === 'ggx') {\r\n bindgroup.setValue('alphaG', roughness);\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\r\n device.setFramebuffer(framebuffer);\r\n for (let i = 0; i < 6; i++) {\r\n framebuffer.setColorAttachmentCubeFace(0, i);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(renderStates);\r\n bindgroup.setValue('up', faceDirections[i][0]);\r\n bindgroup.setValue('right', faceDirections[i][1]);\r\n bindgroup.setValue('front', faceDirections[i][2]);\r\n device.draw('triangle-list', 0, 6);\r\n }\r\n}\r\n\r\n/**\r\n * Prefilters an environment cubemap\r\n *\r\n * @param tex - The environment cubemap\r\n * @param type - The prefilter type\r\n * @param destTex - The output cubemap\r\n *\r\n * @public\r\n */\r\nexport function prefilterCubemap(\r\n tex: TextureCube,\r\n type: DistributionType,\r\n destTexture: TextureCube | FrameBuffer,\r\n numSamples?: number,\r\n radianceSource?: boolean\r\n) {\r\n if (!tex || !tex.isTextureCube()) {\r\n console.error('prefilterCubemap(): source texture must be cube texture');\r\n return;\r\n }\r\n const device = getDevice();\r\n if (!vertexLayout) {\r\n init();\r\n }\r\n device.pushDeviceStates();\r\n radianceSource = radianceSource ?? true;\r\n const rs = device.getRenderStates();\r\n const srcTex = tex;\r\n const width = tex.width;\r\n const mipmapsCount = tex.mipLevelCount;\r\n const filteringInfo = new Vector3(width, mipmapsCount, radianceSource ? 1 : Math.PI);\r\n const fb = destTexture.isFramebuffer() ? destTexture : device.createFrameBuffer([destTexture], null);\r\n const attachMiplevel = fb.getColorAttachmentMipLevel(0);\r\n const generateMipmap = fb.getColorAttachmentGenerateMipmaps(0);\r\n const destTex = fb.getColorAttachments()[0];\r\n const mips = type === 'ggx' ? destTex.mipLevelCount : 1;\r\n for (let i = 0; i < mips; i++) {\r\n const alpha = i === 0 ? 0 : Math.pow(2, i) / width;\r\n doPrefilterCubemap(\r\n type,\r\n alpha,\r\n i,\r\n srcTex,\r\n fetchSampler(type === 'ggx' ? 'clamp_nearest_nomip' : 'clamp_linear')!,\r\n fb,\r\n filteringInfo,\r\n numSamples ?? 64\r\n );\r\n }\r\n device.popDeviceStates();\r\n device.setRenderStates(rs);\r\n fb.setColorAttachmentMipLevel(0, attachMiplevel);\r\n fb.setColorAttachmentGenerateMipmaps(0, generateMipmap);\r\n if (!destTexture.isFramebuffer()) {\r\n fb.dispose();\r\n }\r\n}\r\n"],"names":["vertexLayout","renderStates","programs","faceDirections","Vector3","init","device","getDevice","vertices","Float32Array","indices","Uint16Array","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","indexBuffer","createIndexBuffer","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","getProgramInfo","type","numSamples","hash","ret","program","createPMREMProgram","bindgroup","createBindGroup","bindGroupLayouts","pb","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","up","vec3","uniform","right","front","main","$builtins","position","vec4","$outputs","direction","mul","mat3","y","neg","fragment","alphaG","float","vFilteringInfo","hdrScale","inputTexture","texCube","NUM_SAMPLES_FLOAT","NUM_SAMPLES_FLOAT_INVERSED","K","outcolor","func","int","$l","rand","denom","invBase","n","bits","$for","add","div","mod","$if","equal","$break","$return","i","N","radicalInverse_VdC","uint","compOr","sal","sar","compAnd","log2","x","phi","u","Math","PI","cosTheta2","sub","cosTheta","sqrt","sinTheta","cos","sin","normalize","result","tangent","lessThan","abs","z","$else","cross","bitangent","tbn","maxLevel","dim0","colorScale","omegaP","Xi","hammersley2d","Ls","hemisphereCosSample","Ns","NoL","dot","greaterThan","pdf_inversed","omegaS","l","log4","mipLevel","clamp","c","textureSampleLevel","rgb","a","a2","d","NoH","weight","H","hemisphereImportanceSampleDggx","NoV","NoH2","L","normalDistributionFunction_TrowbridgeReitzGGX","color","radiance","irradiance","doPrefilterCubemap","roughness","miplevel","srcTexture","sampler","dstFramebuffer","filteringInfo","framebuffer","setColorAttachmentMipLevel","setColorAttachmentGenerateMipmaps","setValue","setTexture","setProgram","setBindGroup","setFramebuffer","setColorAttachmentCubeFace","setVertexLayout","setRenderStates","draw","prefilterCubemap","tex","destTexture","radianceSource","isTextureCube","console","error","pushDeviceStates","rs","getRenderStates","srcTex","width","mipmapsCount","mipLevelCount","fb","isFramebuffer","createFrameBuffer","attachMiplevel","getColorAttachmentMipLevel","generateMipmap","getColorAttachmentGenerateMipmaps","destTex","getColorAttachments","mips","alpha","pow","fetchSampler","popDeviceStates","dispose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pmrem.js","sources":["../../src/utility/pmrem.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n FrameBuffer,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube,\r\n TextureSampler,\r\n VertexLayout\r\n} from '@zephyr3d/device';\r\nimport { getDevice } from '../app/api';\r\nimport { fetchSampler } from './misc';\r\n\r\n// reference: https://placeholderart.wordpress.com/2015/07/28/implementation-notes-runtime-environment-map-filtering-for-image-based-lighting/\r\n\r\ntype DistributionType = 'lambertian' | 'ggx' | 'charlie';\r\n\r\nlet vertexLayout: Nullable<VertexLayout> = null;\r\nlet renderStates: Nullable<RenderStateSet> = null;\r\nconst programs: Record<\r\n string,\r\n {\r\n program: GPUProgram;\r\n bindgroup: BindGroup;\r\n }\r\n> = {};\r\n\r\nconst faceDirections = [\r\n [new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)],\r\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)],\r\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)]\r\n];\r\n\r\nfunction init() {\r\n const device = getDevice();\r\n const vertices = new Float32Array([1, 1, -1, 1, -1, -1, 1, -1]);\r\n const indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\r\n vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n {\r\n buffer: device.createVertexBuffer('position_f32x2', vertices)!\r\n }\r\n ],\r\n indexBuffer: device.createIndexBuffer(indices)\r\n });\r\n renderStates = device.createRenderStateSet();\r\n renderStates.useRasterizerState().setCullMode('none');\r\n renderStates.useDepthState().enableTest(false).enableWrite(false);\r\n}\r\n\r\nfunction getProgramInfo(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const hash = `${type}:${numSamples}`;\r\n let ret = programs[hash];\r\n if (!ret) {\r\n const program = createPMREMProgram(type, numSamples);\r\n const bindgroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n programs[hash] = ret = { program, bindgroup };\r\n }\r\n return ret;\r\n}\r\n\r\nfunction createPMREMProgram(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const pb = device;\r\n return pb.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.up = pb.vec3().uniform(0);\r\n this.right = pb.vec3().uniform(0);\r\n this.front = pb.vec3().uniform(0);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.direction = pb.mul(\r\n pb.mat3(this.up, this.right, this.front),\r\n pb.vec3(this.$inputs.pos, 1)\r\n );\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n if (type === 'ggx' || type === 'charlie') {\r\n this.alphaG = pb.float().uniform(0);\r\n }\r\n this.vFilteringInfo = pb.vec3().uniform(0);\r\n this.hdrScale = pb.float().uniform(0);\r\n this.inputTexture = pb.texCube().uniform(0);\r\n this.NUM_SAMPLES_FLOAT = pb.float(numSamples);\r\n this.NUM_SAMPLES_FLOAT_INVERSED = pb.float(1 / numSamples);\r\n this.K = pb.float(4);\r\n this.$outputs.outcolor = pb.vec4();\r\n if (device.type === 'webgl') {\r\n pb.func('radicalInverse_VdC', [pb.int('bits')], function () {\r\n this.$l.rand = pb.float(0);\r\n this.$l.denom = pb.float(1);\r\n this.$l.invBase = pb.float(0.5);\r\n this.$l.n = this.bits;\r\n this.$for(pb.int('i'), 0, 32, function () {\r\n this.denom = pb.mul(this.denom, 2);\r\n this.rand = pb.add(this.rand, pb.div(pb.mod(pb.float(this.n), 2), this.denom));\r\n this.n = pb.div(this.n, 2);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$break();\r\n });\r\n });\r\n this.$return(this.rand);\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));\r\n });\r\n } else {\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n }\r\n pb.func('log4', [pb.float('x')], function () {\r\n this.$return(pb.mul(pb.log2(this.x), 0.5));\r\n });\r\n if (type === 'lambertian') {\r\n pb.func('hemisphereCosSample', [pb.vec2('u')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.sub(1, this.u.y);\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func('irradiance', [pb.vec3('direction'), pb.vec3('vFilteringInfo')], function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.colorScale = this.vFilteringInfo.z;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.Ls = pb.normalize(this.hemisphereCosSample(this.Xi));\r\n this.$l.Ns = pb.vec3(0, 0, 1);\r\n this.$l.NoL = pb.dot(this.Ns, this.Ls);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(Math.PI, this.NoL);\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)), this.log4(this.K));\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.Ls),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, this.c);\r\n });\r\n });\r\n this.result = pb.mul(this.result, this.NUM_SAMPLES_FLOAT_INVERSED, this.colorScale);\r\n this.$return(this.result);\r\n });\r\n }\r\n if (type === 'ggx' || type === 'charlie') {\r\n pb.func('hemisphereImportanceSampleDggx', [pb.vec2('u'), pb.float('a')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.div(\r\n pb.sub(1, this.u.y),\r\n pb.add(pb.mul(pb.add(this.a, 1), pb.sub(this.a, 1), this.u.y), 1)\r\n );\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(pb.cos(this.phi), this.sinTheta),\r\n pb.mul(pb.sin(this.phi), this.sinTheta),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func('hemisphereImportanceSampleCharlie', [pb.vec2('u'), pb.float('a')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.sinTheta = pb.pow(this.u.y, pb.div(this.a, pb.add(pb.mul(2, this.a), 1)));\r\n this.$l.cosTheta = pb.sqrt(pb.sub(1, pb.mul(this.sinTheta, this.sinTheta)));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(pb.cos(this.phi), this.sinTheta),\r\n pb.mul(pb.sin(this.phi), this.sinTheta),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'normalDistributionFunction_TrowbridgeReitzGGX',\r\n [pb.float('NoH'), pb.float('alphaG')],\r\n function () {\r\n this.$l.a2 = pb.mul(this.alphaG, this.alphaG);\r\n this.$l.d = pb.add(pb.mul(this.NoH, this.NoH, pb.sub(this.a2, 1)), 1);\r\n this.$return(pb.div(this.a2, pb.mul(this.d, this.d, Math.PI)));\r\n }\r\n );\r\n pb.func('normalDistributionFunction_Charlie', [pb.float('NoH'), pb.float('roughness')], function () {\r\n this.$l.invR = pb.div(1, pb.max(this.roughness, 0.000001));\r\n this.$l.cos2h = pb.mul(this.NoH, this.NoH);\r\n this.$l.sin2h = pb.max(pb.sub(1, this.cos2h), 0.0078125);\r\n this.$return(\r\n pb.div(pb.mul(pb.add(this.invR, 2), pb.pow(this.sin2h, pb.mul(this.invR, 0.5))), 2 * Math.PI)\r\n );\r\n });\r\n pb.func(\r\n 'radiance',\r\n [pb.float('alphaG'), pb.vec3('direction'), pb.vec3('vFilteringInfo')],\r\n function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$if(pb.equal(this.alphaG, 0), function () {\r\n this.$l.c = pb.textureSampleLevel(this.inputTexture, this.n, 0).rgb;\r\n this.$return(this.c);\r\n }).$else(function () {\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$l.weight = pb.float(0);\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n if (type === 'ggx') {\r\n this.$l.H = this.hemisphereImportanceSampleDggx(this.Xi, this.alphaG);\r\n } else {\r\n this.$l.H = this.hemisphereImportanceSampleCharlie(this.Xi, this.alphaG);\r\n }\r\n this.$l.NoV = pb.float(1);\r\n this.$l.NoH = this.H.z;\r\n this.$l.NoH2 = pb.mul(this.H.z, this.H.z);\r\n this.$l.NoL = pb.sub(pb.mul(this.NoH2, 2), 1);\r\n this.$l.L = pb.normalize(\r\n pb.vec3(pb.mul(this.NoH, this.H.x, 2), pb.mul(this.NoH, this.H.y, 2), this.NoL)\r\n );\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n if (type === 'ggx') {\r\n this.$l.pdf_inversed = pb.div(\r\n 4,\r\n this.normalDistributionFunction_TrowbridgeReitzGGX(this.NoH, this.alphaG)\r\n );\r\n } else {\r\n this.$l.pdf_inversed = pb.div(\r\n 4,\r\n this.normalDistributionFunction_Charlie(this.NoH, this.alphaG)\r\n );\r\n }\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(\r\n pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)),\r\n this.log4(this.K)\r\n );\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.weight = pb.add(this.weight, this.NoL);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.L),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, pb.mul(this.c, this.NoL));\r\n });\r\n });\r\n this.result = pb.div(this.result, this.weight);\r\n this.$return(this.result);\r\n });\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n if (type === 'ggx' || type === 'charlie') {\r\n this.$l.color = this.radiance(this.alphaG, this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n if (type === 'lambertian') {\r\n this.$l.color = this.irradiance(this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n this.$outputs.outcolor = pb.vec4(pb.mul(this.color, this.hdrScale), 1);\r\n });\r\n }\r\n })!;\r\n}\r\nfunction doPrefilterCubemap(\r\n type: DistributionType,\r\n roughness: number,\r\n miplevel: number,\r\n srcTexture: TextureCube,\r\n sampler: TextureSampler,\r\n dstFramebuffer: FrameBuffer,\r\n filteringInfo: Vector3,\r\n numSamples: number\r\n) {\r\n const device = getDevice();\r\n const framebuffer = dstFramebuffer;\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel);\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n const { program, bindgroup } = getProgramInfo(type, numSamples);\r\n bindgroup.setValue('vFilteringInfo', filteringInfo);\r\n bindgroup.setValue('hdrScale', 1);\r\n bindgroup.setTexture('inputTexture', srcTexture);\r\n if (type === 'ggx' || type === 'charlie') {\r\n bindgroup.setValue('alphaG', roughness);\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\r\n device.setFramebuffer(framebuffer);\r\n for (let i = 0; i < 6; i++) {\r\n framebuffer.setColorAttachmentCubeFace(0, i);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(renderStates);\r\n bindgroup.setValue('up', faceDirections[i][0]);\r\n bindgroup.setValue('right', faceDirections[i][1]);\r\n bindgroup.setValue('front', faceDirections[i][2]);\r\n device.draw('triangle-list', 0, 6);\r\n }\r\n}\r\n\r\n/**\r\n * Prefilters an environment cubemap\r\n *\r\n * @param tex - The environment cubemap\r\n * @param type - The prefilter type\r\n * @param destTex - The output cubemap\r\n *\r\n * @public\r\n */\r\nexport function prefilterCubemap(\r\n tex: TextureCube,\r\n type: DistributionType,\r\n destTexture: TextureCube | FrameBuffer,\r\n numSamples?: number,\r\n radianceSource?: boolean\r\n) {\r\n if (!tex || !tex.isTextureCube()) {\r\n console.error('prefilterCubemap(): source texture must be cube texture');\r\n return;\r\n }\r\n const device = getDevice();\r\n if (!vertexLayout) {\r\n init();\r\n }\r\n device.pushDeviceStates();\r\n radianceSource = radianceSource ?? true;\r\n const rs = device.getRenderStates();\r\n const srcTex = tex;\r\n const width = tex.width;\r\n const mipmapsCount = tex.mipLevelCount;\r\n const filteringInfo = new Vector3(width, mipmapsCount, radianceSource ? 1 : Math.PI);\r\n const fb = destTexture.isFramebuffer() ? destTexture : device.createFrameBuffer([destTexture], null);\r\n const attachMiplevel = fb.getColorAttachmentMipLevel(0);\r\n const generateMipmap = fb.getColorAttachmentGenerateMipmaps(0);\r\n const destTex = fb.getColorAttachments()[0];\r\n const mips = type === 'ggx' || type === 'charlie' ? destTex.mipLevelCount : 1;\r\n for (let i = 0; i < mips; i++) {\r\n const alpha = i === 0 ? 0 : Math.pow(2, i) / width;\r\n doPrefilterCubemap(\r\n type,\r\n alpha,\r\n i,\r\n srcTex,\r\n fetchSampler(type === 'ggx' || type === 'charlie' ? 'clamp_nearest_nomip' : 'clamp_linear')!,\r\n fb,\r\n filteringInfo,\r\n numSamples ?? 64\r\n );\r\n }\r\n device.popDeviceStates();\r\n device.setRenderStates(rs);\r\n fb.setColorAttachmentMipLevel(0, attachMiplevel);\r\n fb.setColorAttachmentGenerateMipmaps(0, generateMipmap);\r\n if (!destTexture.isFramebuffer()) {\r\n fb.dispose();\r\n }\r\n}\r\n"],"names":["vertexLayout","renderStates","programs","faceDirections","Vector3","init","device","getDevice","vertices","Float32Array","indices","Uint16Array","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","indexBuffer","createIndexBuffer","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","getProgramInfo","type","numSamples","hash","ret","program","createPMREMProgram","bindgroup","createBindGroup","bindGroupLayouts","pb","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","up","vec3","uniform","right","front","main","$builtins","position","vec4","$outputs","direction","mul","mat3","y","neg","fragment","alphaG","float","vFilteringInfo","hdrScale","inputTexture","texCube","NUM_SAMPLES_FLOAT","NUM_SAMPLES_FLOAT_INVERSED","K","outcolor","func","int","$l","rand","denom","invBase","n","bits","$for","add","div","mod","$if","equal","$break","$return","i","N","radicalInverse_VdC","uint","compOr","sal","sar","compAnd","log2","x","phi","u","Math","PI","cosTheta2","sub","cosTheta","sqrt","sinTheta","cos","sin","normalize","result","tangent","lessThan","abs","z","$else","cross","bitangent","tbn","maxLevel","dim0","colorScale","omegaP","Xi","hammersley2d","Ls","hemisphereCosSample","Ns","NoL","dot","greaterThan","pdf_inversed","omegaS","l","log4","mipLevel","clamp","c","textureSampleLevel","rgb","a","pow","a2","d","NoH","invR","max","roughness","cos2h","sin2h","weight","H","hemisphereImportanceSampleDggx","hemisphereImportanceSampleCharlie","NoV","NoH2","L","normalDistributionFunction_TrowbridgeReitzGGX","normalDistributionFunction_Charlie","color","radiance","irradiance","doPrefilterCubemap","miplevel","srcTexture","sampler","dstFramebuffer","filteringInfo","framebuffer","setColorAttachmentMipLevel","setColorAttachmentGenerateMipmaps","setValue","setTexture","setProgram","setBindGroup","setFramebuffer","setColorAttachmentCubeFace","setVertexLayout","setRenderStates","draw","prefilterCubemap","tex","destTexture","radianceSource","isTextureCube","console","error","pushDeviceStates","rs","getRenderStates","srcTex","width","mipmapsCount","mipLevelCount","fb","isFramebuffer","createFrameBuffer","attachMiplevel","getColorAttachmentMipLevel","generateMipmap","getColorAttachmentGenerateMipmaps","destTex","getColorAttachments","mips","alpha","fetchSampler","popDeviceStates","dispose"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { getSceneClass } from './scene/scene.js';
|
|
|
12
12
|
import { getScriptAttachmentClass } from './scene/script.js';
|
|
13
13
|
import { getTerrainClass } from './scene/terrain.js';
|
|
14
14
|
import { getWaterClass, getFFTWaveGeneratorClass, getFBMWaveGeneratorClass } from './scene/water.js';
|
|
15
|
-
import { getInterpolatorClass, getSkeletonClass, getAnimationClass, getPropTrackClass, getNodeRotationTrackClass, getNodeScaleTrackClass, getNodeTranslationTrackClass, getNodeEulerRotationTrackClass, getFixedGeometryCacheTrackClass, getPCAGeometryCacheTrackClass, getMorphTrackClass } from './scene/animation.js';
|
|
15
|
+
import { getInterpolatorClass, getSkeletonRigClass, getSkinBindingClass, getSkeletonClass, getJointDynamicsModifierClass, getAnimationClass, getPropTrackClass, getNodeRotationTrackClass, getNodeScaleTrackClass, getNodeTranslationTrackClass, getNodeEulerRotationTrackClass, getFixedGeometryCacheTrackClass, getPCAGeometryCacheTrackClass, getMorphTrackClass } from './scene/animation.js';
|
|
16
16
|
import '../../scene/scene.js';
|
|
17
17
|
import '../../values.js';
|
|
18
18
|
import '../../render/render_queue.js';
|
|
@@ -54,8 +54,8 @@ import '../../scene/terrain-cm/terrain-cm.js';
|
|
|
54
54
|
import '../../scene/terrain-cm/grass.js';
|
|
55
55
|
import '../../scene/raycast_visitor.js';
|
|
56
56
|
import { AssetManager } from '../../asset/assetmanager.js';
|
|
57
|
-
import '../../animation/eulerrotationtrack.js';
|
|
58
57
|
import '../../animation/skeleton.js';
|
|
58
|
+
import '../../animation/eulerrotationtrack.js';
|
|
59
59
|
import '../../animation/joint_dynamics/collision.js';
|
|
60
60
|
import '../../animation/joint_dynamics/solver.js';
|
|
61
61
|
import '../../animation/joint_dynamics/joint_dynamics_system.js';
|
|
@@ -168,7 +168,10 @@ const defaultValues = {
|
|
|
168
168
|
getScriptAttachmentClass(),
|
|
169
169
|
getAABBClass(),
|
|
170
170
|
getInterpolatorClass(),
|
|
171
|
+
getSkeletonRigClass(),
|
|
172
|
+
getSkinBindingClass(),
|
|
171
173
|
getSkeletonClass(),
|
|
174
|
+
getJointDynamicsModifierClass(),
|
|
172
175
|
getAnimationClass(this),
|
|
173
176
|
getPropTrackClass(this),
|
|
174
177
|
getNodeRotationTrackClass(),
|
|
@@ -538,6 +541,14 @@ const defaultValues = {
|
|
|
538
541
|
}
|
|
539
542
|
}
|
|
540
543
|
/**
|
|
544
|
+
* Register a model loader.
|
|
545
|
+
*
|
|
546
|
+
* @param mimeType - What MIME type of files this loader can load
|
|
547
|
+
* @param loader - A concrete model loader implementation.
|
|
548
|
+
*/ setModelLoader(mimeType, loader) {
|
|
549
|
+
this._assetManager.setModelLoader(mimeType, loader);
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
541
552
|
* Fetch a binary asset by ID via the asset manager.
|
|
542
553
|
*
|
|
543
554
|
* @remarks
|
|
@@ -547,9 +558,9 @@ const defaultValues = {
|
|
|
547
558
|
* @param path - VFS path of the binary asset.
|
|
548
559
|
*
|
|
549
560
|
* @returns A Promise that resolves to the binary content, or `null` if not found.
|
|
550
|
-
*/ async fetchBinary(path) {
|
|
561
|
+
*/ async fetchBinary(path, options) {
|
|
551
562
|
const id = this.VFS.normalizePath(path);
|
|
552
|
-
const data = await this._assetManager.fetchBinaryData(id);
|
|
563
|
+
const data = await this._assetManager.fetchBinaryData(id, null, null, options);
|
|
553
564
|
if (data) {
|
|
554
565
|
this._allocated.set(data, id);
|
|
555
566
|
}
|
|
@@ -721,7 +732,8 @@ const defaultValues = {
|
|
|
721
732
|
const id = this.VFS.normalizePath(path);
|
|
722
733
|
const model = await this._assetManager.fetchModel(scene, id, options);
|
|
723
734
|
if (model) {
|
|
724
|
-
|
|
735
|
+
model.prefabId = id;
|
|
736
|
+
this._allocated.set(model, id);
|
|
725
737
|
}
|
|
726
738
|
return model;
|
|
727
739
|
}
|
|
@@ -762,9 +774,9 @@ const defaultValues = {
|
|
|
762
774
|
* @param path - VFS path of the material file.
|
|
763
775
|
*
|
|
764
776
|
* @returns A Promise resolving to the loaded material, or `null` if failed.
|
|
765
|
-
*/ async fetchMaterial(path) {
|
|
777
|
+
*/ async fetchMaterial(path, options) {
|
|
766
778
|
const id = this.VFS.normalizePath(path);
|
|
767
|
-
const material = await this._assetManager.fetchMaterial(id);
|
|
779
|
+
const material = await this._assetManager.fetchMaterial(id, options);
|
|
768
780
|
if (material) {
|
|
769
781
|
this._allocated.set(material, id);
|
|
770
782
|
}
|
|
@@ -790,9 +802,9 @@ const defaultValues = {
|
|
|
790
802
|
* @param path - VFS path of the primitive file.
|
|
791
803
|
*
|
|
792
804
|
* @returns A Promise resolving to the loaded primitive, or `null` if failed.
|
|
793
|
-
*/ async fetchPrimitive(path) {
|
|
805
|
+
*/ async fetchPrimitive(path, options) {
|
|
794
806
|
const id = this.VFS.normalizePath(path);
|
|
795
|
-
const primitive = await this._assetManager.fetchPrimitive(id);
|
|
807
|
+
const primitive = await this._assetManager.fetchPrimitive(id, options);
|
|
796
808
|
if (primitive) {
|
|
797
809
|
this._allocated.set(primitive, id);
|
|
798
810
|
}
|
|
@@ -830,6 +842,7 @@ const defaultValues = {
|
|
|
830
842
|
node.prefabId = tmpNode.get().prefabId;
|
|
831
843
|
node.parent = parent;
|
|
832
844
|
node.persistentId = randomUUID();
|
|
845
|
+
node.animationSet.resetSkeletonModifiers();
|
|
833
846
|
tmpNode.dispose();
|
|
834
847
|
return node;
|
|
835
848
|
} catch (err) {
|