@woosh/meep-engine 3.23.0 → 3.25.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 +413 -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/shader_picking_gather.d.ts +40 -0
- package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -0
- package/src/engine/graphics3/shader_picking_gather.js +120 -0
- 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/MEASUREMENTS.md +1050 -0
- package/src/engine/physics/cloth/PLAN.md +411 -49
- 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/ClothColliderSerializationAdapter.d.ts +52 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSerializationAdapter.js +70 -0
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts +12 -3
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +340 -331
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +49 -37
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +50 -37
- 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/ClothSerializationAdapter.d.ts +84 -0
- package/src/engine/physics/cloth/ecs/ClothSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothSerializationAdapter.js +141 -0
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +51 -81
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +81 -870
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.d.ts +48 -0
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.js +107 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts +286 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.js +1104 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +182 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +562 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.d.ts +2 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.js +12 -0
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +2 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts +58 -0
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +341 -271
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +20 -2
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +39 -15
- 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_worker_protocol.d.ts +29 -0
- package/src/engine/physics/cloth/ecs/cloth_worker_protocol.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_worker_protocol.js +78 -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/ecs/makeClothWorker.d.ts +17 -0
- package/src/engine/physics/cloth/ecs/makeClothWorker.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/makeClothWorker.js +18 -0
- package/src/engine/physics/cloth/playground/README.md +84 -13
- 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/cloth/playground/wind.html +166 -0
- package/src/engine/physics/cloth/playground/wind_build.d.ts +81 -0
- package/src/engine/physics/cloth/playground/wind_build.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/wind_build.js +141 -0
- package/src/engine/physics/cloth/playground/wind_main.d.ts +2 -0
- package/src/engine/physics/cloth/playground/wind_main.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/wind_main.js +681 -0
- package/src/engine/physics/cloth/solver/ClothState.d.ts +134 -79
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +273 -12
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +33 -0
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +34 -0
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +21 -2
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +173 -4
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +40 -0
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +284 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.d.ts +107 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.js +263 -0
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +88 -0
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/AbstractClothWind.js +100 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts +85 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.js +182 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +79 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.js +210 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +101 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.js +290 -0
- 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/device/mock/texture_copy.d.ts.map +1 -1
- package/src/shade/device/mock/texture_copy.js +28 -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_runtime/README.md +94 -0
- package/src/shade/playground/vgeo_runtime/index.html +62 -0
- package/src/shade/playground/vgeo_runtime/main.d.ts +2 -0
- package/src/shade/playground/vgeo_runtime/main.d.ts.map +1 -0
- package/src/shade/playground/vgeo_runtime/main.js +399 -0
- package/src/shade/playground/vgeo_viewer/main.js +6 -2
- package/src/shade/playground/vgeo_viewer/sample_asset.js +1 -1
- 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/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/camera/Camera.d.ts +14 -0
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.js +7 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +1 -1
- package/src/shade/renderer/geometry/GEOMETRY_METADATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GEOMETRY_METADATA_STRUCT.js +16 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +29 -9
- package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts +10 -0
- package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryMetadata.js +13 -0
- 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/geometry/virtual/VGEO_FORMAT.md +46 -18
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +70 -22
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +97 -19
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +12 -2
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +14 -3
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts +2 -2
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.js +124 -6
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.d.ts +22 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.js +53 -0
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts +8 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js +8 -1
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.js +15 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.d.ts +54 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.js +53 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +13 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +14 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +100 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +113 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +5 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +108 -0
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +23 -0
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +40 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +228 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +932 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +176 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +425 -0
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +241 -0
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +574 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +120 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +674 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts +287 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +976 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +42 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +96 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.js +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +83 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +160 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +255 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.js +80 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +144 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +530 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +39 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +54 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +41 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +56 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts +49 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +328 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.d.ts +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.js +51 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.js +99 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +27 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.js +35 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.js +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.js +36 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.js +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +54 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.js +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.js +30 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.js +61 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.js +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts +23 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +70 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.js +25 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts +35 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.js +41 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts +32 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.js +138 -0
- 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/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +9 -0
- 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.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +13 -2
- 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_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +12 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +10 -0
- 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 +69 -44
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +244 -525
- 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/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/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 +1158 -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/geometry/mat3/chunk_mat3_singular_values.d.ts +35 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +91 -0
- 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.d.ts +0 -54
- package/src/engine/graphics3/instantiate_scene_bundle.d.ts.map +0 -1
- package/src/engine/graphics3/instantiate_scene_bundle.js +0 -164
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +0 -39
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts.map +0 -1
- package/src/engine/graphics3/shade_node_to_entity_composition.js +0 -88
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +0 -35
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +0 -1
- package/src/shade/renderer/animation/compute_skin_world_bounds.js +0 -146
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.d.ts +0 -96
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.d.ts.map +0 -1
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.js +0 -531
- package/src/shade/renderer/animation/pose/pose_evaluate_world.d.ts +0 -20
- package/src/shade/renderer/animation/pose/pose_evaluate_world.d.ts.map +0 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_world.js +0 -76
- package/src/shade/renderer/animation/skin_bind_transform.d.ts +0 -25
- package/src/shade/renderer/animation/skin_bind_transform.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_bind_transform.js +0 -33
- package/src/shade/renderer/animation/skin_frame_defect.d.ts +0 -34
- package/src/shade/renderer/animation/skin_frame_defect.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_frame_defect.js +0 -132
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts +0 -24
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_joint_matrix.js +0 -46
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts +0 -70
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +0 -216
- package/src/shade/renderer/scene/InstanceBatch.d.ts +0 -92
- package/src/shade/renderer/scene/InstanceBatch.d.ts.map +0 -1
- package/src/shade/renderer/scene/InstanceBatch.js +0 -235
- package/src/shade/renderer/scene/Mesh.d.ts +0 -55
- package/src/shade/renderer/scene/Mesh.d.ts.map +0 -1
- package/src/shade/renderer/scene/Mesh.js +0 -168
- package/src/shade/renderer/scene/Node3D.d.ts +0 -140
- package/src/shade/renderer/scene/Node3D.d.ts.map +0 -1
- package/src/shade/renderer/scene/Node3D.js +0 -263
- package/src/shade/renderer/scene/SceneNodeBinding.d.ts +0 -52
- package/src/shade/renderer/scene/SceneNodeBinding.d.ts.map +0 -1
- package/src/shade/renderer/scene/SceneNodeBinding.js +0 -56
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +0 -110
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +0 -1
- package/src/shade/renderer/scene/SkinnedMesh.js +0 -170
- package/src/shade/renderer/scene/TransformAuthority.d.ts +0 -19
- package/src/shade/renderer/scene/TransformAuthority.d.ts.map +0 -1
- package/src/shade/renderer/scene/TransformAuthority.js +0 -33
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../GPUSceneContext.js").GPUSceneContext} GPUSceneContext
|
|
3
|
+
* @typedef {import("../../geometry/MeshletGeometry.js").MeshletGeometry} MeshletGeometry
|
|
4
|
+
* @typedef {import("../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Put one primitive into a scene that has no systems: a playground's floor, a backdrop, a probe
|
|
8
|
+
* marker, a scattered box.
|
|
9
|
+
*
|
|
10
|
+
* A game does this in `ShadedGeometrySystem`, which takes a mesh row for every entity carrying a
|
|
11
|
+
* `ShadedGeometry` as the component appears. A scene bound to a bare dataset has no such system,
|
|
12
|
+
* so this does the same by hand: an entity of the scene's dataset carrying the transform, a
|
|
13
|
+
* `ShadedGeometry` naming what it draws — so a tool can read it back — and a `Name` when given;
|
|
14
|
+
* then its `meshes` row, which takes the `transforms` row with it. The rows write on the scene
|
|
15
|
+
* context's next build.
|
|
16
|
+
*
|
|
17
|
+
* @param {GPUSceneContext} scene_context the scene's context — its rows are where the primitive goes
|
|
18
|
+
* @param {MeshletGeometry} geometry
|
|
19
|
+
* @param {ShadeMaterial} material
|
|
20
|
+
* @param {Transform64} transform where it stands; copied
|
|
21
|
+
* @param {object} [options]
|
|
22
|
+
* @param {string} [options.name]
|
|
23
|
+
* @returns {number} the entity
|
|
24
|
+
*/
|
|
25
|
+
export function place_primitive(scene_context: GPUSceneContext, geometry: MeshletGeometry, material: ShadeMaterial, transform: Transform64, { name }?: {
|
|
26
|
+
name?: string;
|
|
27
|
+
}): number;
|
|
28
|
+
/**
|
|
29
|
+
* Move a placed primitive: its transform takes `transform`, and its row is marked so the next
|
|
30
|
+
* build writes it.
|
|
31
|
+
*
|
|
32
|
+
* @param {GPUSceneContext} scene_context
|
|
33
|
+
* @param {number} entity what {@link place_primitive} answered
|
|
34
|
+
* @param {Transform64} transform copied
|
|
35
|
+
*/
|
|
36
|
+
export function move_primitive(scene_context: GPUSceneContext, entity: number, transform: Transform64): void;
|
|
37
|
+
/**
|
|
38
|
+
* Take a placed primitive out: its rows given back, its entity removed.
|
|
39
|
+
*
|
|
40
|
+
* @param {GPUSceneContext} scene_context
|
|
41
|
+
* @param {number} entity what {@link place_primitive} answered
|
|
42
|
+
*/
|
|
43
|
+
export function remove_primitive(scene_context: GPUSceneContext, entity: number): void;
|
|
44
|
+
export type GPUSceneContext = import("../GPUSceneContext.js").GPUSceneContext;
|
|
45
|
+
export type MeshletGeometry = import("../../geometry/MeshletGeometry.js").MeshletGeometry;
|
|
46
|
+
export type ShadeMaterial = import("../../material/ShadeMaterial.js").ShadeMaterial;
|
|
47
|
+
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
48
|
+
//# sourceMappingURL=place_primitive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"place_primitive.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/rows/place_primitive.js"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,+CARW,eAAe,YACf,eAAe,YACf,aAAa,aACb,WAAW;IAEM,IAAI,GAArB,MAAM;IACJ,MAAM,CAgClB;AAED;;;;;;;GAOG;AACH,8CAJW,eAAe,UACf,MAAM,aACN,WAAW,QAerB;AAED;;;;;GAKG;AACH,gDAHW,eAAe,UACf,MAAM,QAQhB;8BA3FY,OAAO,uBAAuB,EAAE,eAAe;8BAC/C,OAAO,mCAAmC,EAAE,eAAe;4BAC3D,OAAO,iCAAiC,EAAE,aAAa;4BANxC,iDAAiD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { Name } from "../../../../engine/ecs/name/Name.js";
|
|
3
|
+
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
4
|
+
import { ShadedGeometry } from "../../../../engine/graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {import("../GPUSceneContext.js").GPUSceneContext} GPUSceneContext
|
|
8
|
+
* @typedef {import("../../geometry/MeshletGeometry.js").MeshletGeometry} MeshletGeometry
|
|
9
|
+
* @typedef {import("../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Put one primitive into a scene that has no systems: a playground's floor, a backdrop, a probe
|
|
14
|
+
* marker, a scattered box.
|
|
15
|
+
*
|
|
16
|
+
* A game does this in `ShadedGeometrySystem`, which takes a mesh row for every entity carrying a
|
|
17
|
+
* `ShadedGeometry` as the component appears. A scene bound to a bare dataset has no such system,
|
|
18
|
+
* so this does the same by hand: an entity of the scene's dataset carrying the transform, a
|
|
19
|
+
* `ShadedGeometry` naming what it draws — so a tool can read it back — and a `Name` when given;
|
|
20
|
+
* then its `meshes` row, which takes the `transforms` row with it. The rows write on the scene
|
|
21
|
+
* context's next build.
|
|
22
|
+
*
|
|
23
|
+
* @param {GPUSceneContext} scene_context the scene's context — its rows are where the primitive goes
|
|
24
|
+
* @param {MeshletGeometry} geometry
|
|
25
|
+
* @param {ShadeMaterial} material
|
|
26
|
+
* @param {Transform64} transform where it stands; copied
|
|
27
|
+
* @param {object} [options]
|
|
28
|
+
* @param {string} [options.name]
|
|
29
|
+
* @returns {number} the entity
|
|
30
|
+
*/
|
|
31
|
+
export function place_primitive(scene_context, geometry, material, transform, { name = "" } = {}) {
|
|
32
|
+
assert.defined(scene_context, 'scene_context');
|
|
33
|
+
assert.defined(geometry, 'geometry');
|
|
34
|
+
assert.equal(geometry.isMeshletGeometry, true, 'geometry.isMeshletGeometry !== true');
|
|
35
|
+
assert.defined(material, 'material');
|
|
36
|
+
assert.defined(transform, 'transform');
|
|
37
|
+
assert.isString(name, 'name');
|
|
38
|
+
|
|
39
|
+
const dataset = scene_context.scene.dataset;
|
|
40
|
+
|
|
41
|
+
assert.ok(dataset !== null && dataset !== undefined, 'the scene names no dataset, and a primitive is an entity of one');
|
|
42
|
+
|
|
43
|
+
dataset.registerManyComponentTypes([Transform64, ShadedGeometry, Name]);
|
|
44
|
+
|
|
45
|
+
const entity = dataset.createEntity();
|
|
46
|
+
const world = new Transform64();
|
|
47
|
+
|
|
48
|
+
world.copy(transform);
|
|
49
|
+
world.updateMatrix();
|
|
50
|
+
|
|
51
|
+
dataset.addComponentToEntity(entity, world);
|
|
52
|
+
dataset.addComponentToEntity(entity, ShadedGeometry.from(geometry, material));
|
|
53
|
+
|
|
54
|
+
if (name !== "") {
|
|
55
|
+
dataset.addComponentToEntity(entity, new Name(name));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
scene_context.rows.attach_mesh(entity, geometry, material);
|
|
59
|
+
|
|
60
|
+
return entity;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Move a placed primitive: its transform takes `transform`, and its row is marked so the next
|
|
65
|
+
* build writes it.
|
|
66
|
+
*
|
|
67
|
+
* @param {GPUSceneContext} scene_context
|
|
68
|
+
* @param {number} entity what {@link place_primitive} answered
|
|
69
|
+
* @param {Transform64} transform copied
|
|
70
|
+
*/
|
|
71
|
+
export function move_primitive(scene_context, entity, transform) {
|
|
72
|
+
assert.defined(scene_context, 'scene_context');
|
|
73
|
+
assert.isNonNegativeInteger(entity, 'entity');
|
|
74
|
+
assert.defined(transform, 'transform');
|
|
75
|
+
|
|
76
|
+
const world = scene_context.scene.dataset.getComponent(entity, Transform64);
|
|
77
|
+
|
|
78
|
+
assert.defined(world, `entity ${entity} carries no Transform64 — was it placed with place_primitive?`);
|
|
79
|
+
|
|
80
|
+
world.copy(transform);
|
|
81
|
+
world.updateMatrix();
|
|
82
|
+
|
|
83
|
+
scene_context.rows.mark_world(entity);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Take a placed primitive out: its rows given back, its entity removed.
|
|
88
|
+
*
|
|
89
|
+
* @param {GPUSceneContext} scene_context
|
|
90
|
+
* @param {number} entity what {@link place_primitive} answered
|
|
91
|
+
*/
|
|
92
|
+
export function remove_primitive(scene_context, entity) {
|
|
93
|
+
assert.defined(scene_context, 'scene_context');
|
|
94
|
+
assert.isNonNegativeInteger(entity, 'entity');
|
|
95
|
+
|
|
96
|
+
scene_context.rows.detach_mesh(entity);
|
|
97
|
+
scene_context.scene.dataset.removeEntity(entity);
|
|
98
|
+
}
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
* Deserialize a scene from a BinaryBuffer that was produced by {@link serialize_scene}.
|
|
3
3
|
*
|
|
4
4
|
* @param {BinaryBuffer} buffer positioned at the start of the serialized data
|
|
5
|
-
* @param {Scene} scene
|
|
6
|
-
* @returns {Promise<
|
|
5
|
+
* @param {Scene} scene takes the file's lights, at entities of its dataset, and its environment
|
|
6
|
+
* @returns {Promise<SceneBundle>} the file's meshes, as a model to compile and place — each a root
|
|
7
|
+
* at its world transform, the format being flat
|
|
7
8
|
*/
|
|
8
|
-
export function deserialize_scene(buffer: BinaryBuffer, scene: Scene): Promise<
|
|
9
|
+
export function deserialize_scene(buffer: BinaryBuffer, scene: Scene): Promise<SceneBundle>;
|
|
9
10
|
/**
|
|
10
|
-
* Fetch a serialized scene binary from a URL and deserialize it
|
|
11
|
-
*
|
|
11
|
+
* Fetch a serialized scene binary from a URL and deserialize it: the lights and the environment
|
|
12
|
+
* into the given scene, the meshes as a bundle to compile and place.
|
|
12
13
|
*
|
|
13
14
|
* @param {string} url URL pointing to the binary blob produced by serialize_scene
|
|
14
|
-
* @param {Scene} scene
|
|
15
|
-
* @returns {Promise<
|
|
15
|
+
* @param {Scene} scene takes the file's lights and environment
|
|
16
|
+
* @returns {Promise<SceneBundle>}
|
|
16
17
|
*/
|
|
17
|
-
export function load_scene_from_url(url: string, scene: Scene): Promise<
|
|
18
|
+
export function load_scene_from_url(url: string, scene: Scene): Promise<SceneBundle>;
|
|
18
19
|
import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
|
|
20
|
+
import { SceneBundle } from "../../loader/SceneBundle.js";
|
|
19
21
|
//# sourceMappingURL=deserialize_scene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/deserialize_scene.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deserialize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/deserialize_scene.js"],"names":[],"mappings":"AAkNA;;;;;;;GAOG;AACH,0CALW,YAAY,iBAEV,QAAQ,WAAW,CAAC,CAyRhC;AAED;;;;;;;GAOG;AACH,yCAJW,MAAM,iBAEJ,QAAQ,WAAW,CAAC,CAuBhC;6BA9gB4B,yCAAyC;4BAW1C,6BAA6B"}
|
|
@@ -6,10 +6,12 @@ import { Sampler2D } from "../../../../engine/graphics/texture/sampler/Sampler2D
|
|
|
6
6
|
import { MeshletGeometry } from "../../geometry/MeshletGeometry.js";
|
|
7
7
|
import { MeshletGeometrySerializationAdapter } from "../../geometry/MeshletGeometrySerializationAdapter.js";
|
|
8
8
|
import { DirectionalLight } from "../../light/model/DirectionalLight.js";
|
|
9
|
+
import { place_light } from "../../light/place_light.js";
|
|
9
10
|
import { PointLight } from "../../light/model/PointLight.js";
|
|
10
11
|
import { SpotLight } from "../../light/model/SpotLight.js";
|
|
11
12
|
import { StandardShadeMaterial } from "../../material/StandardShadeMaterial.js";
|
|
12
|
-
import {
|
|
13
|
+
import { SceneBundle } from "../../loader/SceneBundle.js";
|
|
14
|
+
import { SceneNode } from "../../loader/SceneNode.js";
|
|
13
15
|
import { ShadeTexture } from "../../texture/ShadeTexture.js";
|
|
14
16
|
import { ShadeImage } from "../../texture/source/ShadeImage.js";
|
|
15
17
|
import { avif_to_sampler2d } from "../../../../engine/graphics/texture/sampler/avif_to_sampler2d.js";
|
|
@@ -183,7 +185,7 @@ function deserialize_light(buffer) {
|
|
|
183
185
|
|
|
184
186
|
const light_matrix = new Float32Array(16);
|
|
185
187
|
buffer.readFloat32Array(light_matrix, 0, 16);
|
|
186
|
-
light.
|
|
188
|
+
light.transform.fromMatrix(light_matrix);
|
|
187
189
|
|
|
188
190
|
light.intensity = buffer.readFloat32();
|
|
189
191
|
|
|
@@ -210,8 +212,9 @@ function deserialize_light(buffer) {
|
|
|
210
212
|
* Deserialize a scene from a BinaryBuffer that was produced by {@link serialize_scene}.
|
|
211
213
|
*
|
|
212
214
|
* @param {BinaryBuffer} buffer positioned at the start of the serialized data
|
|
213
|
-
* @param {Scene} scene
|
|
214
|
-
* @returns {Promise<
|
|
215
|
+
* @param {Scene} scene takes the file's lights, at entities of its dataset, and its environment
|
|
216
|
+
* @returns {Promise<SceneBundle>} the file's meshes, as a model to compile and place — each a root
|
|
217
|
+
* at its world transform, the format being flat
|
|
215
218
|
*/
|
|
216
219
|
export async function deserialize_scene(buffer, scene) {
|
|
217
220
|
|
|
@@ -469,43 +472,37 @@ export async function deserialize_scene(buffer, scene) {
|
|
|
469
472
|
scene.lights.environment = textures[environment_index];
|
|
470
473
|
}
|
|
471
474
|
|
|
472
|
-
// Light elements
|
|
475
|
+
// Light elements — each at an entity of the scene's dataset, which the scene has to name
|
|
473
476
|
const light_count = buffer.readUint32();
|
|
474
477
|
for (let i = 0; i < light_count; i++) {
|
|
475
478
|
const light = deserialize_light(buffer);
|
|
476
|
-
scene
|
|
479
|
+
place_light(scene, light);
|
|
477
480
|
}
|
|
478
481
|
|
|
479
|
-
// ── Assemble
|
|
482
|
+
// ── Assemble the model: one root per mesh, at its world transform ──
|
|
483
|
+
const bundle = new SceneBundle();
|
|
480
484
|
|
|
481
485
|
for (const record of mesh_records) {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
mesh.transform_local.fromMatrix(record.transform);
|
|
491
|
-
mesh.updateMatrices();
|
|
492
|
-
|
|
493
|
-
// Compute world-space bounds from geometry bounds + transform
|
|
494
|
-
mesh.updateBoundsBasic();
|
|
495
|
-
|
|
496
|
-
scene.instances.add(mesh);
|
|
486
|
+
bundle.add_node(SceneNode.from({
|
|
487
|
+
name: record.name,
|
|
488
|
+
// serialized transforms are world-space, and a mesh comes back as a root — so its
|
|
489
|
+
// local is its world
|
|
490
|
+
matrix: record.transform,
|
|
491
|
+
geometry: geometries[record.geometry_index],
|
|
492
|
+
material: materials[record.material_index],
|
|
493
|
+
}));
|
|
497
494
|
}
|
|
498
495
|
|
|
499
|
-
return
|
|
496
|
+
return bundle;
|
|
500
497
|
}
|
|
501
498
|
|
|
502
499
|
/**
|
|
503
|
-
* Fetch a serialized scene binary from a URL and deserialize it
|
|
504
|
-
*
|
|
500
|
+
* Fetch a serialized scene binary from a URL and deserialize it: the lights and the environment
|
|
501
|
+
* into the given scene, the meshes as a bundle to compile and place.
|
|
505
502
|
*
|
|
506
503
|
* @param {string} url URL pointing to the binary blob produced by serialize_scene
|
|
507
|
-
* @param {Scene} scene
|
|
508
|
-
* @returns {Promise<
|
|
504
|
+
* @param {Scene} scene takes the file's lights and environment
|
|
505
|
+
* @returns {Promise<SceneBundle>}
|
|
509
506
|
*/
|
|
510
507
|
export async function load_scene_from_url(url, scene) {
|
|
511
508
|
assert.defined(scene, 'scene');
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../../loader/SceneBundle.js").SceneBundle} SceneBundle
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
5
|
*
|
|
3
6
|
* @param {BinaryBuffer} buffer
|
|
@@ -8,12 +11,16 @@ export function material_write_standard(buffer: BinaryBuffer, material: Standard
|
|
|
8
11
|
/**
|
|
9
12
|
*
|
|
10
13
|
* @param {Object} options
|
|
11
|
-
* @param {
|
|
14
|
+
* @param {SceneBundle} options.bundle the meshes, as a loader or the deserializer describes them —
|
|
15
|
+
* written flat, each primitive at its world transform
|
|
16
|
+
* @param {Scene} options.scene the lights and the environment
|
|
12
17
|
* @param {boolean} [options.include_blas] BLAS BVH takes up a lot of space, but it is optimal and will save processing time
|
|
13
18
|
*/
|
|
14
|
-
export function serialize_scene({ scene, include_blas, }: {
|
|
19
|
+
export function serialize_scene({ bundle, scene, include_blas, }: {
|
|
20
|
+
bundle: SceneBundle;
|
|
15
21
|
scene: Scene;
|
|
16
22
|
include_blas?: boolean;
|
|
17
23
|
}): Promise<BinaryBuffer>;
|
|
24
|
+
export type SceneBundle = import("../../loader/SceneBundle.js").SceneBundle;
|
|
18
25
|
import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
|
|
19
26
|
//# sourceMappingURL=serialize_scene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/serialize_scene.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/serialize_scene.js"],"names":[],"mappings":"AAOA;;GAEG;AAGH;;;;;GAKG;AACH,gDAJW,YAAY,mDAEZ,kBAAkB,MAAM,CAAC,QAsDnC;AAwJD;;;;;;;GAOG;AACH;IALgC,MAAM,EAA3B,WAAW;IAEI,KAAK;IACF,YAAY,GAA9B,OAAO;0BAiQjB;0BA7dY,OAAO,6BAA6B,EAAE,WAAW;6BAPjC,yCAAyC"}
|
|
@@ -5,6 +5,10 @@ import { MeshletGeometrySerializationAdapter } from "../../geometry/MeshletGeome
|
|
|
5
5
|
import { LightTypeSerializationIndex } from "./LightTypeSerializationIndex.js";
|
|
6
6
|
import { write_image_source } from "./write_image_source.js";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {import("../../loader/SceneBundle.js").SceneBundle} SceneBundle
|
|
10
|
+
*/
|
|
11
|
+
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
*
|
|
@@ -197,7 +201,7 @@ function serialize_light(buffer, light) {
|
|
|
197
201
|
const light_type = LightTypeSerializationIndex[light.type];
|
|
198
202
|
buffer.writeUint8(light_type);
|
|
199
203
|
|
|
200
|
-
buffer.writeFloat32Array(light.
|
|
204
|
+
buffer.writeFloat32Array(light.transform.matrix, 0, 16);
|
|
201
205
|
buffer.writeFloat32(light.intensity);
|
|
202
206
|
buffer.writeUint32(light.color.toUint32());
|
|
203
207
|
buffer.writeFloat32(light.radius);
|
|
@@ -219,13 +223,19 @@ function serialize_light(buffer, light) {
|
|
|
219
223
|
/**
|
|
220
224
|
*
|
|
221
225
|
* @param {Object} options
|
|
222
|
-
* @param {
|
|
226
|
+
* @param {SceneBundle} options.bundle the meshes, as a loader or the deserializer describes them —
|
|
227
|
+
* written flat, each primitive at its world transform
|
|
228
|
+
* @param {Scene} options.scene the lights and the environment
|
|
223
229
|
* @param {boolean} [options.include_blas] BLAS BVH takes up a lot of space, but it is optimal and will save processing time
|
|
224
230
|
*/
|
|
225
231
|
export async function serialize_scene({
|
|
232
|
+
bundle,
|
|
226
233
|
scene,
|
|
227
234
|
include_blas = true,
|
|
228
235
|
}) {
|
|
236
|
+
assert.defined(bundle, 'bundle');
|
|
237
|
+
assert.equal(bundle.isSceneBundle, true, 'bundle.isSceneBundle !== true');
|
|
238
|
+
|
|
229
239
|
/**
|
|
230
240
|
*
|
|
231
241
|
* @type {Set<MeshletGeometry>}
|
|
@@ -260,7 +270,18 @@ export async function serialize_scene({
|
|
|
260
270
|
*/
|
|
261
271
|
const images = new Set();
|
|
262
272
|
|
|
263
|
-
|
|
273
|
+
// every primitive at its world transform: the format is flat, and a node that only places
|
|
274
|
+
// others is composed away
|
|
275
|
+
const worlds = bundle.compute_world_matrices();
|
|
276
|
+
const meshes = [];
|
|
277
|
+
|
|
278
|
+
for (let i = 0; i < bundle.nodes.length; i++) {
|
|
279
|
+
const node = bundle.nodes[i];
|
|
280
|
+
|
|
281
|
+
if (node.geometry !== null) {
|
|
282
|
+
meshes.push({ name: node.name, geometry: node.geometry, material: node.material, world: worlds[i] });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
264
285
|
for (const mesh of meshes) {
|
|
265
286
|
|
|
266
287
|
// extract geometries
|
|
@@ -353,7 +374,7 @@ export async function serialize_scene({
|
|
|
353
374
|
|
|
354
375
|
// TODO add scene node graph
|
|
355
376
|
|
|
356
|
-
buffer.writeFloat32Array(mesh.
|
|
377
|
+
buffer.writeFloat32Array(mesh.world, 0, 16);
|
|
357
378
|
}
|
|
358
379
|
|
|
359
380
|
// write geometries
|
|
@@ -280,7 +280,7 @@ export async function verify_gpu_tlas_build(graphics) {
|
|
|
280
280
|
rows.push(row);
|
|
281
281
|
boxes_by_row[row] = box;
|
|
282
282
|
|
|
283
|
-
tlas.instance_add(row
|
|
283
|
+
tlas.instance_add(row);
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
flush(graphics, database);
|
|
@@ -300,7 +300,7 @@ export async function verify_gpu_tlas_build(graphics) {
|
|
|
300
300
|
boxes_by_row[row] = box;
|
|
301
301
|
|
|
302
302
|
meshes.set(row, make_mesh_record(box));
|
|
303
|
-
tlas.instance_update(row
|
|
303
|
+
tlas.instance_update(row);
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
flush(graphics, database);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The largest and smallest singular values of a 3×3 matrix.
|
|
3
|
+
*
|
|
4
|
+
* They are what "how much does this transform stretch a distance" actually means: a vector's length
|
|
5
|
+
* is scaled by something between σ_min and σ_max, and both bounds are attained. Column lengths are
|
|
6
|
+
* the obvious stand-in and they are **not** the same number — for
|
|
7
|
+
* `[[1,0,0],[k,1,0],[0,0,1]]`, every column has length 1 or √(1+k²) while the true ratio grows
|
|
8
|
+
* without bound in `k`. A shear has no scale in any column and stretches space anyway.
|
|
9
|
+
*
|
|
10
|
+
* Computed as the square roots of the eigenvalues of `MᵀM`, which is symmetric and positive
|
|
11
|
+
* semi-definite, through the closed form for a symmetric 3×3 (Smith 1961). No iteration, no
|
|
12
|
+
* branching past the diagonal case, and **exact for a uniform scale**: `MᵀM` is then `s²I`, the
|
|
13
|
+
* off-diagonal sum is zero, and both values come back as `s`. That matters more than the general
|
|
14
|
+
* case — a conservative bound that answered 5.2 for an unscaled instance would over-refine every
|
|
15
|
+
* ordinary object in a scene to buy correctness for a sheared one.
|
|
16
|
+
*
|
|
17
|
+
* **Not a degeneracy test.** σ_min is zero exactly when the matrix is singular *in exact
|
|
18
|
+
* arithmetic*, and this once said so without the qualifier. In f32 it holds only on the diagonal
|
|
19
|
+
* branch: the trigonometric one computes the smallest eigenvalue as a difference of nearly equal
|
|
20
|
+
* numbers, and the `sqrt` turns its absolute error of about `eps·σ_max²` into about
|
|
21
|
+
* `sqrt(eps)·σ_max ≈ 3.4e-4·σ_max` in σ_min. A rotated matrix with one column of zeros therefore
|
|
22
|
+
* comes back with a σ_min near 1e-4 rather than 0, and a caller testing `σ_min > 0` before
|
|
23
|
+
* inverting is let through with the NaN it was guarding against
|
|
24
|
+
* (`shader_vgeo_cut_collect`, REVIEW_LEDGER M3). A caller about to invert should test the
|
|
25
|
+
* **determinant**, which is the number the inverse divides by and which is exactly zero whenever a
|
|
26
|
+
* column is.
|
|
27
|
+
*
|
|
28
|
+
* @type {CodeChunk}
|
|
29
|
+
*
|
|
30
|
+
* @author Alex Goldring
|
|
31
|
+
* @copyright Company Named Limited (c) 2026
|
|
32
|
+
*/
|
|
33
|
+
export const chunk_mat3_singular_values: CodeChunk;
|
|
34
|
+
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
35
|
+
//# sourceMappingURL=chunk_mat3_singular_values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_mat3_singular_values.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,yCALU,SAAS,CA6DZ;0BA1FmB,gCAAgC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The largest and smallest singular values of a 3×3 matrix.
|
|
5
|
+
*
|
|
6
|
+
* They are what "how much does this transform stretch a distance" actually means: a vector's length
|
|
7
|
+
* is scaled by something between σ_min and σ_max, and both bounds are attained. Column lengths are
|
|
8
|
+
* the obvious stand-in and they are **not** the same number — for
|
|
9
|
+
* `[[1,0,0],[k,1,0],[0,0,1]]`, every column has length 1 or √(1+k²) while the true ratio grows
|
|
10
|
+
* without bound in `k`. A shear has no scale in any column and stretches space anyway.
|
|
11
|
+
*
|
|
12
|
+
* Computed as the square roots of the eigenvalues of `MᵀM`, which is symmetric and positive
|
|
13
|
+
* semi-definite, through the closed form for a symmetric 3×3 (Smith 1961). No iteration, no
|
|
14
|
+
* branching past the diagonal case, and **exact for a uniform scale**: `MᵀM` is then `s²I`, the
|
|
15
|
+
* off-diagonal sum is zero, and both values come back as `s`. That matters more than the general
|
|
16
|
+
* case — a conservative bound that answered 5.2 for an unscaled instance would over-refine every
|
|
17
|
+
* ordinary object in a scene to buy correctness for a sheared one.
|
|
18
|
+
*
|
|
19
|
+
* **Not a degeneracy test.** σ_min is zero exactly when the matrix is singular *in exact
|
|
20
|
+
* arithmetic*, and this once said so without the qualifier. In f32 it holds only on the diagonal
|
|
21
|
+
* branch: the trigonometric one computes the smallest eigenvalue as a difference of nearly equal
|
|
22
|
+
* numbers, and the `sqrt` turns its absolute error of about `eps·σ_max²` into about
|
|
23
|
+
* `sqrt(eps)·σ_max ≈ 3.4e-4·σ_max` in σ_min. A rotated matrix with one column of zeros therefore
|
|
24
|
+
* comes back with a σ_min near 1e-4 rather than 0, and a caller testing `σ_min > 0` before
|
|
25
|
+
* inverting is let through with the NaN it was guarding against
|
|
26
|
+
* (`shader_vgeo_cut_collect`, REVIEW_LEDGER M3). A caller about to invert should test the
|
|
27
|
+
* **determinant**, which is the number the inverse divides by and which is exactly zero whenever a
|
|
28
|
+
* column is.
|
|
29
|
+
*
|
|
30
|
+
* @type {CodeChunk}
|
|
31
|
+
*
|
|
32
|
+
* @author Alex Goldring
|
|
33
|
+
* @copyright Company Named Limited (c) 2026
|
|
34
|
+
*/
|
|
35
|
+
export const chunk_mat3_singular_values = CodeChunk.from(
|
|
36
|
+
//language=WGSL
|
|
37
|
+
`
|
|
38
|
+
/**
|
|
39
|
+
* @returns (largest, smallest) singular value
|
|
40
|
+
*/
|
|
41
|
+
fn mat3_singular_values(m: mat3x3<f32>) -> vec2<f32> {
|
|
42
|
+
// MtM, symmetric and positive semi-definite; its eigenvalues are the squared singular values
|
|
43
|
+
let a00 = dot(m[0], m[0]);
|
|
44
|
+
let a11 = dot(m[1], m[1]);
|
|
45
|
+
let a22 = dot(m[2], m[2]);
|
|
46
|
+
let a01 = dot(m[0], m[1]);
|
|
47
|
+
let a02 = dot(m[0], m[2]);
|
|
48
|
+
let a12 = dot(m[1], m[2]);
|
|
49
|
+
|
|
50
|
+
let p1 = a01 * a01 + a02 * a02 + a12 * a12;
|
|
51
|
+
|
|
52
|
+
if (p1 <= 0.0) {
|
|
53
|
+
// already diagonal — the uniform-scale case lands here, and lands exactly
|
|
54
|
+
let high = max(a00, max(a11, a22));
|
|
55
|
+
let low = min(a00, min(a11, a22));
|
|
56
|
+
|
|
57
|
+
return vec2<f32>(sqrt(max(high, 0.0)), sqrt(max(low, 0.0)));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
let q = (a00 + a11 + a22) / 3.0;
|
|
61
|
+
|
|
62
|
+
let d0 = a00 - q;
|
|
63
|
+
let d1 = a11 - q;
|
|
64
|
+
let d2 = a22 - q;
|
|
65
|
+
|
|
66
|
+
let p2 = d0 * d0 + d1 * d1 + d2 * d2 + 2.0 * p1;
|
|
67
|
+
|
|
68
|
+
let p = sqrt(p2 / 6.0);
|
|
69
|
+
|
|
70
|
+
// det(B) / 2, with B = (A - qI) / p
|
|
71
|
+
let b00 = d0 / p;
|
|
72
|
+
let b11 = d1 / p;
|
|
73
|
+
let b22 = d2 / p;
|
|
74
|
+
let b01 = a01 / p;
|
|
75
|
+
let b02 = a02 / p;
|
|
76
|
+
let b12 = a12 / p;
|
|
77
|
+
|
|
78
|
+
let determinant = b00 * (b11 * b22 - b12 * b12)
|
|
79
|
+
- b01 * (b01 * b22 - b12 * b02)
|
|
80
|
+
+ b02 * (b01 * b12 - b11 * b02);
|
|
81
|
+
|
|
82
|
+
// clamped because rounding can push it a hair outside acos's domain, where the whole
|
|
83
|
+
// computation would otherwise come back NaN for a perfectly ordinary matrix
|
|
84
|
+
let phi = acos(clamp(determinant * 0.5, -1.0, 1.0)) / 3.0;
|
|
85
|
+
|
|
86
|
+
let high = q + 2.0 * p * cos(phi);
|
|
87
|
+
let low = q + 2.0 * p * cos(phi + 2.0 * 3.14159265358979 / 3.0);
|
|
88
|
+
|
|
89
|
+
return vec2<f32>(sqrt(max(high, 0.0)), sqrt(max(low, 0.0)));
|
|
90
|
+
}
|
|
91
|
+
`, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DIRECTIONAL_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"DIRECTIONAL_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA,oDA6B8B;6BA/BD,4BAA4B"}
|
|
@@ -25,4 +25,9 @@ export const DIRECTIONAL_LIGHT_STRUCT = WebGPUStruct.from({
|
|
|
25
25
|
* Pointer into the shadow table for directional lights
|
|
26
26
|
*/
|
|
27
27
|
shadow_id: u32,
|
|
28
|
+
/**
|
|
29
|
+
* The `transforms` row of the light's entity, one on. `shader_refresh_light_poses` writes the
|
|
30
|
+
* pose above from this row's `global` every frame, after the hierarchy pass.
|
|
31
|
+
*/
|
|
32
|
+
node: u32,
|
|
28
33
|
}, "DirectionalLight").pack();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"POINT_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iCAFU,YAAY,
|
|
1
|
+
{"version":3,"file":"POINT_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iCAFU,YAAY,CAgCE;6BApCK,4BAA4B"}
|
|
@@ -30,4 +30,9 @@ export const POINT_LIGHT_STRUCT = WebGPUStruct.from({
|
|
|
30
30
|
* Pointer into the shadow table for point lights
|
|
31
31
|
*/
|
|
32
32
|
shadow_id: u32,
|
|
33
|
+
/**
|
|
34
|
+
* The `transforms` row of the light's entity, one on. `shader_refresh_light_poses` writes the
|
|
35
|
+
* pose above from this row's `global` every frame, after the hierarchy pass.
|
|
36
|
+
*/
|
|
37
|
+
node: u32,
|
|
33
38
|
}, "PointLight").pack();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SPOT_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,gCAFU,YAAY,
|
|
1
|
+
{"version":3,"file":"SPOT_LIGHT_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,gCAFU,YAAY,CAgCZ;6BApCmB,4BAA4B"}
|
|
@@ -30,4 +30,9 @@ export const SPOT_LIGHT_STRUCT = WebGPUStruct.from({
|
|
|
30
30
|
* Pointer into the shadow table for the spot lights
|
|
31
31
|
*/
|
|
32
32
|
shadow_id: u32,
|
|
33
|
+
/**
|
|
34
|
+
* The `transforms` row of the light's entity, one on. `shader_refresh_light_poses` writes the
|
|
35
|
+
* pose above from this row's `global` every frame, after the hierarchy pass.
|
|
36
|
+
*/
|
|
37
|
+
node: u32,
|
|
33
38
|
}).pack();
|
|
@@ -10,8 +10,47 @@ export class DirectionalLightShadowmap extends Shadowmap {
|
|
|
10
10
|
*/
|
|
11
11
|
distance_max: number;
|
|
12
12
|
splits: Float32Array;
|
|
13
|
+
/**
|
|
14
|
+
* The row of the light database's `shadow_csm_caster_range` table this map's caster range is
|
|
15
|
+
* published into, claimed by the shadow context with the map; -1 until then.
|
|
16
|
+
*
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
caster_row: number;
|
|
20
|
+
/**
|
|
21
|
+
* Per cascade, the nearest caster along the light's axis that the GPU measured — from the
|
|
22
|
+
* world origin, the previous frame's cascade frusta — as the readback delivered it. NaN until
|
|
23
|
+
* the first delivery, which is what {@link caster_range_valid} reads: the readback writes these
|
|
24
|
+
* bytes only when a request lands, and a request that was dropped leaves them as they were.
|
|
25
|
+
*
|
|
26
|
+
* @type {Float32Array}
|
|
27
|
+
*/
|
|
28
|
+
caster_range: Float32Array;
|
|
29
|
+
/**
|
|
30
|
+
* Whether {@link caster_range} has ever been delivered.
|
|
31
|
+
*
|
|
32
|
+
* @type {boolean}
|
|
33
|
+
*/
|
|
34
|
+
caster_range_valid: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* What the accumulate pass measures this frame's casters against: the light's axis and each
|
|
37
|
+
* cascade's four side planes, as {@link update} fitted them. `base` is the shadow context's.
|
|
38
|
+
*
|
|
39
|
+
* `planes` is what is marshalled — a vec4 per plane — and `planes_words` the one buffer those
|
|
40
|
+
* are views over, which {@link update} writes.
|
|
41
|
+
*
|
|
42
|
+
* @type {{z_axis: Float32Array, planes: Float32Array[], planes_words: Float32Array, base: number, cascade_count: number}}
|
|
43
|
+
*/
|
|
44
|
+
caster_settings: {
|
|
45
|
+
z_axis: Float32Array;
|
|
46
|
+
planes: Float32Array[];
|
|
47
|
+
planes_words: Float32Array;
|
|
48
|
+
base: number;
|
|
49
|
+
cascade_count: number;
|
|
50
|
+
};
|
|
13
51
|
update(main_camera: any, scene_ctx: any): void;
|
|
14
52
|
make_record(): any[];
|
|
53
|
+
#private;
|
|
15
54
|
}
|
|
16
55
|
import { Shadowmap } from "./Shadowmap.js";
|
|
17
56
|
//# sourceMappingURL=DirectionalLightShadowmap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectionalLightShadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/DirectionalLightShadowmap.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DirectionalLightShadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/DirectionalLightShadowmap.js"],"names":[],"mappings":"AAiGA;IACI;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB,qBAAuD;IAEvD;;;;;OAKG;IACH,YAFU,MAAM,CAEA;IAEhB;;;;;;;OAOG;IACH,cAFU,YAAY,CAEiD;IASvE;;;;OAIG;IACH,oBAFU,OAAO,CAEU;IAE3B;;;;;;;;OAQG;IACH,iBAFU;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAC,CAYpH;IAEL,+CAiQC;IAED,qBAYC;;CAEJ;0BA5ZyB,gBAAgB"}
|