@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LIGHT_DATABASE_SPEC.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/LIGHT_DATABASE_SPEC.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LIGHT_DATABASE_SPEC.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/LIGHT_DATABASE_SPEC.js"],"names":[],"mappings":"AAUA,wDAiBG;sCAzBmC,0CAA0C"}
|
|
@@ -4,6 +4,7 @@ import { GPUDatabaseDefinition } from "../buffer/table/GPUDatabaseDefinition.js"
|
|
|
4
4
|
import { DIRECTIONAL_LIGHT_STRUCT } from "../shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js";
|
|
5
5
|
import { POINT_LIGHT_STRUCT } from "../shader/chunk/light/POINT_LIGHT_STRUCT.js";
|
|
6
6
|
import { SPOT_LIGHT_STRUCT } from "../shader/chunk/light/SPOT_LIGHT_STRUCT.js";
|
|
7
|
+
import { CSM_CASTER_RANGE_STRUCT } from "../shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js";
|
|
7
8
|
import { SHADOWMAP_CSM_CASCADE_COUNT } from "../shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js";
|
|
8
9
|
import { SHADOWMAP_VIEW_METADATA_STRUCT } from "../shadow/map/shader/SHADOWMAP_VIEW_METADATA_STRUCT.js";
|
|
9
10
|
|
|
@@ -18,5 +19,10 @@ export const LIGHT_DATABASE_SPEC = GPUDatabaseDefinition.from({
|
|
|
18
19
|
// SHADOWMAP_CSM_CASCADE_COUNT cascades for directional).
|
|
19
20
|
shadow_point: vec4f,
|
|
20
21
|
shadow_spot: SHADOWMAP_VIEW_METADATA_STRUCT,
|
|
21
|
-
shadow_directional: WebGPUArray.from(SHADOWMAP_VIEW_METADATA_STRUCT, SHADOWMAP_CSM_CASCADE_COUNT)
|
|
22
|
+
shadow_directional: WebGPUArray.from(SHADOWMAP_VIEW_METADATA_STRUCT, SHADOWMAP_CSM_CASCADE_COUNT),
|
|
23
|
+
|
|
24
|
+
// per directional shadow map, what the GPU measured of the casters in front of each cascade —
|
|
25
|
+
// written by the caster-range pass, read back to fit the next frame's near planes; one row per
|
|
26
|
+
// map, claimed and released by the shadow context
|
|
27
|
+
shadow_csm_caster_range: CSM_CASTER_RANGE_STRUCT,
|
|
22
28
|
});
|
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
* @typedef {import("../texture/ShadeTexture.js").ShadeTexture} ShadeTexture
|
|
3
3
|
* @typedef {import("./model/Light.js").Light} Light
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* The lights of a scene, each at an entity, and the environment they indirect from.
|
|
7
|
+
*
|
|
8
|
+
* A light is placed by naming the entity it stands at: the entity's `transforms` row is where the
|
|
9
|
+
* GPU reads the light's pose from, and the scene's GPU context holds that row on the collection's
|
|
10
|
+
* behalf for as long as the light is here. The collection itself is CPU data — the renderer's
|
|
11
|
+
* mirror of it (`GPULightCollection`) is rebuilt whenever {@link version} moves, which adding and
|
|
12
|
+
* removing do on their own and a change in place does through {@link needsUpdate}.
|
|
13
|
+
*/
|
|
5
14
|
export class LightCollection {
|
|
6
15
|
/**
|
|
7
16
|
*
|
|
@@ -29,10 +38,17 @@ export class LightCollection {
|
|
|
29
38
|
*/
|
|
30
39
|
set needsUpdate(v: boolean);
|
|
31
40
|
/**
|
|
41
|
+
* Put a light in the scene, at an entity.
|
|
42
|
+
*
|
|
43
|
+
* The entity is where the light is: its `transforms` row is what the GPU reads the light's pose
|
|
44
|
+
* from. The light's own {@link Light#transform} is the CPU's copy, and is the entity's
|
|
45
|
+
* `Transform64` when the two were placed together — `place_light` does that for a caller with
|
|
46
|
+
* no ECS.
|
|
32
47
|
*
|
|
33
48
|
* @param {Light} light
|
|
49
|
+
* @param {number} entity
|
|
34
50
|
*/
|
|
35
|
-
add(light: Light): void;
|
|
51
|
+
add(light: Light, entity: number): void;
|
|
36
52
|
/**
|
|
37
53
|
* Remove a light. Returns true if it was found and dropped.
|
|
38
54
|
*
|
|
@@ -40,6 +56,18 @@ export class LightCollection {
|
|
|
40
56
|
* @returns {boolean}
|
|
41
57
|
*/
|
|
42
58
|
remove(light: Light): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* @param {Light} light
|
|
61
|
+
* @returns {boolean}
|
|
62
|
+
*/
|
|
63
|
+
has(light: Light): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* The entity a light stands at.
|
|
66
|
+
*
|
|
67
|
+
* @param {Light} light
|
|
68
|
+
* @returns {number|undefined} undefined for a light that is not here
|
|
69
|
+
*/
|
|
70
|
+
entity_of(light: Light): number | undefined;
|
|
43
71
|
#private;
|
|
44
72
|
}
|
|
45
73
|
export type ShadeTexture = import("../texture/ShadeTexture.js").ShadeTexture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LightCollection.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/LightCollection.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;
|
|
1
|
+
{"version":3,"file":"LightCollection.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/LightCollection.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;;;GAQG;AACH;IAeI;;;OAGG;IACH,mDAEC;IAgBD;;;OAGG;IACH,sEAMC;IAlBD;;;OAGG;IACH,qEAEC;IAiBD;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,4BAIC;IAED;;;;;;;;;;OAUG;IACH,WAHW,KAAK,UACL,MAAM,QAYhB;IAED;;;;;OAKG;IACH,cAHW,KAAK,GACH,OAAO,CAYnB;IAED;;;OAGG;IACH,WAHW,KAAK,GACH,OAAO,CAInB;IAED;;;;;OAKG;IACH,iBAHW,KAAK,GACH,MAAM,GAAC,SAAS,CAI5B;;CACJ;2BA7IY,OAAO,4BAA4B,EAAE,YAAY;oBACjD,OAAO,kBAAkB,EAAE,KAAK"}
|
|
@@ -6,6 +6,15 @@ import { array_remove_first } from "../../../core/collection/array/array_remove_
|
|
|
6
6
|
* @typedef {import("./model/Light.js").Light} Light
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* The lights of a scene, each at an entity, and the environment they indirect from.
|
|
11
|
+
*
|
|
12
|
+
* A light is placed by naming the entity it stands at: the entity's `transforms` row is where the
|
|
13
|
+
* GPU reads the light's pose from, and the scene's GPU context holds that row on the collection's
|
|
14
|
+
* behalf for as long as the light is here. The collection itself is CPU data — the renderer's
|
|
15
|
+
* mirror of it (`GPULightCollection`) is rebuilt whenever {@link version} moves, which adding and
|
|
16
|
+
* removing do on their own and a change in place does through {@link needsUpdate}.
|
|
17
|
+
*/
|
|
9
18
|
export class LightCollection {
|
|
10
19
|
|
|
11
20
|
/**
|
|
@@ -14,6 +23,13 @@ export class LightCollection {
|
|
|
14
23
|
*/
|
|
15
24
|
#elements = [];
|
|
16
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The entity each light stands at.
|
|
28
|
+
*
|
|
29
|
+
* @type {Map<Light, number>}
|
|
30
|
+
*/
|
|
31
|
+
#entities = new Map();
|
|
32
|
+
|
|
17
33
|
/**
|
|
18
34
|
*
|
|
19
35
|
* @returns {Light[]}
|
|
@@ -70,11 +86,24 @@ export class LightCollection {
|
|
|
70
86
|
}
|
|
71
87
|
|
|
72
88
|
/**
|
|
89
|
+
* Put a light in the scene, at an entity.
|
|
90
|
+
*
|
|
91
|
+
* The entity is where the light is: its `transforms` row is what the GPU reads the light's pose
|
|
92
|
+
* from. The light's own {@link Light#transform} is the CPU's copy, and is the entity's
|
|
93
|
+
* `Transform64` when the two were placed together — `place_light` does that for a caller with
|
|
94
|
+
* no ECS.
|
|
73
95
|
*
|
|
74
96
|
* @param {Light} light
|
|
97
|
+
* @param {number} entity
|
|
75
98
|
*/
|
|
76
|
-
add(light) {
|
|
99
|
+
add(light, entity) {
|
|
100
|
+
assert.defined(light, 'light');
|
|
101
|
+
assert.equal(light.isLight, true, 'light.isLight !== true');
|
|
102
|
+
assert.isNonNegativeInteger(entity, 'entity');
|
|
103
|
+
assert.equal(this.#entities.has(light), false, 'the light is already in the scene');
|
|
104
|
+
|
|
77
105
|
this.#elements.push(light);
|
|
106
|
+
this.#entities.set(light, entity);
|
|
78
107
|
|
|
79
108
|
this.#version++;
|
|
80
109
|
}
|
|
@@ -89,9 +118,29 @@ export class LightCollection {
|
|
|
89
118
|
const removed = array_remove_first(this.#elements, light);
|
|
90
119
|
|
|
91
120
|
if (removed) {
|
|
121
|
+
this.#entities.delete(light);
|
|
122
|
+
|
|
92
123
|
this.#version++;
|
|
93
124
|
}
|
|
94
125
|
|
|
95
126
|
return removed;
|
|
96
127
|
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @param {Light} light
|
|
131
|
+
* @returns {boolean}
|
|
132
|
+
*/
|
|
133
|
+
has(light) {
|
|
134
|
+
return this.#entities.has(light);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* The entity a light stands at.
|
|
139
|
+
*
|
|
140
|
+
* @param {Light} light
|
|
141
|
+
* @returns {number|undefined} undefined for a light that is not here
|
|
142
|
+
*/
|
|
143
|
+
entity_of(light) {
|
|
144
|
+
return this.#entities.get(light);
|
|
145
|
+
}
|
|
97
146
|
}
|
|
@@ -23,8 +23,8 @@ export function make_sunlight({
|
|
|
23
23
|
q.fromUnitVectors(Vector3.forward, direction.clone().normalize());
|
|
24
24
|
q.normalize();
|
|
25
25
|
|
|
26
|
-
light.
|
|
27
|
-
light.
|
|
26
|
+
light.transform.setRotation(q.x, q.y, q.z, q.w);
|
|
27
|
+
light.transform.updateMatrix();
|
|
28
28
|
|
|
29
29
|
// light.color is treated as chromaticity — its luminance is normalized away
|
|
30
30
|
// at GPU upload (see light_pack_color), so we just hand it the kelvin RGB
|
|
@@ -1,4 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A light: what it is and how bright, not where.
|
|
3
|
+
*
|
|
4
|
+
* Where it is comes from the entity it is placed at — {@link ../LightCollection.js#add} takes the
|
|
5
|
+
* light and the entity, and the GPU reads the light's pose from that entity's `transforms` row
|
|
6
|
+
* every frame (`shader_refresh_light_poses`), so a light under an animated joint follows it with
|
|
7
|
+
* nothing copied through the CPU. {@link transform} is the CPU's copy of that pose — the entity's
|
|
8
|
+
* own `Transform64`, the one object, when the light was placed by `LightSystem` or
|
|
9
|
+
* `place_light` — read by what the CPU builds from a light: the shadow cameras, the serializer.
|
|
10
|
+
*/
|
|
11
|
+
export class Light {
|
|
12
|
+
/**
|
|
13
|
+
* For a debugger, a serializer, and a shadow map's label; nothing draws differently for it.
|
|
14
|
+
*
|
|
15
|
+
* @type {string}
|
|
16
|
+
*/
|
|
17
|
+
name: string;
|
|
18
|
+
/**
|
|
19
|
+
* The light's world pose: its position, and the rotation whose +Z it shines along.
|
|
20
|
+
*
|
|
21
|
+
* The entity's own `Transform64` when the light is placed at an entity that has one, so that
|
|
22
|
+
* the row and this are written from one object and there is no copy to fall behind. Exact for
|
|
23
|
+
* an entity the CPU composes; for one the GPU composes it is what the CPU last knew, which the
|
|
24
|
+
* row is not — the GPU reads the row.
|
|
25
|
+
*
|
|
26
|
+
* @type {Transform64}
|
|
27
|
+
*/
|
|
28
|
+
transform: Transform64;
|
|
2
29
|
/**
|
|
3
30
|
* Chromaticity of the light, in linear Rec.709 RGB. Only the relative
|
|
4
31
|
* R:G:B ratio is meaningful — the absolute scale (luminance) is normalized
|
|
@@ -52,6 +79,6 @@ export class Light extends Node3D {
|
|
|
52
79
|
*/
|
|
53
80
|
readonly isLight: boolean;
|
|
54
81
|
}
|
|
55
|
-
import {
|
|
82
|
+
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
56
83
|
import { Color } from "../../../../core/color/Color.js";
|
|
57
84
|
//# sourceMappingURL=Light.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Light.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/model/Light.js"],"names":[],"mappings":"AAGA;
|
|
1
|
+
{"version":3,"file":"Light.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/model/Light.js"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH;IACI;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;;;;;;;OASG;IACH,WAFU,WAAW,CAES;IAE9B;;;;;;;;;OASG;IACH,OAFU,KAAK,CAEY;IAE3B;;;;;;;;;;;;OAYG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX;;;;OAIG;IACH,oBAFU,MAAM,CAEO;IAEvB;;;OAGG;IACH,cAFU,OAAO,CAEG;IAEpB;;;OAGG;IACH,mBAFU,MAAM,CAEO;IAEvB,mBAEC;IAGL;;;OAGG;IACH,kBAFU,OAAO,CAEM;CANtB;4BAvF2B,iDAAiD;sBADvD,iCAAiC"}
|
|
@@ -1,7 +1,35 @@
|
|
|
1
1
|
import { Color } from "../../../../core/color/Color.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* A light: what it is and how bright, not where.
|
|
6
|
+
*
|
|
7
|
+
* Where it is comes from the entity it is placed at — {@link ../LightCollection.js#add} takes the
|
|
8
|
+
* light and the entity, and the GPU reads the light's pose from that entity's `transforms` row
|
|
9
|
+
* every frame (`shader_refresh_light_poses`), so a light under an animated joint follows it with
|
|
10
|
+
* nothing copied through the CPU. {@link transform} is the CPU's copy of that pose — the entity's
|
|
11
|
+
* own `Transform64`, the one object, when the light was placed by `LightSystem` or
|
|
12
|
+
* `place_light` — read by what the CPU builds from a light: the shadow cameras, the serializer.
|
|
13
|
+
*/
|
|
14
|
+
export class Light {
|
|
15
|
+
/**
|
|
16
|
+
* For a debugger, a serializer, and a shadow map's label; nothing draws differently for it.
|
|
17
|
+
*
|
|
18
|
+
* @type {string}
|
|
19
|
+
*/
|
|
20
|
+
name = "";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The light's world pose: its position, and the rotation whose +Z it shines along.
|
|
24
|
+
*
|
|
25
|
+
* The entity's own `Transform64` when the light is placed at an entity that has one, so that
|
|
26
|
+
* the row and this are written from one object and there is no copy to fall behind. Exact for
|
|
27
|
+
* an entity the CPU composes; for one the GPU composes it is what the CPU last knew, which the
|
|
28
|
+
* row is not — the GPU reads the row.
|
|
29
|
+
*
|
|
30
|
+
* @type {Transform64}
|
|
31
|
+
*/
|
|
32
|
+
transform = new Transform64();
|
|
5
33
|
|
|
6
34
|
/**
|
|
7
35
|
* Chromaticity of the light, in linear Rec.709 RGB. Only the relative
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* any other light_record_* helper.
|
|
8
8
|
*
|
|
9
9
|
* @param {DirectionalLight} light
|
|
10
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
11
|
+
* reads the direction from every frame; the one written here is the CPU's copy of it
|
|
10
12
|
* @return {*} DIRECTIONAL_LIGHT_STRUCT-shaped record
|
|
11
13
|
*/
|
|
12
|
-
export function light_record_directional(light: DirectionalLight): any;
|
|
14
|
+
export function light_record_directional(light: DirectionalLight, transform_row: number): any;
|
|
13
15
|
//# sourceMappingURL=light_record_directional.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light_record_directional.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_directional.js"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"light_record_directional.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_directional.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,iFAJW,MAAM,OAyBhB"}
|
|
@@ -13,14 +13,16 @@ const _color = new Float32Array(3);
|
|
|
13
13
|
* any other light_record_* helper.
|
|
14
14
|
*
|
|
15
15
|
* @param {DirectionalLight} light
|
|
16
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
17
|
+
* reads the direction from every frame; the one written here is the CPU's copy of it
|
|
16
18
|
* @return {*} DIRECTIONAL_LIGHT_STRUCT-shaped record
|
|
17
19
|
*/
|
|
18
|
-
export function light_record_directional(light) {
|
|
19
|
-
const d = light.forward;
|
|
20
|
+
export function light_record_directional(light, transform_row) {
|
|
21
|
+
const d = light.transform.forward;
|
|
20
22
|
|
|
21
|
-
_direction[0] = d
|
|
22
|
-
_direction[1] = d
|
|
23
|
-
_direction[2] = d
|
|
23
|
+
_direction[0] = d[0];
|
|
24
|
+
_direction[1] = d[1];
|
|
25
|
+
_direction[2] = d[2];
|
|
24
26
|
|
|
25
27
|
light_pack_color(_color, 0, light.color, light.intensity);
|
|
26
28
|
|
|
@@ -34,5 +36,6 @@ export function light_record_directional(light) {
|
|
|
34
36
|
flags: light_flags_pack(has_shadow),
|
|
35
37
|
near_clip_distance: light.near_clip_distance,
|
|
36
38
|
shadow_id: has_shadow ? shadowmap_id : 0,
|
|
39
|
+
node: transform_row,
|
|
37
40
|
};
|
|
38
41
|
}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* any other light_record_* helper.
|
|
8
8
|
*
|
|
9
9
|
* @param {PointLight} light
|
|
10
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
11
|
+
* reads the pose from every frame; the position written here is the CPU's copy of it
|
|
10
12
|
* @return {*} POINT_LIGHT_STRUCT-shaped record
|
|
11
13
|
*/
|
|
12
|
-
export function light_record_point(light: PointLight): any;
|
|
14
|
+
export function light_record_point(light: PointLight, transform_row: number): any;
|
|
13
15
|
//# sourceMappingURL=light_record_point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light_record_point.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_point.js"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"light_record_point.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_point.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,qEAJW,MAAM,OA0BhB"}
|
|
@@ -13,10 +13,12 @@ const _color = new Float32Array(3);
|
|
|
13
13
|
* any other light_record_* helper.
|
|
14
14
|
*
|
|
15
15
|
* @param {PointLight} light
|
|
16
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
17
|
+
* reads the pose from every frame; the position written here is the CPU's copy of it
|
|
16
18
|
* @return {*} POINT_LIGHT_STRUCT-shaped record
|
|
17
19
|
*/
|
|
18
|
-
export function light_record_point(light) {
|
|
19
|
-
const t = light.
|
|
20
|
+
export function light_record_point(light, transform_row) {
|
|
21
|
+
const t = light.transform;
|
|
20
22
|
|
|
21
23
|
_position[0] = t.translation_x;
|
|
22
24
|
_position[1] = t.translation_y;
|
|
@@ -35,5 +37,6 @@ export function light_record_point(light) {
|
|
|
35
37
|
flags: light_flags_pack(has_shadow),
|
|
36
38
|
near_clip_distance: light.near_clip_distance,
|
|
37
39
|
shadow_id: has_shadow ? shadowmap_id : 0,
|
|
40
|
+
node: transform_row,
|
|
38
41
|
};
|
|
39
42
|
}
|
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
* any other light_record_* helper.
|
|
8
8
|
*
|
|
9
9
|
* @param {SpotLight} light
|
|
10
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
11
|
+
* reads the pose from every frame; the position and direction written here are the CPU's
|
|
12
|
+
* copy of it
|
|
10
13
|
* @return {*} SPOT_LIGHT_STRUCT-shaped record
|
|
11
14
|
*/
|
|
12
|
-
export function light_record_spot(light: SpotLight): any;
|
|
15
|
+
export function light_record_spot(light: SpotLight, transform_row: number): any;
|
|
13
16
|
//# sourceMappingURL=light_record_spot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light_record_spot.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_spot.js"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"light_record_spot.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/model/io/light_record_spot.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,mEALW,MAAM,OAoChB"}
|
|
@@ -14,19 +14,22 @@ const _color = new Float32Array(3);
|
|
|
14
14
|
* any other light_record_* helper.
|
|
15
15
|
*
|
|
16
16
|
* @param {SpotLight} light
|
|
17
|
+
* @param {number} transform_row the `transforms` row of the light's entity, one on — where the GPU
|
|
18
|
+
* reads the pose from every frame; the position and direction written here are the CPU's
|
|
19
|
+
* copy of it
|
|
17
20
|
* @return {*} SPOT_LIGHT_STRUCT-shaped record
|
|
18
21
|
*/
|
|
19
|
-
export function light_record_spot(light) {
|
|
20
|
-
const t = light.
|
|
21
|
-
const d =
|
|
22
|
+
export function light_record_spot(light, transform_row) {
|
|
23
|
+
const t = light.transform;
|
|
24
|
+
const d = t.forward;
|
|
22
25
|
|
|
23
26
|
_position[0] = t.translation_x;
|
|
24
27
|
_position[1] = t.translation_y;
|
|
25
28
|
_position[2] = t.translation_z;
|
|
26
29
|
|
|
27
|
-
_direction[0] = d
|
|
28
|
-
_direction[1] = d
|
|
29
|
-
_direction[2] = d
|
|
30
|
+
_direction[0] = d[0];
|
|
31
|
+
_direction[1] = d[1];
|
|
32
|
+
_direction[2] = d[2];
|
|
30
33
|
|
|
31
34
|
light_pack_color(_color, 0, light.color, light.intensity);
|
|
32
35
|
|
|
@@ -45,5 +48,6 @@ export function light_record_spot(light) {
|
|
|
45
48
|
flags: light_flags_pack(has_shadow),
|
|
46
49
|
near_clip_distance: light.near_clip_distance,
|
|
47
50
|
shadow_id: has_shadow ? shadowmap_id : 0,
|
|
51
|
+
node: transform_row,
|
|
48
52
|
};
|
|
49
53
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Give a light an entity to stand at, and put it in the scene's lights there.
|
|
3
|
+
*
|
|
4
|
+
* A light is where its entity's `transforms` row says, so a light needs an entity: this makes one
|
|
5
|
+
* in the scene's dataset, carrying the light's own {@link Light#transform} as its `Transform64` —
|
|
6
|
+
* the one object, so what the light was aimed with is what the row is written from — and
|
|
7
|
+
* registers the light at it. For a caller with no ECS of its own: a playground, a preview, a
|
|
8
|
+
* loader. An engine places its lights through `LightSystem`, which does the same for an entity it
|
|
9
|
+
* was handed.
|
|
10
|
+
*
|
|
11
|
+
* @param {import("../scene/Scene.js").Scene} scene bound to a dataset
|
|
12
|
+
* @param {import("./model/Light.js").Light} light
|
|
13
|
+
* @returns {number} the entity
|
|
14
|
+
*/
|
|
15
|
+
export function place_light(scene: import("../scene/Scene.js").Scene, light: import("./model/Light.js").Light): number;
|
|
16
|
+
//# sourceMappingURL=place_light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"place_light.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/place_light.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,mCAJW,OAAO,mBAAmB,EAAE,KAAK,SACjC,OAAO,kBAAkB,EAAE,KAAK,GAC9B,MAAM,CAoBlB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import { Transform64 } from "../../../engine/ecs/transform/Transform64.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Give a light an entity to stand at, and put it in the scene's lights there.
|
|
6
|
+
*
|
|
7
|
+
* A light is where its entity's `transforms` row says, so a light needs an entity: this makes one
|
|
8
|
+
* in the scene's dataset, carrying the light's own {@link Light#transform} as its `Transform64` —
|
|
9
|
+
* the one object, so what the light was aimed with is what the row is written from — and
|
|
10
|
+
* registers the light at it. For a caller with no ECS of its own: a playground, a preview, a
|
|
11
|
+
* loader. An engine places its lights through `LightSystem`, which does the same for an entity it
|
|
12
|
+
* was handed.
|
|
13
|
+
*
|
|
14
|
+
* @param {import("../scene/Scene.js").Scene} scene bound to a dataset
|
|
15
|
+
* @param {import("./model/Light.js").Light} light
|
|
16
|
+
* @returns {number} the entity
|
|
17
|
+
*/
|
|
18
|
+
export function place_light(scene, light) {
|
|
19
|
+
assert.defined(scene, 'scene');
|
|
20
|
+
assert.equal(scene.isScene, true, 'scene.isScene !== true');
|
|
21
|
+
assert.equal(light.isLight, true, 'light.isLight !== true');
|
|
22
|
+
|
|
23
|
+
const dataset = scene.dataset;
|
|
24
|
+
|
|
25
|
+
assert.ok(dataset !== null && dataset !== undefined, 'the scene names no dataset, and a light is an entity of one');
|
|
26
|
+
|
|
27
|
+
dataset.registerManyComponentTypes([Transform64]);
|
|
28
|
+
|
|
29
|
+
const entity = dataset.createEntity();
|
|
30
|
+
|
|
31
|
+
dataset.addComponentToEntity(entity, light.transform);
|
|
32
|
+
|
|
33
|
+
scene.lights.add(light, entity);
|
|
34
|
+
|
|
35
|
+
return entity;
|
|
36
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const REFRESH_LIGHT_POSES_WORKGROUP_SIZE: number;
|
|
2
|
+
/**
|
|
3
|
+
* Which light table a workgroup along `y` of the dispatch walks.
|
|
4
|
+
*/
|
|
5
|
+
export type REFRESH_LIGHT_POSES_TABLE = number;
|
|
6
|
+
/**
|
|
7
|
+
* Which light table a workgroup along `y` of the dispatch walks.
|
|
8
|
+
*
|
|
9
|
+
* @readonly
|
|
10
|
+
* @enum {number}
|
|
11
|
+
*/
|
|
12
|
+
export const REFRESH_LIGHT_POSES_TABLE: Readonly<{
|
|
13
|
+
POINT: 0;
|
|
14
|
+
SPOT: 1;
|
|
15
|
+
DIRECTIONAL: 2;
|
|
16
|
+
}>;
|
|
17
|
+
/** The dispatch is three tables wide. */
|
|
18
|
+
export const REFRESH_LIGHT_POSES_TABLE_COUNT: 3;
|
|
19
|
+
/**
|
|
20
|
+
* Write every light record's pose from the `transforms` row it names — after the hierarchy pass
|
|
21
|
+
* has composed that row's `global`.
|
|
22
|
+
*
|
|
23
|
+
* **This is what makes a light's pose the GPU's.** A light is an entity, and its record's `node`
|
|
24
|
+
* is that entity's row. The row's `global` is composed on the GPU from its TRS and its parent
|
|
25
|
+
* chain, and once an ancestor can be GPU-driven — a torch in an animated hand — nothing on the
|
|
26
|
+
* CPU holds the world transform the record would need. So the pose is taken where the transform
|
|
27
|
+
* is: a point light's `position` is the row's translation, a directional light's `direction` is
|
|
28
|
+
* the row's +Z, a spot light's both; once per light per frame, over each table's pages rather
|
|
29
|
+
* than over `[0, count)`, because rows are addresses and a live one can sit above any number of
|
|
30
|
+
* holes.
|
|
31
|
+
*
|
|
32
|
+
* The CPU still writes the same fields when it builds a record, from the entity's own transform
|
|
33
|
+
* — exact for an entity the CPU composes, and what a pass that runs before this one in a frame
|
|
34
|
+
* reads. This pass is what makes them right for the entity the CPU does not compose, and it runs
|
|
35
|
+
* every frame because the hierarchy pass does.
|
|
36
|
+
*
|
|
37
|
+
* Runs after the hierarchy pass and before anything reads a light. The dispatch is
|
|
38
|
+
* {@link REFRESH_LIGHT_POSES_TABLE_COUNT} workgroups wide along `y`, one table each, and along
|
|
39
|
+
* `x` as many as the widest table's {@link GPUTypedTable#dispatch_group_count} at
|
|
40
|
+
* {@link REFRESH_LIGHT_POSES_WORKGROUP_SIZE}; a workgroup past a table's pages bails at setup.
|
|
41
|
+
*/
|
|
42
|
+
export const shader_refresh_light_poses: ComputeShader;
|
|
43
|
+
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
44
|
+
//# sourceMappingURL=shader_refresh_light_poses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_refresh_light_poses.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/light/shader_refresh_light_poses.js"],"names":[],"mappings":"AASA,wDAAoF;;;;wCAM1E,MAAM;AAJhB;;;;;GAKG;AACH;;;;GAIG;AAEH,yCAAyC;AACzC,gDAAiD;AAoBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,uDAsFG;8BArJ2B,4BAA4B"}
|