@woosh/meep-engine 3.23.0 → 3.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/entity_world_bounds.d.ts +9 -3
- package/editor/entity_world_bounds.d.ts.map +1 -1
- package/editor/entity_world_bounds.js +61 -4
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +40 -2
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +124 -29
- package/src/core/collection/map/u32_index.d.ts +83 -0
- package/src/core/collection/map/u32_index.d.ts.map +1 -0
- package/src/core/collection/map/u32_index.js +247 -0
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.d.ts +2 -2
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js +2 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +1 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.js +4 -12
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +55 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.js +72 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts +40 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.js +79 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.js +27 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts +23 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.js +39 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +15 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.js +38 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_has.js +28 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts +24 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.js +49 -0
- package/src/engine/ecs/ik/IKProblem.d.ts +14 -0
- package/src/engine/ecs/ik/IKProblem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKProblem.js +16 -0
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/InverseKinematicsSystem.js +19 -0
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts +11 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_bone_chain.js +47 -2
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +6 -0
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +6 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts +50 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts.map +1 -0
- package/src/engine/ecs/transform/T64WorldCache.js +139 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts +31 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_evaluate_world.js +126 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +8 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +59 -30
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -11
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.js +13 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +2 -14
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +11 -21
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.d.ts +1 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +7 -0
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +5 -6
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +13 -11
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.js +21 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +3 -3
- package/src/engine/graphics3/AnimationSystem.js +2 -2
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem.js +2 -4
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +34 -27
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +185 -85
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts +4 -3
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightOutlineSystem.js +7 -9
- package/src/engine/graphics3/LightSystem.d.ts +7 -5
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +36 -22
- package/src/engine/graphics3/MeshSystem.d.ts +43 -39
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +324 -331
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem.js +2 -4
- package/src/engine/graphics3/PickingQuery.d.ts +15 -21
- package/src/engine/graphics3/PickingQuery.d.ts.map +1 -1
- package/src/engine/graphics3/PickingQuery.js +21 -25
- package/src/engine/graphics3/PickingSystem.d.ts +60 -31
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +416 -273
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +22 -12
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +309 -174
- package/src/engine/graphics3/TerrainSystem.d.ts +19 -11
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem.js +102 -53
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem.js +2 -14
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +2 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +4 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts.map +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +9 -11
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +11 -18
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +4 -3
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts.map +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +75 -74
- package/src/engine/graphics3/prefab/Prefab.d.ts +130 -0
- package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/Prefab.js +162 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts +72 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/PrefabInstance.js +80 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts +23 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_compile.js +334 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts +46 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.js +230 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts +70 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.js +210 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_place.js +130 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.js +128 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts +40 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.js +116 -0
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts +16 -14
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_preview_scene.js +126 -154
- package/src/engine/graphics3/preview/make_model_thumbnail.js +1 -1
- package/src/engine/graphics3/register_instance_animation.d.ts +6 -6
- package/src/engine/graphics3/register_instance_animation.d.ts.map +1 -1
- package/src/engine/graphics3/register_instance_animation.js +4 -4
- package/src/engine/graphics3/shade_bundle_bounds.d.ts +2 -6
- package/src/engine/graphics3/shade_bundle_bounds.d.ts.map +1 -1
- package/src/engine/graphics3/shade_bundle_bounds.js +47 -55
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts +11 -18
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/pack_terrain_row_table.js +48 -53
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts +17 -2
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +284 -256
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +13 -15
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +12 -14
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts +7 -8
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothRig.js +7 -8
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +5 -4
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +11 -12
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +19 -23
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +201 -199
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +8 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts +18 -34
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.js +58 -115
- package/src/engine/physics/cloth/playground/README.md +11 -11
- package/src/engine/physics/cloth/playground/garment_build.d.ts +0 -1
- package/src/engine/physics/cloth/playground/garment_build.d.ts.map +1 -1
- package/src/engine/physics/cloth/playground/garment_build.js +64 -58
- package/src/engine/physics/cloth/playground/garment_main.js +59 -33
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +85 -53
- package/src/shade/device/ShadeGPUCommandContext.d.ts +23 -0
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +36 -0
- package/src/shade/playground/add_random_meshes.d.ts +4 -4
- package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
- package/src/shade/playground/add_random_meshes.js +20 -16
- package/src/shade/playground/avboit/main.d.ts +1 -0
- package/src/shade/playground/avboit/main.d.ts.map +1 -1
- package/src/shade/playground/avboit/main.js +916 -875
- package/src/shade/playground/basis_textures/main.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/main.js +22 -8
- package/src/shade/playground/basis_textures/texture_inventory.d.ts +2 -2
- package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/texture_inventory.js +6 -7
- package/src/shade/playground/ground_seam/main.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/main.js +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/make_ground.js +21 -16
- package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
- package/src/shade/playground/particle_system/main.js +11 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts +15 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +56 -15
- package/src/shade/playground/particle_system/particle_scene.d.ts +68 -28
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +149 -53
- package/src/shade/playground/readback_crossover/index.html +41 -0
- package/src/shade/playground/readback_crossover/main.d.ts +2 -0
- package/src/shade/playground/readback_crossover/main.d.ts.map +1 -0
- package/src/shade/playground/readback_crossover/main.js +372 -0
- package/src/shade/playground/skinned_blas_refit/README.md +11 -7
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +13 -44
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/add_floor.js +19 -59
- package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/main.js +67 -58
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts +40 -54
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/place_character.js +47 -74
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +4 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +11 -4
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +38 -9
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +9 -6
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +3 -3
- package/src/shade/playground/skinned_mesh_soup/README.md +6 -6
- package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/main.js +44 -102
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +5 -5
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +42 -33
- package/src/shade/playground/sponza_path_trace/main.d.ts +1 -0
- package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -1
- package/src/shade/playground/sponza_path_trace/main.js +393 -363
- package/src/shade/playground/ssr_reprojection/main.js +11 -9
- package/src/shade/playground/ssr_reprojection/scene.d.ts +15 -4
- package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_reprojection/scene.js +32 -11
- package/src/shade/playground/ssr_variance/main.js +1 -1
- package/src/shade/playground/ssr_variance/scene.d.ts +10 -4
- package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_variance/scene.js +39 -15
- package/src/shade/playground/vgeo_viewer/main.js +6 -2
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +936 -922
- package/src/shade/renderer/GraphicsContext.d.ts +7 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +11 -0
- package/src/shade/renderer/Renderer.d.ts +3 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +3 -2
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +39 -47
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +319 -256
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts +26 -22
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationChannel.js +28 -23
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +14 -6
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationClip.js +20 -8
- package/src/shade/renderer/animation/Skin.d.ts +19 -19
- package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
- package/src/shade/renderer/animation/Skin.js +15 -13
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +6 -5
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +9 -9
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +5 -59
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -1
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +8 -132
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +65 -62
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +148 -194
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +4 -7
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +2 -2
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +2 -2
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +74 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +240 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +14 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +64 -6
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts +190 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.js +1323 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts +10 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUPageMetadata.js +12 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts +96 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts +15 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.js +34 -0
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +75 -7
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +518 -135
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts +19 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.js +18 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts +39 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/WordViews.js +62 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts +27 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.js +117 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts +121 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.js +395 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +70 -20
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +6 -5
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +3 -3
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +15 -11
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js +4 -4
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts +1 -3
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.js +5 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -4
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts +8 -3
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +19 -14
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +9 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts +3 -3
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js +12 -5
- package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +1 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts +29 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +444 -329
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +7 -1
- package/src/shade/renderer/light/LightCollection.d.ts +29 -1
- package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/LightCollection.js +50 -1
- package/src/shade/renderer/light/make_sunlight.js +2 -2
- package/src/shade/renderer/light/model/Light.d.ts +29 -2
- package/src/shade/renderer/light/model/Light.d.ts.map +1 -1
- package/src/shade/renderer/light/model/Light.js +30 -2
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_directional.js +8 -5
- package/src/shade/renderer/light/model/io/light_record_point.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_point.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_point.js +5 -2
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts +4 -1
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_spot.js +10 -6
- package/src/shade/renderer/light/place_light.d.ts +16 -0
- package/src/shade/renderer/light/place_light.d.ts.map +1 -0
- package/src/shade/renderer/light/place_light.js +36 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts +44 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts.map +1 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.js +154 -0
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +12 -14
- package/src/shade/renderer/loader/SceneBundle.d.ts +53 -28
- package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
- package/src/shade/renderer/loader/SceneBundle.js +111 -56
- package/src/shade/renderer/loader/SceneNode.d.ts +81 -0
- package/src/shade/renderer/loader/SceneNode.d.ts.map +1 -0
- package/src/shade/renderer/loader/SceneNode.js +114 -0
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts +3 -2
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/load_gltf.js +110 -142
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts +4 -4
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.js +2 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts +3 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/load_usd.js +4 -5
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts +3 -3
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +47 -55
- package/src/shade/renderer/material/GPUMaterialManager.js +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +5 -4
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +8 -15
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts +15 -13
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +40 -21
- package/src/shade/renderer/particles/DESIGN.md +53 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +31 -17
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +54 -91
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +12 -11
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +12 -11
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +13 -19
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +19 -25
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +34 -24
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +53 -40
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +2 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.js +5 -2
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +1 -1
- package/src/shade/renderer/scene/DynamicMesh.d.ts +13 -4
- package/src/shade/renderer/scene/DynamicMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/DynamicMesh.js +14 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +38 -18
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +112 -60
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +55 -48
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +594 -928
- package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts +5 -5
- package/src/shade/renderer/scene/NODE3D_STRUCT.js +5 -5
- package/src/shade/renderer/scene/Node3D.d.ts +27 -8
- package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts +59 -0
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts.map +1 -0
- package/src/shade/renderer/scene/Scene.d.ts +18 -60
- package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/Scene.js +53 -146
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +10 -93
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts +24 -3
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.js +53 -13
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +5 -6
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +5 -6
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts +10 -2
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/scene_optimize.js +266 -230
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts +53 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.js +144 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +227 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +1136 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts +48 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/place_primitive.js +98 -0
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts +10 -8
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +24 -27
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts +9 -2
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/serialize_scene.js +25 -4
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +2 -2
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +39 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +112 -64
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +7 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1541 -1352
- package/src/shade/renderer/shadow/map/PointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +29 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +43 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts +13 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.js +12 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +49 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +194 -0
- package/src/shade/renderer/shadow/map/csm_debug_draw_preview.js +1 -1
- package/src/shade/renderer/shadow/map/shadowmap_update_score.js +1 -1
- package/src/shade/renderer/shadow/ray/RTXShadows.js +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +3 -1
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.js +8 -8
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -3
- package/src/engine/graphics3/instantiate_scene_bundle.js +0 -164
- package/src/engine/graphics3/shade_node_to_entity_composition.js +0 -88
- package/src/shade/renderer/animation/compute_skin_world_bounds.js +0 -146
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.js +0 -531
- package/src/shade/renderer/animation/pose/pose_evaluate_world.js +0 -76
- package/src/shade/renderer/animation/skin_bind_transform.js +0 -33
- package/src/shade/renderer/animation/skin_frame_defect.js +0 -132
- package/src/shade/renderer/animation/skin_joint_matrix.js +0 -46
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +0 -216
- package/src/shade/renderer/scene/InstanceBatch.js +0 -235
- package/src/shade/renderer/scene/Mesh.js +0 -168
- package/src/shade/renderer/scene/Node3D.js +0 -263
- package/src/shade/renderer/scene/SceneNodeBinding.js +0 -56
- package/src/shade/renderer/scene/SkinnedMesh.js +0 -170
- package/src/shade/renderer/scene/TransformAuthority.js +0 -33
|
@@ -64,11 +64,11 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
64
64
|
/**
|
|
65
65
|
* @param {FluidComponent} fluid
|
|
66
66
|
*/
|
|
67
|
-
static "__#
|
|
67
|
+
static "__#391@#refresh_masks"(fluid: FluidComponent): void;
|
|
68
68
|
/**
|
|
69
69
|
* @param {FluidComponent} fluid
|
|
70
70
|
*/
|
|
71
|
-
static "__#
|
|
71
|
+
static "__#391@#clear_field"(fluid: FluidComponent): void;
|
|
72
72
|
/**
|
|
73
73
|
* Mark every cell of `fluid` whose centre lies within `inflation` of the
|
|
74
74
|
* posed shape as solid. Iteration is clipped to the shape's world AABB
|
|
@@ -80,7 +80,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
80
80
|
* @param {number} inflation world-units SDF threshold
|
|
81
81
|
* @param {Float64Array} point length-3 scratch
|
|
82
82
|
*/
|
|
83
|
-
static "__#
|
|
83
|
+
static "__#391@#voxelize"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array): void;
|
|
84
84
|
/**
|
|
85
85
|
* Write the obstacle's translation velocity onto every face of every cell
|
|
86
86
|
* it voxelized — the moving-wall boundary condition. Runs AFTER the mask
|
|
@@ -100,7 +100,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
100
100
|
* @param {number} wvy
|
|
101
101
|
* @param {number} wvz
|
|
102
102
|
*/
|
|
103
|
-
static "__#
|
|
103
|
+
static "__#391@#stamp_wall_velocity"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array, wvx: number, wvy: number, wvz: number): void;
|
|
104
104
|
constructor();
|
|
105
105
|
dependencies: (typeof FluidObstacle)[];
|
|
106
106
|
components_used: (ResourceAccessSpecification<typeof Transform64> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof Collider> | ResourceAccessSpecification<typeof FluidComponent> | ResourceAccessSpecification<typeof FluidObstacle>)[];
|
|
@@ -23,8 +23,9 @@ applied deferred; and the result is temporally resolved, upscaled, tonemapped an
|
|
|
23
23
|
|
|
24
24
|
Three consequences that shape everything below:
|
|
25
25
|
|
|
26
|
-
- **A mesh is a small GPU-resident record, not a draw call you own.** You
|
|
27
|
-
what is drawn, in what order, and whether it
|
|
26
|
+
- **A mesh is a small GPU-resident record, not a draw call you own.** You place a model at entities
|
|
27
|
+
of the scene's dataset and each primitive is a row; what is drawn, in what order, and whether it
|
|
28
|
+
is culled is the renderer's.
|
|
28
29
|
- **Preparing geometry is a precompute.** Meshlet building, encoding and BVH construction happen
|
|
29
30
|
once per geometry. Content that rewrites its vertices every frame goes down a separate path (§8).
|
|
30
31
|
- **The frame is a closed sequence with declared injection points.** You do not insert a pass
|
|
@@ -95,6 +96,11 @@ import { Renderer } from "./renderer/Renderer.js";
|
|
|
95
96
|
import { Scene } from "./renderer/scene/Scene.js";
|
|
96
97
|
import { PerspectiveCamera } from "./renderer/camera/PerspectiveCamera.js";
|
|
97
98
|
import { make_sunlight } from "./renderer/light/make_sunlight.js";
|
|
99
|
+
import { place_light } from "./renderer/light/place_light.js";
|
|
100
|
+
import { EntityComponentDataset } from "../engine/ecs/EntityComponentDataset.js";
|
|
101
|
+
import { Transform64 } from "../engine/ecs/transform/Transform64.js";
|
|
102
|
+
import { prefab_compile } from "../engine/graphics3/prefab/prefab_compile.js";
|
|
103
|
+
import { prefab_place } from "../engine/graphics3/prefab/prefab_place.js";
|
|
98
104
|
import { load_gltf } from "./renderer/loader/gltf/load_gltf.js";
|
|
99
105
|
import { create_frame_loop } from "./renderer/create_frame_loop.js";
|
|
100
106
|
import { DEG_TO_RAD } from "../core/math/DEG_TO_RAD.js";
|
|
@@ -117,12 +123,19 @@ camera.aspect = renderer.aspect_ratio;
|
|
|
117
123
|
|
|
118
124
|
const scene = new Scene();
|
|
119
125
|
|
|
126
|
+
// everything in a scene stands at an entity, so the scene names a dataset — a map of components,
|
|
127
|
+
// no systems
|
|
128
|
+
scene.dataset = new EntityComponentDataset();
|
|
129
|
+
|
|
120
130
|
// nothing is lit without one, and the deferred shading pass has no default light
|
|
121
|
-
scene
|
|
131
|
+
place_light(scene, make_sunlight({ intensity: 2.2 }));
|
|
122
132
|
|
|
123
133
|
const bundle = await load_gltf("model.glb", { assetManager });
|
|
124
134
|
|
|
125
|
-
|
|
135
|
+
// the model as loaded is compiled once; a placement of it is entities of the dataset, one per node
|
|
136
|
+
// of the file, each with a row of the scene's GPU database — the scene's context is where the rows
|
|
137
|
+
// live
|
|
138
|
+
prefab_place(renderer.scenes.obtain(scene), scene.dataset, prefab_compile(bundle), new Transform64());
|
|
126
139
|
|
|
127
140
|
create_frame_loop(dt => renderer.render(camera, scene, dt));
|
|
128
141
|
```
|
|
@@ -157,68 +170,82 @@ has a configured manager on it and should use that one.
|
|
|
157
170
|
directly, which is §4 in the other direction and needs no asset manager at all:
|
|
158
171
|
|
|
159
172
|
```js
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
mesh.geometry = meshlet_geometry_build_from_geometry(make_torus_knot_geometry(1, 0.3, 128, 16));
|
|
163
|
-
mesh.material = new StandardShadeMaterial();
|
|
173
|
+
const transform = new Transform64();
|
|
164
174
|
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
transform.setTranslation(0, 1, 0);
|
|
176
|
+
transform.updateMatrix();
|
|
167
177
|
|
|
168
|
-
|
|
178
|
+
place_primitive(
|
|
179
|
+
renderer.scenes.obtain(scene),
|
|
180
|
+
meshlet_geometry_build_from_geometry(make_torus_knot_geometry(1, 0.3, 128, 16)),
|
|
181
|
+
new StandardShadeMaterial(),
|
|
182
|
+
transform
|
|
183
|
+
);
|
|
169
184
|
```
|
|
170
185
|
|
|
171
186
|
**`render` returns a boolean.** `false` means the previous frame has not finished and this one was
|
|
172
187
|
not submitted. It is not an error.
|
|
173
188
|
|
|
174
|
-
|
|
175
|
-
|
|
189
|
+
**Everything drawn or posed is an entity of the scene's dataset, holding a row of the scene's GPU
|
|
190
|
+
database.** `prefab_place` answers what it placed — the root entity, the instance, its animation
|
|
191
|
+
registration — and `prefab_unplace` takes it all back; `place_primitive` answers the entity,
|
|
192
|
+
`move_primitive` moves it and `remove_primitive` takes it back. A game calls none of them: its
|
|
193
|
+
systems take rows as components appear. A light is the same shape — it stands at an entity, and
|
|
194
|
+
`scene.lights.add(light, entity)` — `place_light(scene, light)`, for a caller with no entity of its
|
|
195
|
+
own — is what puts it in the scene. Its record's pose is that entity's row, read on the GPU every
|
|
196
|
+
frame.
|
|
176
197
|
|
|
177
198
|
---
|
|
178
199
|
|
|
179
200
|
## 4. The type model
|
|
180
201
|
|
|
181
|
-
Everything in a scene is
|
|
182
|
-
scene
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
202
|
+
Everything in a scene is an **entity** of the scene's dataset, and what the renderer knows about it
|
|
203
|
+
is **a row** of the scene's GPU database, at `entity + 1` in two tables: `transforms` — its local TRS
|
|
204
|
+
and the row of its parent — and, for a primitive, `meshes` — which geometry, which material, and the
|
|
205
|
+
world bounds. Row 0 is the scene root, identity. There is no CPU object per node, no parent pointer
|
|
206
|
+
to follow and no world matrix to recompose: the GPU composes every chain each frame, from the rows,
|
|
207
|
+
and derives every mesh row's bounds under the composed matrix.
|
|
208
|
+
|
|
209
|
+
**An entity is placed through its `Transform64`, and what the GPU holds is derived from it.** A
|
|
210
|
+
root entity's row carries its world pose; an entity attached under another (`TransformAttachment`)
|
|
211
|
+
carries its local offset and names its parent's row. A game's systems write these as components
|
|
212
|
+
change; a scene with no systems places through `prefab_place` and `place_primitive`, and moves a
|
|
213
|
+
primitive through `move_primitive`, which marks the row for the next build. The box that is drawn
|
|
214
|
+
is the GPU's — `GPUSceneContext.bounds` reads it back, a frame or two behind — and nothing on the
|
|
215
|
+
CPU keeps a copy of it.
|
|
216
|
+
|
|
217
|
+
**An entity's transform and a camera's are different types, deliberately, and this is the one place
|
|
218
|
+
a newcomer will trip.** `Transform64` is a flat `Float64Array` holding its own matrix, posed through
|
|
219
|
+
`setTranslation(x, y, z)` / `setRotation(x, y, z, w)` / `setScale(x, y, z)` and refreshed with
|
|
220
|
+
`updateMatrix()`, with the buffer layout part of its contract so hot code can write it directly. A
|
|
221
|
+
`Camera` is **not** an entity — it carries meep's ECS `Transform`, whose `position`, `rotation` and
|
|
222
|
+
`scale` are observable vectors you assign into. The two keep distinct shapes on purpose and neither
|
|
223
|
+
has the other's accessors: `transform.position` is `undefined` on a `Transform64`, and so is
|
|
199
224
|
`camera.transform.translation`.
|
|
200
225
|
|
|
201
226
|
```js
|
|
202
|
-
|
|
203
|
-
camera.transform.position.set(0, 2, -5);
|
|
227
|
+
transform.setTranslation(0, 1, 0); // Transform64 — then updateMatrix()
|
|
228
|
+
camera.transform.position.set(0, 2, -5); // Transform — reactive, no refresh call
|
|
204
229
|
```
|
|
205
230
|
|
|
206
231
|
```
|
|
207
|
-
Scene
|
|
208
|
-
├──
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
232
|
+
Scene
|
|
233
|
+
├── dataset EntityComponentDataset — every entity the scene draws or poses; its rows
|
|
234
|
+
├── lights LightCollection — each at an entity; their own pipeline, not a mesh row
|
|
235
|
+
├── light_probe_volume
|
|
236
|
+
└── volumetrics
|
|
212
237
|
```
|
|
213
238
|
|
|
214
|
-
A
|
|
239
|
+
A **primitive** is an entity holding a `meshes` row. Its `ShadedGeometry` component names what the
|
|
240
|
+
row draws, so a tool can read it back:
|
|
215
241
|
|
|
216
242
|
```js
|
|
217
|
-
|
|
218
|
-
|
|
243
|
+
geometry // MeshletGeometry — what to draw
|
|
244
|
+
material // ShadeMaterial — how to draw it
|
|
219
245
|
```
|
|
220
246
|
|
|
221
|
-
and
|
|
247
|
+
and the row carries the world-space `bounding_box` / `bounding_sphere` the renderer derives for
|
|
248
|
+
culling.
|
|
222
249
|
|
|
223
250
|
### Geometry: two types, one of which is a precompute
|
|
224
251
|
|
|
@@ -236,7 +263,7 @@ Seven generators ship, all returning a `Geometry`, in `renderer/geometry/primiti
|
|
|
236
263
|
`make_torus_geometry`, `make_cylinder_geometry`, `make_torus_knot_geometry`.
|
|
237
264
|
|
|
238
265
|
**`MeshletGeometry`** is the GPU form: triangles clustered into meshlets, attributes encoded, and a
|
|
239
|
-
BVH over the clusters. This is what a
|
|
266
|
+
BVH over the clusters. This is what a mesh row names, and it is what buys cluster culling and a
|
|
240
267
|
compact residency.
|
|
241
268
|
|
|
242
269
|
```js
|
|
@@ -297,15 +324,17 @@ types answer `equals`/`hash`, which is what lets the renderer de-duplicate uploa
|
|
|
297
324
|
`load_gltf` returns a **`SceneBundle`** — three arrays out of the one file:
|
|
298
325
|
|
|
299
326
|
```js
|
|
300
|
-
bundle.
|
|
301
|
-
bundle.skins // Skin[]
|
|
302
|
-
bundle.clips // ShadeAnimationClip[] —
|
|
327
|
+
bundle.nodes // SceneNode[] — the file's nodes in pre-order: name, parent, local TRS, geometry, material
|
|
328
|
+
bundle.skins // Skin[] — joints and meshes as indices into nodes
|
|
329
|
+
bundle.clips // ShadeAnimationClip[] — each channel targets an index into nodes
|
|
330
|
+
bundle.lights // {light, node}[] — anchored by index
|
|
303
331
|
```
|
|
304
332
|
|
|
305
|
-
The bundle is **the model as loaded, not a placement of it
|
|
306
|
-
|
|
307
|
-
`
|
|
308
|
-
|
|
333
|
+
The bundle is **the model as loaded, not a placement of it** — records, with no transform state
|
|
334
|
+
anyone could pose. It is compiled once into a `Prefab` (`prefab_compile`), and every placement is
|
|
335
|
+
spawned from that — `prefab_place` in a scene with no systems, `prefab_instantiate` under a game's
|
|
336
|
+
own root entity — with its own entities, its own skins and its own retargeted clips, addressed by
|
|
337
|
+
entity, which is what makes two of one model possible.
|
|
309
338
|
|
|
310
339
|
---
|
|
311
340
|
|
|
@@ -523,8 +552,8 @@ geometry.needsUpdate = true; // you say when the vertices changed; nothing wat
|
|
|
523
552
|
```
|
|
524
553
|
|
|
525
554
|
This is **a separate path, not a variant of the standard one.** A `DynamicMesh` holds a plain
|
|
526
|
-
`Geometry`, is
|
|
527
|
-
by a pipeline of its own after the standard geometry path has finished with the frame.
|
|
555
|
+
`Geometry` and its own `transform`, is no entity of the scene, gets no row in the scene database,
|
|
556
|
+
and is drawn by a pipeline of its own after the standard geometry path has finished with the frame.
|
|
528
557
|
|
|
529
558
|
Drawing it is a `GPUDynamicMeshRenderer` inside an extension of yours (§6). Two things to know:
|
|
530
559
|
|
|
@@ -566,7 +595,7 @@ frame or is removed and re-added keeps its buffers.
|
|
|
566
595
|
```
|
|
567
596
|
shade/renderer/
|
|
568
597
|
├── Renderer.js the whole surface in §2, §7, §9
|
|
569
|
-
├── scene/ Scene,
|
|
598
|
+
├── scene/ Scene, GPUSceneContext, rows/ — GPUSceneRows, place_primitive; DynamicMesh
|
|
570
599
|
├── geometry/ Geometry, MeshletGeometry, the builders, primitives/
|
|
571
600
|
├── material/ ShadeMaterial, StandardShadeMaterial
|
|
572
601
|
├── texture/ ShadeTexture, GPUTextureContext, source/ShadeImage
|
|
@@ -578,6 +607,9 @@ shade/renderer/
|
|
|
578
607
|
└── animation/ GPUAnimationManager — skins and clips
|
|
579
608
|
```
|
|
580
609
|
|
|
610
|
+
`prefab_compile` and `prefab_place` live with the ECS, in `engine/graphics3/prefab/`, because a
|
|
611
|
+
placement is entities.
|
|
612
|
+
|
|
581
613
|
`shade/device/mock/` holds a **validating software device**: no shader execution, but real validation
|
|
582
614
|
of bindings, passes, resources and texture copies. It is how the renderer's own tests run without a
|
|
583
615
|
GPU, and it is available to yours. Specs must never acquire a real device — see `vitest.config.mjs`,
|
|
@@ -30,6 +30,21 @@ export class ShadeGPUCommandContext {
|
|
|
30
30
|
* @returns {GPUCommandEncoder}
|
|
31
31
|
*/
|
|
32
32
|
get gpu_encoder(): GPUCommandEncoder;
|
|
33
|
+
/**
|
|
34
|
+
* The graphics context this was created against, whose allocators the commands recorded here
|
|
35
|
+
* draw on.
|
|
36
|
+
*
|
|
37
|
+
* @returns {GraphicsContext}
|
|
38
|
+
*/
|
|
39
|
+
get graphics(): import("../renderer/GraphicsContext.js").GraphicsContext;
|
|
40
|
+
/**
|
|
41
|
+
* Whether {@link finish} has run — which is the moment the commands recorded here were
|
|
42
|
+
* submitted. Anything that must not happen before submission, such as mapping a buffer one of
|
|
43
|
+
* those commands copies into, checks this rather than counting frames.
|
|
44
|
+
*
|
|
45
|
+
* @returns {boolean}
|
|
46
|
+
*/
|
|
47
|
+
get finished(): boolean;
|
|
33
48
|
/**
|
|
34
49
|
* Resolves after this context's timings have been read back and handed to its recorder.
|
|
35
50
|
*
|
|
@@ -114,6 +129,14 @@ export class ShadeGPUCommandContext {
|
|
|
114
129
|
* @param {GPUExtent3DStrict} copySize
|
|
115
130
|
*/
|
|
116
131
|
copyTextureToTexture(source: GPUImageCopyTexture, destination: GPUImageCopyTexture, copySize: GPUExtent3DStrict): void;
|
|
132
|
+
/**
|
|
133
|
+
* Texels out of a texture into a buffer — what a readback of a rendered image starts with.
|
|
134
|
+
*
|
|
135
|
+
* @param {GPUImageCopyTexture} source
|
|
136
|
+
* @param {GPUImageCopyBuffer} destination
|
|
137
|
+
* @param {GPUExtent3DStrict} copySize
|
|
138
|
+
*/
|
|
139
|
+
copyTextureToBuffer(source: GPUImageCopyTexture, destination: GPUImageCopyBuffer, copySize: GPUExtent3DStrict): void;
|
|
117
140
|
/**
|
|
118
141
|
*
|
|
119
142
|
* @param {GPUComputePassDescriptor} [descriptor]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadeGPUCommandContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/device/ShadeGPUCommandContext.js"],"names":[],"mappings":"AA8CA;;;;;;GAMG;AACH;
|
|
1
|
+
{"version":3,"file":"ShadeGPUCommandContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/device/ShadeGPUCommandContext.js"],"names":[],"mappings":"AA8CA;;;;;;GAMG;AACH;IAoLI;;;;;OAKG;IACH,wBAJW,eAAe,UACf,MAAM,GACJ,sBAAsB,CA6BlC;IAjND;;;;OAIG;IACH,iBAEC;IAED;;;OAGG;IACH,mCAEC;IASD;;;;OAIG;IACH,qCAEC;IAED;;;;;OAKG;IACH,yEAEC;IAED;;;;;;OAMG;IACH,wBAEC;IAeD;;;;;;;;OAQG;IACH,wCAIC;IAED;;;;;;OAMG;IACH,2BAJW,gBAAgB,gBAChB,MAAM,GACJ,IAAI,CAOhB;IAOD;;;OAGG;IACH,wBAEC;IAED;;;OAGG;IACH,+EAEC;IAqBD;;;OAGG;IACH,yBAA0B;IAE1B;;;OAGG;IACH,6BAA8B;IAE9B;;;OAGG;IACH,0BAcC;IA6CD;;;OAGG;IACH,2BAFa,wBAAwB,CAIpC;IAED;;;OAGG;IACH,mBAFW,UAAU,QAapB;IAED;;;;;OAKG;IACH,wCAHW,MAAM,SACN,MAAM,QAWhB;IAED;;;;OAIG;IACH,qBAEC;IAED;;;;;;;;;OASG;IACH,oDALW,MAAM,6CAEN,MAAM,SACN,MAAM,QAqChB;IAGD;;;;;OAKG;IACH,uHAKC;IAED;;;;;;OAMG;IACH,qHAMC;IAED;;;;OAIG;IACH,yDAFa,0BAA0B,CAatC;IAGD;;;;;;;;;OASG;IACH;QAP8C,QAAQ,EAA3C,yBAAyB;QACR,KAAK,GAAtB,MAAM;QAC2B,QAAQ,GAAzC,oBAAoB,EAAE;QACyC,SAAS,GAAxE;YAAC,MAAM,EAAE,YAAY,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC;QAElD,0BAA0B,CAgCtC;IAED;;;;OAIG;IACH,sBAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,sBAIC;IAED;;;;OAIG;IACH,yBAFW,MAAM,QAKhB;IAED;;;;;;;;;;;OAWG;IACH;QAT4B,KAAK,GAAtB,MAAM;QAC4B,QAAQ,EAA1C,wBAAwB;QACS,QAAQ,GAAzC,oBAAoB,EAAE;QACkB,gBAAgB,EAAxD,8BAA8B;QACgB,sBAAsB;QACL,SAAS,GAAxE;YAAC,MAAM,EAAE,YAAY,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC;QAElD,yBAAyB,CAuCrC;IAED;;;;OAIG;IACH,sDAFa,yBAAyB,CAarC;IAED;;;;;;;OAOG;IACH,mDALW,MAAM,cACN,MAAM,6CAEN,MAAM,QAIhB;IAED;;;;;;OAMG;IACH,2CAFY,OAAO,CAYlB;IAUD;;;;;;OAMG;IACH,+BAJW,MAAM,iBAAe,QACrB,MAAM,aAuBhB;IAED;;;;;;;OAOG;IACH,qCANW,WAAW,UACX,MAAM,iBAAe,WACrB,MAAM,SACN,MAAM,aAwBhB;IAeD;;;;;;;;;OASG;IACH,0BAJW,2BAA2B,aAEzB;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CA2B1E;IAED;;;;;;OAMG;IACH,sCALW,UAAU,oBAEV,MAAM,iBAAe,aAgB/B;IAED;;;;;;OAMG;IACH,wDAJW,MAAM,QACN,UAAU,oBAsBpB;IAED;;;;;;;OAOG;IACH,8CALW,MAAM,QACN,WAAW,eACX,MAAM,QACN,MAAM,QAuBhB;IA0BD;;OAEG;IACH,eA0CC;;CACJ;uCAz0BY,OAAO,2DAA2D,EAAE,wBAAwB;yBAI5F,OAAO,wDAAwD,EAAE,UAAU;wCAC3E,OAAO,6DAA6D,EAAE,yBAAyB;8BAC/F,OAAO,gCAAgC,EAAE,eAAe;0CACxD,OAAO,4DAA4D,EAAE,2BAA2B;yBAChG,OAAO,uCAAuC,EAAE,UAAU;6BAC1D,OAAO,uCAAuC,EAAE,cAAc;+BAC9D,OAAO,sCAAsC,EAAE,gBAAgB;yCAbnC,qCAAqC;2CANnC,sCAAsC;6BANpD,mCAAmC;0CAOtB,qCAAqC"}
|
|
@@ -88,6 +88,27 @@ export class ShadeGPUCommandContext {
|
|
|
88
88
|
return this.#gpu_encoder;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* The graphics context this was created against, whose allocators the commands recorded here
|
|
93
|
+
* draw on.
|
|
94
|
+
*
|
|
95
|
+
* @returns {GraphicsContext}
|
|
96
|
+
*/
|
|
97
|
+
get graphics() {
|
|
98
|
+
return this.#graphics;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Whether {@link finish} has run — which is the moment the commands recorded here were
|
|
103
|
+
* submitted. Anything that must not happen before submission, such as mapping a buffer one of
|
|
104
|
+
* those commands copies into, checks this rather than counting frames.
|
|
105
|
+
*
|
|
106
|
+
* @returns {boolean}
|
|
107
|
+
*/
|
|
108
|
+
get finished() {
|
|
109
|
+
return this.#finished;
|
|
110
|
+
}
|
|
111
|
+
|
|
91
112
|
/**
|
|
92
113
|
* This context's profiling attachment, or null when nothing is profiling — which is the
|
|
93
114
|
* ordinary case and costs one null check per pass.
|
|
@@ -357,6 +378,21 @@ export class ShadeGPUCommandContext {
|
|
|
357
378
|
this.#gpu_encoder.copyTextureToTexture(source, destination, copySize);
|
|
358
379
|
}
|
|
359
380
|
|
|
381
|
+
/**
|
|
382
|
+
* Texels out of a texture into a buffer — what a readback of a rendered image starts with.
|
|
383
|
+
*
|
|
384
|
+
* @param {GPUImageCopyTexture} source
|
|
385
|
+
* @param {GPUImageCopyBuffer} destination
|
|
386
|
+
* @param {GPUExtent3DStrict} copySize
|
|
387
|
+
*/
|
|
388
|
+
copyTextureToBuffer(source, destination, copySize) {
|
|
389
|
+
assert.defined(source, 'source');
|
|
390
|
+
assert.defined(destination, 'destination');
|
|
391
|
+
assert.notEqual(destination.buffer.usage & GPUBufferUsage.COPY_DST, 0, 'destination must include COPY_DST usage flag');
|
|
392
|
+
|
|
393
|
+
this.#gpu_encoder.copyTextureToBuffer(source, destination, copySize);
|
|
394
|
+
}
|
|
395
|
+
|
|
360
396
|
/**
|
|
361
397
|
*
|
|
362
398
|
* @param {GPUComputePassDescriptor} [descriptor]
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* does not scatter one shape at a hundred times the size of another by accident.
|
|
14
14
|
*
|
|
15
15
|
* @param {Object} options
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {GPUSceneContext} options.scene_context the scene's context — its rows are where the instances go
|
|
17
17
|
* @param {MeshletGeometry[]} options.geometries not plain `Geometry` — see {@link BoxGeometry} and
|
|
18
18
|
* {@link meshlet_geometry_build_from_geometry}
|
|
19
19
|
* @param {ShadeMaterial[]} [options.materials]
|
|
@@ -23,15 +23,15 @@
|
|
|
23
23
|
* @param {function():number} [options.random] pass one shared generator to keep successive calls from
|
|
24
24
|
* scattering the same instances in the same places
|
|
25
25
|
*/
|
|
26
|
-
export function add_random_meshes({
|
|
27
|
-
|
|
26
|
+
export function add_random_meshes({ scene_context, geometries, materials, count, geometry_scale_range, region, random }: {
|
|
27
|
+
scene_context: GPUSceneContext;
|
|
28
28
|
geometries: MeshletGeometry[];
|
|
29
29
|
materials?: ShadeMaterial[];
|
|
30
30
|
count?: number;
|
|
31
31
|
geometry_scale_range?: NumericInterval;
|
|
32
32
|
region?: AABB3;
|
|
33
33
|
random?: () => number;
|
|
34
|
-
}):
|
|
34
|
+
}): number[];
|
|
35
35
|
import { NumericInterval } from "../../core/math/interval/NumericInterval.js";
|
|
36
36
|
import { AABB3 } from "../../core/geom/3d/aabb/AABB3.js";
|
|
37
37
|
//# sourceMappingURL=add_random_meshes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add_random_meshes.d.ts","sourceRoot":"","sources":["../../../../src/shade/playground/add_random_meshes.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add_random_meshes.d.ts","sourceRoot":"","sources":["../../../../src/shade/playground/add_random_meshes.js"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;IAVoC,aAAa;IACX,UAAU,EAArC,iBAAiB;IAES,SAAS,GAAnC,eAAe;IACE,KAAK,GAAtB,MAAM;IACoB,oBAAoB,GAA9C,eAAe;IACC,MAAM,GAAtB,KAAK;IACuB,MAAM,SAAvB,MAAM;aA0F3B;gCAnI+B,6CAA6C;sBAJvD,kCAAkC"}
|
|
@@ -9,7 +9,8 @@ import { randomFromArray } from "../../core/math/random/randomFromArray.js";
|
|
|
9
9
|
import { randomIntegerBetween } from "../../core/math/random/randomIntegerBetween.js";
|
|
10
10
|
import { seededRandom } from "../../core/math/random/seededRandom.js";
|
|
11
11
|
import { StandardShadeMaterial } from "../renderer/material/StandardShadeMaterial.js";
|
|
12
|
-
import {
|
|
12
|
+
import { Transform64 } from "../../engine/ecs/transform/Transform64.js";
|
|
13
|
+
import { place_primitive } from "../renderer/scene/rows/place_primitive.js";
|
|
13
14
|
|
|
14
15
|
const default_mat = new StandardShadeMaterial();
|
|
15
16
|
|
|
@@ -36,7 +37,7 @@ const DEFAULT_REGION = new AABB3(-200, -200, -200, 200, 200, 200);
|
|
|
36
37
|
* does not scatter one shape at a hundred times the size of another by accident.
|
|
37
38
|
*
|
|
38
39
|
* @param {Object} options
|
|
39
|
-
* @param {
|
|
40
|
+
* @param {GPUSceneContext} options.scene_context the scene's context — its rows are where the instances go
|
|
40
41
|
* @param {MeshletGeometry[]} options.geometries not plain `Geometry` — see {@link BoxGeometry} and
|
|
41
42
|
* {@link meshlet_geometry_build_from_geometry}
|
|
42
43
|
* @param {ShadeMaterial[]} [options.materials]
|
|
@@ -47,7 +48,7 @@ const DEFAULT_REGION = new AABB3(-200, -200, -200, 200, 200, 200);
|
|
|
47
48
|
* scattering the same instances in the same places
|
|
48
49
|
*/
|
|
49
50
|
export function add_random_meshes({
|
|
50
|
-
|
|
51
|
+
scene_context,
|
|
51
52
|
geometries,
|
|
52
53
|
materials = [default_mat],
|
|
53
54
|
count = 10000,
|
|
@@ -56,7 +57,7 @@ export function add_random_meshes({
|
|
|
56
57
|
random = seededRandom()
|
|
57
58
|
}) {
|
|
58
59
|
|
|
59
|
-
assert.defined(
|
|
60
|
+
assert.defined(scene_context, 'scene_context');
|
|
60
61
|
assert.isArray(geometries, 'geometries');
|
|
61
62
|
assert.isArray(materials, 'materials');
|
|
62
63
|
|
|
@@ -71,9 +72,10 @@ export function add_random_meshes({
|
|
|
71
72
|
|
|
72
73
|
const geometry = geometries[i];
|
|
73
74
|
|
|
74
|
-
// Checked up front and by name, because the failure otherwise happens inside
|
|
75
|
-
// once per instance and says only that a flag was false. A plain `Geometry` is
|
|
76
|
-
// mistake — `make_box_geometry` and friends return one, and the renderer consumes
|
|
75
|
+
// Checked up front and by name, because the failure otherwise happens inside the
|
|
76
|
+
// placement once per instance and says only that a flag was false. A plain `Geometry` is
|
|
77
|
+
// the usual mistake — `make_box_geometry` and friends return one, and the renderer consumes
|
|
78
|
+
// meshlets.
|
|
77
79
|
assert.equal(
|
|
78
80
|
geometry?.isMeshletGeometry, true,
|
|
79
81
|
`geometries[${i}] is not a MeshletGeometry`
|
|
@@ -94,6 +96,10 @@ export function add_random_meshes({
|
|
|
94
96
|
|
|
95
97
|
const transform_position = new Vector3();
|
|
96
98
|
const transform_rotation = new Quaternion();
|
|
99
|
+
const transform = new Transform64();
|
|
100
|
+
|
|
101
|
+
/** @type {number[]} the entities placed */
|
|
102
|
+
const placed = [];
|
|
97
103
|
|
|
98
104
|
const scale_span = geometry_scale_range.max - geometry_scale_range.min;
|
|
99
105
|
|
|
@@ -119,15 +125,13 @@ export function add_random_meshes({
|
|
|
119
125
|
|
|
120
126
|
const material = randomFromArray(random, materials);
|
|
121
127
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
instance.transform_local.setScale(scale, scale, scale);
|
|
128
|
+
transform.setTranslation(transform_position.x, transform_position.y, transform_position.z);
|
|
129
|
+
transform.setRotation(transform_rotation.x, transform_rotation.y, transform_rotation.z, transform_rotation.w);
|
|
130
|
+
transform.setScale(scale, scale, scale);
|
|
131
|
+
transform.updateMatrix();
|
|
127
132
|
|
|
128
|
-
|
|
129
|
-
instance.updateMatrices();
|
|
130
|
-
|
|
131
|
-
batch.add(instance);
|
|
133
|
+
placed.push(place_primitive(scene_context, geometry, material, transform));
|
|
132
134
|
}
|
|
135
|
+
|
|
136
|
+
return placed;
|
|
133
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/avboit/main.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/avboit/main.js"],"names":[],"mappings":"AA+RA,uCAonBC;8BA/2BY,OAAO,yCAAyC,EAAE,eAAe"}
|