@zephyr3d/scene 0.9.2 → 0.9.3
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/animationset.js +135 -135
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/ik/ik_chain_builder.js +68 -0
- package/dist/animation/ik/ik_chain_builder.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +2 -7
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +146 -146
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/math.js +16 -0
- package/dist/animation/joint_dynamics/math.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +4 -4
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_system.js +75 -75
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring2/constraints.js.map +1 -1
- package/dist/animation/spring2/controller.js +64 -64
- package/dist/animation/spring2/controller.js.map +1 -1
- package/dist/animation/spring2/math.js.map +1 -1
- package/dist/animation/spring2/spring_system.js +8 -8
- package/dist/animation/spring2/spring_system.js.map +1 -1
- package/dist/asset/model.js +57 -57
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/camera.js +184 -184
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +2 -6
- package/dist/index.js +1 -1
- package/dist/material/material.js +288 -288
- package/dist/material/material.js.map +1 -1
- package/dist/material/shader/helper.js +281 -278
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +38 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +10 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +127 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +1 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +263 -0
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +1 -0
- package/dist/render/cluster_light.js +3 -4
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +93 -93
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +3 -3
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/types.js +22 -22
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/scene/mesh.js +80 -80
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene_node.js +228 -228
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/shapes/torus.js +90 -59
- package/dist/shapes/torus.js.map +1 -1
- package/dist/src/animation/animation.js +127 -0
- package/dist/src/animation/animation.js.map +1 -0
- package/dist/src/animation/animationset.js +255 -0
- package/dist/src/animation/animationset.js.map +1 -0
- package/dist/src/animation/animationtrack.js +34 -0
- package/dist/src/animation/animationtrack.js.map +1 -0
- package/dist/src/animation/eulerrotationtrack.js +52 -0
- package/dist/src/animation/eulerrotationtrack.js.map +1 -0
- package/dist/src/animation/morphtarget.js +93 -0
- package/dist/src/animation/morphtarget.js.map +1 -0
- package/dist/src/animation/morphtrack.js +70 -0
- package/dist/src/animation/morphtrack.js.map +1 -0
- package/dist/src/animation/proptrack.js +161 -0
- package/dist/src/animation/proptrack.js.map +1 -0
- package/dist/src/animation/rotationtrack.js +51 -0
- package/dist/src/animation/rotationtrack.js.map +1 -0
- package/dist/src/animation/scaletrack.js +50 -0
- package/dist/src/animation/scaletrack.js.map +1 -0
- package/dist/src/animation/skeleton.js +204 -0
- package/dist/src/animation/skeleton.js.map +1 -0
- package/dist/src/animation/translationtrack.js +50 -0
- package/dist/src/animation/translationtrack.js.map +1 -0
- package/dist/src/app/app.js +129 -0
- package/dist/src/app/app.js.map +1 -0
- package/dist/src/app/inputmgr.js +267 -0
- package/dist/src/app/inputmgr.js.map +1 -0
- package/dist/src/asset/assetmanager.js +404 -0
- package/dist/src/asset/assetmanager.js.map +1 -0
- package/dist/src/asset/builtin.js +337 -0
- package/dist/src/asset/builtin.js.map +1 -0
- package/dist/src/asset/loaders/dds/dds.js +470 -0
- package/dist/src/asset/loaders/dds/dds.js.map +1 -0
- package/dist/src/asset/loaders/dds/dds_loader.js +28 -0
- package/dist/src/asset/loaders/dds/dds_loader.js.map +1 -0
- package/dist/src/asset/loaders/gltf/gltf_loader.js +1265 -0
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +1 -0
- package/dist/src/asset/loaders/gltf/helpers.js +327 -0
- package/dist/src/asset/loaders/gltf/helpers.js.map +1 -0
- package/dist/src/asset/loaders/hdr/hdr.js +180 -0
- package/dist/src/asset/loaders/hdr/hdr.js.map +1 -0
- package/dist/src/asset/loaders/image/tga_Loader.js +116 -0
- package/dist/src/asset/loaders/image/tga_Loader.js.map +1 -0
- package/dist/src/asset/loaders/image/webimage_loader.js +63 -0
- package/dist/src/asset/loaders/image/webimage_loader.js.map +1 -0
- package/dist/src/asset/loaders/loader.js +45 -0
- package/dist/src/asset/loaders/loader.js.map +1 -0
- package/dist/src/asset/model.js +414 -0
- package/dist/src/asset/model.js.map +1 -0
- package/dist/src/blitter/bilateralblur.js +221 -0
- package/dist/src/blitter/bilateralblur.js.map +1 -0
- package/dist/src/blitter/blitter.js +390 -0
- package/dist/src/blitter/blitter.js.map +1 -0
- package/dist/src/blitter/box.js +118 -0
- package/dist/src/blitter/box.js.map +1 -0
- package/dist/src/blitter/copy.js +22 -0
- package/dist/src/blitter/copy.js.map +1 -0
- package/dist/src/blitter/gaussianblur.js +228 -0
- package/dist/src/blitter/gaussianblur.js.map +1 -0
- package/dist/src/camera/base.js +92 -0
- package/dist/src/camera/base.js.map +1 -0
- package/dist/src/camera/camera.js +1005 -0
- package/dist/src/camera/camera.js.map +1 -0
- package/dist/src/camera/fps.js +238 -0
- package/dist/src/camera/fps.js.map +1 -0
- package/dist/src/camera/orbit.js +245 -0
- package/dist/src/camera/orbit.js.map +1 -0
- package/dist/src/camera/orthocamera.js +167 -0
- package/dist/src/camera/orthocamera.js.map +1 -0
- package/dist/src/camera/perspectivecamera.js +141 -0
- package/dist/src/camera/perspectivecamera.js.map +1 -0
- package/dist/src/index.js +120 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/material/blinn.js +81 -0
- package/dist/src/material/blinn.js.map +1 -0
- package/dist/src/material/grassmaterial.js +113 -0
- package/dist/src/material/grassmaterial.js.map +1 -0
- package/dist/src/material/lambert.js +92 -0
- package/dist/src/material/lambert.js.map +1 -0
- package/dist/src/material/material.js +301 -0
- package/dist/src/material/material.js.map +1 -0
- package/dist/src/material/meshmaterial.js +704 -0
- package/dist/src/material/meshmaterial.js.map +1 -0
- package/dist/src/material/mixins/albedocolor.js +76 -0
- package/dist/src/material/mixins/albedocolor.js.map +1 -0
- package/dist/src/material/mixins/foliage.js +47 -0
- package/dist/src/material/mixins/foliage.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/blinnphong.js +112 -0
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/lambert.js +58 -0
- package/dist/src/material/mixins/lightmodel/lambert.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +178 -0
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -0
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +139 -0
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -0
- package/dist/src/material/mixins/lit.js +476 -0
- package/dist/src/material/mixins/lit.js.map +1 -0
- package/dist/src/material/mixins/pbr/common.js +918 -0
- package/dist/src/material/mixins/pbr/common.js.map +1 -0
- package/dist/src/material/mixins/texture.js +172 -0
- package/dist/src/material/mixins/texture.js.map +1 -0
- package/dist/src/material/mixins/vertexcolor.js +56 -0
- package/dist/src/material/mixins/vertexcolor.js.map +1 -0
- package/dist/src/material/particle.js +178 -0
- package/dist/src/material/particle.js.map +1 -0
- package/dist/src/material/pbrmr.js +97 -0
- package/dist/src/material/pbrmr.js.map +1 -0
- package/dist/src/material/pbrsg.js +97 -0
- package/dist/src/material/pbrsg.js.map +1 -0
- package/dist/src/material/shader/helper.js +1209 -0
- package/dist/src/material/shader/helper.js.map +1 -0
- package/dist/src/material/terrain-cm.js +606 -0
- package/dist/src/material/terrain-cm.js.map +1 -0
- package/dist/src/material/terrainmaterial.js +375 -0
- package/dist/src/material/terrainmaterial.js.map +1 -0
- package/dist/src/material/unlit.js +41 -0
- package/dist/src/material/unlit.js.map +1 -0
- package/dist/src/material/water.js +417 -0
- package/dist/src/material/water.js.map +1 -0
- package/dist/src/posteffect/bloom.js +361 -0
- package/dist/src/posteffect/bloom.js.map +1 -0
- package/dist/src/posteffect/compositor.js +226 -0
- package/dist/src/posteffect/compositor.js.map +1 -0
- package/dist/src/posteffect/fxaa.js +273 -0
- package/dist/src/posteffect/fxaa.js.map +1 -0
- package/dist/src/posteffect/grayscale.js +69 -0
- package/dist/src/posteffect/grayscale.js.map +1 -0
- package/dist/src/posteffect/motionblur.js +96 -0
- package/dist/src/posteffect/motionblur.js.map +1 -0
- package/dist/src/posteffect/posteffect.js +126 -0
- package/dist/src/posteffect/posteffect.js.map +1 -0
- package/dist/src/posteffect/sao.js +324 -0
- package/dist/src/posteffect/sao.js.map +1 -0
- package/dist/src/posteffect/ssr.js +489 -0
- package/dist/src/posteffect/ssr.js.map +1 -0
- package/dist/src/posteffect/taa.js +172 -0
- package/dist/src/posteffect/taa.js.map +1 -0
- package/dist/src/posteffect/tonemap.js +94 -0
- package/dist/src/posteffect/tonemap.js.map +1 -0
- package/dist/src/render/abuffer_oit.js +361 -0
- package/dist/src/render/abuffer_oit.js.map +1 -0
- package/dist/src/render/clipmap.js +851 -0
- package/dist/src/render/clipmap.js.map +1 -0
- package/dist/src/render/cluster_light.js +333 -0
- package/dist/src/render/cluster_light.js.map +1 -0
- package/dist/src/render/cull_visitor.js +187 -0
- package/dist/src/render/cull_visitor.js.map +1 -0
- package/dist/src/render/depthpass.js +68 -0
- package/dist/src/render/depthpass.js.map +1 -0
- package/dist/src/render/drawable_mixin.js +227 -0
- package/dist/src/render/drawable_mixin.js.map +1 -0
- package/dist/src/render/envlight.js +463 -0
- package/dist/src/render/envlight.js.map +1 -0
- package/dist/src/render/fbm_wavegenerator.js +251 -0
- package/dist/src/render/fbm_wavegenerator.js.map +1 -0
- package/dist/src/render/fft_wavegenerator.js +1006 -0
- package/dist/src/render/fft_wavegenerator.js.map +1 -0
- package/dist/src/render/fullscreenquad.js +38 -0
- package/dist/src/render/fullscreenquad.js.map +1 -0
- package/dist/src/render/gerstner_wavegenerator.js +314 -0
- package/dist/src/render/gerstner_wavegenerator.js.map +1 -0
- package/dist/src/render/globalbindgroup_allocator.js +60 -0
- package/dist/src/render/globalbindgroup_allocator.js.map +1 -0
- package/dist/src/render/hzb.js +273 -0
- package/dist/src/render/hzb.js.map +1 -0
- package/dist/src/render/lightpass.js +172 -0
- package/dist/src/render/lightpass.js.map +1 -0
- package/dist/src/render/objectcolorpass.js +51 -0
- package/dist/src/render/objectcolorpass.js.map +1 -0
- package/dist/src/render/primitive.js +364 -0
- package/dist/src/render/primitive.js.map +1 -0
- package/dist/src/render/render_queue.js +467 -0
- package/dist/src/render/render_queue.js.map +1 -0
- package/dist/src/render/renderbundle_wrapper.js +152 -0
- package/dist/src/render/renderbundle_wrapper.js.map +1 -0
- package/dist/src/render/renderer.js +455 -0
- package/dist/src/render/renderer.js.map +1 -0
- package/dist/src/render/renderpass.js +200 -0
- package/dist/src/render/renderpass.js.map +1 -0
- package/dist/src/render/shadowmap_pass.js +56 -0
- package/dist/src/render/shadowmap_pass.js.map +1 -0
- package/dist/src/render/sky.js +1103 -0
- package/dist/src/render/sky.js.map +1 -0
- package/dist/src/render/weightedblended_oit.js +168 -0
- package/dist/src/render/weightedblended_oit.js.map +1 -0
- package/dist/src/scene/batchgroup.js +162 -0
- package/dist/src/scene/batchgroup.js.map +1 -0
- package/dist/src/scene/environment.js +209 -0
- package/dist/src/scene/environment.js.map +1 -0
- package/dist/src/scene/graph_node.js +72 -0
- package/dist/src/scene/graph_node.js.map +1 -0
- package/dist/src/scene/light.js +416 -0
- package/dist/src/scene/light.js.map +1 -0
- package/dist/src/scene/mesh.js +341 -0
- package/dist/src/scene/mesh.js.map +1 -0
- package/dist/src/scene/octree.js +649 -0
- package/dist/src/scene/octree.js.map +1 -0
- package/dist/src/scene/particlesys.js +738 -0
- package/dist/src/scene/particlesys.js.map +1 -0
- package/dist/src/scene/raycast_visitor.js +103 -0
- package/dist/src/scene/raycast_visitor.js.map +1 -0
- package/dist/src/scene/scene.js +284 -0
- package/dist/src/scene/scene.js.map +1 -0
- package/dist/src/scene/scene_node.js +732 -0
- package/dist/src/scene/scene_node.js.map +1 -0
- package/dist/src/scene/terrain/grass.js +278 -0
- package/dist/src/scene/terrain/grass.js.map +1 -0
- package/dist/src/scene/terrain/heightfield.js +475 -0
- package/dist/src/scene/terrain/heightfield.js.map +1 -0
- package/dist/src/scene/terrain/patch.js +530 -0
- package/dist/src/scene/terrain/patch.js.map +1 -0
- package/dist/src/scene/terrain/quadtree.js +461 -0
- package/dist/src/scene/terrain/quadtree.js.map +1 -0
- package/dist/src/scene/terrain/terrain.js +246 -0
- package/dist/src/scene/terrain/terrain.js.map +1 -0
- package/dist/src/scene/terrain-cm/grass.js +594 -0
- package/dist/src/scene/terrain-cm/grass.js.map +1 -0
- package/dist/src/scene/terrain-cm/grassmaterial.js +159 -0
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +1 -0
- package/dist/src/scene/terrain-cm/terrain-cm.js +538 -0
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +1 -0
- package/dist/src/scene/water.js +374 -0
- package/dist/src/scene/water.js.map +1 -0
- package/dist/src/shaders/atmosphere.js +957 -0
- package/dist/src/shaders/atmosphere.js.map +1 -0
- package/dist/src/shaders/fog.js +112 -0
- package/dist/src/shaders/fog.js.map +1 -0
- package/dist/src/shaders/misc.js +266 -0
- package/dist/src/shaders/misc.js.map +1 -0
- package/dist/src/shaders/noise.js +222 -0
- package/dist/src/shaders/noise.js.map +1 -0
- package/dist/src/shaders/pbr.js +51 -0
- package/dist/src/shaders/pbr.js.map +1 -0
- package/dist/src/shaders/shadow.js +636 -0
- package/dist/src/shaders/shadow.js.map +1 -0
- package/dist/src/shaders/ssr.js +490 -0
- package/dist/src/shaders/ssr.js.map +1 -0
- package/dist/src/shaders/temporal.js +215 -0
- package/dist/src/shaders/temporal.js.map +1 -0
- package/dist/src/shaders/water.js +756 -0
- package/dist/src/shaders/water.js.map +1 -0
- package/dist/src/shadow/esm.js +237 -0
- package/dist/src/shadow/esm.js.map +1 -0
- package/dist/src/shadow/pcf_opt.js +181 -0
- package/dist/src/shadow/pcf_opt.js.map +1 -0
- package/dist/src/shadow/pcf_pd.js +189 -0
- package/dist/src/shadow/pcf_pd.js.map +1 -0
- package/dist/src/shadow/shader.js +37 -0
- package/dist/src/shadow/shader.js.map +1 -0
- package/dist/src/shadow/shadow_impl.js +15 -0
- package/dist/src/shadow/shadow_impl.js.map +1 -0
- package/dist/src/shadow/shadowmapper.js +790 -0
- package/dist/src/shadow/shadowmapper.js.map +1 -0
- package/dist/src/shadow/ssm.js +159 -0
- package/dist/src/shadow/ssm.js.map +1 -0
- package/dist/src/shadow/vsm.js +297 -0
- package/dist/src/shadow/vsm.js.map +1 -0
- package/dist/src/shapes/box.js +386 -0
- package/dist/src/shapes/box.js.map +1 -0
- package/dist/src/shapes/cylinder.js +125 -0
- package/dist/src/shapes/cylinder.js.map +1 -0
- package/dist/src/shapes/plane.js +88 -0
- package/dist/src/shapes/plane.js.map +1 -0
- package/dist/src/shapes/shape.js +87 -0
- package/dist/src/shapes/shape.js.map +1 -0
- package/dist/src/shapes/sphere.js +114 -0
- package/dist/src/shapes/sphere.js.map +1 -0
- package/dist/src/shapes/tetrahedron.js +188 -0
- package/dist/src/shapes/tetrahedron.js.map +1 -0
- package/dist/src/shapes/torus.js +111 -0
- package/dist/src/shapes/torus.js.map +1 -0
- package/dist/src/utility/aabbtree.js +400 -0
- package/dist/src/utility/aabbtree.js.map +1 -0
- package/dist/src/utility/bounding_volume.js +29 -0
- package/dist/src/utility/bounding_volume.js.map +1 -0
- package/dist/src/utility/debug.js +28 -0
- package/dist/src/utility/debug.js.map +1 -0
- package/dist/src/utility/draco/decoder.js +116 -0
- package/dist/src/utility/draco/decoder.js.map +1 -0
- package/dist/src/utility/misc.js +105 -0
- package/dist/src/utility/misc.js.map +1 -0
- package/dist/src/utility/panorama.js +163 -0
- package/dist/src/utility/panorama.js.map +1 -0
- package/dist/src/utility/pmrem.js +354 -0
- package/dist/src/utility/pmrem.js.map +1 -0
- package/dist/src/utility/rendermipmap.js +115 -0
- package/dist/src/utility/rendermipmap.js.map +1 -0
- package/dist/src/utility/serialization/json.js +402 -0
- package/dist/src/utility/serialization/json.js.map +1 -0
- package/dist/src/utility/serialization/manager.js +623 -0
- package/dist/src/utility/serialization/manager.js.map +1 -0
- package/dist/src/utility/serialization/scene/animation.js +248 -0
- package/dist/src/utility/serialization/scene/animation.js.map +1 -0
- package/dist/src/utility/serialization/scene/batch.js +59 -0
- package/dist/src/utility/serialization/scene/batch.js.map +1 -0
- package/dist/src/utility/serialization/scene/camera.js +790 -0
- package/dist/src/utility/serialization/scene/camera.js.map +1 -0
- package/dist/src/utility/serialization/scene/common.js +222 -0
- package/dist/src/utility/serialization/scene/common.js.map +1 -0
- package/dist/src/utility/serialization/scene/light.js +575 -0
- package/dist/src/utility/serialization/scene/light.js.map +1 -0
- package/dist/src/utility/serialization/scene/material.js +1111 -0
- package/dist/src/utility/serialization/scene/material.js.map +1 -0
- package/dist/src/utility/serialization/scene/mesh.js +148 -0
- package/dist/src/utility/serialization/scene/mesh.js.map +1 -0
- package/dist/src/utility/serialization/scene/misc.js +39 -0
- package/dist/src/utility/serialization/scene/misc.js.map +1 -0
- package/dist/src/utility/serialization/scene/node.js +451 -0
- package/dist/src/utility/serialization/scene/node.js.map +1 -0
- package/dist/src/utility/serialization/scene/particle.js +425 -0
- package/dist/src/utility/serialization/scene/particle.js.map +1 -0
- package/dist/src/utility/serialization/scene/primitive.js +692 -0
- package/dist/src/utility/serialization/scene/primitive.js.map +1 -0
- package/dist/src/utility/serialization/scene/scene.js +704 -0
- package/dist/src/utility/serialization/scene/scene.js.map +1 -0
- package/dist/src/utility/serialization/scene/terrain.js +488 -0
- package/dist/src/utility/serialization/scene/terrain.js.map +1 -0
- package/dist/src/utility/serialization/scene/water.js +465 -0
- package/dist/src/utility/serialization/scene/water.js.map +1 -0
- package/dist/src/utility/shprojector.js +297 -0
- package/dist/src/utility/shprojector.js.map +1 -0
- package/dist/src/utility/textures/ggxlut.js +213 -0
- package/dist/src/utility/textures/ggxlut.js.map +1 -0
- package/dist/src/utility/textures/gradientnoise.js +62 -0
- package/dist/src/utility/textures/gradientnoise.js.map +1 -0
- package/dist/src/utility/textures/randomnoise.js +41 -0
- package/dist/src/utility/textures/randomnoise.js.map +1 -0
- package/dist/src/values.js +162 -0
- package/dist/src/values.js.map +1 -0
- package/dist/utility/blueprint/material/common.js +7 -0
- package/dist/utility/blueprint/material/common.js.map +1 -0
- package/dist/utility/blueprint/material/ir.js +489 -489
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/serialization/blueprint/constants.js +255 -0
- package/dist/utility/serialization/blueprint/constants.js.map +1 -0
- package/dist/utility/serialization/blueprint/material/constants.js +203 -0
- package/dist/utility/serialization/blueprint/material/constants.js.map +1 -0
- package/dist/utility/serialization/blueprint/material/texture.js +165 -0
- package/dist/utility/serialization/blueprint/material/texture.js.map +1 -0
- package/dist/utility/serialization/manager.js +271 -271
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/types.js +4 -4
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/values.js +49 -53
- package/dist/values.js.map +1 -1
- package/package.json +1 -1
- package/dist/animation/joint_dynamics/vrm_spring_bone.js +0 -46
- package/dist/animation/joint_dynamics/vrm_spring_bone.js.map +0 -1
- package/dist/animation/spring/spring_bone.js +0 -240
- package/dist/animation/spring/spring_bone.js.map +0 -1
- package/dist/animation/spring/spring_bone_collider.js +0 -198
- package/dist/animation/spring/spring_bone_collider.js.map +0 -1
- package/dist/animation/spring/spring_bone_constraint.js +0 -170
- package/dist/animation/spring/spring_bone_constraint.js.map +0 -1
- package/dist/animation/spring/spring_bone_system.js +0 -328
- package/dist/animation/spring/spring_bone_system.js.map +0 -1
- package/dist/render/sky_motion_vector.js +0 -85
- package/dist/render/sky_motion_vector.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.js","sources":["../../../../src/utility/draco/decoder.ts"],"sourcesContent":["import type { TypedArray, TypedArrayConstructor } from '@zephyr3d/base';\nimport type { Decoder, Mesh, DecoderModule, DataType } from 'draco3d';\n\nexport class DracoMeshDecoder {\n private readonly _module: DecoderModule;\n private readonly _decoder: Decoder;\n private readonly _mesh: Mesh;\n constructor(data: Int8Array<ArrayBuffer>, decoderModule: DecoderModule) {\n this._module = decoderModule;\n this._decoder = new this._module.Decoder();\n const buffer = new this._module.DecoderBuffer();\n buffer.Init(data, data.byteLength);\n const geometryType = this._decoder.GetEncodedGeometryType(buffer);\n if (geometryType !== this._module.TRIANGULAR_MESH) {\n this._module.destroy(buffer);\n this._module.destroy(this._decoder);\n this._decoder = null;\n throw new Error(`Unsupported geometry type: ${geometryType}`);\n }\n this._mesh = new this._module.Mesh();\n const status = this._decoder.DecodeBufferToMesh(buffer, this._mesh);\n this._module.destroy(buffer);\n if (!status.ok() || this._mesh.ptr === 0) {\n this._module.destroy(this._decoder);\n this._decoder = null;\n this._module.destroy(this._mesh);\n this._mesh = null;\n throw new Error(status.error_msg());\n }\n }\n getIndexBuffer() {\n if (!this._decoder || !this._mesh) {\n return null;\n }\n const numFaces = this._mesh.num_faces();\n const numIndices = numFaces * 3;\n // Uint32\n const indexBuffer = new Uint32Array(numIndices);\n const ptr = this._module._malloc(indexBuffer.byteLength);\n this._decoder.GetTrianglesUInt32Array(this._mesh, indexBuffer.byteLength, ptr);\n const tmpBuffer = new Uint32Array(this._module.HEAPU32.buffer, ptr, numIndices);\n indexBuffer.set(tmpBuffer);\n this._module._free(ptr);\n return indexBuffer;\n }\n getAttributeBuffer(id: number, buffer: TypedArray) {\n if (!this._decoder || !this._mesh) {\n return null;\n }\n const attribute = this._decoder.GetAttributeByUniqueId(this._mesh, id);\n if (!attribute) {\n return null;\n }\n const numComponents = attribute.num_components();\n const numPoints = this._mesh.num_points();\n const numValues = numPoints * numComponents;\n if (buffer.length !== numValues) {\n console.error(`getAttributeBuffer(): buffer length must be ${numValues}`);\n return null;\n }\n const ptr = this._module._malloc(buffer.byteLength);\n this._decoder.GetAttributeDataArrayForAllPoints(\n this._mesh,\n attribute,\n this.getDracoDataType(buffer),\n buffer.byteLength,\n ptr\n );\n const tmpBuffer = new (buffer.constructor as TypedArrayConstructor)(\n this.getDracoHeap(buffer).buffer,\n ptr,\n numValues\n );\n buffer.set(tmpBuffer);\n this._module._free(ptr);\n return buffer;\n }\n private getDracoDataType(buffer: TypedArray): DataType {\n if (buffer instanceof Float32Array) {\n return this._module.DT_FLOAT32;\n }\n if (buffer instanceof Int8Array) {\n return this._module.DT_INT8;\n }\n if (buffer instanceof Int16Array) {\n return this._module.DT_INT16;\n }\n if (buffer instanceof Int32Array) {\n return this._module.DT_INT32;\n }\n if (buffer instanceof Uint8Array) {\n return this._module.DT_UINT8;\n }\n if (buffer instanceof Uint16Array) {\n return this._module.DT_UINT16;\n }\n if (buffer instanceof Uint32Array) {\n return this._module.DT_UINT32;\n }\n throw new Error(`getDracoDataType(): invalid buffer type`);\n }\n private getDracoHeap(buffer: TypedArray): TypedArray {\n if (buffer instanceof Float32Array) {\n return this._module.HEAPF32 as TypedArray;\n }\n if (buffer instanceof Int8Array) {\n return this._module.HEAP8 as TypedArray;\n }\n if (buffer instanceof Int16Array) {\n return this._module.HEAP16 as TypedArray;\n }\n if (buffer instanceof Int32Array) {\n return this._module.HEAP32 as TypedArray;\n }\n if (buffer instanceof Uint8Array) {\n return this._module.HEAPU8 as TypedArray;\n }\n if (buffer instanceof Uint16Array) {\n return this._module.HEAPU16 as TypedArray;\n }\n if (buffer instanceof Uint32Array) {\n return this._module.HEAPU32 as TypedArray;\n }\n throw new Error(`getDracoHeap(): invalid buffer type`);\n }\n}\n"],"names":["DracoMeshDecoder","_module","_decoder","_mesh","data","decoderModule","Decoder","buffer","DecoderBuffer","Init","byteLength","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","destroy","Error","Mesh","status","DecodeBufferToMesh","ok","ptr","error_msg","getIndexBuffer","numFaces","num_faces","numIndices","indexBuffer","Uint32Array","_malloc","GetTrianglesUInt32Array","tmpBuffer","HEAPU32","set","_free","getAttributeBuffer","id","attribute","GetAttributeByUniqueId","numComponents","num_components","numPoints","num_points","numValues","length","console","error","GetAttributeDataArrayForAllPoints","getDracoDataType","getDracoHeap","Float32Array","DT_FLOAT32","Int8Array","DT_INT8","Int16Array","DT_INT16","Int32Array","DT_INT32","Uint8Array","DT_UINT8","Uint16Array","DT_UINT16","DT_UINT32","HEAPF32","HEAP8","HEAP16","HEAP32","HEAPU8","HEAPU16"],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Application } from '../app/app.js';
|
|
2
|
+
import { CopyBlitter } from '../blitter/copy.js';
|
|
3
|
+
|
|
4
|
+
const samplerOptions = {
|
|
5
|
+
clamp_linear: {
|
|
6
|
+
addressU: 'clamp',
|
|
7
|
+
addressV: 'clamp',
|
|
8
|
+
magFilter: 'linear',
|
|
9
|
+
minFilter: 'linear',
|
|
10
|
+
mipFilter: 'linear'
|
|
11
|
+
},
|
|
12
|
+
clamp_linear_nomip: {
|
|
13
|
+
addressU: 'clamp',
|
|
14
|
+
addressV: 'clamp',
|
|
15
|
+
magFilter: 'linear',
|
|
16
|
+
minFilter: 'linear',
|
|
17
|
+
mipFilter: 'none'
|
|
18
|
+
},
|
|
19
|
+
clamp_nearest: {
|
|
20
|
+
addressU: 'clamp',
|
|
21
|
+
addressV: 'clamp',
|
|
22
|
+
magFilter: 'nearest',
|
|
23
|
+
minFilter: 'nearest',
|
|
24
|
+
mipFilter: 'nearest'
|
|
25
|
+
},
|
|
26
|
+
clamp_nearest_nomip: {
|
|
27
|
+
addressU: 'clamp',
|
|
28
|
+
addressV: 'clamp',
|
|
29
|
+
magFilter: 'nearest',
|
|
30
|
+
minFilter: 'nearest',
|
|
31
|
+
mipFilter: 'none'
|
|
32
|
+
},
|
|
33
|
+
repeat_linear: {
|
|
34
|
+
addressU: 'repeat',
|
|
35
|
+
addressV: 'repeat',
|
|
36
|
+
magFilter: 'linear',
|
|
37
|
+
minFilter: 'linear',
|
|
38
|
+
mipFilter: 'linear'
|
|
39
|
+
},
|
|
40
|
+
repeat_linear_nomip: {
|
|
41
|
+
addressU: 'repeat',
|
|
42
|
+
addressV: 'repeat',
|
|
43
|
+
magFilter: 'linear',
|
|
44
|
+
minFilter: 'linear',
|
|
45
|
+
mipFilter: 'none'
|
|
46
|
+
},
|
|
47
|
+
repeat_nearest: {
|
|
48
|
+
addressU: 'repeat',
|
|
49
|
+
addressV: 'repeat',
|
|
50
|
+
magFilter: 'nearest',
|
|
51
|
+
minFilter: 'nearest',
|
|
52
|
+
mipFilter: 'nearest'
|
|
53
|
+
},
|
|
54
|
+
repeat_nearest_nomip: {
|
|
55
|
+
addressU: 'repeat',
|
|
56
|
+
addressV: 'repeat',
|
|
57
|
+
magFilter: 'nearest',
|
|
58
|
+
minFilter: 'nearest',
|
|
59
|
+
mipFilter: 'none'
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const samplers = {};
|
|
63
|
+
let copyBlitter = null;
|
|
64
|
+
let defaultCopyRenderState = null;
|
|
65
|
+
/**
|
|
66
|
+
* Fetch a sampler by type
|
|
67
|
+
* @param type - The sampler type to fetch
|
|
68
|
+
* @returns The sampler for the given type
|
|
69
|
+
* @public
|
|
70
|
+
*/ function fetchSampler(type) {
|
|
71
|
+
let sampler = samplers[type];
|
|
72
|
+
if (!sampler) {
|
|
73
|
+
const opt = samplerOptions[type];
|
|
74
|
+
if (opt) {
|
|
75
|
+
sampler = Application.instance.device.createSampler(opt);
|
|
76
|
+
samplers[type] = sampler;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return sampler;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Utility function to copy a texture
|
|
83
|
+
* @param src - Source texture to copy from
|
|
84
|
+
* @param dest - Destination texture to copy to
|
|
85
|
+
* @param sampler - Sampler object use to sample the source texture
|
|
86
|
+
* @param renderState - RenderStateSet object used to copy texture
|
|
87
|
+
* @param layer - Texture layer to copy
|
|
88
|
+
* @param srgbOut - true if output color in sRGB color space
|
|
89
|
+
* @internal
|
|
90
|
+
*/ function copyTexture(src, dest, sampler = null, renderState = null, layer = 0, srgbOut = false) {
|
|
91
|
+
if (!renderState && !defaultCopyRenderState) {
|
|
92
|
+
defaultCopyRenderState = src.device.createRenderStateSet();
|
|
93
|
+
defaultCopyRenderState.useDepthState().enableTest(false).enableWrite(false);
|
|
94
|
+
defaultCopyRenderState.useRasterizerState().setCullMode('none');
|
|
95
|
+
}
|
|
96
|
+
if (!copyBlitter) {
|
|
97
|
+
copyBlitter = new CopyBlitter();
|
|
98
|
+
}
|
|
99
|
+
copyBlitter.renderStates = renderState ?? defaultCopyRenderState;
|
|
100
|
+
copyBlitter.srgbOut = srgbOut;
|
|
101
|
+
copyBlitter.blit(src, dest, layer, sampler);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export { copyTexture, fetchSampler };
|
|
105
|
+
//# sourceMappingURL=misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sources":["../../../src/utility/misc.ts"],"sourcesContent":["import type {\r\n BaseTexture,\r\n FrameBuffer,\r\n RenderStateSet,\r\n SamplerOptions,\r\n TextureSampler\r\n} from '@zephyr3d/device';\r\nimport { Application } from '../app/app';\r\nimport { CopyBlitter } from '../blitter/copy';\r\n\r\n/**\r\n * Metadata interface for storing additional information\r\n * @public\r\n */\r\nexport interface Metadata {\r\n [key: string]:\r\n | string\r\n | number\r\n | boolean\r\n | null\r\n | Metadata\r\n | Array<string | number | boolean | null | undefined | Metadata>;\r\n}\r\n\r\n/**\r\n * Sampler types\r\n * @public\r\n */\r\nexport type SamplerType =\r\n | 'clamp_linear'\r\n | 'clamp_linear_nomip'\r\n | 'clamp_nearest'\r\n | 'clamp_nearest_nomip'\r\n | 'repeat_linear'\r\n | 'repeat_linear_nomip'\r\n | 'repeat_nearest'\r\n | 'repeat_nearest_nomip';\r\n\r\nconst samplerOptions: Record<SamplerType, SamplerOptions> = {\r\n clamp_linear: {\r\n addressU: 'clamp',\r\n addressV: 'clamp',\r\n magFilter: 'linear',\r\n minFilter: 'linear',\r\n mipFilter: 'linear'\r\n },\r\n clamp_linear_nomip: {\r\n addressU: 'clamp',\r\n addressV: 'clamp',\r\n magFilter: 'linear',\r\n minFilter: 'linear',\r\n mipFilter: 'none'\r\n },\r\n clamp_nearest: {\r\n addressU: 'clamp',\r\n addressV: 'clamp',\r\n magFilter: 'nearest',\r\n minFilter: 'nearest',\r\n mipFilter: 'nearest'\r\n },\r\n clamp_nearest_nomip: {\r\n addressU: 'clamp',\r\n addressV: 'clamp',\r\n magFilter: 'nearest',\r\n minFilter: 'nearest',\r\n mipFilter: 'none'\r\n },\r\n repeat_linear: {\r\n addressU: 'repeat',\r\n addressV: 'repeat',\r\n magFilter: 'linear',\r\n minFilter: 'linear',\r\n mipFilter: 'linear'\r\n },\r\n repeat_linear_nomip: {\r\n addressU: 'repeat',\r\n addressV: 'repeat',\r\n magFilter: 'linear',\r\n minFilter: 'linear',\r\n mipFilter: 'none'\r\n },\r\n repeat_nearest: {\r\n addressU: 'repeat',\r\n addressV: 'repeat',\r\n magFilter: 'nearest',\r\n minFilter: 'nearest',\r\n mipFilter: 'nearest'\r\n },\r\n repeat_nearest_nomip: {\r\n addressU: 'repeat',\r\n addressV: 'repeat',\r\n magFilter: 'nearest',\r\n minFilter: 'nearest',\r\n mipFilter: 'none'\r\n }\r\n};\r\n\r\nconst samplers: Partial<Record<SamplerType, TextureSampler>> = {};\r\nlet copyBlitter: CopyBlitter = null;\r\nlet defaultCopyRenderState: RenderStateSet = null;\r\n\r\n/**\r\n * Fetch a sampler by type\r\n * @param type - The sampler type to fetch\r\n * @returns The sampler for the given type\r\n * @public\r\n */\r\nexport function fetchSampler(type: SamplerType): TextureSampler {\r\n let sampler = samplers[type];\r\n if (!sampler) {\r\n const opt = samplerOptions[type];\r\n if (opt) {\r\n sampler = Application.instance.device.createSampler(opt);\r\n samplers[type] = sampler;\r\n }\r\n }\r\n return sampler;\r\n}\r\n\r\n/**\r\n * Utility function to copy a texture\r\n * @param src - Source texture to copy from\r\n * @param dest - Destination texture to copy to\r\n * @param sampler - Sampler object use to sample the source texture\r\n * @param renderState - RenderStateSet object used to copy texture\r\n * @param layer - Texture layer to copy\r\n * @param srgbOut - true if output color in sRGB color space\r\n * @internal\r\n */\r\nexport function copyTexture(\r\n src: BaseTexture,\r\n dest: BaseTexture | FrameBuffer,\r\n sampler: TextureSampler = null,\r\n renderState: RenderStateSet = null,\r\n layer = 0,\r\n srgbOut = false\r\n) {\r\n if (!renderState && !defaultCopyRenderState) {\r\n defaultCopyRenderState = src.device.createRenderStateSet();\r\n defaultCopyRenderState.useDepthState().enableTest(false).enableWrite(false);\r\n defaultCopyRenderState.useRasterizerState().setCullMode('none');\r\n }\r\n if (!copyBlitter) {\r\n copyBlitter = new CopyBlitter();\r\n }\r\n copyBlitter.renderStates = renderState ?? defaultCopyRenderState;\r\n copyBlitter.srgbOut = srgbOut;\r\n copyBlitter.blit(src, dest, layer, sampler);\r\n}\r\n"],"names":["samplerOptions","clamp_linear","addressU","addressV","magFilter","minFilter","mipFilter","clamp_linear_nomip","clamp_nearest","clamp_nearest_nomip","repeat_linear","repeat_linear_nomip","repeat_nearest","repeat_nearest_nomip","samplers","copyBlitter","defaultCopyRenderState","fetchSampler","type","sampler","opt","Application","instance","device","createSampler","copyTexture","src","dest","renderState","layer","srgbOut","createRenderStateSet","useDepthState","enableTest","enableWrite","useRasterizerState","setCullMode","CopyBlitter","renderStates","blit"],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Vector3 } from '@zephyr3d/base';
|
|
2
|
+
import { Application } from '../app/app.js';
|
|
3
|
+
import { gammaToLinear } from '../shaders/misc.js';
|
|
4
|
+
|
|
5
|
+
let vertexLayout = null;
|
|
6
|
+
let renderStates = null;
|
|
7
|
+
let panoramaToCubemapProgram = null;
|
|
8
|
+
let panoramaToCubemapBindGroup = null;
|
|
9
|
+
let panoramaToCubemapProgramRGBM = null;
|
|
10
|
+
let panoramaToCubemapBindGroupRGBM = null;
|
|
11
|
+
const faceDirections = [
|
|
12
|
+
[
|
|
13
|
+
new Vector3(0, 0, -1),
|
|
14
|
+
new Vector3(0, -1, 0),
|
|
15
|
+
new Vector3(1, 0, 0)
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
new Vector3(0, 0, 1),
|
|
19
|
+
new Vector3(0, -1, 0),
|
|
20
|
+
new Vector3(-1, 0, 0)
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
new Vector3(1, 0, 0),
|
|
24
|
+
new Vector3(0, 0, 1),
|
|
25
|
+
new Vector3(0, 1, 0)
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
new Vector3(1, 0, 0),
|
|
29
|
+
new Vector3(0, 0, -1),
|
|
30
|
+
new Vector3(0, -1, 0)
|
|
31
|
+
],
|
|
32
|
+
[
|
|
33
|
+
new Vector3(1, 0, 0),
|
|
34
|
+
new Vector3(0, -1, 0),
|
|
35
|
+
new Vector3(0, 0, 1)
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
new Vector3(-1, 0, 0),
|
|
39
|
+
new Vector3(0, -1, 0),
|
|
40
|
+
new Vector3(0, 0, -1)
|
|
41
|
+
]
|
|
42
|
+
];
|
|
43
|
+
function init() {
|
|
44
|
+
const device = Application.instance.device;
|
|
45
|
+
const vertices = new Float32Array([
|
|
46
|
+
1,
|
|
47
|
+
1,
|
|
48
|
+
-1,
|
|
49
|
+
1,
|
|
50
|
+
-1,
|
|
51
|
+
-1,
|
|
52
|
+
1,
|
|
53
|
+
-1
|
|
54
|
+
]);
|
|
55
|
+
const indices = new Uint16Array([
|
|
56
|
+
0,
|
|
57
|
+
1,
|
|
58
|
+
2,
|
|
59
|
+
0,
|
|
60
|
+
2,
|
|
61
|
+
3
|
|
62
|
+
]);
|
|
63
|
+
vertexLayout = device.createVertexLayout({
|
|
64
|
+
vertexBuffers: [
|
|
65
|
+
{
|
|
66
|
+
buffer: device.createVertexBuffer('position_f32x2', vertices)
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
indexBuffer: device.createIndexBuffer(indices)
|
|
70
|
+
});
|
|
71
|
+
renderStates = device.createRenderStateSet();
|
|
72
|
+
renderStates.useRasterizerState().setCullMode('none');
|
|
73
|
+
renderStates.useDepthState().enableTest(false).enableWrite(false);
|
|
74
|
+
panoramaToCubemapProgram = createPanoramaToCubemapProgram(false);
|
|
75
|
+
panoramaToCubemapBindGroup = device.createBindGroup(panoramaToCubemapProgram.bindGroupLayouts[0]);
|
|
76
|
+
panoramaToCubemapProgramRGBM = createPanoramaToCubemapProgram(true);
|
|
77
|
+
panoramaToCubemapBindGroupRGBM = device.createBindGroup(panoramaToCubemapProgramRGBM.bindGroupLayouts[0]);
|
|
78
|
+
}
|
|
79
|
+
function createPanoramaToCubemapProgram(rgbm) {
|
|
80
|
+
const device = Application.instance.device;
|
|
81
|
+
const pb = device;
|
|
82
|
+
return pb.buildRenderProgram({
|
|
83
|
+
vertex (pb) {
|
|
84
|
+
this.$inputs.pos = pb.vec2().attrib('position');
|
|
85
|
+
this.up = pb.vec3().uniform(0);
|
|
86
|
+
this.right = pb.vec3().uniform(0);
|
|
87
|
+
this.front = pb.vec3().uniform(0);
|
|
88
|
+
pb.main(function() {
|
|
89
|
+
this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);
|
|
90
|
+
this.$outputs.direction = pb.mul(pb.mat3(this.up, this.right, this.front), pb.vec3(this.$inputs.pos, 1));
|
|
91
|
+
if (pb.getDevice().type === 'webgpu') {
|
|
92
|
+
this.$builtins.position.y = pb.neg(this.$builtins.position.y);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
fragment (pb) {
|
|
97
|
+
this.u_panoramaTexture = pb.tex2D().uniform(0);
|
|
98
|
+
this.$outputs.outcolor = pb.vec4();
|
|
99
|
+
pb.func('dirToUV', [
|
|
100
|
+
pb.vec3('dir')
|
|
101
|
+
], function() {
|
|
102
|
+
this.$l.x = pb.add(0.5, pb.div(pb.atan2(this.dir.z, this.dir.x), 2 * Math.PI));
|
|
103
|
+
this.$l.y = pb.div(pb.acos(this.dir.y), Math.PI);
|
|
104
|
+
this.$return(pb.vec2(this.x, this.y));
|
|
105
|
+
});
|
|
106
|
+
pb.main(function() {
|
|
107
|
+
this.$l.uv = this.dirToUV(pb.normalize(this.$inputs.direction));
|
|
108
|
+
this.$l.color = pb.textureSampleLevel(this.u_panoramaTexture, this.uv, 0);
|
|
109
|
+
if (rgbm) {
|
|
110
|
+
this.$l.rgb = pb.mul(this.color.rgb, this.color.a, 6);
|
|
111
|
+
this.rgb = gammaToLinear(this, this.rgb);
|
|
112
|
+
this.$outputs.outcolor = pb.vec4(this.rgb, 1);
|
|
113
|
+
} else {
|
|
114
|
+
this.$outputs.outcolor = pb.vec4(this.color.rgb, 1);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function doConvertPanoramaToCubemap(srcTexture, dstTexture) {
|
|
121
|
+
const device = Application.instance.device;
|
|
122
|
+
const rgbm = srcTexture.format === 'rgba8unorm';
|
|
123
|
+
const program = rgbm ? panoramaToCubemapProgramRGBM : panoramaToCubemapProgram;
|
|
124
|
+
const bindgroup = rgbm ? panoramaToCubemapBindGroupRGBM : panoramaToCubemapBindGroup;
|
|
125
|
+
const framebuffer = device.createFrameBuffer([
|
|
126
|
+
dstTexture
|
|
127
|
+
], null);
|
|
128
|
+
device.pushDeviceStates();
|
|
129
|
+
device.setFramebuffer(framebuffer);
|
|
130
|
+
for(let i = 0; i < 6; i++){
|
|
131
|
+
framebuffer.setColorAttachmentCubeFace(0, i);
|
|
132
|
+
device.setVertexLayout(vertexLayout);
|
|
133
|
+
device.setRenderStates(renderStates);
|
|
134
|
+
device.setProgram(program);
|
|
135
|
+
device.setBindGroup(0, bindgroup);
|
|
136
|
+
bindgroup.setValue('up', faceDirections[i][0]);
|
|
137
|
+
bindgroup.setValue('right', faceDirections[i][1]);
|
|
138
|
+
bindgroup.setValue('front', faceDirections[i][2]);
|
|
139
|
+
bindgroup.setTexture('u_panoramaTexture', srcTexture);
|
|
140
|
+
device.draw('triangle-list', 0, 6);
|
|
141
|
+
}
|
|
142
|
+
device.popDeviceStates();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Converts an equirectangular image to cubemap
|
|
146
|
+
*
|
|
147
|
+
* @param tex - The equirectangular image to be converted
|
|
148
|
+
* @param textureSize - cubemap size
|
|
149
|
+
* @returns The converted cubemap
|
|
150
|
+
*
|
|
151
|
+
* @public
|
|
152
|
+
*/ function panoramaToCubemap(tex, outputCubeMap) {
|
|
153
|
+
const device = Application.instance.device;
|
|
154
|
+
if (!vertexLayout) {
|
|
155
|
+
init();
|
|
156
|
+
}
|
|
157
|
+
device.pushDeviceStates();
|
|
158
|
+
doConvertPanoramaToCubemap(tex, outputCubeMap);
|
|
159
|
+
device.popDeviceStates();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export { panoramaToCubemap };
|
|
163
|
+
//# sourceMappingURL=panorama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panorama.js","sources":["../../../src/utility/panorama.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n Texture2D,\r\n BindGroup,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube,\r\n VertexLayout\r\n} from '@zephyr3d/device';\r\nimport { Application } from '../app';\r\nimport { gammaToLinear } from '../shaders/misc';\r\n\r\nlet vertexLayout: VertexLayout = null;\r\nlet renderStates: RenderStateSet = null;\r\nlet panoramaToCubemapProgram: GPUProgram = null;\r\nlet panoramaToCubemapBindGroup: BindGroup = null;\r\nlet panoramaToCubemapProgramRGBM: GPUProgram = null;\r\nlet panoramaToCubemapBindGroupRGBM: BindGroup = null;\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 = Application.instance.device;\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 panoramaToCubemapProgram = createPanoramaToCubemapProgram(false);\r\n panoramaToCubemapBindGroup = device.createBindGroup(panoramaToCubemapProgram.bindGroupLayouts[0]);\r\n panoramaToCubemapProgramRGBM = createPanoramaToCubemapProgram(true);\r\n panoramaToCubemapBindGroupRGBM = device.createBindGroup(panoramaToCubemapProgramRGBM.bindGroupLayouts[0]);\r\n}\r\n\r\nfunction createPanoramaToCubemapProgram(rgbm: boolean): GPUProgram {\r\n const device = Application.instance.device;\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 (pb.getDevice().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 this.u_panoramaTexture = pb.tex2D().uniform(0);\r\n this.$outputs.outcolor = pb.vec4();\r\n pb.func('dirToUV', [pb.vec3('dir')], function () {\r\n this.$l.x = pb.add(0.5, pb.div(pb.atan2(this.dir.z, this.dir.x), 2 * Math.PI));\r\n this.$l.y = pb.div(pb.acos(this.dir.y), Math.PI);\r\n this.$return(pb.vec2(this.x, this.y));\r\n });\r\n pb.main(function () {\r\n this.$l.uv = this.dirToUV(pb.normalize(this.$inputs.direction));\r\n this.$l.color = pb.textureSampleLevel(this.u_panoramaTexture, this.uv, 0);\r\n if (rgbm) {\r\n this.$l.rgb = pb.mul(this.color.rgb, this.color.a, 6);\r\n this.rgb = gammaToLinear(this, this.rgb);\r\n this.$outputs.outcolor = pb.vec4(this.rgb, 1);\r\n } else {\r\n this.$outputs.outcolor = pb.vec4(this.color.rgb, 1);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction doConvertPanoramaToCubemap(srcTexture: Texture2D, dstTexture: TextureCube) {\r\n const device = Application.instance.device;\r\n const rgbm = srcTexture.format === 'rgba8unorm';\r\n const program = rgbm ? panoramaToCubemapProgramRGBM : panoramaToCubemapProgram;\r\n const bindgroup = rgbm ? panoramaToCubemapBindGroupRGBM : panoramaToCubemapBindGroup;\r\n const framebuffer = device.createFrameBuffer([dstTexture], null);\r\n device.pushDeviceStates();\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 device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\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 bindgroup.setTexture('u_panoramaTexture', srcTexture);\r\n device.draw('triangle-list', 0, 6);\r\n }\r\n device.popDeviceStates();\r\n}\r\n\r\n/**\r\n * Converts an equirectangular image to cubemap\r\n *\r\n * @param tex - The equirectangular image to be converted\r\n * @param textureSize - cubemap size\r\n * @returns The converted cubemap\r\n *\r\n * @public\r\n */\r\nexport function panoramaToCubemap(tex: Texture2D, outputCubeMap: TextureCube): void {\r\n const device = Application.instance.device;\r\n if (!vertexLayout) {\r\n init();\r\n }\r\n device.pushDeviceStates();\r\n doConvertPanoramaToCubemap(tex, outputCubeMap);\r\n device.popDeviceStates();\r\n}\r\n"],"names":["vertexLayout","renderStates","panoramaToCubemapProgram","panoramaToCubemapBindGroup","panoramaToCubemapProgramRGBM","panoramaToCubemapBindGroupRGBM","faceDirections","Vector3","init","device","Application","instance","vertices","Float32Array","indices","Uint16Array","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","indexBuffer","createIndexBuffer","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","createPanoramaToCubemapProgram","createBindGroup","bindGroupLayouts","rgbm","pb","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","up","vec3","uniform","right","front","main","$builtins","position","vec4","$outputs","direction","mul","mat3","getDevice","type","y","neg","fragment","u_panoramaTexture","tex2D","outcolor","func","$l","x","add","div","atan2","dir","z","Math","PI","acos","$return","uv","dirToUV","normalize","color","textureSampleLevel","rgb","a","gammaToLinear","doConvertPanoramaToCubemap","srcTexture","dstTexture","format","program","bindgroup","framebuffer","createFrameBuffer","pushDeviceStates","setFramebuffer","i","setColorAttachmentCubeFace","setVertexLayout","setRenderStates","setProgram","setBindGroup","setValue","setTexture","draw","popDeviceStates","panoramaToCubemap","tex","outputCubeMap"],"mappings":"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"}
|