@woosh/meep-engine 3.23.0 → 3.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/entity_world_bounds.d.ts +9 -3
- package/editor/entity_world_bounds.d.ts.map +1 -1
- package/editor/entity_world_bounds.js +61 -4
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +40 -2
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +124 -29
- package/src/core/collection/map/u32_index.d.ts +83 -0
- package/src/core/collection/map/u32_index.d.ts.map +1 -0
- package/src/core/collection/map/u32_index.js +247 -0
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.d.ts +2 -2
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js +2 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +1 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.js +4 -12
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +55 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.js +72 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts +40 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.js +79 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.js +27 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts +23 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.js +39 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +15 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.js +38 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_has.js +28 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts +24 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.js +49 -0
- package/src/engine/ecs/ik/IKProblem.d.ts +14 -0
- package/src/engine/ecs/ik/IKProblem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKProblem.js +16 -0
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/InverseKinematicsSystem.js +19 -0
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts +11 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_bone_chain.js +47 -2
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +6 -0
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +6 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts +50 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts.map +1 -0
- package/src/engine/ecs/transform/T64WorldCache.js +139 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts +31 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_evaluate_world.js +126 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +8 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +59 -30
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -11
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.js +13 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +2 -14
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +11 -21
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.d.ts +1 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +7 -0
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +5 -6
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +13 -11
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.js +21 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +3 -3
- package/src/engine/graphics3/AnimationSystem.js +2 -2
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem.js +2 -4
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +34 -27
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +185 -85
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts +4 -3
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightOutlineSystem.js +7 -9
- package/src/engine/graphics3/LightSystem.d.ts +7 -5
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +36 -22
- package/src/engine/graphics3/MeshSystem.d.ts +43 -39
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +324 -331
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem.js +2 -4
- package/src/engine/graphics3/PickingQuery.d.ts +15 -21
- package/src/engine/graphics3/PickingQuery.d.ts.map +1 -1
- package/src/engine/graphics3/PickingQuery.js +21 -25
- package/src/engine/graphics3/PickingSystem.d.ts +60 -31
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +416 -273
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +22 -12
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +309 -174
- package/src/engine/graphics3/TerrainSystem.d.ts +19 -11
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem.js +102 -53
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem.js +2 -14
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +2 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +4 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts.map +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +9 -11
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +11 -18
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +4 -3
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts.map +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +75 -74
- package/src/engine/graphics3/prefab/Prefab.d.ts +130 -0
- package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/Prefab.js +162 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts +72 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/PrefabInstance.js +80 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts +23 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_compile.js +334 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts +46 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.js +230 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts +70 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.js +210 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_place.js +130 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.js +128 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts +40 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.js +116 -0
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts +16 -14
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_preview_scene.js +126 -154
- package/src/engine/graphics3/preview/make_model_thumbnail.js +1 -1
- package/src/engine/graphics3/register_instance_animation.d.ts +6 -6
- package/src/engine/graphics3/register_instance_animation.d.ts.map +1 -1
- package/src/engine/graphics3/register_instance_animation.js +4 -4
- package/src/engine/graphics3/shade_bundle_bounds.d.ts +2 -6
- package/src/engine/graphics3/shade_bundle_bounds.d.ts.map +1 -1
- package/src/engine/graphics3/shade_bundle_bounds.js +47 -55
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts +11 -18
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/pack_terrain_row_table.js +48 -53
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts +17 -2
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +284 -256
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +13 -15
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +12 -14
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts +7 -8
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothRig.js +7 -8
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +5 -4
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +11 -12
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +19 -23
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +201 -199
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +8 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts +18 -34
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.js +58 -115
- package/src/engine/physics/cloth/playground/README.md +11 -11
- package/src/engine/physics/cloth/playground/garment_build.d.ts +0 -1
- package/src/engine/physics/cloth/playground/garment_build.d.ts.map +1 -1
- package/src/engine/physics/cloth/playground/garment_build.js +64 -58
- package/src/engine/physics/cloth/playground/garment_main.js +59 -33
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +85 -53
- package/src/shade/device/ShadeGPUCommandContext.d.ts +23 -0
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +36 -0
- package/src/shade/playground/add_random_meshes.d.ts +4 -4
- package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
- package/src/shade/playground/add_random_meshes.js +20 -16
- package/src/shade/playground/avboit/main.d.ts +1 -0
- package/src/shade/playground/avboit/main.d.ts.map +1 -1
- package/src/shade/playground/avboit/main.js +916 -875
- package/src/shade/playground/basis_textures/main.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/main.js +22 -8
- package/src/shade/playground/basis_textures/texture_inventory.d.ts +2 -2
- package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/texture_inventory.js +6 -7
- package/src/shade/playground/ground_seam/main.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/main.js +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/make_ground.js +21 -16
- package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
- package/src/shade/playground/particle_system/main.js +11 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts +15 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +56 -15
- package/src/shade/playground/particle_system/particle_scene.d.ts +68 -28
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +149 -53
- package/src/shade/playground/readback_crossover/index.html +41 -0
- package/src/shade/playground/readback_crossover/main.d.ts +2 -0
- package/src/shade/playground/readback_crossover/main.d.ts.map +1 -0
- package/src/shade/playground/readback_crossover/main.js +372 -0
- package/src/shade/playground/skinned_blas_refit/README.md +11 -7
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +13 -44
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/add_floor.js +19 -59
- package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/main.js +67 -58
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts +40 -54
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/place_character.js +47 -74
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +4 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +11 -4
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +38 -9
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +9 -6
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +3 -3
- package/src/shade/playground/skinned_mesh_soup/README.md +6 -6
- package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/main.js +44 -102
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +5 -5
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +42 -33
- package/src/shade/playground/sponza_path_trace/main.d.ts +1 -0
- package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -1
- package/src/shade/playground/sponza_path_trace/main.js +393 -363
- package/src/shade/playground/ssr_reprojection/main.js +11 -9
- package/src/shade/playground/ssr_reprojection/scene.d.ts +15 -4
- package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_reprojection/scene.js +32 -11
- package/src/shade/playground/ssr_variance/main.js +1 -1
- package/src/shade/playground/ssr_variance/scene.d.ts +10 -4
- package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_variance/scene.js +39 -15
- package/src/shade/playground/vgeo_viewer/main.js +6 -2
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +936 -922
- package/src/shade/renderer/GraphicsContext.d.ts +7 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +11 -0
- package/src/shade/renderer/Renderer.d.ts +3 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +3 -2
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +39 -47
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +319 -256
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts +26 -22
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationChannel.js +28 -23
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +14 -6
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationClip.js +20 -8
- package/src/shade/renderer/animation/Skin.d.ts +19 -19
- package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
- package/src/shade/renderer/animation/Skin.js +15 -13
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +6 -5
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +9 -9
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +5 -59
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -1
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +8 -132
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +65 -62
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +148 -194
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +4 -7
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +2 -2
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +2 -2
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +74 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +240 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +14 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +64 -6
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts +190 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.js +1323 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts +10 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUPageMetadata.js +12 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts +96 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts +15 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.js +34 -0
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +75 -7
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +518 -135
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts +19 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.js +18 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts +39 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/WordViews.js +62 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts +27 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.js +117 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts +121 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.js +395 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +70 -20
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +6 -5
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +3 -3
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +15 -11
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js +4 -4
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts +1 -3
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.js +5 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -4
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts +8 -3
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +19 -14
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +9 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts +3 -3
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js +12 -5
- package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +1 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts +29 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +444 -329
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +7 -1
- package/src/shade/renderer/light/LightCollection.d.ts +29 -1
- package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/LightCollection.js +50 -1
- package/src/shade/renderer/light/make_sunlight.js +2 -2
- package/src/shade/renderer/light/model/Light.d.ts +29 -2
- package/src/shade/renderer/light/model/Light.d.ts.map +1 -1
- package/src/shade/renderer/light/model/Light.js +30 -2
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_directional.js +8 -5
- package/src/shade/renderer/light/model/io/light_record_point.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_point.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_point.js +5 -2
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts +4 -1
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_spot.js +10 -6
- package/src/shade/renderer/light/place_light.d.ts +16 -0
- package/src/shade/renderer/light/place_light.d.ts.map +1 -0
- package/src/shade/renderer/light/place_light.js +36 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts +44 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts.map +1 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.js +154 -0
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +12 -14
- package/src/shade/renderer/loader/SceneBundle.d.ts +53 -28
- package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
- package/src/shade/renderer/loader/SceneBundle.js +111 -56
- package/src/shade/renderer/loader/SceneNode.d.ts +81 -0
- package/src/shade/renderer/loader/SceneNode.d.ts.map +1 -0
- package/src/shade/renderer/loader/SceneNode.js +114 -0
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts +3 -2
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/load_gltf.js +110 -142
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts +4 -4
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.js +2 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts +3 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/load_usd.js +4 -5
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts +3 -3
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +47 -55
- package/src/shade/renderer/material/GPUMaterialManager.js +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +5 -4
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +8 -15
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts +15 -13
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +40 -21
- package/src/shade/renderer/particles/DESIGN.md +53 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +31 -17
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +54 -91
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +12 -11
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +12 -11
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +13 -19
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +19 -25
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +34 -24
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +53 -40
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +2 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.js +5 -2
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +1 -1
- package/src/shade/renderer/scene/DynamicMesh.d.ts +13 -4
- package/src/shade/renderer/scene/DynamicMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/DynamicMesh.js +14 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +38 -18
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +112 -60
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +55 -48
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +594 -928
- package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts +5 -5
- package/src/shade/renderer/scene/NODE3D_STRUCT.js +5 -5
- package/src/shade/renderer/scene/Node3D.d.ts +27 -8
- package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts +59 -0
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts.map +1 -0
- package/src/shade/renderer/scene/Scene.d.ts +18 -60
- package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/Scene.js +53 -146
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +10 -93
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts +24 -3
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.js +53 -13
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +5 -6
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +5 -6
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts +10 -2
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/scene_optimize.js +266 -230
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts +53 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.js +144 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +227 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +1136 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts +48 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/place_primitive.js +98 -0
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts +10 -8
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +24 -27
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts +9 -2
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/serialize_scene.js +25 -4
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +2 -2
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +39 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +112 -64
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +7 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1541 -1352
- package/src/shade/renderer/shadow/map/PointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +29 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +43 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts +13 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.js +12 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +49 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +194 -0
- package/src/shade/renderer/shadow/map/csm_debug_draw_preview.js +1 -1
- package/src/shade/renderer/shadow/map/shadowmap_update_score.js +1 -1
- package/src/shade/renderer/shadow/ray/RTXShadows.js +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +3 -1
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.js +8 -8
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -3
- package/src/engine/graphics3/instantiate_scene_bundle.js +0 -164
- package/src/engine/graphics3/shade_node_to_entity_composition.js +0 -88
- package/src/shade/renderer/animation/compute_skin_world_bounds.js +0 -146
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.js +0 -531
- package/src/shade/renderer/animation/pose/pose_evaluate_world.js +0 -76
- package/src/shade/renderer/animation/skin_bind_transform.js +0 -33
- package/src/shade/renderer/animation/skin_frame_defect.js +0 -132
- package/src/shade/renderer/animation/skin_joint_matrix.js +0 -46
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +0 -216
- package/src/shade/renderer/scene/InstanceBatch.js +0 -235
- package/src/shade/renderer/scene/Mesh.js +0 -168
- package/src/shade/renderer/scene/Node3D.js +0 -263
- package/src/shade/renderer/scene/SceneNodeBinding.js +0 -56
- package/src/shade/renderer/scene/SkinnedMesh.js +0 -170
- package/src/shade/renderer/scene/TransformAuthority.js +0 -33
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @param {Object.<string, { specType: number, fields: Object }>} specs_by_path
|
|
14
14
|
* @param {UsdBuildOptions} [options]
|
|
15
|
-
* @returns {
|
|
15
|
+
* @returns {SceneBundle} the model's nodes, in pre-order; no skins and no clips, which UsdSkel would fill in
|
|
16
16
|
*/
|
|
17
17
|
export function usd_build_scene(specs_by_path: {
|
|
18
18
|
[x: string]: {
|
|
19
19
|
specType: number;
|
|
20
20
|
fields: any;
|
|
21
21
|
};
|
|
22
|
-
}, options?: UsdBuildOptions):
|
|
22
|
+
}, options?: UsdBuildOptions): SceneBundle;
|
|
23
23
|
export type UsdBuildOptions = {
|
|
24
24
|
/**
|
|
25
25
|
* - Map of relative paths to file data (from USDZ)
|
|
@@ -30,5 +30,5 @@ export type UsdBuildOptions = {
|
|
|
30
30
|
*/
|
|
31
31
|
extensions?: import("./UsdExtensionRegistry.js").UsdExtensionRegistry;
|
|
32
32
|
};
|
|
33
|
-
import {
|
|
33
|
+
import { SceneBundle } from "../SceneBundle.js";
|
|
34
34
|
//# sourceMappingURL=usd_build_scene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usd_build_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_build_scene.js"],"names":[],"mappings":"AAkCA;;;;GAIG;AAGH;;;;;;;;;;GAUG;AACH;QAJmB,MAAM,GAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,MAAQ;KAAE;aACpD,eAAe,GACb,
|
|
1
|
+
{"version":3,"file":"usd_build_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_build_scene.js"],"names":[],"mappings":"AAkCA;;;;GAIG;AAGH;;;;;;;;;;GAUG;AACH;QAJmB,MAAM,GAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,MAAQ;KAAE;aACpD,eAAe,GACb,WAAW,CA8DvB;;;;;iBA5Ea,IAAI,MAAM,EAAE,UAAU,CAAC;;;;iBACvB,OAAO,2BAA2B,EAAE,oBAAoB;;4BAV1C,mBAAmB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts the unified `specsByPath` intermediate representation into
|
|
3
|
-
*
|
|
3
|
+
* a loader's bundle: nodes in pre-order (SceneNode), materials (StandardShadeMaterial).
|
|
4
4
|
*
|
|
5
5
|
* This module is format-agnostic — it consumes the same specsByPath
|
|
6
6
|
* dictionary regardless of whether the source was USDA, USDC, or USDZ.
|
|
@@ -25,9 +25,9 @@ import { StandardAttributes } from "../../geometry/StandardAttributes.js";
|
|
|
25
25
|
import { normalize_attribute } from "../../geometry/util/normalize_attribute.js";
|
|
26
26
|
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
27
27
|
import { StandardShadeMaterial } from "../../material/StandardShadeMaterial.js";
|
|
28
|
+
import { SceneBundle } from "../SceneBundle.js";
|
|
29
|
+
import { SceneNode } from "../SceneNode.js";
|
|
28
30
|
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
29
|
-
import { Mesh } from "../../scene/Mesh.js";
|
|
30
|
-
import { Node3D } from "../../scene/Node3D.js";
|
|
31
31
|
import { usd_compose_transform } from "../../../../format/scene/usd/usd_compose_transform.js";
|
|
32
32
|
import { usd_expand_face_varying, usd_triangulate } from "../../../../format/scene/usd/usd_triangulate.js";
|
|
33
33
|
|
|
@@ -48,7 +48,7 @@ import { usd_expand_face_varying, usd_triangulate } from "../../../../format/sce
|
|
|
48
48
|
*
|
|
49
49
|
* @param {Object.<string, { specType: number, fields: Object }>} specs_by_path
|
|
50
50
|
* @param {UsdBuildOptions} [options]
|
|
51
|
-
* @returns {
|
|
51
|
+
* @returns {SceneBundle} the model's nodes, in pre-order; no skins and no clips, which UsdSkel would fill in
|
|
52
52
|
*/
|
|
53
53
|
export function usd_build_scene(specs_by_path, options = {}) {
|
|
54
54
|
|
|
@@ -89,39 +89,32 @@ export function usd_build_scene(specs_by_path, options = {}) {
|
|
|
89
89
|
|
|
90
90
|
// --- Build prim hierarchy ---
|
|
91
91
|
const prim_children = root_fields.primChildren || [];
|
|
92
|
-
const
|
|
92
|
+
const bundle = new SceneBundle();
|
|
93
93
|
|
|
94
94
|
// Check if correction is non-identity
|
|
95
95
|
const has_correction = up_axis === "Z" || meters_per_unit !== 1.0;
|
|
96
96
|
|
|
97
97
|
for (const child_name of prim_children) {
|
|
98
98
|
const child_path = "/" + child_name;
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
if (node !== null) {
|
|
102
|
-
// Bake correction into root nodes' local transforms so that
|
|
103
|
-
// updateMatrices() propagates it correctly to global transforms
|
|
104
|
-
if (has_correction) {
|
|
105
|
-
const corrected = m4_allocate();
|
|
106
|
-
m4_multiply(corrected, correction, node.transform_local.matrix);
|
|
107
|
-
node.transform_local.fromMatrix(corrected);
|
|
108
|
-
}
|
|
99
|
+
const index = build_prim(child_path, specs_by_path, materials, correction, options, registry, bundle, -1);
|
|
109
100
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
101
|
+
if (index !== -1 && has_correction) {
|
|
102
|
+
// Bake the correction into the roots' own transforms, so that everything under them
|
|
103
|
+
// composes it
|
|
104
|
+
const node = bundle.nodes[index];
|
|
105
|
+
const corrected = m4_allocate();
|
|
113
106
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
107
|
+
m4_multiply(corrected, correction, node.local.matrix);
|
|
108
|
+
node.local.fromMatrix(corrected);
|
|
109
|
+
}
|
|
117
110
|
}
|
|
118
111
|
|
|
119
|
-
return
|
|
112
|
+
return bundle;
|
|
120
113
|
}
|
|
121
114
|
|
|
122
115
|
|
|
123
116
|
/**
|
|
124
|
-
* Recursively
|
|
117
|
+
* Recursively add a prim and what is under it to the bundle.
|
|
125
118
|
*
|
|
126
119
|
* @param {string} path
|
|
127
120
|
* @param {Object} specs_by_path
|
|
@@ -129,14 +122,14 @@ export function usd_build_scene(specs_by_path, options = {}) {
|
|
|
129
122
|
* @param {mat4} parent_world_transform
|
|
130
123
|
* @param {UsdBuildOptions} options
|
|
131
124
|
* @param {import("./UsdExtensionRegistry.js").UsdExtensionRegistry|null} registry
|
|
132
|
-
* @returns {
|
|
125
|
+
* @returns {number} the node's index in the bundle, or -1 for a prim that produced nothing
|
|
133
126
|
*/
|
|
134
|
-
function build_prim(path, specs_by_path, materials, parent_world_transform, options, registry) {
|
|
127
|
+
function build_prim(path, specs_by_path, materials, parent_world_transform, options, registry, bundle, parent) {
|
|
135
128
|
|
|
136
129
|
const spec = specs_by_path[path];
|
|
137
130
|
|
|
138
131
|
if (!spec || spec.specType !== 6) {
|
|
139
|
-
return
|
|
132
|
+
return -1;
|
|
140
133
|
}
|
|
141
134
|
|
|
142
135
|
const fields = spec.fields;
|
|
@@ -150,7 +143,10 @@ function build_prim(path, specs_by_path, materials, parent_world_transform, opti
|
|
|
150
143
|
const result = ext.processPrim(path, fields, { specs_by_path, materials, options });
|
|
151
144
|
|
|
152
145
|
if (result !== null && result !== undefined) {
|
|
153
|
-
|
|
146
|
+
// an extension answers with a record of its own, which goes under this prim's parent
|
|
147
|
+
result.parent = parent;
|
|
148
|
+
|
|
149
|
+
return bundle.add_node(result);
|
|
154
150
|
}
|
|
155
151
|
}
|
|
156
152
|
}
|
|
@@ -167,7 +163,7 @@ function build_prim(path, specs_by_path, materials, parent_world_transform, opti
|
|
|
167
163
|
// Attempt to build a Mesh if this is a UsdGeomMesh
|
|
168
164
|
// @see https://openusd.org/release/api/class_usd_geom_mesh.html
|
|
169
165
|
if (type_name === "Mesh") {
|
|
170
|
-
return build_mesh_node(path, prim_name, fields, specs_by_path, materials, local_transform, world_transform, options, registry);
|
|
166
|
+
return build_mesh_node(path, prim_name, fields, specs_by_path, materials, local_transform, world_transform, options, registry, bundle, parent);
|
|
171
167
|
}
|
|
172
168
|
|
|
173
169
|
// Warn on unrecognized prim types that carry data we silently ignore
|
|
@@ -175,24 +171,22 @@ function build_prim(path, specs_by_path, materials, parent_world_transform, opti
|
|
|
175
171
|
console.warn(`[USD] Unhandled prim type "${type_name}" at ${path}, treating as group node`);
|
|
176
172
|
}
|
|
177
173
|
|
|
178
|
-
// For Xform, Scope, and other grouping types,
|
|
179
|
-
const node = new
|
|
174
|
+
// For Xform, Scope, and other grouping types, a node that only places its children
|
|
175
|
+
const node = new SceneNode();
|
|
180
176
|
node.name = prim_name;
|
|
181
|
-
node.
|
|
177
|
+
node.parent = parent;
|
|
178
|
+
node.local.fromMatrix(local_transform);
|
|
179
|
+
|
|
180
|
+
const index = bundle.add_node(node);
|
|
182
181
|
|
|
183
182
|
// Recurse into children
|
|
184
183
|
const children = fields.primChildren || [];
|
|
185
|
-
|
|
186
184
|
for (const child_name of children) {
|
|
187
185
|
const child_path = path + "/" + child_name;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if (child !== null) {
|
|
191
|
-
node.addChild(child);
|
|
192
|
-
}
|
|
186
|
+
build_prim(child_path, specs_by_path, materials, world_transform, options, registry, bundle, index);
|
|
193
187
|
}
|
|
194
188
|
|
|
195
|
-
return
|
|
189
|
+
return index;
|
|
196
190
|
}
|
|
197
191
|
|
|
198
192
|
|
|
@@ -219,9 +213,9 @@ function build_prim(path, specs_by_path, materials, parent_world_transform, opti
|
|
|
219
213
|
* @param {mat4} world_transform
|
|
220
214
|
* @param {UsdBuildOptions} options
|
|
221
215
|
* @param {import("./UsdExtensionRegistry.js").UsdExtensionRegistry|null} registry
|
|
222
|
-
* @returns {
|
|
216
|
+
* @returns {number} the node's index in the bundle
|
|
223
217
|
*/
|
|
224
|
-
function build_mesh_node(path, name, fields, specs_by_path, materials, local_transform, world_transform, options, registry) {
|
|
218
|
+
function build_mesh_node(path, name, fields, specs_by_path, materials, local_transform, world_transform, options, registry, bundle, parent) {
|
|
225
219
|
|
|
226
220
|
// --- Read topology ---
|
|
227
221
|
const face_vertex_counts = read_attr(specs_by_path, path, "faceVertexCounts");
|
|
@@ -229,11 +223,12 @@ function build_mesh_node(path, name, fields, specs_by_path, materials, local_tra
|
|
|
229
223
|
const points_raw = read_attr(specs_by_path, path, "points");
|
|
230
224
|
|
|
231
225
|
if (!face_vertex_counts || !face_vertex_indices || !points_raw) {
|
|
232
|
-
// Not enough data to build a mesh —
|
|
233
|
-
const node = new
|
|
226
|
+
// Not enough data to build a mesh — a node that draws nothing
|
|
227
|
+
const node = new SceneNode();
|
|
234
228
|
node.name = name;
|
|
235
|
-
node.
|
|
236
|
-
|
|
229
|
+
node.parent = parent;
|
|
230
|
+
node.local.fromMatrix(local_transform);
|
|
231
|
+
return bundle.add_node(node);
|
|
237
232
|
}
|
|
238
233
|
|
|
239
234
|
// Validate that vertex indices are within bounds
|
|
@@ -375,30 +370,27 @@ function build_mesh_node(path, name, fields, specs_by_path, materials, local_tra
|
|
|
375
370
|
material.draw_side = ShadeDrawSide.Double;
|
|
376
371
|
}
|
|
377
372
|
|
|
378
|
-
// ---
|
|
373
|
+
// --- The primitive ---
|
|
379
374
|
const meshlet_geo = meshlet_geometry_build_from_geometry(geometry);
|
|
380
|
-
|
|
381
|
-
const mesh = new Mesh();
|
|
375
|
+
const mesh = new SceneNode();
|
|
382
376
|
mesh.name = name;
|
|
377
|
+
mesh.parent = parent;
|
|
383
378
|
mesh.geometry = meshlet_geo;
|
|
384
379
|
mesh.material = material;
|
|
385
|
-
mesh.
|
|
380
|
+
mesh.local.fromMatrix(local_transform);
|
|
381
|
+
|
|
382
|
+
const index = bundle.add_node(mesh);
|
|
386
383
|
|
|
387
384
|
// Recurse into children (mesh prims can have child prims)
|
|
388
385
|
const children = fields.primChildren || [];
|
|
389
|
-
|
|
390
386
|
if (children.length > 0) {
|
|
391
387
|
for (const child_name of children) {
|
|
392
388
|
const child_path = path + "/" + child_name;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
if (child !== null) {
|
|
396
|
-
mesh.addChild(child);
|
|
397
|
-
}
|
|
389
|
+
build_prim(child_path, specs_by_path, materials, world_transform, options, registry, bundle, index);
|
|
398
390
|
}
|
|
399
391
|
}
|
|
400
392
|
|
|
401
|
-
return
|
|
393
|
+
return index;
|
|
402
394
|
}
|
|
403
395
|
|
|
404
396
|
|
|
@@ -501,7 +501,7 @@ export class GPUMaterialManager {
|
|
|
501
501
|
* @type {GPUMaterialContext[]}
|
|
502
502
|
*/
|
|
503
503
|
const materials = [];
|
|
504
|
-
const scene_materials = view.scene.
|
|
504
|
+
const scene_materials = view.scene.drawn_materials;
|
|
505
505
|
for (const m of scene_materials) {
|
|
506
506
|
|
|
507
507
|
if (m.transparency_mode === TransparencyMode.Transparent) {
|
|
@@ -44,23 +44,24 @@ export class GPUResidentMaterialContext {
|
|
|
44
44
|
build_textures(): void;
|
|
45
45
|
build_materials(): void;
|
|
46
46
|
/**
|
|
47
|
+
* Make every material the scene draws with resident — the list its rows keep, each once.
|
|
47
48
|
*
|
|
48
|
-
* @param {
|
|
49
|
+
* @param {GPUSceneContext} scene_context
|
|
49
50
|
*/
|
|
50
|
-
ensure_scene_materials(
|
|
51
|
+
ensure_scene_materials(scene_context: GPUSceneContext): void;
|
|
51
52
|
update(): void;
|
|
52
53
|
destroy(): void;
|
|
53
54
|
#private;
|
|
54
55
|
}
|
|
55
56
|
export type GraphicsContext = import("../../GraphicsContext.js").GraphicsContext;
|
|
56
|
-
export type
|
|
57
|
+
export type GPUSceneContext = import("../../scene/GPUSceneContext.js").GPUSceneContext;
|
|
57
58
|
export type ShadeTexture = import("../../texture/ShadeTexture.js").ShadeTexture;
|
|
58
59
|
export type ShadeMaterial = import("../ShadeMaterial.js").ShadeMaterial;
|
|
59
60
|
export type StandardShadeMaterial = import("../StandardShadeMaterial.js").StandardShadeMaterial;
|
|
60
61
|
import { GPUTextureContext } from "../../texture/GPUTextureContext.js";
|
|
61
62
|
/**
|
|
62
63
|
* @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
63
|
-
* @typedef {import("../../scene/
|
|
64
|
+
* @typedef {import("../../scene/GPUSceneContext.js").GPUSceneContext} GPUSceneContext
|
|
64
65
|
* @typedef {import("../../texture/ShadeTexture.js").ShadeTexture} ShadeTexture
|
|
65
66
|
* @typedef {import("../ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
66
67
|
* @typedef {import("../StandardShadeMaterial.js").StandardShadeMaterial} StandardShadeMaterial
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"AA+DA,sDAAuD;AAEvD,wDAAyD;AAEzD,+DAAiJ;AAEjJ,+DAA+I;AAE/I;IA8GI;;;;OAIG;IACH,yCAFW,eAAe,EAsCzB;IA3HD;;;OAGG;IACH,6BAEC;IAQD;;;OAGG;IACH,kCAEC;IAQD;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,kCAIC;IA0GD;;;;OAIG;IACH,0BAHW,aAAa,GACX,YAAY,CAIxB;IAgBD;;;;OAIG;IACH,wBAHW,YAAY,GACV,WAAW,CAIvB;IAGD,uBA+HC;IAED,wBA2EC;IAED
|
|
1
|
+
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"AA+DA,sDAAuD;AAEvD,wDAAyD;AAEzD,+DAAiJ;AAEjJ,+DAA+I;AAE/I;IA8GI;;;;OAIG;IACH,yCAFW,eAAe,EAsCzB;IA3HD;;;OAGG;IACH,6BAEC;IAQD;;;OAGG;IACH,kCAEC;IAQD;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,kCAIC;IA0GD;;;;OAIG;IACH,0BAHW,aAAa,GACX,YAAY,CAIxB;IAgBD;;;;OAIG;IACH,wBAHW,YAAY,GACV,WAAW,CAIvB;IAGD,uBA+HC;IAED,wBA2EC;IAED;;;;OAIG;IACH,sCAFW,eAAe,QAUzB;IAoCD,eASC;IAGD,gBAGC;;CACJ;8BAthBY,OAAO,0BAA0B,EAAE,eAAe;8BAClD,OAAO,gCAAgC,EAAE,eAAe;2BACxD,OAAO,+BAA+B,EAAE,YAAY;4BACpD,OAAO,qBAAqB,EAAE,aAAa;oCAC3C,OAAO,6BAA6B,EAAE,qBAAqB;kCAZtC,oCAAoC;AAOtE;;;;;;GAMG;AAEH;IACI,WAAM;IAEN;;OAEG;IACH,QAFU,qBAAqB,CAExB;IAEP;;OAEG;IACH,gBAFU,WAAW,CAEP;IAEd;;OAEG;IACH,aAFU,WAAW,CAEV;IAEX;;OAEG;IACH,gBAFU,WAAW,CAEP;IACd;;OAEG;IACH,kBAFU,WAAW,CAEL;CACnB;AAED;IACI,WAAO;IAEP;;OAEG;IACH,QAFU,YAAY,CAEf;CACV"}
|
|
@@ -18,7 +18,7 @@ import { INDIRECT_MATERIAL_STRUCT } from "./INDIRECT_MATERIAL_STRUCT.js";
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
21
|
-
* @typedef {import("../../scene/
|
|
21
|
+
* @typedef {import("../../scene/GPUSceneContext.js").GPUSceneContext} GPUSceneContext
|
|
22
22
|
* @typedef {import("../../texture/ShadeTexture.js").ShadeTexture} ShadeTexture
|
|
23
23
|
* @typedef {import("../ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
24
24
|
* @typedef {import("../StandardShadeMaterial.js").StandardShadeMaterial} StandardShadeMaterial
|
|
@@ -487,25 +487,18 @@ export class GPUResidentMaterialContext {
|
|
|
487
487
|
}
|
|
488
488
|
|
|
489
489
|
/**
|
|
490
|
+
* Make every material the scene draws with resident — the list its rows keep, each once.
|
|
490
491
|
*
|
|
491
|
-
* @param {
|
|
492
|
+
* @param {GPUSceneContext} scene_context
|
|
492
493
|
*/
|
|
493
|
-
ensure_scene_materials(
|
|
494
|
-
assert.equal(
|
|
494
|
+
ensure_scene_materials(scene_context) {
|
|
495
|
+
assert.equal(scene_context.isGPUSceneContext, true, 'scene_context.isGPUSceneContext !== true');
|
|
495
496
|
|
|
496
|
-
const
|
|
497
|
-
|
|
498
|
-
for (let i = 0; i < meshes.length; i++) {
|
|
499
|
-
const mesh = meshes[i];
|
|
500
|
-
|
|
501
|
-
const material = mesh.material;
|
|
502
|
-
|
|
503
|
-
if (material !== undefined && material !== null) {
|
|
504
|
-
this.obtain_material(material);
|
|
505
|
-
}
|
|
497
|
+
const materials = scene_context.drawn_materials;
|
|
506
498
|
|
|
499
|
+
for (let i = 0; i < materials.length; i++) {
|
|
500
|
+
this.obtain_material(materials[i]);
|
|
507
501
|
}
|
|
508
|
-
|
|
509
502
|
}
|
|
510
503
|
|
|
511
504
|
#commit() {
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const WORKGROUP_SIZE: number;
|
|
2
2
|
/**
|
|
3
|
-
* Recompute bounding box
|
|
3
|
+
* Recompute the world-space bounding box and sphere of every mesh row in the scene, from the
|
|
4
|
+
* geometry's own bounds under the node's `global` — after the hierarchy pass has composed it.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* refreshes everyone, paying O(instance_count) per frame to dodge the
|
|
12
|
-
* stale-bounds → frustum-culling drop-out the targeted refresh would
|
|
13
|
-
* otherwise leave behind.
|
|
6
|
+
* **This is what makes render bounds the GPU's.** A row's `global` is composed on the GPU from its
|
|
7
|
+
* TRS and its parent chain, and once an ancestor can be GPU-driven — a joint under a clip, a
|
|
8
|
+
* subtree the CPU has stopped composing — nothing on the CPU holds the world transform the bounds
|
|
9
|
+
* would need. So they are derived where the transform is: one thread per occupied row, every
|
|
10
|
+
* frame, over the table's pages rather than over `[0, count)`, because rows are addresses and a
|
|
11
|
+
* live one can sit above any number of holes.
|
|
14
12
|
*
|
|
15
|
-
*
|
|
13
|
+
* Runs after the hierarchy pass and before anything culls. The skinning chain refreshes the
|
|
14
|
+
* clone geometry's own box before this reads it, so a skinned row lands here on the deformed
|
|
15
|
+
* bounds rather than the source's.
|
|
16
|
+
*
|
|
17
|
+
* Dispatch with {@link GPUTypedTable#dispatch_group_count} of the `meshes` table at
|
|
18
|
+
* {@link WORKGROUP_SIZE}.
|
|
16
19
|
*/
|
|
17
20
|
export const shader_refresh_all_mesh_bounds: ComputeShader;
|
|
18
|
-
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
19
21
|
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
20
22
|
//# sourceMappingURL=shader_refresh_all_mesh_bounds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_refresh_all_mesh_bounds.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_refresh_all_mesh_bounds.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js"],"names":[],"mappings":"AAYA,oCAAgE;AAiBhE;;;;;;;;;;;;;;;;;GAiBG;AACH,2DA4BG;8BAtE2B,4BAA4B"}
|
|
@@ -1,40 +1,49 @@
|
|
|
1
1
|
import { u32 } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
2
|
import { WebGPUArray } from "../shader/type/WebGPUArray.js";
|
|
3
|
-
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
4
3
|
import { GEOMETRY_METADATA_STRUCT } from "../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
5
4
|
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
6
6
|
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
7
7
|
import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
|
|
8
|
+
import { MESHES_TABLE } from "../scene/chunk_scene_database_access.js";
|
|
8
9
|
import {
|
|
9
10
|
chunk_update_object_property_mesh_instance_bounds
|
|
10
11
|
} from "./chunk_update_object_property_mesh_instance_bounds.js";
|
|
11
12
|
|
|
12
|
-
const WORKGROUP_SIZE =
|
|
13
|
+
export const WORKGROUP_SIZE = COMPUTE_SHADER_DEFAULT_GROUP_SIZE;
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Read-write iterator over the `meshes` table's pages: the pass writes the bounds it computes back
|
|
17
|
+
* into the same database it reads the transforms from, and WGSL will not coerce a `read_write`
|
|
18
|
+
* pointer down to `read`.
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
*/
|
|
22
|
+
const PG_PREFIX = MESHES_TABLE.page_iterator_symbol_prefix(WORKGROUP_SIZE, true);
|
|
17
23
|
|
|
18
24
|
const resources = new ShaderResourceSetDescriptor();
|
|
25
|
+
|
|
19
26
|
resources.createGroup()
|
|
20
|
-
.addUniform('settings', REFRESH_ALL_MESH_BOUNDS_SETTINGS_STRUCT)
|
|
21
27
|
.addStorageBuffer('scene_database', WebGPUArray.from(u32), true)
|
|
22
28
|
.addStorageBuffer('geometries', WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false);
|
|
23
29
|
|
|
24
30
|
/**
|
|
25
|
-
* Recompute bounding box
|
|
31
|
+
* Recompute the world-space bounding box and sphere of every mesh row in the scene, from the
|
|
32
|
+
* geometry's own bounds under the node's `global` — after the hierarchy pass has composed it.
|
|
33
|
+
*
|
|
34
|
+
* **This is what makes render bounds the GPU's.** A row's `global` is composed on the GPU from its
|
|
35
|
+
* TRS and its parent chain, and once an ancestor can be GPU-driven — a joint under a clip, a
|
|
36
|
+
* subtree the CPU has stopped composing — nothing on the CPU holds the world transform the bounds
|
|
37
|
+
* would need. So they are derived where the transform is: one thread per occupied row, every
|
|
38
|
+
* frame, over the table's pages rather than over `[0, count)`, because rows are addresses and a
|
|
39
|
+
* live one can sit above any number of holes.
|
|
26
40
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* world transforms change too, but they have no animation binding and
|
|
31
|
-
* never make it into the OPR stream. Walking descendants on the GPU to
|
|
32
|
-
* find them is the right answer eventually; for now this pass just
|
|
33
|
-
* refreshes everyone, paying O(instance_count) per frame to dodge the
|
|
34
|
-
* stale-bounds → frustum-culling drop-out the targeted refresh would
|
|
35
|
-
* otherwise leave behind.
|
|
41
|
+
* Runs after the hierarchy pass and before anything culls. The skinning chain refreshes the
|
|
42
|
+
* clone geometry's own box before this reads it, so a skinned row lands here on the deformed
|
|
43
|
+
* bounds rather than the source's.
|
|
36
44
|
*
|
|
37
|
-
* Dispatch
|
|
45
|
+
* Dispatch with {@link GPUTypedTable#dispatch_group_count} of the `meshes` table at
|
|
46
|
+
* {@link WORKGROUP_SIZE}.
|
|
38
47
|
*/
|
|
39
48
|
export const shader_refresh_all_mesh_bounds = ComputeShader.from({
|
|
40
49
|
label: "ObjectProperty/RefreshAllMeshBounds",
|
|
@@ -42,16 +51,26 @@ export const shader_refresh_all_mesh_bounds = ComputeShader.from({
|
|
|
42
51
|
//language=WGSL
|
|
43
52
|
`
|
|
44
53
|
@compute @workgroup_size(${WORKGROUP_SIZE},1,1)
|
|
45
|
-
fn main(
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
fn main(
|
|
55
|
+
@builtin(workgroup_id) wg_id: vec3<u32>,
|
|
56
|
+
@builtin(local_invocation_index) local_id: u32,
|
|
57
|
+
) {
|
|
58
|
+
// page_address is uniform across the workgroup, so this branch is uniform
|
|
59
|
+
if !${PG_PREFIX}_setup(&scene_database, wg_id.x, local_id) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
let slot_in_page = ${PG_PREFIX}_slot_in_page(local_id);
|
|
64
|
+
|
|
65
|
+
if slot_in_page >= ${PG_PREFIX}_ELEMENTS_PER_PAGE || !${PG_PREFIX}_is_occupied(slot_in_page) {
|
|
48
66
|
return;
|
|
49
67
|
}
|
|
50
68
|
|
|
51
|
-
update_object_property_mesh_instance_bounds(
|
|
69
|
+
update_object_property_mesh_instance_bounds(${PG_PREFIX}_slot_to_index(slot_in_page));
|
|
52
70
|
}
|
|
53
71
|
`, [
|
|
54
72
|
chunk_update_object_property_mesh_instance_bounds,
|
|
73
|
+
MESHES_TABLE.chunk_iterate(WORKGROUP_SIZE, true),
|
|
55
74
|
]),
|
|
56
75
|
resources,
|
|
57
76
|
});
|