@zephyr3d/scene 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/joint_dynamics/controller.js +92 -32
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +71 -27
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +21 -20
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/skeleton.js +7 -10
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/app/engine.js +134 -140
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +47 -16
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +3 -1
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +346 -7
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +20 -16
- package/dist/avatar/wardrobe.js.map +1 -1
- package/dist/camera/camera.js +416 -210
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +1350 -621
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +23 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +178 -23
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +4 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +2 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +1 -1
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +276 -65
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -3
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js +2 -2
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/mtoon.js +574 -0
- package/dist/material/mtoon.js.map +1 -0
- package/dist/material/pbrblueprint.js +499 -336
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +118 -100
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +324 -294
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +812 -0
- package/dist/material/subsurfaceprofile.js.map +1 -0
- package/dist/material/unlit.js +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/compositor.js +46 -11
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/ssr.js +422 -96
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +1053 -0
- package/dist/posteffect/sss.js.map +1 -0
- package/dist/posteffect/taa.js +61 -60
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +63 -12
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +6 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable.js +1 -5
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/drawable_mixin.js +2 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +2 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +2 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/lightpass.js +110 -23
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +51 -8
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +80 -66
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +8 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +481 -95
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +55 -0
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +3 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +10 -4
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sky.js +31 -1
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +23 -5
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +4 -2
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -1
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +11 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +21 -3
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +29 -14
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +5 -2
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +5 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +3 -1
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +6 -5
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +4 -2
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +2 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +4 -2
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +4 -2
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/shadow.js +26 -393
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shadow/esm.js +112 -12
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +2 -2
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +19 -10
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +58 -7
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +6 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +229 -0
- package/dist/shadow/shadow_region.js.map +1 -0
- package/dist/shadow/shadowmapper.js +67 -59
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/vsm.js +45 -19
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/text/font/cff_font.js +890 -0
- package/dist/text/font/cff_font.js.map +1 -0
- package/dist/text/font/font_asset.js +17 -3
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +8 -8
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +31 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +1 -17
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +327 -359
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +5 -2
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +249 -54
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +37 -1
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +42 -3
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1112 -646
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +7 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +31 -12
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +3 -1
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +18 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +6 -3
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +5 -2
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -1
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +6 -0
- package/dist/utility/textures/ltcdata.js.map +1 -0
- package/dist/utility/textures/ltclut.js +61 -0
- package/dist/utility/textures/ltclut.js.map +1 -0
- package/dist/values.js +9 -1
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/animation/ik/ik_pole_constraint.js +0 -123
- package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
- package/dist/animation/ik/ik_track.js +0 -96
- package/dist/animation/ik/ik_track.js.map +0 -1
- package/dist/animation/ik_postprocessor.js +0 -71
- package/dist/animation/ik_postprocessor.js.map +0 -1
- package/dist/animation/joint_dynamics/math.js +0 -16
- package/dist/animation/joint_dynamics/math.js.map +0 -1
- package/dist/animation/manual_transform_processor.js +0 -156
- package/dist/animation/manual_transform_processor.js.map +0 -1
- package/dist/animation/skeleton_postprocessor.js +0 -50
- package/dist/animation/skeleton_postprocessor.js.map +0 -1
- package/dist/animation/spring2/collision.js +0 -469
- package/dist/animation/spring2/collision.js.map +0 -1
- package/dist/animation/spring2/constraints.js +0 -329
- package/dist/animation/spring2/constraints.js.map +0 -1
- package/dist/animation/spring2/controller.js +0 -434
- package/dist/animation/spring2/controller.js.map +0 -1
- package/dist/animation/spring2/math.js +0 -16
- package/dist/animation/spring2/math.js.map +0 -1
- package/dist/animation/spring2/solver.js +0 -624
- package/dist/animation/spring2/solver.js.map +0 -1
- package/dist/animation/spring2/spring_system.js +0 -118
- package/dist/animation/spring2/spring_system.js.map +0 -1
- package/dist/animation/spring2/types.js +0 -19
- package/dist/animation/spring2/types.js.map +0 -1
- package/dist/animation/spring_postprocessor.js +0 -54
- package/dist/animation/spring_postprocessor.js.map +0 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
- package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/asset/loaders/gltf/helpers.js +0 -331
- package/dist/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/material/sprite3d.js +0 -301
- package/dist/material/sprite3d.js.map +0 -1
- package/dist/material/sprite3d_std.js +0 -116
- package/dist/material/sprite3d_std.js.map +0 -1
- package/dist/material/sprite3dblueprint.js +0 -235
- package/dist/material/sprite3dblueprint.js.map +0 -1
- package/dist/material/sprite_sdf.js +0 -106
- package/dist/material/sprite_sdf.js.map +0 -1
- package/dist/material/terrainmaterial.js +0 -368
- package/dist/material/terrainmaterial.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/render/deferredlightpass.js +0 -510
- package/dist/render/deferredlightpass.js.map +0 -1
- package/dist/render/deferredshadowlightpass.js +0 -428
- package/dist/render/deferredshadowlightpass.js.map +0 -1
- package/dist/render/gbufferpass.js +0 -50
- package/dist/render/gbufferpass.js.map +0 -1
- package/dist/scene/sdftextsprite.js +0 -322
- package/dist/scene/sdftextsprite.js.map +0 -1
- package/dist/scene/sprite3d.js +0 -18
- package/dist/scene/sprite3d.js.map +0 -1
- package/dist/scene/terrain/grass.js +0 -280
- package/dist/scene/terrain/grass.js.map +0 -1
- package/dist/scene/terrain/heightfield.js +0 -475
- package/dist/scene/terrain/heightfield.js.map +0 -1
- package/dist/scene/terrain/patch.js +0 -532
- package/dist/scene/terrain/patch.js.map +0 -1
- package/dist/scene/terrain/quadtree.js +0 -461
- package/dist/scene/terrain/quadtree.js.map +0 -1
- package/dist/scene/terrain/terrain.js +0 -231
- package/dist/scene/terrain/terrain.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
- package/dist/utility/serialization/scene/cloth_script.js +0 -834
- package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
- package/dist/utility/serialization/scene/spring_script.js +0 -596
- package/dist/utility/serialization/scene/spring_script.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gltf_loader.js","sources":["../../../../src/asset/loaders/gltf/gltf_loader.ts"],"sourcesContent":["import type { DecoderModule } from 'draco3d';\nimport type { InterpolationMode, Nullable, TypedArray, VFS } from '@zephyr3d/base';\nimport { Vector3, Vector4, Matrix4x4, Quaternion, Interpolator, DRef } from '@zephyr3d/base';\nimport type {\n AssetHierarchyNode,\n AssetMeshData,\n AssetAnimationData,\n AssetSubMeshData,\n AssetMaterial,\n AssetUnlitMaterial,\n AssetPBRMaterialMR,\n AssetPBRMaterialSG,\n AssetMaterialCommon,\n MaterialTextureInfo,\n AssetPBRMaterialCommon,\n AssetAnimationTrack\n} from '../../model';\nimport { SharedModel, AssetSkeleton, AssetScene } from '../../model';\nimport { BoundingBox } from '../../../utility/bounding_volume';\nimport { Primitive } from '../../../render/primitive';\nimport type { MeshMaterial as M } from '../../../material/meshmaterial';\nimport { UnlitMaterial } from '../../../material';\nimport { ComponentType, GLTFAccessor } from './helpers';\nimport { AbstractModelLoader } from '../loader';\nimport type {\n VertexSemantic,\n GPUDataBuffer,\n Texture2D,\n IndexBuffer,\n StructuredBuffer,\n TextureAddressMode,\n TextureFilterMode,\n AbstractDevice\n} from '@zephyr3d/device';\nimport type { AssetManager } from '../../assetmanager';\nimport type { GlTf, Material, TextureInfo } from './gltf';\nimport { PBRMetallicRoughnessMaterial } from '../../../material/pbrmr';\nimport { PBRSpecularGlossinessMaterial } from '../../../material/pbrsg';\nimport { DracoMeshDecoder } from '../../../utility/draco/decoder';\nimport {\n MORPH_TARGET_COLOR,\n MORPH_TARGET_NORMAL,\n MORPH_TARGET_POSITION,\n MORPH_TARGET_TANGENT,\n MORPH_TARGET_TEX0,\n MORPH_TARGET_TEX1,\n MORPH_TARGET_TEX2,\n MORPH_TARGET_TEX3\n} from '../../../values';\nimport { getDevice } from '../../../app/api';\n/** @internal */\nexport interface GLTFContent extends GlTf {\n _manager: AssetManager;\n _VFS?: VFS;\n _loadedBuffers: Nullable<ArrayBuffer[]>;\n _accessors: GLTFAccessor[];\n _bufferCache: Record<string, GPUDataBuffer>;\n _textureCache: Record<string, Texture2D>;\n _materialCache: Record<string, M>;\n _nodes: AssetHierarchyNode[];\n _meshes: AssetMeshData[];\n _device: AbstractDevice;\n _dracoModule?: DecoderModule;\n}\n\n/**\n * The GLTF/GLB model loader\n * @internal\n */\nexport class GLTFLoader extends AbstractModelLoader {\n supportMIMEType(mimeType: string) {\n return mimeType === 'model/gltf+json' || mimeType === 'model/gltf-binary';\n }\n async load(\n assetManager: AssetManager,\n url: string,\n mimeType: string,\n data: Blob,\n decoderModule?: DecoderModule,\n vfs?: VFS\n ) {\n const buffer = await data.arrayBuffer();\n if (this.isGLB(buffer)) {\n return this.loadBinary(assetManager, url, buffer, vfs, decoderModule);\n }\n const gltf = (await new Response(data).json()) as GLTFContent;\n gltf._manager = assetManager;\n gltf._VFS = vfs;\n gltf._loadedBuffers = null;\n return this.loadJson(url, gltf, decoderModule);\n }\n async loadBinary(\n assetManager: AssetManager,\n url: string,\n buffer: ArrayBuffer,\n VFS?: VFS,\n decoderModule?: DecoderModule\n ) {\n const jsonChunkType = 0x4e4f534a;\n const binaryChunkType = 0x004e4942;\n let gltf: Nullable<GLTFContent> = null;\n const buffers: ArrayBuffer[] = [];\n const chunkInfos = this.getGLBChunkInfos(buffer);\n for (const info of chunkInfos) {\n if (info.type === jsonChunkType && !gltf) {\n const jsonSlice = new Uint8Array(buffer, 20, info.length);\n const stringBuffer = new TextDecoder('utf-8').decode(jsonSlice);\n gltf = JSON.parse(stringBuffer);\n } else if (info.type === binaryChunkType) {\n buffers.push(buffer.slice(info.start, info.start + info.length));\n }\n }\n if (gltf) {\n gltf._manager = assetManager;\n gltf._VFS = VFS;\n gltf._loadedBuffers = buffers;\n return this.loadJson(url, gltf, decoderModule);\n }\n return null;\n }\n async loadJson(url: string, gltf: GLTFContent, dracoDecoderModule?: DecoderModule) {\n // check extensions\n if (\n !dracoDecoderModule &&\n gltf.extensionsRequired &&\n gltf.extensionsRequired.indexOf('KHR_draco_mesh_compression') >= 0\n ) {\n console.error('Draco3d is required for loading model');\n return null;\n }\n gltf._dracoModule = dracoDecoderModule;\n gltf._accessors = [];\n gltf._bufferCache = {};\n gltf._textureCache = {};\n gltf._materialCache = {};\n gltf._nodes = [];\n gltf._meshes = [];\n // check asset property\n const asset = gltf.asset;\n if (asset) {\n const gltfVersion = asset.version;\n if (gltfVersion !== '2.0') {\n console.error(`Invalid GLTF version: ${gltfVersion}`);\n return null;\n }\n }\n gltf._baseURI = url.substring(0, url.lastIndexOf('/') + 1);\n if (!gltf._loadedBuffers) {\n gltf._loadedBuffers = [];\n const buffers = gltf.buffers;\n if (buffers) {\n for (const buffer of buffers) {\n const uri = this._normalizeURI(gltf._baseURI, buffer.uri!);\n const buf = await gltf._manager.fetchBinaryData(uri, null, null, { overrideVFS: gltf._VFS });\n if (buffer.byteLength !== buf!.byteLength) {\n console.error(`Invalid GLTF: buffer byte length error.`);\n return null;\n }\n gltf._loadedBuffers.push(buf!);\n }\n }\n }\n const accessors = gltf.accessors;\n if (accessors) {\n for (const accessor of accessors) {\n gltf._accessors.push(new GLTFAccessor(accessor));\n }\n }\n const scenes = gltf.scenes;\n if (scenes) {\n const sharedModel = new SharedModel();\n await this._loadMeshes(gltf);\n this._loadNodes(gltf, sharedModel);\n this._loadSkins(gltf, sharedModel);\n for (let i = 0; i < (gltf.nodes?.length ?? 0); i++) {\n if (typeof gltf.nodes![i].skin === 'number' && gltf.nodes![i].skin! >= 0) {\n gltf._nodes[i].skeleton = sharedModel.skeletons[gltf.nodes![i].skin!];\n }\n }\n this._loadAnimations(gltf, sharedModel);\n for (const scene of scenes) {\n const assetScene = new AssetScene(scene.name);\n for (const node of scene.nodes!) {\n assetScene.rootNodes.push(gltf._nodes[node]);\n }\n sharedModel.scenes.push(assetScene);\n }\n if (typeof gltf.scene === 'number') {\n sharedModel.activeScene = gltf.scene;\n }\n return sharedModel;\n }\n return null;\n }\n /** @internal */\n private _normalizeURI(baseURI: string, uri: string) {\n const s = uri.toLowerCase();\n if (\n s.startsWith('http://') ||\n s.startsWith('https://') ||\n s.startsWith('blob:') ||\n s.startsWith('data:')\n ) {\n // absolute path\n return encodeURI(uri);\n }\n uri = uri.replace(/\\.\\//g, '');\n uri = decodeURIComponent(uri);\n if (uri[0] === '/') {\n uri = uri.slice(1);\n }\n uri = uri\n .split('/')\n .map((val) => encodeURIComponent(val))\n .join('/');\n return baseURI + uri;\n }\n /** @internal */\n private _loadNodes(gltf: GLTFContent, model: SharedModel) {\n if (gltf.nodes) {\n for (let i = 0; i < gltf.nodes.length; i++) {\n this._loadNode(gltf, i, null, model);\n }\n for (const node of gltf._nodes) {\n if (!node.parent) {\n node.computeTransforms(null);\n }\n }\n }\n }\n /** @internal */\n private _loadSkins(gltf: GLTFContent, model: SharedModel) {\n if (gltf.skins) {\n for (let i = 0; i < gltf.skins.length; i++) {\n const skinInfo = gltf.skins[i];\n const skeleton = new AssetSkeleton(skinInfo.name);\n if (typeof skinInfo.skeleton === 'number') {\n skeleton.pivot = gltf._nodes[skinInfo.skeleton];\n }\n const accessor = gltf._accessors[skinInfo.inverseBindMatrices!];\n if (!accessor || accessor.type !== 'MAT4' || accessor.componentType !== ComponentType.FLOAT) {\n throw new Error('Invalid GLTF inverse bind matricies accessor');\n }\n const matrices =\n typeof skinInfo.inverseBindMatrices === 'number'\n ? (accessor.getDeinterlacedView(gltf) as Float32Array)\n : null;\n skinInfo.joints.forEach((joint, index) => {\n const m = index * 16;\n skeleton.addJoint(\n gltf._nodes[joint],\n matrices ? new Matrix4x4(matrices.subarray(m, m + 16)) : Matrix4x4.identity()\n );\n });\n model.addSkeleton(skeleton);\n }\n }\n }\n /** @internal */\n private _loadAnimations(gltf: GLTFContent, model: SharedModel) {\n if (gltf.animations) {\n for (let i = 0; i < gltf.animations.length; i++) {\n const animation = this._loadAnimation(gltf, i);\n model.addAnimation(animation);\n }\n }\n }\n /** @internal */\n private collectNodes(gltf: GLTFContent) {\n const collect: Map<\n AssetHierarchyNode,\n {\n translate: Vector3;\n scale: Vector3;\n rotation: Quaternion;\n worldTransform: Nullable<Matrix4x4>;\n }\n > = new Map();\n for (const node of gltf._nodes) {\n collect.set(node, {\n translate: node.position || Vector3.zero(),\n rotation: node.rotation || Quaternion.identity(),\n scale: node.scaling || Vector3.one(),\n worldTransform: null\n });\n }\n return collect;\n }\n /** @internal */\n private getAnimationInfo(gltf: GLTFContent, index: number) {\n const animationInfo = gltf.animations![index];\n const name = animationInfo.name || null;\n const channels = animationInfo.channels;\n const samplers = animationInfo.samplers;\n const interpolators = [] as Interpolator[];\n const interpolatorTypes = [] as ('translation' | 'scale' | 'rotation' | 'weights')[];\n const nodes = this.collectNodes(gltf);\n let maxTime = 0;\n for (let i = 0; i < channels.length; i++) {\n const channel = channels[i];\n const sampler = samplers[channel.sampler];\n const input = gltf._accessors[sampler.input].getNormalizedDeinterlacedView(gltf);\n const output = gltf._accessors[sampler.output].getNormalizedDeinterlacedView(gltf);\n if (!(input instanceof Float32Array) || !(output instanceof Float32Array)) {\n console.error('Input/output channel of animation must be Float32Array');\n continue;\n }\n const mode: InterpolationMode =\n sampler.interpolation === 'STEP'\n ? 'step'\n : sampler.interpolation === 'CUBICSPLINE'\n ? 'cubicspline'\n : 'linear';\n if (channel.target.path === 'rotation') {\n interpolators.push(new Interpolator(mode, 'quat', input, output));\n interpolatorTypes.push('rotation');\n } else if (channel.target.path === 'translation') {\n interpolators.push(new Interpolator(mode, 'vec3', input, output));\n interpolatorTypes.push('translation');\n } else if (channel.target.path === 'scale') {\n interpolators.push(new Interpolator(mode, 'vec3', input, output));\n interpolatorTypes.push('scale');\n } else if (channel.target.path === 'weights') {\n interpolators.push(new Interpolator(mode, null, input, output));\n interpolatorTypes.push('weights');\n } else {\n continue;\n }\n const max = input[input.length - 1];\n if (max > maxTime) {\n maxTime = max;\n }\n }\n return { name, channels, samplers, interpolators, interpolatorTypes, maxTime, nodes };\n }\n /** @internal */\n private _loadAnimation(gltf: GLTFContent, index: number) {\n const animationInfo = this.getAnimationInfo(gltf, index);\n const animationData: AssetAnimationData = {\n name: animationInfo.name,\n tracks: [],\n skeletons: [],\n nodes: []\n };\n for (let i = 0; i < animationInfo.channels.length; i++) {\n const targetNode = gltf._nodes[animationInfo.channels[i].target.node!];\n const track: AssetAnimationTrack = {\n node: targetNode,\n type: animationInfo.interpolatorTypes[i],\n interpolator: animationInfo.interpolators[i]\n };\n if (track.type === 'weights') {\n track.defaultMorphWeights = targetNode.weights!;\n }\n animationData.tracks.push(track);\n if (animationData.nodes.indexOf(targetNode) < 0) {\n animationData.nodes.push(targetNode);\n }\n if (targetNode.skeletonAttached) {\n for (const skeleton of targetNode.skeletonAttached) {\n if (animationData.skeletons.indexOf(skeleton) < 0) {\n animationData.skeletons.push(skeleton);\n }\n }\n }\n }\n return animationData;\n }\n /** @internal */\n private _loadNode(\n gltf: GLTFContent,\n nodeIndex: number,\n parent: Nullable<AssetHierarchyNode>,\n model: SharedModel\n ) {\n let node: AssetHierarchyNode = gltf._nodes[nodeIndex];\n if (node) {\n if (parent) {\n if (node.parent) {\n throw new Error('invalid node hierarchy');\n }\n parent.addChild(node);\n }\n return node;\n }\n const nodeInfo = gltf.nodes?.[nodeIndex];\n if (nodeInfo) {\n node = model.addNode(parent, nodeIndex, nodeInfo.name);\n if (typeof nodeInfo.mesh === 'number') {\n node.mesh = gltf._meshes[nodeInfo.mesh];\n if (node.weights) {\n node.mesh.morphWeights = node.weights;\n }\n const instancing = nodeInfo.extensions?.['EXT_mesh_gpu_instancing'];\n if (instancing) {\n const attributes = instancing.attributes;\n if (attributes) {\n const accessorTranslation =\n typeof attributes.TRANSLATION === 'number' ? gltf._accessors[attributes.TRANSLATION] : null;\n const accessorScale =\n typeof attributes.SCALE === 'number' ? gltf._accessors[attributes.SCALE] : null;\n const accessorRotation =\n typeof attributes.ROTATION === 'number' ? gltf._accessors[attributes.ROTATION] : null;\n const count = accessorTranslation?.count ?? accessorScale?.count ?? accessorRotation!.count ?? 0;\n const translationValues = accessorTranslation?.getNormalizedDeinterlacedView(\n gltf\n ) as Float32Array;\n const scaleValues = accessorScale?.getNormalizedDeinterlacedView(gltf) as Float32Array;\n const rotationValues = accessorRotation?.getNormalizedDeinterlacedView(gltf) as Float32Array;\n for (let i = 0; i < count; i++) {\n const t = translationValues\n ? new Vector3(\n translationValues[i * 3],\n translationValues[i * 3 + 1],\n translationValues[i * 3 + 2]\n )\n : Vector3.zero();\n const s = scaleValues\n ? new Vector3(scaleValues[i * 3], scaleValues[i * 3 + 1], scaleValues[i * 3 + 2])\n : Vector3.one();\n const r = rotationValues\n ? new Quaternion(\n rotationValues[i * 4],\n rotationValues[i * 4 + 1],\n rotationValues[i * 4 + 2],\n rotationValues[i * 4 + 3]\n )\n : Quaternion.identity();\n node.instances!.push({ t, s, r });\n }\n }\n } else {\n node.instances!.push({ t: Vector3.zero(), s: Vector3.one(), r: Quaternion.identity() });\n }\n }\n if (!(typeof nodeInfo.skin === 'number') || nodeInfo.skin < 0) {\n // GLTF spec: Only the joint transforms are applied to the skinned mesh; the transform of the skinned mesh node MUST be ignored.\n if (nodeInfo.matrix) {\n const matrix = new Matrix4x4(nodeInfo.matrix);\n matrix.decompose(node.scaling, node.rotation, node.position);\n } else {\n if (nodeInfo.rotation) {\n node.rotation.set(nodeInfo.rotation);\n }\n if (nodeInfo.scale) {\n node.scaling.set(nodeInfo.scale);\n }\n if (nodeInfo.translation) {\n node.position.set(nodeInfo.translation);\n }\n }\n }\n gltf._nodes[nodeIndex] = node;\n if (nodeInfo.children) {\n for (const childIndex of nodeInfo.children) {\n this._loadNode(gltf, childIndex, node, model);\n }\n }\n } else {\n throw new Error(`invalid GLTF node: ${nodeIndex}`);\n }\n return node;\n }\n /** @internal */\n private async _loadMeshes(gltf: GLTFContent) {\n if (gltf.meshes) {\n for (let i = 0; i < gltf.meshes.length; i++) {\n const mesh = await this._loadMesh(gltf, i);\n if (mesh) {\n gltf._meshes[i] = mesh;\n }\n }\n }\n }\n /** @internal */\n private async _loadMesh(gltf: GLTFContent, meshIndex: number) {\n const meshInfo = gltf.meshes && gltf.meshes[meshIndex];\n let mesh: Nullable<AssetMeshData> = null;\n if (meshInfo) {\n mesh = {\n morphWeights: meshInfo.weights ?? null,\n subMeshes: []\n };\n const primitives = meshInfo.primitives;\n const meshName = meshInfo.name || null;\n if (primitives) {\n for (let i = 0; i < primitives.length; i++) {\n const p = primitives[i];\n const subMeshData: AssetSubMeshData = {\n name: `${meshName}-${i}`,\n primitive: new DRef(),\n material: new DRef(),\n rawPositions: null,\n rawBlendIndices: null,\n rawJointWeights: null,\n numTargets: 0\n };\n const primitive = new Primitive();\n const attributes = p.attributes;\n const dracoExtension = gltf._dracoModule ? p.extensions?.['KHR_draco_mesh_compression'] : null;\n let dracoMeshDecoder: Nullable<DracoMeshDecoder> = null;\n if (dracoExtension) {\n const bufferView = gltf.bufferViews && gltf.bufferViews[dracoExtension.bufferView];\n if (!bufferView) {\n throw new Error('Draco buffer view not set');\n }\n const arrayBuffer = gltf._loadedBuffers && gltf._loadedBuffers[bufferView.buffer];\n if (!arrayBuffer) {\n throw new Error('Draco buffer view does not point to a valid ArrayBuffer');\n }\n dracoMeshDecoder = new DracoMeshDecoder(\n new Int8Array(arrayBuffer, bufferView.byteOffset ?? 0, bufferView.byteLength),\n gltf._dracoModule!\n );\n }\n for (const attrib in attributes) {\n this._loadVertexBuffer(\n gltf,\n attrib,\n attributes[attrib],\n primitive,\n subMeshData,\n dracoExtension,\n dracoMeshDecoder!\n );\n }\n if (p.targets) {\n if (getDevice().type === 'webgl') {\n // Emulate vertexID for WebGL1 device\n if (attributes['TEXCOORD_7'] !== undefined) {\n console.error(`Could not load morph target animation`);\n p.targets = undefined;\n } else {\n const vertexIndices = new Float32Array(primitive.getNumVertices());\n for (let i = 0; i < vertexIndices.length; i++) {\n vertexIndices[i] = i;\n }\n primitive.createAndSetVertexBuffer('tex7_f32', vertexIndices);\n }\n }\n }\n if (p.targets) {\n const targets: AssetSubMeshData['targets'] = {};\n const targetBox: AssetSubMeshData['targetBox'] = [];\n const targetMap = {\n POSITION: MORPH_TARGET_POSITION,\n NORMAL: MORPH_TARGET_NORMAL,\n TANGENT: MORPH_TARGET_TANGENT,\n TEXCOORD_0: MORPH_TARGET_TEX0,\n TEXCOORD_1: MORPH_TARGET_TEX1,\n TEXCOORD_2: MORPH_TARGET_TEX2,\n TEXCOORD_3: MORPH_TARGET_TEX3,\n COLOR_0: MORPH_TARGET_COLOR\n };\n const morphAttribSet = new Set<number>();\n for (const target of p.targets) {\n for (const k in target) {\n const t = targetMap[k as keyof typeof targetMap];\n if (t !== undefined) {\n targets[t] = targets[t] ?? { numComponents: 0, data: [] };\n const accessorIndex = target[k] as number;\n const accessor = gltf._accessors[accessorIndex];\n targets[t].numComponents = accessor.getComponentCount(accessor.type);\n targets[t].data.push(accessor.getNormalizedDeinterlacedView(gltf) as Float32Array);\n if (k === 'POSITION') {\n const min = accessor.min\n ? new Vector3(accessor.min[0], accessor.min[1], accessor.min[2])\n : Vector3.zero();\n const max = accessor.max\n ? new Vector3(accessor.max[0], accessor.max[1], accessor.max[2])\n : Vector3.zero();\n targetBox.push(new BoundingBox(min, max));\n }\n morphAttribSet.add(t);\n }\n }\n }\n subMeshData.numTargets = p.targets.length;\n subMeshData.targets = targets;\n subMeshData.targetBox = targetBox;\n subMeshData.morphAttribCount = morphAttribSet.size;\n }\n const indices = p.indices;\n if (typeof indices === 'number') {\n this._loadIndexBuffer(gltf, indices, primitive, subMeshData, dracoExtension, dracoMeshDecoder);\n }\n let primitiveType = p.mode;\n if (typeof primitiveType !== 'number') {\n primitiveType = 4;\n }\n primitive.primitiveType = this._primitiveType(primitiveType)!;\n const hasVertexNormal = !!primitive.getVertexBuffer('normal');\n const hasVertexColor = !!primitive.getVertexBuffer('diffuse');\n const hasVertexTangent = !!primitive.getVertexBuffer('tangent');\n const materialHash = `${p.material}.${Number(hasVertexNormal)}.${Number(hasVertexColor)}.${Number(\n hasVertexTangent\n )}`;\n let material: Nullable<M> = gltf._materialCache[materialHash];\n if (!material) {\n const materialInfo = p.material !== undefined ? gltf.materials![p.material] : null;\n material = await this._loadMaterial(\n gltf,\n materialInfo,\n hasVertexColor,\n hasVertexNormal,\n hasVertexTangent\n );\n if (material) {\n gltf._materialCache[materialHash] = material;\n }\n }\n subMeshData.primitive.set(primitive);\n subMeshData.material.set(material);\n mesh.subMeshes.push(subMeshData);\n }\n }\n }\n return mesh;\n }\n private async _createMaterial(assetMaterial: AssetMaterial) {\n if (assetMaterial.type === 'unlit') {\n const unlitAssetMaterial = assetMaterial as AssetUnlitMaterial;\n const unlitMaterial = new UnlitMaterial();\n unlitMaterial.albedoColor = unlitAssetMaterial.diffuse ?? Vector4.one();\n if (unlitAssetMaterial.diffuseMap) {\n unlitMaterial.albedoTexture = unlitAssetMaterial.diffuseMap.texture;\n unlitMaterial.albedoTextureSampler = unlitAssetMaterial.diffuseMap.sampler;\n unlitMaterial.albedoTexCoordIndex = unlitAssetMaterial.diffuseMap.texCoord;\n unlitMaterial.albedoTexCoordMatrix = unlitAssetMaterial.diffuseMap.transform;\n }\n unlitMaterial.vertexColor = unlitAssetMaterial.common.vertexColor!;\n if (assetMaterial.common.alphaMode === 'blend') {\n unlitMaterial.blendMode = 'blend';\n } else if (assetMaterial.common.alphaMode === 'mask') {\n unlitMaterial.alphaCutoff = assetMaterial.common.alphaCutoff!;\n }\n if (assetMaterial.common.doubleSided) {\n unlitMaterial.cullMode = 'none';\n }\n return unlitMaterial;\n } else if (assetMaterial.type === 'pbrSpecularGlossiness') {\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialSG;\n const pbrMaterial = new PBRSpecularGlossinessMaterial();\n pbrMaterial.ior = assetPBRMaterial.ior!;\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\n pbrMaterial.specularFactor = new Vector3(\n assetPBRMaterial.specular!.x,\n assetPBRMaterial.specular!.y,\n assetPBRMaterial.specular!.z\n );\n pbrMaterial.glossinessFactor = assetPBRMaterial.glossness!;\n if (assetPBRMaterial.diffuseMap) {\n pbrMaterial.albedoTexture = assetPBRMaterial.diffuseMap.texture;\n pbrMaterial.albedoTextureSampler = assetPBRMaterial.diffuseMap.sampler;\n pbrMaterial.albedoTexCoordIndex = assetPBRMaterial.diffuseMap.texCoord;\n pbrMaterial.albedoTexCoordMatrix = assetPBRMaterial.diffuseMap.transform;\n }\n if (assetPBRMaterial.common.normalMap) {\n pbrMaterial.normalTexture = assetPBRMaterial.common.normalMap.texture;\n pbrMaterial.normalTextureSampler = assetPBRMaterial.common.normalMap.sampler;\n pbrMaterial.normalTexCoordIndex = assetPBRMaterial.common.normalMap.texCoord;\n pbrMaterial.normalTexCoordMatrix = assetPBRMaterial.common.normalMap.transform;\n }\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\n if (assetPBRMaterial.common.emissiveMap) {\n pbrMaterial.emissiveTexture = assetPBRMaterial.common.emissiveMap.texture;\n pbrMaterial.emissiveTextureSampler = assetPBRMaterial.common.emissiveMap.sampler;\n pbrMaterial.emissiveTexCoordIndex = assetPBRMaterial.common.emissiveMap.texCoord;\n pbrMaterial.emissiveTexCoordMatrix = assetPBRMaterial.common.emissiveMap.transform;\n }\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\n if (assetPBRMaterial.common.occlusionMap) {\n pbrMaterial.occlusionTexture = assetPBRMaterial.common.occlusionMap.texture;\n pbrMaterial.occlusionTextureSampler = assetPBRMaterial.common.occlusionMap.sampler;\n pbrMaterial.occlusionTexCoordIndex = assetPBRMaterial.common.occlusionMap.texCoord;\n pbrMaterial.occlusionTexCoordMatrix = assetPBRMaterial.common.occlusionMap.transform;\n }\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\n if (assetPBRMaterial.specularGlossnessMap) {\n pbrMaterial.specularTexture = assetPBRMaterial.specularGlossnessMap.texture;\n pbrMaterial.specularTextureSampler = assetPBRMaterial.specularGlossnessMap.sampler;\n pbrMaterial.specularTexCoordIndex = assetPBRMaterial.specularGlossnessMap.texCoord;\n pbrMaterial.specularTexCoordMatrix = assetPBRMaterial.specularGlossnessMap.transform;\n }\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\n if (assetPBRMaterial.common.alphaMode === 'blend') {\n pbrMaterial.blendMode = 'blend';\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\n }\n if (assetPBRMaterial.common.doubleSided) {\n pbrMaterial.cullMode = 'none';\n }\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\n return pbrMaterial;\n } else if (assetMaterial.type === 'pbrMetallicRoughness') {\n const assetPBRMaterial = assetMaterial as AssetPBRMaterialMR;\n const pbrMaterial = new PBRMetallicRoughnessMaterial();\n pbrMaterial.ior = assetPBRMaterial.ior!;\n pbrMaterial.albedoColor = assetPBRMaterial.diffuse!;\n pbrMaterial.metallic = assetPBRMaterial.metallic!;\n pbrMaterial.roughness = assetPBRMaterial.roughness!;\n if (assetPBRMaterial.diffuseMap) {\n pbrMaterial.albedoTexture = assetPBRMaterial.diffuseMap.texture;\n pbrMaterial.albedoTextureSampler = assetPBRMaterial.diffuseMap.sampler;\n pbrMaterial.albedoTexCoordIndex = assetPBRMaterial.diffuseMap.texCoord;\n pbrMaterial.albedoTexCoordMatrix = assetPBRMaterial.diffuseMap.transform;\n }\n if (assetPBRMaterial.common.normalMap) {\n pbrMaterial.normalTexture = assetPBRMaterial.common.normalMap.texture;\n pbrMaterial.normalTextureSampler = assetPBRMaterial.common.normalMap.sampler;\n pbrMaterial.normalTexCoordIndex = assetPBRMaterial.common.normalMap.texCoord;\n pbrMaterial.normalTexCoordMatrix = assetPBRMaterial.common.normalMap.transform;\n }\n pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale!;\n if (assetPBRMaterial.common.emissiveMap) {\n pbrMaterial.emissiveTexture = assetPBRMaterial.common.emissiveMap.texture;\n pbrMaterial.emissiveTextureSampler = assetPBRMaterial.common.emissiveMap.sampler;\n pbrMaterial.emissiveTexCoordIndex = assetPBRMaterial.common.emissiveMap.texCoord;\n pbrMaterial.emissiveTexCoordMatrix = assetPBRMaterial.common.emissiveMap.transform;\n }\n pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor!;\n pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength!;\n if (assetPBRMaterial.common.occlusionMap) {\n pbrMaterial.occlusionTexture = assetPBRMaterial.common.occlusionMap.texture;\n pbrMaterial.occlusionTextureSampler = assetPBRMaterial.common.occlusionMap.sampler;\n pbrMaterial.occlusionTexCoordIndex = assetPBRMaterial.common.occlusionMap.texCoord;\n pbrMaterial.occlusionTexCoordMatrix = assetPBRMaterial.common.occlusionMap.transform;\n pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength!;\n }\n if (assetPBRMaterial.metallicMap) {\n pbrMaterial.metallicRoughnessTexture = assetPBRMaterial.metallicMap.texture;\n pbrMaterial.metallicRoughnessTextureSampler = assetPBRMaterial.metallicMap.sampler;\n pbrMaterial.metallicRoughnessTexCoordIndex = assetPBRMaterial.metallicMap.texCoord;\n pbrMaterial.metallicRoughnessTexCoordMatrix = assetPBRMaterial.metallicMap.transform;\n }\n pbrMaterial.specularFactor = assetPBRMaterial.specularFactor!;\n if (assetPBRMaterial.specularMap) {\n pbrMaterial.specularTexture = assetPBRMaterial.specularMap.texture;\n pbrMaterial.specularTextureSampler = assetPBRMaterial.specularMap.sampler;\n pbrMaterial.specularTexCoordIndex = assetPBRMaterial.specularMap.texCoord;\n pbrMaterial.specularTexCoordMatrix = assetPBRMaterial.specularMap.transform;\n }\n if (assetPBRMaterial.specularColorMap) {\n pbrMaterial.specularColorTexture = assetPBRMaterial.specularColorMap.texture;\n pbrMaterial.specularColorTextureSampler = assetPBRMaterial.specularColorMap.sampler;\n pbrMaterial.specularColorTexCoordIndex = assetPBRMaterial.specularColorMap.texCoord;\n pbrMaterial.specularColorTexCoordMatrix = assetPBRMaterial.specularColorMap.transform;\n }\n if (assetPBRMaterial.sheen) {\n const sheen = assetPBRMaterial.sheen;\n pbrMaterial.sheen = true;\n pbrMaterial.sheenColorFactor = sheen.sheenColorFactor!;\n pbrMaterial.sheenRoughnessFactor = sheen.sheenRoughnessFactor!;\n if (sheen.sheenColorMap) {\n pbrMaterial.sheenColorTexture = sheen.sheenColorMap.texture;\n pbrMaterial.sheenColorTextureSampler = sheen.sheenColorMap.sampler;\n pbrMaterial.sheenColorTexCoordIndex = sheen.sheenColorMap.texCoord;\n pbrMaterial.sheenColorTexCoordMatrix = sheen.sheenColorMap.transform;\n }\n if (sheen.sheenRoughnessMap) {\n pbrMaterial.sheenRoughnessTexture = sheen.sheenRoughnessMap.texture;\n pbrMaterial.sheenRoughnessTextureSampler = sheen.sheenRoughnessMap.sampler;\n pbrMaterial.sheenRoughnessTexCoordIndex = sheen.sheenRoughnessMap.texCoord;\n pbrMaterial.sheenRoughnessTexCoordMatrix = sheen.sheenRoughnessMap.transform;\n }\n }\n if (assetPBRMaterial.iridescence) {\n const iridescence = assetPBRMaterial.iridescence;\n pbrMaterial.iridescence = true;\n pbrMaterial.iridescenceFactor = iridescence.iridescenceFactor!;\n pbrMaterial.iridescenceIor = iridescence.iridescenceIor!;\n if (iridescence.iridescenceMap) {\n pbrMaterial.iridescenceTexture = iridescence.iridescenceMap.texture;\n pbrMaterial.iridescenceTextureSampler = iridescence.iridescenceMap.sampler;\n pbrMaterial.iridescenceTexCoordIndex = iridescence.iridescenceMap.texCoord;\n pbrMaterial.iridescenceTexCoordMatrix = iridescence.iridescenceMap.transform;\n }\n pbrMaterial.iridescenceThicknessMin = iridescence.iridescenceThicknessMinimum!;\n pbrMaterial.iridescenceThicknessMax = iridescence.iridescenceThicknessMaximum!;\n if (iridescence.iridescenceThicknessMap) {\n pbrMaterial.iridescenceThicknessTexture = iridescence.iridescenceThicknessMap.texture;\n pbrMaterial.iridescenceThicknessTextureSampler = iridescence.iridescenceThicknessMap.sampler;\n pbrMaterial.iridescenceThicknessTexCoordIndex = iridescence.iridescenceThicknessMap.texCoord;\n pbrMaterial.iridescenceThicknessTexCoordMatrix = iridescence.iridescenceThicknessMap.transform;\n }\n }\n if (assetPBRMaterial.transmission) {\n const transmission = assetPBRMaterial.transmission;\n pbrMaterial.transmission = true;\n pbrMaterial.transmissionFactor = transmission.transmissionFactor!;\n if (transmission.transmissionMap) {\n pbrMaterial.transmissionTexture = transmission.transmissionMap.texture;\n pbrMaterial.transmissionTextureSampler = transmission.transmissionMap.sampler;\n pbrMaterial.transmissionTexCoordIndex = transmission.transmissionMap.texCoord;\n pbrMaterial.transmissionTexCoordMatrix = transmission.transmissionMap.transform;\n }\n pbrMaterial.thicknessFactor = transmission.thicknessFactor!;\n if (transmission.thicknessMap) {\n pbrMaterial.thicknessTexture = transmission.thicknessMap.texture;\n pbrMaterial.thicknessTextureSampler = transmission.thicknessMap.sampler;\n pbrMaterial.thicknessTexCoordIndex = transmission.thicknessMap.texCoord;\n pbrMaterial.thicknessTexCoordMatrix = transmission.thicknessMap.transform;\n }\n pbrMaterial.attenuationDistance = transmission.attenuationDistance!;\n pbrMaterial.attenuationColor = transmission.attenuationColor!;\n }\n if (assetPBRMaterial.clearcoat) {\n const cc = assetPBRMaterial.clearcoat;\n pbrMaterial.clearcoat = true;\n pbrMaterial.clearcoatIntensity = cc.clearCoatFactor!;\n pbrMaterial.clearcoatRoughnessFactor = cc.clearCoatRoughnessFactor!;\n if (cc.clearCoatIntensityMap) {\n pbrMaterial.clearcoatIntensityTexture = cc.clearCoatIntensityMap.texture;\n pbrMaterial.clearcoatIntensityTextureSampler = cc.clearCoatIntensityMap.sampler;\n pbrMaterial.clearcoatIntensityTexCoordIndex = cc.clearCoatIntensityMap.texCoord;\n pbrMaterial.clearcoatIntensityTexCoordMatrix = cc.clearCoatIntensityMap.transform;\n }\n if (cc.clearCoatRoughnessMap) {\n pbrMaterial.clearcoatRoughnessTexture = cc.clearCoatRoughnessMap.texture;\n pbrMaterial.clearcoatRoughnessTextureSampler = cc.clearCoatRoughnessMap.sampler;\n pbrMaterial.clearcoatRoughnessTexCoordIndex = cc.clearCoatRoughnessMap.texCoord;\n pbrMaterial.clearcoatRoughnessTexCoordMatrix = cc.clearCoatRoughnessMap.transform;\n }\n if (cc.clearCoatNormalMap) {\n pbrMaterial.clearcoatNormalTexture = cc.clearCoatNormalMap.texture;\n pbrMaterial.clearcoatNormalTextureSampler = cc.clearCoatNormalMap.sampler;\n pbrMaterial.clearcoatNormalTexCoordIndex = cc.clearCoatNormalMap.texCoord;\n pbrMaterial.clearcoatNormalTexCoordMatrix = cc.clearCoatNormalMap.transform;\n }\n }\n pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent!;\n pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor!;\n if (assetPBRMaterial.common.alphaMode === 'blend') {\n pbrMaterial.blendMode = 'blend';\n } else if (assetPBRMaterial.common.alphaMode === 'mask') {\n pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff!;\n }\n if (assetPBRMaterial.common.doubleSided) {\n pbrMaterial.cullMode = 'none';\n }\n pbrMaterial.vertexNormal = !!assetMaterial.common.vertexNormal;\n return pbrMaterial;\n }\n return null;\n }\n /** @internal */\n private async _loadMaterial(\n gltf: GLTFContent,\n materialInfo: Nullable<Material>,\n vertexColor: boolean,\n vertexNormal: boolean,\n useTangent: boolean\n ) {\n let assetMaterial: Nullable<AssetMaterial> = null;\n let pbrMetallicRoughness: Nullable<AssetPBRMaterialMR> = null;\n let pbrSpecularGlossness: Nullable<AssetPBRMaterialSG> = null;\n const pbrCommon: AssetMaterialCommon = {\n useTangent,\n vertexColor,\n vertexNormal,\n bumpScale: 1,\n emissiveColor: Vector3.zero(),\n emissiveStrength: 1,\n occlusionStrength: 1\n };\n switch (materialInfo?.alphaMode) {\n case 'BLEND': {\n pbrCommon.alphaMode = 'blend';\n break;\n }\n case 'MASK': {\n pbrCommon.alphaMode = 'mask';\n pbrCommon.alphaCutoff = materialInfo.alphaCutoff ?? 0.5;\n break;\n }\n }\n if (materialInfo?.doubleSided) {\n pbrCommon.doubleSided = true;\n }\n if (materialInfo?.pbrMetallicRoughness || materialInfo?.extensions?.KHR_materials_pbrSpecularGlossiness) {\n pbrCommon.normalMap = materialInfo.normalTexture\n ? await this._loadTexture(gltf, materialInfo.normalTexture, false)\n : null;\n pbrCommon.bumpScale = materialInfo.normalTexture?.scale ?? 1;\n pbrCommon.occlusionMap = materialInfo.occlusionTexture\n ? await this._loadTexture(gltf, materialInfo.occlusionTexture, false)\n : null;\n pbrCommon.occlusionStrength = materialInfo.occlusionTexture?.strength ?? 1;\n pbrCommon.emissiveMap = materialInfo.emissiveTexture\n ? await this._loadTexture(gltf, materialInfo.emissiveTexture, false)\n : null;\n pbrCommon.emissiveStrength =\n materialInfo?.extensions?.KHR_materials_emissive_strength?.emissiveStrength ?? 1;\n pbrCommon.emissiveColor = materialInfo.emissiveFactor\n ? new Vector3(materialInfo.emissiveFactor)\n : Vector3.zero();\n }\n if (materialInfo?.pbrMetallicRoughness) {\n pbrMetallicRoughness = {\n type: 'pbrMetallicRoughness',\n ior: 1.5,\n common: pbrCommon\n };\n pbrMetallicRoughness.diffuse = new Vector4(\n materialInfo.pbrMetallicRoughness.baseColorFactor ?? [1, 1, 1, 1]\n );\n pbrMetallicRoughness.metallic = materialInfo.pbrMetallicRoughness.metallicFactor ?? 1;\n pbrMetallicRoughness.roughness = materialInfo.pbrMetallicRoughness.roughnessFactor ?? 1;\n pbrMetallicRoughness.diffuseMap = materialInfo.pbrMetallicRoughness.baseColorTexture\n ? await this._loadTexture(gltf, materialInfo.pbrMetallicRoughness.baseColorTexture, true)\n : null;\n pbrMetallicRoughness.metallicMap = materialInfo.pbrMetallicRoughness.metallicRoughnessTexture\n ? await this._loadTexture(gltf, materialInfo.pbrMetallicRoughness.metallicRoughnessTexture, false)\n : null;\n pbrMetallicRoughness.metallicIndex = 2;\n pbrMetallicRoughness.roughnessIndex = 1;\n }\n if (materialInfo?.extensions?.KHR_materials_pbrSpecularGlossiness) {\n const sg = materialInfo.extensions?.KHR_materials_pbrSpecularGlossiness;\n pbrSpecularGlossness = {\n type: 'pbrSpecularGlossiness',\n ior: 1.5,\n common: pbrCommon\n };\n pbrSpecularGlossness.diffuse = new Vector4(sg.diffuseFactor ?? [1, 1, 1, 1]);\n pbrSpecularGlossness.specular = new Vector3(sg.specularFactor ?? [1, 1, 1]);\n pbrSpecularGlossness.glossness = sg.glossnessFactor ?? 1;\n pbrSpecularGlossness.diffuseMap = sg.diffuseTexture\n ? await this._loadTexture(gltf, sg.diffuseTexture, true)\n : null;\n pbrSpecularGlossness.specularGlossnessMap = sg.specularGlossinessTexture\n ? await this._loadTexture(gltf, sg.specularGlossinessTexture, true)\n : null;\n }\n assetMaterial = pbrSpecularGlossness || pbrMetallicRoughness;\n if (!assetMaterial || materialInfo?.extensions?.KHR_materials_unlit) {\n if (materialInfo?.extensions?.KHR_materials_unlit) {\n assetMaterial = {\n type: 'unlit',\n common: pbrCommon,\n diffuse: pbrMetallicRoughness?.diffuse ?? Vector4.one(),\n diffuseMap: pbrMetallicRoughness?.diffuseMap ?? null\n } as AssetUnlitMaterial;\n } else {\n assetMaterial = {\n type: 'pbrMetallicRoughness',\n common: pbrCommon,\n diffuse: Vector4.one(),\n metallic: 1,\n roughness: 1,\n diffuseMap: null,\n metallicMap: null,\n metallicIndex: 2,\n roughnessIndex: 1\n } as AssetPBRMaterialMR;\n }\n }\n if (assetMaterial.type !== 'unlit' && materialInfo?.extensions?.KHR_materials_ior) {\n (assetMaterial as AssetPBRMaterialCommon).ior = materialInfo.extensions.KHR_materials_ior.ior ?? 1.5;\n }\n if (assetMaterial.type === 'pbrMetallicRoughness') {\n pbrMetallicRoughness = assetMaterial;\n // KHR_materials_specular extension\n const specularColorFactor = (materialInfo?.extensions?.KHR_materials_specular?.specularColorFactor ?? [\n 1, 1, 1\n ]) as [number, number, number];\n pbrMetallicRoughness.specularFactor = new Vector4(\n ...specularColorFactor,\n materialInfo?.extensions?.KHR_materials_specular?.specularFactor ?? 1\n );\n pbrMetallicRoughness.specularMap = materialInfo?.extensions?.KHR_materials_specular?.specularTexture\n ? await this._loadTexture(gltf, materialInfo.extensions.KHR_materials_specular.specularTexture, false)\n : null;\n pbrMetallicRoughness.specularColorMap = materialInfo?.extensions?.KHR_materials_specular\n ?.specularColorTexture\n ? await this._loadTexture(\n gltf,\n materialInfo.extensions.KHR_materials_specular.specularColorTexture,\n true\n )\n : null;\n // KHR_materials_iridescence\n const iridescence = materialInfo?.extensions?.KHR_materials_iridescence;\n if (iridescence) {\n pbrMetallicRoughness.iridescence = {\n iridescenceFactor: iridescence.iridescenceFactor ?? 0,\n iridescenceMap: iridescence.iridescenceTexture\n ? await this._loadTexture(gltf, iridescence.iridescenceTexture, false)\n : null,\n iridescenceIor: iridescence.iridescenceIor ?? 1.3,\n iridescenceThicknessMinimum: iridescence.iridescenceThicknessMinimum ?? 100,\n iridescenceThicknessMaximum: iridescence.iridescenceThicknessMaximum ?? 400,\n iridescenceThicknessMap: iridescence.iridescenceThicknessTexture\n ? await this._loadTexture(gltf, iridescence.iridescenceThicknessTexture, false)\n : null\n };\n }\n // KHR_materials_transmission\n const transmission = materialInfo?.extensions?.KHR_materials_transmission;\n if (transmission) {\n pbrMetallicRoughness.transmission = {\n transmissionFactor: transmission.transmissionFactor ?? 0,\n transmissionMap: transmission.transmissionTexture\n ? await this._loadTexture(gltf, transmission.transmissionTexture, false)\n : null,\n thicknessFactor: 0,\n thicknessMap: null,\n attenuationDistance: 99999,\n attenuationColor: Vector3.one()\n };\n const volume = materialInfo?.extensions?.KHR_materials_volume;\n if (volume) {\n pbrMetallicRoughness.transmission.thicknessFactor = volume.thicknessFactor ?? 0;\n pbrMetallicRoughness.transmission.thicknessMap = volume.thicknessTexture\n ? await this._loadTexture(gltf, volume.thicknessTexture, false)\n : null;\n pbrMetallicRoughness.transmission.attenuationDistance = volume.attenuationDistance ?? 99999;\n const attenuationColor = (volume.attenuationColor ?? [1, 1, 1]) as [number, number, number];\n pbrMetallicRoughness.transmission.attenuationColor = new Vector3(...attenuationColor);\n }\n }\n // KHR_materials_sheen\n const sheen = materialInfo?.extensions?.KHR_materials_sheen;\n if (sheen) {\n pbrMetallicRoughness.sheen = {\n sheenColorFactor: new Vector3(sheen.sheenColorFactor ?? [0, 0, 0]),\n sheenColorMap: sheen.sheenColorTexture\n ? await this._loadTexture(gltf, sheen.sheenColorTexture, true)\n : null,\n sheenRoughnessFactor: sheen.sheenRoughnessFactor ?? 0,\n sheenRoughnessMap: sheen.sheenRoughnessTexture\n ? await this._loadTexture(gltf, sheen.sheenRoughnessTexture, true)\n : null\n };\n }\n // KHR_materials_clearcoat\n const cc = materialInfo?.extensions?.KHR_materials_clearcoat;\n if (cc) {\n pbrMetallicRoughness.clearcoat = {\n clearCoatFactor: cc.clearcoatFactor ?? 0,\n clearCoatIntensityMap: cc.clearcoatTexture\n ? await this._loadTexture(gltf, cc.clearcoatTexture, false)\n : null,\n clearCoatRoughnessFactor: cc.clearcoatRoughnessFactor ?? 0,\n clearCoatRoughnessMap: cc.clearcoatRoughnessTexture\n ? await this._loadTexture(gltf, cc.clearcoatRoughnessTexture, false)\n : null,\n clearCoatNormalMap: cc.clearcoatNormalTexture\n ? await this._loadTexture(gltf, cc.clearcoatNormalTexture, false)\n : null\n };\n }\n }\n return await this._createMaterial(assetMaterial);\n }\n /** @internal */\n private async _loadTexture(gltf: GLTFContent, info: Partial<TextureInfo>, sRGB: boolean) {\n const mt: MaterialTextureInfo = {\n texture: null,\n sampler: null,\n texCoord: info.texCoord ?? 0,\n transform: null\n };\n const textureInfo = gltf.textures![info.index!];\n if (textureInfo) {\n if (info.extensions?.KHR_texture_transform) {\n const uvTransform = info.extensions.KHR_texture_transform;\n if (uvTransform.texCoord !== undefined) {\n mt.texCoord = uvTransform.texCoord;\n }\n const rotation =\n uvTransform.rotation !== undefined\n ? Matrix4x4.rotationZ(-uvTransform.rotation)\n : Matrix4x4.identity();\n const scale =\n uvTransform.scale !== undefined\n ? new Vector3(uvTransform.scale[0], uvTransform.scale[1], 1)\n : Vector3.one();\n const translation =\n uvTransform.offset !== undefined\n ? new Vector3(uvTransform.offset[0], uvTransform.offset[1], 0)\n : Vector3.zero();\n mt.transform = Matrix4x4.scaling(scale).multiplyLeft(rotation).translateLeft(translation);\n }\n let wrapS: TextureAddressMode = 'repeat';\n let wrapT: TextureAddressMode = 'repeat';\n let magFilter: TextureFilterMode = 'linear';\n let minFilter: TextureFilterMode = 'linear';\n let mipFilter: TextureFilterMode = 'linear';\n const samplerIndex = textureInfo.sampler;\n const sampler = gltf.samplers && gltf.samplers[samplerIndex!];\n if (sampler) {\n switch (sampler.wrapS) {\n case 0x2901: // gl.REPEAT\n wrapS = 'repeat';\n break;\n case 0x8370: // gl.MIRRORED_REPEAT\n wrapS = 'mirrored-repeat';\n break;\n case 0x812f: // gl.CLAMP_TO_EDGE\n wrapS = 'clamp';\n break;\n }\n switch (sampler.wrapT) {\n case 0x2901: // gl.REPEAT\n wrapT = 'repeat';\n break;\n case 0x8370: // gl.MIRRORED_REPEAT\n wrapT = 'mirrored-repeat';\n break;\n case 0x812f: // gl.CLAMP_TO_EDGE\n wrapT = 'clamp';\n break;\n }\n switch (sampler.magFilter) {\n case 0x2600: // gl.NEAREST\n magFilter = 'nearest';\n break;\n case 0x2601: // gl.LINEAR\n magFilter = 'linear';\n break;\n }\n switch (sampler.minFilter) {\n case 0x2600: // gl.NEAREST\n minFilter = 'nearest';\n mipFilter = 'none';\n break;\n case 0x2601: // gl.LINEAR\n minFilter = 'linear';\n mipFilter = 'none';\n break;\n case 0x2700: // gl.NEAREST_MIPMAP_NEAREST\n minFilter = 'nearest';\n mipFilter = 'nearest';\n break;\n case 0x2701: // gl.LINEAR_MIPMAP_NEAREST\n minFilter = 'linear';\n mipFilter = 'nearest';\n break;\n case 0x2702: // gl.NEAREST_MIPMAP_LINEAR\n minFilter = 'nearest';\n mipFilter = 'linear';\n break;\n case 0x2703: // gl.LINEAR_MIPMAP_LINEAR\n minFilter = 'linear';\n mipFilter = 'linear';\n break;\n }\n }\n const imageIndex = textureInfo.source;\n const hash = `${imageIndex}:${!!sRGB}:${wrapS}:${wrapT}:${minFilter}:${magFilter}:${mipFilter}`;\n mt.texture = gltf._textureCache[hash];\n if (!mt.texture) {\n const image = gltf.images![imageIndex!];\n if (image) {\n if (image.uri) {\n const imageUrl = this._normalizeURI(gltf._baseURI, image.uri);\n mt.texture = (await gltf._manager.fetchTexture(imageUrl, {\n linearColorSpace: !sRGB,\n overrideVFS: gltf._VFS\n })) as Texture2D;\n mt.texture.name = imageUrl;\n } else if (typeof image.bufferView === 'number' && image.mimeType) {\n const bufferView = gltf.bufferViews && gltf.bufferViews[image.bufferView];\n if (bufferView) {\n const arrayBuffer = gltf._loadedBuffers && gltf._loadedBuffers[bufferView.buffer];\n if (arrayBuffer) {\n const view = new Uint8Array(arrayBuffer, bufferView.byteOffset || 0, bufferView.byteLength);\n const mimeType = image.mimeType;\n mt.texture = await gltf._manager.loadTextureFromBuffer<Texture2D>(view, mimeType, sRGB);\n }\n }\n }\n }\n if (mt.texture) {\n gltf._textureCache[hash] = mt.texture;\n }\n }\n if (mt.texture) {\n mt.sampler = getDevice().createSampler({\n addressU: wrapS,\n addressV: wrapT,\n magFilter: magFilter,\n minFilter: minFilter,\n mipFilter: mipFilter\n });\n }\n }\n return mt;\n }\n /** @internal */\n private _primitiveType(type: number) {\n switch (type) {\n case 0: // GL_POINTS\n return 'point-list';\n case 1: // GL_LINES\n return 'line-list';\n /* FIXME:\n case 2: // GL_LINE_LOOP\n return PrimitiveType.LineLoop;\n */\n case 3: // GL_LINE_STRIP\n return 'line-strip';\n case 4: // GL_TRIANGLES\n return 'triangle-list';\n case 5: // GL_TRIANGLE_STRIP\n return 'triangle-strip';\n case 6: // GL_TRIANGLE_FAN\n return 'triangle-fan';\n default:\n return null;\n }\n }\n /** @internal */\n private _loadIndexBuffer(\n gltf: GLTFContent,\n accessorIndex: number,\n primitive: Primitive,\n meshData: AssetSubMeshData,\n dracoExtension?: any,\n dracoMeshDecoder?: Nullable<DracoMeshDecoder>\n ) {\n const accessor = gltf._accessors[accessorIndex];\n if (dracoMeshDecoder) {\n const indices = dracoMeshDecoder.getIndexBuffer();\n if (!indices || indices.length !== accessor.count) {\n throw new Error(`Decode index buffer failed`);\n }\n if (indices.length !== accessor.count) {\n throw new Error(`Decode index buffer failed`);\n }\n gltf._loadedBuffers!.push(indices.buffer);\n if (!gltf.bufferViews) {\n gltf.bufferViews = [];\n }\n gltf.bufferViews.push({\n buffer: gltf._loadedBuffers!.length - 1,\n byteOffset: 0,\n byteLength: indices.byteLength\n });\n accessor.componentType = ComponentType.UINT;\n accessor.bufferView = gltf.bufferViews.length - 1;\n }\n this._setBuffer(gltf, accessorIndex, primitive, null, meshData);\n }\n /** @internal */\n private _loadVertexBuffer(\n gltf: GLTFContent,\n attribName: string,\n accessorIndex: number,\n primitive: Primitive,\n subMeshData: AssetSubMeshData,\n dracoExtension?: any,\n dracoMeshDecoder?: DracoMeshDecoder\n ) {\n const dracoId = dracoExtension?.attributes?.[attribName];\n if (dracoId !== undefined) {\n const accessor = gltf._accessors[accessorIndex];\n let buffer: Nullable<TypedArray> = null;\n const numElements = accessor.count * accessor.getComponentCount(accessor.type);\n switch (accessor.componentType) {\n case ComponentType.FLOAT:\n buffer = new Float32Array(numElements);\n break;\n case ComponentType.BYTE:\n buffer = new Int8Array(numElements);\n break;\n case ComponentType.SHORT:\n buffer = new Int16Array(numElements);\n break;\n case ComponentType.INT:\n buffer = new Int32Array(numElements);\n break;\n case ComponentType.UBYTE:\n buffer = new Uint8Array(numElements);\n break;\n case ComponentType.USHORT:\n buffer = new Uint16Array(numElements);\n break;\n case ComponentType.UINT:\n buffer = new Uint32Array(numElements);\n break;\n default:\n throw new Error(`Invalid component type: ${accessor.componentType}`);\n }\n if (!dracoMeshDecoder!.getAttributeBuffer(dracoId, buffer)) {\n throw new Error(`Decode draco mesh failed`);\n }\n gltf._loadedBuffers!.push(buffer.buffer);\n if (!gltf.bufferViews) {\n gltf.bufferViews = [];\n }\n gltf.bufferViews.push({\n buffer: gltf._loadedBuffers!.length - 1,\n byteOffset: 0,\n byteLength: buffer.byteLength\n });\n accessor.bufferView = gltf.bufferViews.length - 1;\n }\n let semantic: Nullable<VertexSemantic> = null;\n switch (attribName) {\n case 'POSITION':\n semantic = 'position';\n break;\n case 'NORMAL':\n semantic = 'normal';\n break;\n case 'TANGENT':\n semantic = 'tangent';\n break;\n case 'TEXCOORD_0':\n semantic = 'texCoord0';\n break;\n case 'TEXCOORD_1':\n semantic = 'texCoord1';\n break;\n case 'TEXCOORD_2':\n semantic = 'texCoord2';\n break;\n case 'TEXCOORD_3':\n semantic = 'texCoord3';\n break;\n case 'TEXCOORD_4':\n semantic = 'texCoord4';\n break;\n case 'TEXCOORD_5':\n semantic = 'texCoord5';\n break;\n case 'TEXCOORD_6':\n semantic = 'texCoord6';\n break;\n case 'TEXCOORD_7':\n semantic = 'texCoord7';\n break;\n case 'COLOR_0':\n semantic = 'diffuse';\n break;\n case 'JOINTS_0':\n semantic = 'blendIndices';\n break;\n case 'WEIGHTS_0':\n semantic = 'blendWeights';\n break;\n default:\n return;\n }\n\n this._setBuffer(gltf, accessorIndex, primitive, semantic, subMeshData);\n }\n /** @internal */\n private _setBuffer(\n gltf: GLTFContent,\n accessorIndex: number,\n primitive: Primitive,\n semantic: Nullable<VertexSemantic>,\n subMeshData: AssetSubMeshData\n ) {\n const device = getDevice();\n const accessor = gltf._accessors[accessorIndex];\n const componentCount = accessor.getComponentCount(accessor.type);\n const normalized = !!accessor.normalized;\n const hash = `${accessorIndex}:${semantic || ''}:${Number(normalized)}`;\n let buffer = gltf._bufferCache[hash];\n if (!buffer) {\n let data = accessor.getNormalizedDeinterlacedView(gltf);\n if (semantic && !(data instanceof Float32Array)) {\n const floatData = new Float32Array(data.length);\n floatData.set(data);\n data = floatData;\n }\n if (!semantic) {\n if (\n !(data instanceof Uint8Array) &&\n !(data instanceof Uint16Array) &&\n !(data instanceof Uint32Array)\n ) {\n console.error('Invalid index buffer component type');\n return;\n }\n if (data instanceof Uint32Array && !device.getDeviceCaps().miscCaps.support32BitIndex) {\n console.error('Device does not support 32bit vertex index');\n return;\n }\n if (data instanceof Uint8Array) {\n const uint16Data = new Uint16Array(data.length);\n uint16Data.set(data);\n data = uint16Data;\n }\n }\n if (!semantic) {\n buffer = getDevice().createIndexBuffer(data as Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>, {\n managed: true\n });\n } else {\n const attribFormat = device.getVertexAttribFormat(semantic, 'f32', componentCount);\n buffer = getDevice().createVertexBuffer(attribFormat!, data)!;\n }\n gltf._bufferCache[hash] = buffer;\n }\n if (buffer) {\n if (!semantic) {\n primitive.setIndexBuffer(buffer as IndexBuffer);\n primitive.indexCount = (buffer as IndexBuffer).length;\n } else {\n primitive.setVertexBuffer(buffer as StructuredBuffer);\n if (semantic === 'position') {\n if (!primitive.getIndexBuffer()) {\n primitive.indexCount = Math.floor(buffer.byteLength / 12);\n }\n const data = accessor.getNormalizedDeinterlacedView(gltf);\n subMeshData.rawPositions = data as Float32Array;\n const min = accessor.min;\n const max = accessor.max;\n if (min && max) {\n primitive.setBoundingVolume(new BoundingBox(new Vector3(min), new Vector3(max)));\n } else {\n const bbox = new BoundingBox();\n bbox.beginExtend();\n for (let i = 0; i < data.length; i++) {\n const v = new Vector3(\n data[i * componentCount],\n data[i * componentCount + 1],\n data[i * componentCount + 2]\n );\n bbox.extend(v);\n }\n if (bbox.isValid()) {\n primitive.setBoundingVolume(bbox);\n }\n }\n } else if (semantic === 'blendIndices') {\n subMeshData.rawBlendIndices = accessor.getNormalizedDeinterlacedView(gltf);\n } else if (semantic === 'blendWeights') {\n subMeshData.rawJointWeights = accessor.getNormalizedDeinterlacedView(gltf);\n }\n }\n }\n return buffer;\n }\n /** @internal */\n private isGLB(data: ArrayBuffer) {\n if (data.byteLength > 12) {\n const p = new Uint32Array(data, 0, 3);\n if (p[0] === 0x46546c67 && p[1] === 2 && p[2] === data.byteLength) {\n return true;\n }\n }\n return false;\n }\n /** @internal */\n private getGLBChunkInfo(data: ArrayBuffer, offset: number) {\n const header = new Uint32Array(data, offset, 2);\n const start = offset + 8;\n const length = header[0];\n const type = header[1];\n return { start, length, type };\n }\n /** @internal */\n private getGLBChunkInfos(data: ArrayBuffer) {\n const infos: { start: number; length: number; type: number }[] = [];\n let offset = 12;\n while (offset < data.byteLength) {\n const info = this.getGLBChunkInfo(data, offset);\n infos.push(info);\n offset += info.length + 8;\n }\n return infos;\n }\n}\n"],"names":["GLTFLoader","AbstractModelLoader","supportMIMEType","mimeType","load","assetManager","url","data","decoderModule","vfs","buffer","arrayBuffer","isGLB","loadBinary","gltf","Response","json","_manager","_VFS","_loadedBuffers","loadJson","VFS","jsonChunkType","binaryChunkType","buffers","chunkInfos","getGLBChunkInfos","info","type","jsonSlice","Uint8Array","length","stringBuffer","TextDecoder","decode","JSON","parse","push","slice","start","dracoDecoderModule","extensionsRequired","indexOf","console","error","_dracoModule","_accessors","_bufferCache","_textureCache","_materialCache","_nodes","_meshes","asset","gltfVersion","version","_baseURI","substring","lastIndexOf","uri","_normalizeURI","buf","fetchBinaryData","overrideVFS","byteLength","accessors","accessor","GLTFAccessor","scenes","sharedModel","SharedModel","_loadMeshes","_loadNodes","_loadSkins","i","nodes","skin","skeleton","skeletons","_loadAnimations","scene","assetScene","AssetScene","name","node","rootNodes","activeScene","baseURI","s","toLowerCase","startsWith","encodeURI","replace","decodeURIComponent","split","map","val","encodeURIComponent","join","model","_loadNode","parent","computeTransforms","skins","skinInfo","AssetSkeleton","pivot","inverseBindMatrices","componentType","ComponentType","FLOAT","Error","matrices","getDeinterlacedView","joints","forEach","joint","index","m","addJoint","Matrix4x4","subarray","identity","addSkeleton","animations","animation","_loadAnimation","addAnimation","collectNodes","collect","Map","set","translate","position","Vector3","zero","rotation","Quaternion","scale","scaling","one","worldTransform","getAnimationInfo","animationInfo","channels","samplers","interpolators","interpolatorTypes","maxTime","channel","sampler","input","getNormalizedDeinterlacedView","output","Float32Array","mode","interpolation","target","path","Interpolator","max","animationData","tracks","targetNode","track","interpolator","defaultMorphWeights","weights","skeletonAttached","nodeIndex","addChild","nodeInfo","addNode","mesh","morphWeights","instancing","extensions","attributes","accessorTranslation","TRANSLATION","accessorScale","SCALE","accessorRotation","ROTATION","count","translationValues","scaleValues","rotationValues","t","r","instances","matrix","decompose","translation","children","childIndex","meshes","_loadMesh","meshIndex","meshInfo","subMeshes","primitives","meshName","p","subMeshData","primitive","DRef","material","rawPositions","rawBlendIndices","rawJointWeights","numTargets","Primitive","dracoExtension","dracoMeshDecoder","bufferView","bufferViews","DracoMeshDecoder","Int8Array","byteOffset","attrib","_loadVertexBuffer","targets","getDevice","undefined","vertexIndices","getNumVertices","createAndSetVertexBuffer","targetBox","targetMap","POSITION","MORPH_TARGET_POSITION","NORMAL","MORPH_TARGET_NORMAL","TANGENT","MORPH_TARGET_TANGENT","TEXCOORD_0","MORPH_TARGET_TEX0","TEXCOORD_1","MORPH_TARGET_TEX1","TEXCOORD_2","MORPH_TARGET_TEX2","TEXCOORD_3","MORPH_TARGET_TEX3","COLOR_0","MORPH_TARGET_COLOR","morphAttribSet","Set","k","numComponents","accessorIndex","getComponentCount","min","BoundingBox","add","morphAttribCount","size","indices","_loadIndexBuffer","primitiveType","_primitiveType","hasVertexNormal","getVertexBuffer","hasVertexColor","hasVertexTangent","materialHash","Number","materialInfo","materials","_loadMaterial","_createMaterial","assetMaterial","unlitAssetMaterial","unlitMaterial","UnlitMaterial","albedoColor","diffuse","Vector4","diffuseMap","albedoTexture","texture","albedoTextureSampler","albedoTexCoordIndex","texCoord","albedoTexCoordMatrix","transform","vertexColor","common","alphaMode","blendMode","alphaCutoff","doubleSided","cullMode","assetPBRMaterial","pbrMaterial","PBRSpecularGlossinessMaterial","ior","specularFactor","specular","x","y","z","glossinessFactor","glossness","normalMap","normalTexture","normalTextureSampler","normalTexCoordIndex","normalTexCoordMatrix","normalScale","bumpScale","emissiveMap","emissiveTexture","emissiveTextureSampler","emissiveTexCoordIndex","emissiveTexCoordMatrix","emissiveColor","emissiveStrength","occlusionMap","occlusionTexture","occlusionTextureSampler","occlusionTexCoordIndex","occlusionTexCoordMatrix","occlusionStrength","specularGlossnessMap","specularTexture","specularTextureSampler","specularTexCoordIndex","specularTexCoordMatrix","vertexTangent","useTangent","vertexNormal","PBRMetallicRoughnessMaterial","metallic","roughness","metallicMap","metallicRoughnessTexture","metallicRoughnessTextureSampler","metallicRoughnessTexCoordIndex","metallicRoughnessTexCoordMatrix","specularMap","specularColorMap","specularColorTexture","specularColorTextureSampler","specularColorTexCoordIndex","specularColorTexCoordMatrix","sheen","sheenColorFactor","sheenRoughnessFactor","sheenColorMap","sheenColorTexture","sheenColorTextureSampler","sheenColorTexCoordIndex","sheenColorTexCoordMatrix","sheenRoughnessMap","sheenRoughnessTexture","sheenRoughnessTextureSampler","sheenRoughnessTexCoordIndex","sheenRoughnessTexCoordMatrix","iridescence","iridescenceFactor","iridescenceIor","iridescenceMap","iridescenceTexture","iridescenceTextureSampler","iridescenceTexCoordIndex","iridescenceTexCoordMatrix","iridescenceThicknessMin","iridescenceThicknessMinimum","iridescenceThicknessMax","iridescenceThicknessMaximum","iridescenceThicknessMap","iridescenceThicknessTexture","iridescenceThicknessTextureSampler","iridescenceThicknessTexCoordIndex","iridescenceThicknessTexCoordMatrix","transmission","transmissionFactor","transmissionMap","transmissionTexture","transmissionTextureSampler","transmissionTexCoordIndex","transmissionTexCoordMatrix","thicknessFactor","thicknessMap","thicknessTexture","thicknessTextureSampler","thicknessTexCoordIndex","thicknessTexCoordMatrix","attenuationDistance","attenuationColor","clearcoat","cc","clearcoatIntensity","clearCoatFactor","clearcoatRoughnessFactor","clearCoatRoughnessFactor","clearCoatIntensityMap","clearcoatIntensityTexture","clearcoatIntensityTextureSampler","clearcoatIntensityTexCoordIndex","clearcoatIntensityTexCoordMatrix","clearCoatRoughnessMap","clearcoatRoughnessTexture","clearcoatRoughnessTextureSampler","clearcoatRoughnessTexCoordIndex","clearcoatRoughnessTexCoordMatrix","clearCoatNormalMap","clearcoatNormalTexture","clearcoatNormalTextureSampler","clearcoatNormalTexCoordIndex","clearcoatNormalTexCoordMatrix","pbrMetallicRoughness","pbrSpecularGlossness","pbrCommon","KHR_materials_pbrSpecularGlossiness","_loadTexture","strength","KHR_materials_emissive_strength","emissiveFactor","baseColorFactor","metallicFactor","roughnessFactor","baseColorTexture","metallicIndex","roughnessIndex","sg","diffuseFactor","glossnessFactor","diffuseTexture","specularGlossinessTexture","KHR_materials_unlit","KHR_materials_ior","specularColorFactor","KHR_materials_specular","KHR_materials_iridescence","KHR_materials_transmission","volume","KHR_materials_volume","KHR_materials_sheen","KHR_materials_clearcoat","clearcoatFactor","clearcoatTexture","sRGB","mt","textureInfo","textures","KHR_texture_transform","uvTransform","rotationZ","offset","multiplyLeft","translateLeft","wrapS","wrapT","magFilter","minFilter","mipFilter","samplerIndex","imageIndex","source","hash","image","images","imageUrl","fetchTexture","linearColorSpace","view","loadTextureFromBuffer","createSampler","addressU","addressV","meshData","getIndexBuffer","UINT","_setBuffer","attribName","dracoId","numElements","BYTE","SHORT","Int16Array","INT","Int32Array","UBYTE","USHORT","Uint16Array","Uint32Array","getAttributeBuffer","semantic","device","componentCount","normalized","floatData","getDeviceCaps","miscCaps","support32BitIndex","uint16Data","createIndexBuffer","managed","attribFormat","getVertexAttribFormat","createVertexBuffer","setIndexBuffer","indexCount","setVertexBuffer","Math","floor","setBoundingVolume","bbox","beginExtend","v","extend","isValid","getGLBChunkInfo","header","infos"],"mappings":"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"}
|
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
/** @internal */ var ComponentType = /*#__PURE__*/ function(ComponentType) {
|
|
2
|
-
ComponentType[ComponentType["UNKNOWN"] = 0] = "UNKNOWN";
|
|
3
|
-
ComponentType[ComponentType["BYTE"] = 5120] = "BYTE";
|
|
4
|
-
ComponentType[ComponentType["UBYTE"] = 5121] = "UBYTE";
|
|
5
|
-
ComponentType[ComponentType["SHORT"] = 5122] = "SHORT";
|
|
6
|
-
ComponentType[ComponentType["USHORT"] = 5123] = "USHORT";
|
|
7
|
-
ComponentType[ComponentType["INT"] = 5124] = "INT";
|
|
8
|
-
ComponentType[ComponentType["UINT"] = 5125] = "UINT";
|
|
9
|
-
ComponentType[ComponentType["FLOAT"] = 5126] = "FLOAT"; // GL.FLOAT
|
|
10
|
-
return ComponentType;
|
|
11
|
-
}({});
|
|
12
|
-
/** @internal */ class GLTFAccessor {
|
|
13
|
-
bufferView;
|
|
14
|
-
byteOffset;
|
|
15
|
-
componentType;
|
|
16
|
-
normalized;
|
|
17
|
-
count;
|
|
18
|
-
type;
|
|
19
|
-
max;
|
|
20
|
-
min;
|
|
21
|
-
sparse;
|
|
22
|
-
name;
|
|
23
|
-
_typedView;
|
|
24
|
-
_filteredView;
|
|
25
|
-
_normalizedFilteredView;
|
|
26
|
-
_normalizedTypedView;
|
|
27
|
-
constructor(accessorInfo){
|
|
28
|
-
this.bufferView = accessorInfo.bufferView;
|
|
29
|
-
this.byteOffset = accessorInfo.byteOffset ?? 0;
|
|
30
|
-
this.componentType = accessorInfo.componentType;
|
|
31
|
-
this.normalized = !!accessorInfo.normalized;
|
|
32
|
-
this.count = accessorInfo.count;
|
|
33
|
-
this.type = accessorInfo.type;
|
|
34
|
-
this.max = accessorInfo.max;
|
|
35
|
-
this.min = accessorInfo.min;
|
|
36
|
-
this.sparse = accessorInfo.sparse;
|
|
37
|
-
this.name = accessorInfo.name;
|
|
38
|
-
this._typedView = null;
|
|
39
|
-
this._filteredView = null;
|
|
40
|
-
this._normalizedFilteredView = null;
|
|
41
|
-
this._normalizedTypedView = null;
|
|
42
|
-
}
|
|
43
|
-
getTypedView(gltf) {
|
|
44
|
-
if (this._typedView) {
|
|
45
|
-
return this._typedView;
|
|
46
|
-
}
|
|
47
|
-
if (this.bufferView !== undefined) {
|
|
48
|
-
const bufferView = gltf.bufferViews[this.bufferView];
|
|
49
|
-
const buffer = gltf._loadedBuffers[bufferView.buffer];
|
|
50
|
-
const byteOffset = this.byteOffset + (bufferView.byteOffset ?? 0);
|
|
51
|
-
const componentSize = this.getComponentSize(this.componentType);
|
|
52
|
-
const componentCount = this.getComponentCount(this.type);
|
|
53
|
-
let arrayLength = 0;
|
|
54
|
-
if (bufferView.byteStride !== undefined && bufferView.byteStride !== 0) {
|
|
55
|
-
if (componentSize !== 0) {
|
|
56
|
-
arrayLength = bufferView.byteStride / componentSize * (this.count - 1) + componentCount;
|
|
57
|
-
} else {
|
|
58
|
-
console.warn("Invalid component type in accessor '" + (this.name ? this.name : '') + "'");
|
|
59
|
-
}
|
|
60
|
-
} else {
|
|
61
|
-
arrayLength = this.count * componentCount;
|
|
62
|
-
}
|
|
63
|
-
if (arrayLength * componentSize > buffer.byteLength - byteOffset) {
|
|
64
|
-
arrayLength = (buffer.byteLength - byteOffset) / componentSize;
|
|
65
|
-
console.warn("Count in accessor '" + (this.name ? this.name : '') + "' is too large.");
|
|
66
|
-
}
|
|
67
|
-
switch(this.componentType){
|
|
68
|
-
case 5120:
|
|
69
|
-
this._typedView = new Int8Array(buffer, byteOffset, arrayLength);
|
|
70
|
-
break;
|
|
71
|
-
case 5121:
|
|
72
|
-
this._typedView = new Uint8Array(buffer, byteOffset, arrayLength);
|
|
73
|
-
break;
|
|
74
|
-
case 5122:
|
|
75
|
-
this._typedView = new Int16Array(buffer, byteOffset, arrayLength);
|
|
76
|
-
break;
|
|
77
|
-
case 5123:
|
|
78
|
-
this._typedView = new Uint16Array(buffer, byteOffset, arrayLength);
|
|
79
|
-
break;
|
|
80
|
-
case 5124:
|
|
81
|
-
this._typedView = new Int32Array(buffer, byteOffset, arrayLength);
|
|
82
|
-
break;
|
|
83
|
-
case 5125:
|
|
84
|
-
this._typedView = new Uint32Array(buffer, byteOffset, arrayLength);
|
|
85
|
-
break;
|
|
86
|
-
case 5126:
|
|
87
|
-
this._typedView = new Float32Array(buffer, byteOffset, arrayLength);
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
} else if (this.sparse !== undefined) {
|
|
91
|
-
this._typedView = this.createView();
|
|
92
|
-
}
|
|
93
|
-
if (!this._typedView) {
|
|
94
|
-
console.warn('Failed to convert buffer view to typed view!: ' + this.bufferView);
|
|
95
|
-
} else if (this.sparse !== undefined) {
|
|
96
|
-
this.applySparse(gltf, this._typedView);
|
|
97
|
-
}
|
|
98
|
-
return this._typedView;
|
|
99
|
-
}
|
|
100
|
-
// getNormalizedTypedView provides an alternative view to the accessors data,
|
|
101
|
-
// where quantized data is already normalized. This is useful if the data is not passed
|
|
102
|
-
// to vertexAttribPointer but used immediately (like e.g. animations)
|
|
103
|
-
getNormalizedTypedView(gltf) {
|
|
104
|
-
if (this._normalizedTypedView) {
|
|
105
|
-
return this._normalizedTypedView;
|
|
106
|
-
}
|
|
107
|
-
const typedView = this.getTypedView(gltf);
|
|
108
|
-
this._normalizedTypedView = this.normalized ? GLTFAccessor.dequantize(typedView, this.componentType) : typedView;
|
|
109
|
-
return this._normalizedTypedView;
|
|
110
|
-
}
|
|
111
|
-
// getDeinterlacedView provides a view to the accessors data in form of
|
|
112
|
-
// a TypedArray. In contrast to getTypedView, getDeinterlacedView deinterlaces
|
|
113
|
-
// data, i.e. stripping padding and unrelated components from the array. It then
|
|
114
|
-
// only contains the data of the accessor
|
|
115
|
-
getDeinterlacedView(gltf) {
|
|
116
|
-
if (this._filteredView) {
|
|
117
|
-
return this._filteredView;
|
|
118
|
-
}
|
|
119
|
-
const componentSize = this.getComponentSize(this.componentType);
|
|
120
|
-
const componentCount = this.getComponentCount(this.type);
|
|
121
|
-
const arrayLength = this.count * componentCount;
|
|
122
|
-
let func = 'getFloat32';
|
|
123
|
-
switch(this.componentType){
|
|
124
|
-
case 5120:
|
|
125
|
-
this._filteredView = new Int8Array(arrayLength);
|
|
126
|
-
func = 'getInt8';
|
|
127
|
-
break;
|
|
128
|
-
case 5121:
|
|
129
|
-
this._filteredView = new Uint8Array(arrayLength);
|
|
130
|
-
func = 'getUint8';
|
|
131
|
-
break;
|
|
132
|
-
case 5122:
|
|
133
|
-
this._filteredView = new Int16Array(arrayLength);
|
|
134
|
-
func = 'getInt16';
|
|
135
|
-
break;
|
|
136
|
-
case 5123:
|
|
137
|
-
this._filteredView = new Uint16Array(arrayLength);
|
|
138
|
-
func = 'getUint16';
|
|
139
|
-
break;
|
|
140
|
-
case 5124:
|
|
141
|
-
this._filteredView = new Int32Array(arrayLength);
|
|
142
|
-
func = 'getInt32';
|
|
143
|
-
break;
|
|
144
|
-
case 5125:
|
|
145
|
-
this._filteredView = new Uint32Array(arrayLength);
|
|
146
|
-
func = 'getUint32';
|
|
147
|
-
break;
|
|
148
|
-
case 5126:
|
|
149
|
-
this._filteredView = new Float32Array(arrayLength);
|
|
150
|
-
func = 'getFloat32';
|
|
151
|
-
break;
|
|
152
|
-
default:
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
if (this.bufferView !== undefined) {
|
|
156
|
-
const bufferView = gltf.bufferViews[this.bufferView];
|
|
157
|
-
const buffer = gltf._loadedBuffers[bufferView.buffer];
|
|
158
|
-
const byteOffset = this.byteOffset + (bufferView.byteOffset ?? 0);
|
|
159
|
-
const stride = bufferView.byteStride !== undefined && bufferView.byteStride !== 0 ? bufferView.byteStride : componentCount * componentSize;
|
|
160
|
-
const dataView = new DataView(buffer, byteOffset, this.count * stride);
|
|
161
|
-
for(let i = 0; i < arrayLength; ++i){
|
|
162
|
-
const offset = Math.floor(i / componentCount) * stride + i % componentCount * componentSize;
|
|
163
|
-
this._filteredView[i] = dataView[func](offset, true);
|
|
164
|
-
}
|
|
165
|
-
} else if (this.sparse !== undefined) {
|
|
166
|
-
this._filteredView = this.createView();
|
|
167
|
-
}
|
|
168
|
-
if (this.sparse !== undefined) {
|
|
169
|
-
this.applySparse(gltf, this._filteredView);
|
|
170
|
-
}
|
|
171
|
-
return this._filteredView;
|
|
172
|
-
}
|
|
173
|
-
createView() {
|
|
174
|
-
const size = this.count * this.getComponentCount(this.type);
|
|
175
|
-
if (this.componentType == 5120) {
|
|
176
|
-
return new Int8Array(size);
|
|
177
|
-
}
|
|
178
|
-
if (this.componentType == 5121) {
|
|
179
|
-
return new Uint8Array(size);
|
|
180
|
-
}
|
|
181
|
-
if (this.componentType == 5122) {
|
|
182
|
-
return new Int16Array(size);
|
|
183
|
-
}
|
|
184
|
-
if (this.componentType == 5123) {
|
|
185
|
-
return new Uint16Array(size);
|
|
186
|
-
}
|
|
187
|
-
if (this.componentType == 5124) {
|
|
188
|
-
return new Int32Array(size);
|
|
189
|
-
}
|
|
190
|
-
if (this.componentType == 5125) {
|
|
191
|
-
return new Uint32Array(size);
|
|
192
|
-
}
|
|
193
|
-
if (this.componentType == 5126) {
|
|
194
|
-
return new Float32Array(size);
|
|
195
|
-
}
|
|
196
|
-
return undefined;
|
|
197
|
-
}
|
|
198
|
-
// getNormalizedDeinterlacedView provides an alternative view to the accessors data,
|
|
199
|
-
// where quantized data is already normalized. This is useful if the data is not passed
|
|
200
|
-
// to vertexAttribPointer but used immediately (like e.g. animations)
|
|
201
|
-
getNormalizedDeinterlacedView(gltf) {
|
|
202
|
-
if (this._normalizedFilteredView) {
|
|
203
|
-
return this._normalizedFilteredView;
|
|
204
|
-
}
|
|
205
|
-
const filteredView = this.getDeinterlacedView(gltf);
|
|
206
|
-
this._normalizedFilteredView = this.normalized ? GLTFAccessor.dequantize(filteredView, this.componentType) : filteredView;
|
|
207
|
-
return this._normalizedFilteredView;
|
|
208
|
-
}
|
|
209
|
-
applySparse(gltf, view) {
|
|
210
|
-
// Gather indices.
|
|
211
|
-
const indicesBufferView = gltf.bufferViews[this.sparse.indices.bufferView];
|
|
212
|
-
const indicesBuffer = gltf._loadedBuffers[indicesBufferView.buffer];
|
|
213
|
-
const indicesByteOffset = (this.sparse.indices.byteOffset ?? 0) + (indicesBufferView.byteOffset ?? 0);
|
|
214
|
-
const indicesComponentSize = this.getComponentSize(this.sparse.indices.componentType);
|
|
215
|
-
let indicesComponentCount = 1;
|
|
216
|
-
if (indicesBufferView.byteStride !== undefined && indicesBufferView.byteStride !== 0) {
|
|
217
|
-
indicesComponentCount = indicesBufferView.byteStride / indicesComponentSize;
|
|
218
|
-
}
|
|
219
|
-
const indicesArrayLength = this.sparse.count * indicesComponentCount;
|
|
220
|
-
let indicesTypedView;
|
|
221
|
-
switch(this.sparse.indices.componentType){
|
|
222
|
-
case 5121:
|
|
223
|
-
indicesTypedView = new Uint8Array(indicesBuffer, indicesByteOffset, indicesArrayLength);
|
|
224
|
-
break;
|
|
225
|
-
case 5123:
|
|
226
|
-
indicesTypedView = new Uint16Array(indicesBuffer, indicesByteOffset, indicesArrayLength);
|
|
227
|
-
break;
|
|
228
|
-
case 5125:
|
|
229
|
-
indicesTypedView = new Uint32Array(indicesBuffer, indicesByteOffset, indicesArrayLength);
|
|
230
|
-
break;
|
|
231
|
-
}
|
|
232
|
-
if (!indicesTypedView) {
|
|
233
|
-
console.warn('Failed to convert sparse accessor indices to typed view!: ' + this.bufferView);
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
// Gather values.
|
|
237
|
-
const valuesBufferView = gltf.bufferViews[this.sparse.values.bufferView];
|
|
238
|
-
const valuesBuffer = gltf._loadedBuffers[valuesBufferView.buffer];
|
|
239
|
-
const valuesByteOffset = (this.sparse.values.byteOffset ?? 0) + (valuesBufferView.byteOffset ?? 0);
|
|
240
|
-
const valuesComponentSize = this.getComponentSize(this.componentType);
|
|
241
|
-
let valuesComponentCount = this.getComponentCount(this.type);
|
|
242
|
-
if (valuesBufferView.byteStride !== undefined && valuesBufferView.byteStride !== 0) {
|
|
243
|
-
valuesComponentCount = valuesBufferView.byteStride / valuesComponentSize;
|
|
244
|
-
}
|
|
245
|
-
const valuesArrayLength = this.sparse.count * valuesComponentCount;
|
|
246
|
-
let valuesTypedView;
|
|
247
|
-
switch(this.componentType){
|
|
248
|
-
case 5120:
|
|
249
|
-
valuesTypedView = new Int8Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
250
|
-
break;
|
|
251
|
-
case 5121:
|
|
252
|
-
valuesTypedView = new Uint8Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
253
|
-
break;
|
|
254
|
-
case 5122:
|
|
255
|
-
valuesTypedView = new Int16Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
256
|
-
break;
|
|
257
|
-
case 5123:
|
|
258
|
-
valuesTypedView = new Uint16Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
259
|
-
break;
|
|
260
|
-
case 5124:
|
|
261
|
-
valuesTypedView = new Int32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
262
|
-
break;
|
|
263
|
-
case 5125:
|
|
264
|
-
valuesTypedView = new Uint32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
265
|
-
break;
|
|
266
|
-
case 5126:
|
|
267
|
-
valuesTypedView = new Float32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
// Overwrite values.
|
|
271
|
-
for(let i = 0; i < this.sparse.count; ++i){
|
|
272
|
-
for(let k = 0; k < valuesComponentCount; ++k){
|
|
273
|
-
view[indicesTypedView[i] * valuesComponentCount + k] = valuesTypedView[i * valuesComponentCount + k];
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
// dequantize can be used to perform the normalization from WebGL2 vertexAttribPointer explicitly
|
|
278
|
-
static dequantize(typedArray, componentType) {
|
|
279
|
-
switch(componentType){
|
|
280
|
-
case 5120:
|
|
281
|
-
return new Float32Array(typedArray).map((c)=>Math.max(c / 127.0, -1));
|
|
282
|
-
case 5121:
|
|
283
|
-
return new Float32Array(typedArray).map((c)=>c / 255.0);
|
|
284
|
-
case 5122:
|
|
285
|
-
return new Float32Array(typedArray).map((c)=>Math.max(c / 32767.0, -1));
|
|
286
|
-
case 5123:
|
|
287
|
-
return new Float32Array(typedArray).map((c)=>c / 65535.0);
|
|
288
|
-
default:
|
|
289
|
-
return typedArray;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
getComponentCount(type) {
|
|
293
|
-
switch(type){
|
|
294
|
-
case 'SCALAR':
|
|
295
|
-
return 1;
|
|
296
|
-
case 'VEC2':
|
|
297
|
-
return 2;
|
|
298
|
-
case 'VEC3':
|
|
299
|
-
return 3;
|
|
300
|
-
case 'VEC4':
|
|
301
|
-
return 4;
|
|
302
|
-
case 'MAT2':
|
|
303
|
-
return 4;
|
|
304
|
-
case 'MAT3':
|
|
305
|
-
return 9;
|
|
306
|
-
case 'MAT4':
|
|
307
|
-
return 16;
|
|
308
|
-
default:
|
|
309
|
-
return 0;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
getComponentSize(componentType) {
|
|
313
|
-
switch(componentType){
|
|
314
|
-
case 5120:
|
|
315
|
-
case 5121:
|
|
316
|
-
return 1;
|
|
317
|
-
case 5122:
|
|
318
|
-
case 5123:
|
|
319
|
-
return 2;
|
|
320
|
-
case 5124:
|
|
321
|
-
case 5125:
|
|
322
|
-
case 5126:
|
|
323
|
-
return 4;
|
|
324
|
-
default:
|
|
325
|
-
return 0;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
export { ComponentType, GLTFAccessor };
|
|
331
|
-
//# sourceMappingURL=helpers.js.map
|