@woosh/meep-engine 3.11.3 → 3.13.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/README.md +14 -18
- package/editor/SelectionVisualizer.js +127 -127
- package/editor/entity_world_bounds.js +27 -27
- package/editor/particles/rebuildParticleEmitter.js +31 -31
- package/editor/process/SymbolicDisplayProcess.js +1 -1
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
- package/editor/prototypeEditorShell.js +156 -156
- package/editor/selection/editor_pick.js +130 -130
- package/editor/selection/screen_rect_frustum.js +119 -119
- package/editor/tools/v2/TransformControls.js +971 -971
- package/package.json +1 -1
- package/src/engine/Engine.d.ts +3 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +726 -726
- package/src/engine/EngineHarness.d.ts +1 -1
- package/src/engine/EngineHarness.js +590 -590
- package/src/engine/ecs/HIERARCHY_REVIEW.md +717 -717
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.d.ts +1 -1
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.js +27 -27
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -5
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.js +790 -790
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -129
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +1 -1
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -28
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +428 -428
- package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
- package/src/engine/graphics/ecs/water/Water.js +104 -104
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +65 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationGraphSystem.js +329 -0
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts +6 -61
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem3.js +6 -325
- package/src/engine/graphics3/AnimationSystem.d.ts +76 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationSystem.js +352 -0
- package/src/engine/graphics3/AnimationSystem3.d.ts +6 -72
- package/src/engine/graphics3/AnimationSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem3.js +6 -348
- package/src/engine/graphics3/CameraSystem.d.ts +49 -0
- package/src/engine/graphics3/CameraSystem.d.ts.map +1 -0
- package/src/engine/graphics3/CameraSystem.js +170 -0
- package/src/engine/graphics3/CameraSystem3.d.ts +6 -45
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +6 -166
- package/src/engine/graphics3/DebugDrawSystem.d.ts +72 -0
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DebugDrawSystem.js +205 -0
- package/src/engine/graphics3/DebugDrawSystem3.d.ts +6 -68
- package/src/engine/graphics3/DebugDrawSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem3.js +6 -201
- package/src/engine/graphics3/DecalSystem.d.ts +81 -0
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DecalSystem.js +441 -0
- package/src/engine/graphics3/DecalSystem3.d.ts +6 -77
- package/src/engine/graphics3/DecalSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem3.js +6 -437
- package/src/engine/graphics3/FogOfWarSystem.d.ts +74 -0
- package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -0
- package/src/engine/graphics3/FogOfWarSystem.js +265 -0
- package/src/engine/graphics3/FogOfWarSystem3.d.ts +6 -70
- package/src/engine/graphics3/FogOfWarSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/FogOfWarSystem3.js +6 -261
- package/src/engine/graphics3/GraphicsEngine.d.ts +340 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -0
- package/src/engine/graphics3/GraphicsEngine.js +790 -0
- package/src/engine/graphics3/GraphicsEngine3.d.ts +6 -336
- package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine3.js +6 -786
- package/src/engine/graphics3/HighlightSystem.d.ts +82 -0
- package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/HighlightSystem.js +241 -0
- package/src/engine/graphics3/HighlightSystem3.d.ts +6 -78
- package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightSystem3.js +6 -237
- package/src/engine/graphics3/LightSystem.d.ts +40 -0
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/LightSystem.js +211 -0
- package/src/engine/graphics3/LightSystem3.d.ts +6 -36
- package/src/engine/graphics3/LightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem3.js +6 -207
- package/src/engine/graphics3/MeshSystem.d.ts +106 -0
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -0
- package/src/engine/graphics3/MeshSystem.js +647 -0
- package/src/engine/graphics3/MeshSystem3.d.ts +6 -102
- package/src/engine/graphics3/MeshSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem3.js +6 -642
- package/src/engine/graphics3/ParticipatingMedia.d.ts +2 -2
- package/src/engine/graphics3/ParticipatingMedia.js +203 -203
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +87 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.js +184 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +6 -83
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem3.js +6 -180
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts +76 -0
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticleEmitterSystem.js +289 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +6 -72
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +6 -285
- package/src/engine/graphics3/PathDisplaySystem.d.ts +70 -0
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -0
- package/src/engine/graphics3/PathDisplaySystem.js +309 -0
- package/src/engine/graphics3/PathDisplaySystem3.d.ts +6 -66
- package/src/engine/graphics3/PathDisplaySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem3.js +6 -305
- package/src/engine/graphics3/Pickable.d.ts +1 -1
- package/src/engine/graphics3/Pickable.js +65 -65
- package/src/engine/graphics3/PickingQuery.d.ts +1 -1
- package/src/engine/graphics3/PickingQuery.js +48 -48
- package/src/engine/graphics3/PickingSystem.d.ts +67 -0
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -0
- package/src/engine/graphics3/PickingSystem.js +273 -0
- package/src/engine/graphics3/PickingSystem3.d.ts +6 -63
- package/src/engine/graphics3/PickingSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem3.js +6 -269
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +47 -0
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -0
- package/src/engine/graphics3/ShadedGeometrySystem.js +169 -0
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts +6 -43
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem3.js +6 -165
- package/src/engine/graphics3/TerrainSystem.d.ts +80 -0
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TerrainSystem.js +566 -0
- package/src/engine/graphics3/TerrainSystem3.d.ts +6 -76
- package/src/engine/graphics3/TerrainSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem3.js +6 -562
- package/src/engine/graphics3/TooltipComponentSystem.d.ts +65 -0
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TooltipComponentSystem.js +328 -0
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts +6 -61
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem3.js +6 -324
- package/src/engine/graphics3/Trail3DSystem.d.ts +73 -0
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -0
- package/src/engine/graphics3/Trail3DSystem.js +221 -0
- package/src/engine/graphics3/Trail3DSystem3.d.ts +6 -69
- package/src/engine/graphics3/Trail3DSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem3.js +6 -217
- package/src/engine/graphics3/VolumetricLightMap.d.ts +2 -2
- package/src/engine/graphics3/VolumetricLightMap.js +2 -2
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts +98 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.js +261 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +6 -94
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/VolumetricLightMapSystem3.js +10 -261
- package/src/engine/graphics3/WaterSystem.d.ts +59 -0
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/WaterSystem.js +293 -0
- package/src/engine/graphics3/WaterSystem3.d.ts +6 -55
- package/src/engine/graphics3/WaterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem3.js +6 -289
- package/src/engine/graphics3/animation/AnimationGraphController.d.ts +1 -1
- package/src/engine/graphics3/animation/AnimationGraphController.js +518 -518
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +263 -263
- package/src/engine/graphics3/animation/ClipPlayback.d.ts +2 -2
- package/src/engine/graphics3/animation/ClipPlayback.js +84 -84
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
- package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
- package/src/engine/graphics3/decal/graph_build_decal_clusters.js +6 -8
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts +0 -7
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts +0 -4
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
- package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
- package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
- package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
- package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +2 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +750 -0
- package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +801 -994
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
- package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
- package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
- package/src/shade/device/timing/GPUTimerArray.js +261 -289
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
- package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
- package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
- package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
- package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
- package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -2
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -2
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +135 -134
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
- package/src/shade/renderer/Renderer.d.ts +0 -6
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +0 -29
- package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
- package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
- package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_tick.js +4 -2
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +3 -2
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +4 -2
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +24 -10
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +3 -2
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +5 -2
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +0 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
- package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +16 -22
- package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +11 -5
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +43 -42
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
- package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
- package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
- package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +5 -2
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +3 -11
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +6 -4
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +9 -6
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +10 -10
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +4 -2
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -83
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +4 -2
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -85
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -192
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +4 -7
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -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 +234 -219
- package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
- package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
- package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
- package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
- package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
- 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 +57 -58
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +5 -3
- package/src/shade/renderer/particles/prototypeParticleSystem.js +5 -7
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +27 -13
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +4 -4
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +18 -7
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +47 -21
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
- package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
- package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +19 -17
- package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +5 -8
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +4 -2
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -2
- package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +3 -2
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
- package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
- package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +0 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +6 -2
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +4 -2
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +5 -2
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
- package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
- package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +5 -3
- package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resample.js +4 -3
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +4 -3
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +3 -7
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -145
- package/src/shade/renderer/shader/ComputeShader.d.ts +26 -5
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +347 -296
- package/src/shade/renderer/shader/ImageShader.js +217 -217
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +20 -0
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +14 -18
- package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
- package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +6 -4
- package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +11 -12
- package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +3 -2
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +14 -19
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +3 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +3 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
- package/src/shade/renderer/water/shader_water.js +246 -246
- package/src/shade/vitest.setup.mjs +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
- package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
- package/src/shade/wgsl/validate_wgsl_source.js +8 -3
- package/src/view/minimap/Minimap.d.ts +2 -2
- package/src/view/minimap/Minimap.d.ts.map +1 -1
- package/src/view/minimap/Minimap.js +225 -225
- package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
- package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
- package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
- package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
|
@@ -1,156 +1,156 @@
|
|
|
1
|
-
import './style/editor.scss';
|
|
2
|
-
|
|
3
|
-
import Vector2 from "../src/core/geom/Vector2.js";
|
|
4
|
-
import { GameAssetType } from "../src/engine/asset/GameAssetType.js";
|
|
5
|
-
import { ArrayBufferLoader } from "../src/engine/asset/loaders/ArrayBufferLoader.js";
|
|
6
|
-
import {
|
|
7
|
-
GLTFSceneBundleAssetLoader
|
|
8
|
-
} from "../src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js";
|
|
9
|
-
import { ImageBitmapAssetLoader } from "../src/engine/asset/loaders/image/ImageBitmapAssetLoader.js";
|
|
10
|
-
import { ImageRGBADataLoader } from "../src/engine/asset/loaders/image/ImageRGBADataLoader.js";
|
|
11
|
-
import { load_model_scene_bundle } from "../src/engine/asset/load_model_scene_bundle.js";
|
|
12
|
-
import { ParentEntitySystem } from "../src/engine/ecs/parent/ParentEntitySystem.js";
|
|
13
|
-
import { obtainTerrain } from "../src/engine/ecs/terrain/util/obtainTerrain.js";
|
|
14
|
-
import { populateEngineSerializationRegistry } from "../src/engine/ecs/storage/populateEngineSerializationRegistry.js";
|
|
15
|
-
import { TransformAttachmentSystem } from "../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js";
|
|
16
|
-
import { EngineHarness } from "../src/engine/EngineHarness.js";
|
|
17
|
-
import TopDownCameraController from "../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
} from "../src/engine/graphics3/
|
|
23
|
-
import {
|
|
24
|
-
import { enableEditor } from "./enableEditor.js";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Point the camera at the middle of the terrain, standing off by its own extent.
|
|
28
|
-
*
|
|
29
|
-
* The harness anchors terrain at the world origin and aims the camera at the origin too,
|
|
30
|
-
* so the default view sits on the terrain's corner with three quadrants of empty space —
|
|
31
|
-
* and every orbit pivots on that corner. The editor camera inherits this state when it
|
|
32
|
-
* takes over the scene's active camera.
|
|
33
|
-
*
|
|
34
|
-
* Standing off by the terrain's extent frames most of it while keeping the far corners
|
|
35
|
-
* inside the camera's clip range; the rest is a wheel away.
|
|
36
|
-
*
|
|
37
|
-
* @param {Engine} engine
|
|
38
|
-
* @param {Terrain} terrain
|
|
39
|
-
*/
|
|
40
|
-
function frameTerrain(engine, terrain) {
|
|
41
|
-
const world_x = terrain.size.x * terrain.gridScale;
|
|
42
|
-
const world_y = terrain.size.y * terrain.gridScale;
|
|
43
|
-
|
|
44
|
-
engine.entityManager.dataset.traverseComponents(TopDownCameraController, controller => {
|
|
45
|
-
controller.target.set(world_x / 2, 0, world_y / 2);
|
|
46
|
-
controller.distance = Math.max(world_x, world_y);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The model loaders — the same split the game's graphics profile makes, and for the same reason: a
|
|
52
|
-
* model is the one asset whose loaded form *is* the renderer's own representation.
|
|
53
|
-
*
|
|
54
|
-
* @param {EngineConfiguration} config
|
|
55
|
-
*/
|
|
56
|
-
function addModelLoaders(config) {
|
|
57
|
-
const loader = new GLTFSceneBundleAssetLoader();
|
|
58
|
-
|
|
59
|
-
config.addLoader(GameAssetType.ModelGLTF, loader);
|
|
60
|
-
config.addLoader(GameAssetType.ModelGLTF_JSON, loader);
|
|
61
|
-
|
|
62
|
-
// `load_gltf` asks the asset manager for each of a model's images rather than fetching them
|
|
63
|
-
// itself (D34), so a shell without this loader loads geometry and no textures
|
|
64
|
-
config.addLoader(GameAssetType.ImageBitmap, new ImageBitmapAssetLoader());
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* The systems that talk to the renderer.
|
|
69
|
-
*
|
|
70
|
-
* @param {Engine} engine
|
|
71
|
-
* @returns {Promise}
|
|
72
|
-
*/
|
|
73
|
-
async function addGraphicsSystems(engine) {
|
|
74
|
-
const em = engine.entityManager;
|
|
75
|
-
|
|
76
|
-
await em.addSystem(new
|
|
77
|
-
engine.graphics,
|
|
78
|
-
EngineHarness.shadeScene(engine),
|
|
79
|
-
url => load_model_scene_bundle(engine.assetManager, url)
|
|
80
|
-
));
|
|
81
|
-
|
|
82
|
-
// a model with neither skin nor clip becomes entities, and its primitives are drawn by the
|
|
83
|
-
// system that owns primitives (D47)
|
|
84
|
-
await em.addSystem(new
|
|
85
|
-
|
|
86
|
-
await em.addSystem(new
|
|
87
|
-
|
|
88
|
-
// the editor's selection box is the debug-draw pass's first consumer (V5)
|
|
89
|
-
await em.addSystem(new
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Standalone editor shell harness: engine + terrain + lights + camera, the systems the
|
|
94
|
-
* editor tooling relies on, a seeded mesh library, and the editor enabled from the start.
|
|
95
|
-
*
|
|
96
|
-
* @returns {Promise<{engine: Engine, editor: Editor, editorControl: object, terrain: Terrain}>}
|
|
97
|
-
*/
|
|
98
|
-
async function main() {
|
|
99
|
-
const harness = new EngineHarness();
|
|
100
|
-
|
|
101
|
-
const engine = await harness.initialize({
|
|
102
|
-
configuration(config) {
|
|
103
|
-
addModelLoaders(config);
|
|
104
|
-
|
|
105
|
-
config.addLoader(GameAssetType.ArrayBuffer, new ArrayBufferLoader());
|
|
106
|
-
config.addLoader(GameAssetType.Image, new ImageRGBADataLoader());
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
populateEngineSerializationRegistry(engine.binarySerializationRegistry);
|
|
111
|
-
|
|
112
|
-
const em = engine.entityManager;
|
|
113
|
-
|
|
114
|
-
await addGraphicsSystems(engine);
|
|
115
|
-
|
|
116
|
-
await em.addSystem(new TransformAttachmentSystem(engine));
|
|
117
|
-
await em.addSystem(new ParentEntitySystem());
|
|
118
|
-
|
|
119
|
-
await EngineHarness.buildBasics({
|
|
120
|
-
engine,
|
|
121
|
-
terrainSize: new Vector2(32, 32),
|
|
122
|
-
enableWater: false,
|
|
123
|
-
cameraController: false,
|
|
124
|
-
pitch: 0.9
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
// the default terrain has a 1x1 height sampler; height painting needs real resolution
|
|
128
|
-
const terrain = obtainTerrain(engine.entityManager.dataset);
|
|
129
|
-
terrain.samplerHeight.resize(256, 256);
|
|
130
|
-
terrain.updateHeights();
|
|
131
|
-
|
|
132
|
-
frameTerrain(engine, terrain);
|
|
133
|
-
|
|
134
|
-
const editorControl = enableEditor(engine);
|
|
135
|
-
|
|
136
|
-
const editor = editorControl.editor;
|
|
137
|
-
|
|
138
|
-
// console access for debugging, mirrors the window.engine convention
|
|
139
|
-
window.editor = editor;
|
|
140
|
-
|
|
141
|
-
editor.meshLibrary.add('data/models/samples/susanne.glb');
|
|
142
|
-
editor.meshLibrary.add('data/models/samples/teapot.gltf');
|
|
143
|
-
editor.meshLibrary.add('data/models/samples/textured_unit_cube.gltf');
|
|
144
|
-
|
|
145
|
-
editorControl.enable();
|
|
146
|
-
|
|
147
|
-
return { engine, editor, editorControl, terrain };
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* The shell, booting. Exported as the promise it is so that a probe driving this page has something
|
|
152
|
-
* to await — the module boots when it is loaded either way, which is what makes it an entry.
|
|
153
|
-
*
|
|
154
|
-
* @type {Promise<{engine: Engine, editor: Editor, editorControl: object, terrain: Terrain}>}
|
|
155
|
-
*/
|
|
156
|
-
export const editor_shell = main();
|
|
1
|
+
import './style/editor.scss';
|
|
2
|
+
|
|
3
|
+
import Vector2 from "../src/core/geom/Vector2.js";
|
|
4
|
+
import { GameAssetType } from "../src/engine/asset/GameAssetType.js";
|
|
5
|
+
import { ArrayBufferLoader } from "../src/engine/asset/loaders/ArrayBufferLoader.js";
|
|
6
|
+
import {
|
|
7
|
+
GLTFSceneBundleAssetLoader
|
|
8
|
+
} from "../src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js";
|
|
9
|
+
import { ImageBitmapAssetLoader } from "../src/engine/asset/loaders/image/ImageBitmapAssetLoader.js";
|
|
10
|
+
import { ImageRGBADataLoader } from "../src/engine/asset/loaders/image/ImageRGBADataLoader.js";
|
|
11
|
+
import { load_model_scene_bundle } from "../src/engine/asset/load_model_scene_bundle.js";
|
|
12
|
+
import { ParentEntitySystem } from "../src/engine/ecs/parent/ParentEntitySystem.js";
|
|
13
|
+
import { obtainTerrain } from "../src/engine/ecs/terrain/util/obtainTerrain.js";
|
|
14
|
+
import { populateEngineSerializationRegistry } from "../src/engine/ecs/storage/populateEngineSerializationRegistry.js";
|
|
15
|
+
import { TransformAttachmentSystem } from "../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js";
|
|
16
|
+
import { EngineHarness } from "../src/engine/EngineHarness.js";
|
|
17
|
+
import TopDownCameraController from "../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js";
|
|
18
|
+
import { DebugDrawSystem } from "../src/engine/graphics3/DebugDrawSystem.js";
|
|
19
|
+
import { MeshSystem } from "../src/engine/graphics3/MeshSystem.js";
|
|
20
|
+
import {
|
|
21
|
+
ShadedGeometrySystem
|
|
22
|
+
} from "../src/engine/graphics3/ShadedGeometrySystem.js";
|
|
23
|
+
import { ParticleEmitterSystem } from "../src/engine/graphics3/ParticleEmitterSystem.js";
|
|
24
|
+
import { enableEditor } from "./enableEditor.js";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Point the camera at the middle of the terrain, standing off by its own extent.
|
|
28
|
+
*
|
|
29
|
+
* The harness anchors terrain at the world origin and aims the camera at the origin too,
|
|
30
|
+
* so the default view sits on the terrain's corner with three quadrants of empty space —
|
|
31
|
+
* and every orbit pivots on that corner. The editor camera inherits this state when it
|
|
32
|
+
* takes over the scene's active camera.
|
|
33
|
+
*
|
|
34
|
+
* Standing off by the terrain's extent frames most of it while keeping the far corners
|
|
35
|
+
* inside the camera's clip range; the rest is a wheel away.
|
|
36
|
+
*
|
|
37
|
+
* @param {Engine} engine
|
|
38
|
+
* @param {Terrain} terrain
|
|
39
|
+
*/
|
|
40
|
+
function frameTerrain(engine, terrain) {
|
|
41
|
+
const world_x = terrain.size.x * terrain.gridScale;
|
|
42
|
+
const world_y = terrain.size.y * terrain.gridScale;
|
|
43
|
+
|
|
44
|
+
engine.entityManager.dataset.traverseComponents(TopDownCameraController, controller => {
|
|
45
|
+
controller.target.set(world_x / 2, 0, world_y / 2);
|
|
46
|
+
controller.distance = Math.max(world_x, world_y);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The model loaders — the same split the game's graphics profile makes, and for the same reason: a
|
|
52
|
+
* model is the one asset whose loaded form *is* the renderer's own representation.
|
|
53
|
+
*
|
|
54
|
+
* @param {EngineConfiguration} config
|
|
55
|
+
*/
|
|
56
|
+
function addModelLoaders(config) {
|
|
57
|
+
const loader = new GLTFSceneBundleAssetLoader();
|
|
58
|
+
|
|
59
|
+
config.addLoader(GameAssetType.ModelGLTF, loader);
|
|
60
|
+
config.addLoader(GameAssetType.ModelGLTF_JSON, loader);
|
|
61
|
+
|
|
62
|
+
// `load_gltf` asks the asset manager for each of a model's images rather than fetching them
|
|
63
|
+
// itself (D34), so a shell without this loader loads geometry and no textures
|
|
64
|
+
config.addLoader(GameAssetType.ImageBitmap, new ImageBitmapAssetLoader());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The systems that talk to the renderer.
|
|
69
|
+
*
|
|
70
|
+
* @param {Engine} engine
|
|
71
|
+
* @returns {Promise}
|
|
72
|
+
*/
|
|
73
|
+
async function addGraphicsSystems(engine) {
|
|
74
|
+
const em = engine.entityManager;
|
|
75
|
+
|
|
76
|
+
await em.addSystem(new MeshSystem(
|
|
77
|
+
engine.graphics,
|
|
78
|
+
EngineHarness.shadeScene(engine),
|
|
79
|
+
url => load_model_scene_bundle(engine.assetManager, url)
|
|
80
|
+
));
|
|
81
|
+
|
|
82
|
+
// a model with neither skin nor clip becomes entities, and its primitives are drawn by the
|
|
83
|
+
// system that owns primitives (D47)
|
|
84
|
+
await em.addSystem(new ShadedGeometrySystem(engine.graphics, EngineHarness.shadeScene(engine)));
|
|
85
|
+
|
|
86
|
+
await em.addSystem(new ParticleEmitterSystem(engine.graphics, engine.assetManager));
|
|
87
|
+
|
|
88
|
+
// the editor's selection box is the debug-draw pass's first consumer (V5)
|
|
89
|
+
await em.addSystem(new DebugDrawSystem(engine.graphics));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Standalone editor shell harness: engine + terrain + lights + camera, the systems the
|
|
94
|
+
* editor tooling relies on, a seeded mesh library, and the editor enabled from the start.
|
|
95
|
+
*
|
|
96
|
+
* @returns {Promise<{engine: Engine, editor: Editor, editorControl: object, terrain: Terrain}>}
|
|
97
|
+
*/
|
|
98
|
+
async function main() {
|
|
99
|
+
const harness = new EngineHarness();
|
|
100
|
+
|
|
101
|
+
const engine = await harness.initialize({
|
|
102
|
+
configuration(config) {
|
|
103
|
+
addModelLoaders(config);
|
|
104
|
+
|
|
105
|
+
config.addLoader(GameAssetType.ArrayBuffer, new ArrayBufferLoader());
|
|
106
|
+
config.addLoader(GameAssetType.Image, new ImageRGBADataLoader());
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
populateEngineSerializationRegistry(engine.binarySerializationRegistry);
|
|
111
|
+
|
|
112
|
+
const em = engine.entityManager;
|
|
113
|
+
|
|
114
|
+
await addGraphicsSystems(engine);
|
|
115
|
+
|
|
116
|
+
await em.addSystem(new TransformAttachmentSystem(engine));
|
|
117
|
+
await em.addSystem(new ParentEntitySystem());
|
|
118
|
+
|
|
119
|
+
await EngineHarness.buildBasics({
|
|
120
|
+
engine,
|
|
121
|
+
terrainSize: new Vector2(32, 32),
|
|
122
|
+
enableWater: false,
|
|
123
|
+
cameraController: false,
|
|
124
|
+
pitch: 0.9
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// the default terrain has a 1x1 height sampler; height painting needs real resolution
|
|
128
|
+
const terrain = obtainTerrain(engine.entityManager.dataset);
|
|
129
|
+
terrain.samplerHeight.resize(256, 256);
|
|
130
|
+
terrain.updateHeights();
|
|
131
|
+
|
|
132
|
+
frameTerrain(engine, terrain);
|
|
133
|
+
|
|
134
|
+
const editorControl = enableEditor(engine);
|
|
135
|
+
|
|
136
|
+
const editor = editorControl.editor;
|
|
137
|
+
|
|
138
|
+
// console access for debugging, mirrors the window.engine convention
|
|
139
|
+
window.editor = editor;
|
|
140
|
+
|
|
141
|
+
editor.meshLibrary.add('data/models/samples/susanne.glb');
|
|
142
|
+
editor.meshLibrary.add('data/models/samples/teapot.gltf');
|
|
143
|
+
editor.meshLibrary.add('data/models/samples/textured_unit_cube.gltf');
|
|
144
|
+
|
|
145
|
+
editorControl.enable();
|
|
146
|
+
|
|
147
|
+
return { engine, editor, editorControl, terrain };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* The shell, booting. Exported as the promise it is so that a probe driving this page has something
|
|
152
|
+
* to await — the module boots when it is loaded either way, which is what makes it an entry.
|
|
153
|
+
*
|
|
154
|
+
* @type {Promise<{engine: Engine, editor: Editor, editorControl: object, terrain: Terrain}>}
|
|
155
|
+
*/
|
|
156
|
+
export const editor_shell = main();
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
import { assert } from "../../src/core/assert.js";
|
|
2
|
-
import {
|
|
3
|
-
aabb3_array_intersects_clipping_volume_array
|
|
4
|
-
} from "../../src/core/geom/3d/aabb/aabb3_array_intersects_clipping_volume_array.js";
|
|
5
|
-
import {
|
|
6
|
-
aabb3_ray_segment_entry_distance
|
|
7
|
-
} from "../../src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.js";
|
|
8
|
-
import { Transform } from "../../src/engine/ecs/transform/Transform.js";
|
|
9
|
-
import EditorEntity from "../ecs/EditorEntity.js";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @type {Float64Array}
|
|
13
|
-
*/
|
|
14
|
-
const bounds = new Float64Array(6);
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* What the editor's pointer and marquee search, and why it is not the game's picking index.
|
|
18
|
-
*
|
|
19
|
-
* `
|
|
20
|
-
* fourteen tooltip sites — and deliberately so: the per-entity duplication that index costs is the
|
|
21
|
-
* thing the component exists to bound (I-9). **An editor has to be able to select a thing nobody
|
|
22
|
-
* thought to make pickable**, so widening that opt-in to everything would spend exactly what it was
|
|
23
|
-
* written to save, on a tool that is second-class by decision (D7).
|
|
24
|
-
*
|
|
25
|
-
* So the editor asks instead of indexing: every entity placed in the world is offered its bounds,
|
|
26
|
-
* and the ones that have any are tested. A click happens once, a level holds thousands of entities
|
|
27
|
-
* rather than millions, and nothing is kept between clicks that could be stale.
|
|
28
|
-
*
|
|
29
|
-
* **Bounds arrive through a reader** — `entity_world_bounds_reader` on a real editor — because where
|
|
30
|
-
* a world box lives is the one thing that genuinely differs per renderer, and it is resolved once,
|
|
31
|
-
* there.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The entity a ray reaches first.
|
|
36
|
-
*
|
|
37
|
-
* @param {EntityComponentDataset} dataset
|
|
38
|
-
* @param {function(ArrayLike<number>, number): boolean} read_bounds
|
|
39
|
-
* @param {Vector3} origin
|
|
40
|
-
* @param {Vector3} direction unit length
|
|
41
|
-
* @param {number} max_distance
|
|
42
|
-
* @returns {number} the entity, or `-1` when the ray reaches nothing
|
|
43
|
-
*/
|
|
44
|
-
export function editor_pick_ray(dataset, read_bounds, origin, direction, max_distance) {
|
|
45
|
-
assert.defined(dataset, 'dataset');
|
|
46
|
-
assert.isFunction(read_bounds, 'read_bounds');
|
|
47
|
-
assert.isNumber(max_distance, 'max_distance');
|
|
48
|
-
|
|
49
|
-
const origin_x = origin.x;
|
|
50
|
-
const origin_y = origin.y;
|
|
51
|
-
const origin_z = origin.z;
|
|
52
|
-
|
|
53
|
-
// a zero component produces an infinity the entry-distance test handles, which is why this is
|
|
54
|
-
// computed rather than guarded
|
|
55
|
-
const inv_x = 1 / direction.x;
|
|
56
|
-
const inv_y = 1 / direction.y;
|
|
57
|
-
const inv_z = 1 / direction.z;
|
|
58
|
-
|
|
59
|
-
let best_distance = max_distance;
|
|
60
|
-
let best_entity = -1;
|
|
61
|
-
|
|
62
|
-
dataset.traverseEntities([Transform], (transform, entity) => {
|
|
63
|
-
if (dataset.hasComponent(entity, EditorEntity)) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (!read_bounds(bounds, entity)) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const distance = aabb3_ray_segment_entry_distance(
|
|
72
|
-
bounds[0], bounds[1], bounds[2],
|
|
73
|
-
bounds[3], bounds[4], bounds[5],
|
|
74
|
-
origin_x, origin_y, origin_z,
|
|
75
|
-
inv_x, inv_y, inv_z,
|
|
76
|
-
0, max_distance
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
if (distance >= best_distance) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
best_distance = distance;
|
|
84
|
-
best_entity = entity;
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
return best_entity;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Every entity a volume overlaps.
|
|
92
|
-
*
|
|
93
|
-
* Overlap rather than containment: half a thing inside a marquee is inside it, which is what a
|
|
94
|
-
* marquee has always meant.
|
|
95
|
-
*
|
|
96
|
-
* @param {number[]} result appended to
|
|
97
|
-
* @param {EntityComponentDataset} dataset
|
|
98
|
-
* @param {function(ArrayLike<number>, number): boolean} read_bounds
|
|
99
|
-
* @param {ArrayLike<number>|Float64Array} planes `nx, ny, nz, w` each, interior positive
|
|
100
|
-
* @param {number} plane_count
|
|
101
|
-
* @returns {number} how many were written
|
|
102
|
-
*/
|
|
103
|
-
export function editor_pick_frustum(result, dataset, read_bounds, planes, plane_count) {
|
|
104
|
-
assert.defined(result, 'result');
|
|
105
|
-
assert.defined(dataset, 'dataset');
|
|
106
|
-
assert.isFunction(read_bounds, 'read_bounds');
|
|
107
|
-
assert.isNonNegativeInteger(plane_count, 'plane_count');
|
|
108
|
-
|
|
109
|
-
let count = 0;
|
|
110
|
-
|
|
111
|
-
dataset.traverseEntities([Transform], (transform, entity) => {
|
|
112
|
-
if (dataset.hasComponent(entity, EditorEntity)) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (!read_bounds(bounds, entity)) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (!aabb3_array_intersects_clipping_volume_array(bounds, 0, planes, 0, plane_count)) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
result[count] = entity;
|
|
125
|
-
|
|
126
|
-
count++;
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
return count;
|
|
130
|
-
}
|
|
1
|
+
import { assert } from "../../src/core/assert.js";
|
|
2
|
+
import {
|
|
3
|
+
aabb3_array_intersects_clipping_volume_array
|
|
4
|
+
} from "../../src/core/geom/3d/aabb/aabb3_array_intersects_clipping_volume_array.js";
|
|
5
|
+
import {
|
|
6
|
+
aabb3_ray_segment_entry_distance
|
|
7
|
+
} from "../../src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.js";
|
|
8
|
+
import { Transform } from "../../src/engine/ecs/transform/Transform.js";
|
|
9
|
+
import EditorEntity from "../ecs/EditorEntity.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {Float64Array}
|
|
13
|
+
*/
|
|
14
|
+
const bounds = new Float64Array(6);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* What the editor's pointer and marquee search, and why it is not the game's picking index.
|
|
18
|
+
*
|
|
19
|
+
* `PickingSystem` indexes entities that carry a `Pickable`, which is an opt-in the game spends on
|
|
20
|
+
* fourteen tooltip sites — and deliberately so: the per-entity duplication that index costs is the
|
|
21
|
+
* thing the component exists to bound (I-9). **An editor has to be able to select a thing nobody
|
|
22
|
+
* thought to make pickable**, so widening that opt-in to everything would spend exactly what it was
|
|
23
|
+
* written to save, on a tool that is second-class by decision (D7).
|
|
24
|
+
*
|
|
25
|
+
* So the editor asks instead of indexing: every entity placed in the world is offered its bounds,
|
|
26
|
+
* and the ones that have any are tested. A click happens once, a level holds thousands of entities
|
|
27
|
+
* rather than millions, and nothing is kept between clicks that could be stale.
|
|
28
|
+
*
|
|
29
|
+
* **Bounds arrive through a reader** — `entity_world_bounds_reader` on a real editor — because where
|
|
30
|
+
* a world box lives is the one thing that genuinely differs per renderer, and it is resolved once,
|
|
31
|
+
* there.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The entity a ray reaches first.
|
|
36
|
+
*
|
|
37
|
+
* @param {EntityComponentDataset} dataset
|
|
38
|
+
* @param {function(ArrayLike<number>, number): boolean} read_bounds
|
|
39
|
+
* @param {Vector3} origin
|
|
40
|
+
* @param {Vector3} direction unit length
|
|
41
|
+
* @param {number} max_distance
|
|
42
|
+
* @returns {number} the entity, or `-1` when the ray reaches nothing
|
|
43
|
+
*/
|
|
44
|
+
export function editor_pick_ray(dataset, read_bounds, origin, direction, max_distance) {
|
|
45
|
+
assert.defined(dataset, 'dataset');
|
|
46
|
+
assert.isFunction(read_bounds, 'read_bounds');
|
|
47
|
+
assert.isNumber(max_distance, 'max_distance');
|
|
48
|
+
|
|
49
|
+
const origin_x = origin.x;
|
|
50
|
+
const origin_y = origin.y;
|
|
51
|
+
const origin_z = origin.z;
|
|
52
|
+
|
|
53
|
+
// a zero component produces an infinity the entry-distance test handles, which is why this is
|
|
54
|
+
// computed rather than guarded
|
|
55
|
+
const inv_x = 1 / direction.x;
|
|
56
|
+
const inv_y = 1 / direction.y;
|
|
57
|
+
const inv_z = 1 / direction.z;
|
|
58
|
+
|
|
59
|
+
let best_distance = max_distance;
|
|
60
|
+
let best_entity = -1;
|
|
61
|
+
|
|
62
|
+
dataset.traverseEntities([Transform], (transform, entity) => {
|
|
63
|
+
if (dataset.hasComponent(entity, EditorEntity)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!read_bounds(bounds, entity)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const distance = aabb3_ray_segment_entry_distance(
|
|
72
|
+
bounds[0], bounds[1], bounds[2],
|
|
73
|
+
bounds[3], bounds[4], bounds[5],
|
|
74
|
+
origin_x, origin_y, origin_z,
|
|
75
|
+
inv_x, inv_y, inv_z,
|
|
76
|
+
0, max_distance
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
if (distance >= best_distance) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
best_distance = distance;
|
|
84
|
+
best_entity = entity;
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return best_entity;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Every entity a volume overlaps.
|
|
92
|
+
*
|
|
93
|
+
* Overlap rather than containment: half a thing inside a marquee is inside it, which is what a
|
|
94
|
+
* marquee has always meant.
|
|
95
|
+
*
|
|
96
|
+
* @param {number[]} result appended to
|
|
97
|
+
* @param {EntityComponentDataset} dataset
|
|
98
|
+
* @param {function(ArrayLike<number>, number): boolean} read_bounds
|
|
99
|
+
* @param {ArrayLike<number>|Float64Array} planes `nx, ny, nz, w` each, interior positive
|
|
100
|
+
* @param {number} plane_count
|
|
101
|
+
* @returns {number} how many were written
|
|
102
|
+
*/
|
|
103
|
+
export function editor_pick_frustum(result, dataset, read_bounds, planes, plane_count) {
|
|
104
|
+
assert.defined(result, 'result');
|
|
105
|
+
assert.defined(dataset, 'dataset');
|
|
106
|
+
assert.isFunction(read_bounds, 'read_bounds');
|
|
107
|
+
assert.isNonNegativeInteger(plane_count, 'plane_count');
|
|
108
|
+
|
|
109
|
+
let count = 0;
|
|
110
|
+
|
|
111
|
+
dataset.traverseEntities([Transform], (transform, entity) => {
|
|
112
|
+
if (dataset.hasComponent(entity, EditorEntity)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (!read_bounds(bounds, entity)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (!aabb3_array_intersects_clipping_volume_array(bounds, 0, planes, 0, plane_count)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
result[count] = entity;
|
|
125
|
+
|
|
126
|
+
count++;
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
return count;
|
|
130
|
+
}
|