@woosh/meep-engine 3.11.2 → 3.12.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/build/bundle-worker-terrain.js +1 -1
- 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/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/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/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/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +16 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +28 -4
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +5 -2
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +564 -451
- package/src/shade/device/ShadeGPUCommandContext.d.ts +18 -2
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +994 -940
- package/src/shade/device/immediate_data_supported.d.ts +33 -0
- package/src/shade/device/immediate_data_supported.d.ts.map +1 -0
- package/src/shade/device/immediate_data_supported.js +53 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts +18 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.js +24 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +49 -1
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -2
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts +65 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts.map +1 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.js +160 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +50 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts +11 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts.map +1 -0
- package/src/shade/device/mock/pipeline_immediate_size.js +18 -0
- package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/PipelineLayoutManager.js +1 -0
- 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 +0 -1
- 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 +0 -1
- 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 +133 -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/GraphicsContext.d.ts +9 -2
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +13 -1
- package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
- 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 +125 -126
- 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 +98 -99
- 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 +212 -213
- 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 +120 -121
- 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 +75 -76
- 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 +371 -372
- 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/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +145 -142
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +34 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +36 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +20 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +25 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +14 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +163 -177
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts +20 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.js +46 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +11 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +57 -27
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +19 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +69 -33
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +35 -35
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.js +38 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.js +29 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts +21 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.js +42 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts +2 -2
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -84
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +215 -204
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +79 -67
- 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 +2 -3
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +319 -319
- 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 +41 -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/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/geometry/bvh/record_blas_refit.js +4 -4
- 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 +121 -122
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +774 -774
- 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 +69 -70
- 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_lvp_atlas_to_sh.js +184 -184
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
- 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 +142 -143
- 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 +0 -1
- 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 +140 -141
- 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 +0 -1
- 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 +0 -1
- 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 +10 -9
- 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/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
- 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/prototypeParticleSystem.js +2 -3
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +117 -118
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +77 -79
- 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 +99 -100
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +158 -161
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +119 -119
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +3 -4
- 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 +266 -267
- 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 +270 -271
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +4 -0
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +68 -69
- 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/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/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 +341 -345
- 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 +0 -2
- 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 +57 -57
- 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 +109 -110
- 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 +115 -116
- 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 +65 -66
- 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/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -3
- 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/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +77 -81
- 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/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_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +5 -1
- 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 +136 -137
- 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 +129 -130
- 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 +99 -100
- 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.js +383 -383
- 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 +0 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +24 -3
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +350 -292
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +217 -214
- 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 +46 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +32 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js +17 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +69 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js +41 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js +15 -19
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js +44 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js +1 -4
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +7 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +37 -2
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.js +6 -0
- package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +1 -1
- package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_image_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +7 -0
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts +3 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +12 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts +21 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts.map +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.js +21 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +59 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +195 -2
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts +14 -0
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts.map +1 -0
- package/src/shade/renderer/shader/type/type_has_arrays.js +33 -0
- 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/csm/graph_csm_setup_cascades.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +2 -2
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -4
- 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 +231 -232
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/NOTES.md +238 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -145
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +38 -15
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +14 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +591 -577
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +17 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +20 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +29 -18
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +260 -260
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts +53 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +175 -59
- 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/emulator/WGSLJavaScriptCompiler.js +8 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +1325 -1297
- 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/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
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.js +0 -1
|
@@ -1,328 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import Rectangle from "../../core/geom/2d/Rectangle.js";
|
|
3
|
-
import { Vector2 } from "../../core/geom/Vector2.js";
|
|
4
|
-
import Vector3 from "../../core/geom/Vector3.js";
|
|
5
|
-
import { VisualTip } from "../../view/tooltip/VisualTip.js";
|
|
6
|
-
import { System } from "../ecs/System.js";
|
|
7
|
-
import { TooltipComponent } from "../ecs/tooltip/TooltipComponent.js";
|
|
8
|
-
import { PickingQuery } from "./PickingQuery.js";
|
|
9
|
-
import { PickingResult } from "./PickingResult.js";
|
|
1
|
+
import { TooltipComponentSystem } from "./TooltipComponentSystem.js";
|
|
10
2
|
|
|
11
3
|
/**
|
|
12
|
-
* @
|
|
13
|
-
|
|
14
|
-
const SCRATCH_POINT = new Vector2();
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @type {Vector3}
|
|
18
|
-
*/
|
|
19
|
-
const SCRATCH_ORIGIN = new Vector3();
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @type {Vector3}
|
|
23
|
-
*/
|
|
24
|
-
const SCRATCH_DIRECTION = new Vector3();
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* How far from the pointer, in pixels, the rectangle a tooltip is anchored to sits.
|
|
28
|
-
*
|
|
29
|
-
* @type {number}
|
|
30
|
-
*/
|
|
31
|
-
const ANCHOR_MARGIN = 10;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Shows an entity's tooltip when the pointer is over it, under Shade.
|
|
35
|
-
*
|
|
36
|
-
* **The target is a promise, and that is the visible difference.** The renderer this replaces
|
|
37
|
-
* answered "what is under the pointer" inside the call that asked, by walking every visible mesh and
|
|
38
|
-
* raycasting three's geometry. Picking here is asynchronous and batched by contract (I-9), because
|
|
39
|
-
* the backend it is built for reads entity ids off the visibility buffer — a frame late, a batch at
|
|
40
|
-
* a time. So the answer arrives a tick after the question, and a tooltip appears a tick later than
|
|
41
|
-
* it used to. That is a change to the UI's timing, not to what it points at.
|
|
42
|
-
*
|
|
43
|
-
* **One ray, one answer, and it is the nearest thing.** The old path tested only entities that
|
|
44
|
-
* carried a tooltip, so a chest behind a wall described itself through the wall. This asks what the
|
|
45
|
-
* pointer is on and takes what comes back: something in front without a tooltip means no tooltip,
|
|
46
|
-
* which is both what the player can see and the only thing an id read off a pixel could ever say.
|
|
4
|
+
* @deprecated Renamed to {@link TooltipComponentSystem}. The trailing `3` marked the 2.x → 3.x renderer transition;
|
|
5
|
+
* the 2.x name it disambiguated against is gone, so the suffix no longer distinguishes anything.
|
|
47
6
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* itself.
|
|
51
|
-
*
|
|
52
|
-
* The delay is a delay before a tooltip *appears*. Once one is up the pointer is asked about on
|
|
53
|
-
* every tick, so moving off an entity takes the tooltip away without waiting again.
|
|
7
|
+
* Kept as a re-export rather than removed: this is a library, and an import path is as much a
|
|
8
|
+
* published interface as a class name.
|
|
54
9
|
*/
|
|
55
|
-
export
|
|
56
|
-
dependencies = [TooltipComponent];
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* How long the pointer has to rest before a tooltip appears, in seconds.
|
|
60
|
-
*
|
|
61
|
-
* @type {number}
|
|
62
|
-
*/
|
|
63
|
-
display_delay = 0.2;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* The screen-space rectangle the tooltip points at. Follows the pointer while a tooltip is up.
|
|
67
|
-
*
|
|
68
|
-
* @readonly
|
|
69
|
-
* @type {Rectangle}
|
|
70
|
-
*/
|
|
71
|
-
target = new Rectangle();
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @type {GraphicsEngine3}
|
|
75
|
-
*/
|
|
76
|
-
#graphics;
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @type {TooltipManager}
|
|
80
|
-
*/
|
|
81
|
-
#tooltips;
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* @type {PointerDevice}
|
|
85
|
-
*/
|
|
86
|
-
#pointer;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* @type {Localization}
|
|
90
|
-
*/
|
|
91
|
-
#localization;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* @type {PickingSystem3}
|
|
95
|
-
*/
|
|
96
|
-
#picking;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* @type {VisualTip|null}
|
|
100
|
-
*/
|
|
101
|
-
#tip = null;
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @type {number}
|
|
105
|
-
*/
|
|
106
|
-
#tip_entity = PickingResult.NOTHING;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @type {number}
|
|
110
|
-
*/
|
|
111
|
-
#time_since_pointer_moved = 0;
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Whether a pick is out and has not answered yet. One question at a time: a second would be
|
|
115
|
-
* asked about the same pointer position as the first.
|
|
116
|
-
*
|
|
117
|
-
* @type {boolean}
|
|
118
|
-
*/
|
|
119
|
-
#query_in_flight = false;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Whether the system is between {@link startup} and {@link shutdown}. An answer that arrives
|
|
123
|
-
* after the system has stopped is not acted on — the level it describes is being taken down.
|
|
124
|
-
*
|
|
125
|
-
* @type {boolean}
|
|
126
|
-
*/
|
|
127
|
-
#running = false;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* @param {GraphicsEngine3} graphics
|
|
131
|
-
* @param {TooltipManager} tooltips
|
|
132
|
-
* @param {PointerDevice} pointer
|
|
133
|
-
* @param {Localization} localization
|
|
134
|
-
* @param {PickingSystem3} picking
|
|
135
|
-
*/
|
|
136
|
-
constructor({ graphics, tooltips, pointer, localization, picking }) {
|
|
137
|
-
super();
|
|
138
|
-
|
|
139
|
-
assert.defined(graphics, 'graphics');
|
|
140
|
-
assert.defined(tooltips, 'tooltips');
|
|
141
|
-
assert.defined(pointer, 'pointer');
|
|
142
|
-
assert.defined(localization, 'localization');
|
|
143
|
-
assert.defined(picking, 'picking');
|
|
144
|
-
|
|
145
|
-
this.#graphics = graphics;
|
|
146
|
-
this.#tooltips = tooltips;
|
|
147
|
-
this.#pointer = pointer;
|
|
148
|
-
this.#localization = localization;
|
|
149
|
-
this.#picking = picking;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Which entity the tooltip currently on screen describes, or {@link PickingResult.NOTHING}.
|
|
154
|
-
*
|
|
155
|
-
* @returns {number}
|
|
156
|
-
*/
|
|
157
|
-
get tip_entity() {
|
|
158
|
-
return this.#tip_entity;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
async startup(entityManager) {
|
|
162
|
-
this.entityManager = entityManager;
|
|
163
|
-
|
|
164
|
-
this.#running = true;
|
|
165
|
-
|
|
166
|
-
this.#pointer.position.onChanged.add(this.#handle_pointer_moved, this);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
async shutdown(entityManager) {
|
|
170
|
-
this.#running = false;
|
|
171
|
-
|
|
172
|
-
this.#pointer.position.onChanged.remove(this.#handle_pointer_moved, this);
|
|
173
|
-
|
|
174
|
-
this.#clear_tip();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* @param {TooltipComponent} tooltip
|
|
179
|
-
* @param {number} entity
|
|
180
|
-
*/
|
|
181
|
-
unlink(tooltip, entity) {
|
|
182
|
-
if (entity === this.#tip_entity) {
|
|
183
|
-
// whatever the tooltip described has stopped describing itself
|
|
184
|
-
this.#clear_tip();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
update(time_delta) {
|
|
189
|
-
this.#time_since_pointer_moved += time_delta;
|
|
190
|
-
|
|
191
|
-
if (this.#query_in_flight) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (this.entityManager.dataset === null) {
|
|
196
|
-
this.#clear_tip();
|
|
197
|
-
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (this.#graphics.domElement !== this.#pointer.getTargetElement()) {
|
|
202
|
-
// the pointer is over the GUI, or off the page — the game field is not what it is on
|
|
203
|
-
this.#clear_tip();
|
|
204
|
-
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (this.#tip === null && this.#time_since_pointer_moved < this.display_delay) {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
this.#ask();
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
#handle_pointer_moved() {
|
|
216
|
-
this.#time_since_pointer_moved = 0;
|
|
217
|
-
|
|
218
|
-
if (this.#tip !== null) {
|
|
219
|
-
this.#anchor_to_pointer();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
#anchor_to_pointer() {
|
|
224
|
-
const position = this.#pointer.position;
|
|
225
|
-
|
|
226
|
-
this.target.set(
|
|
227
|
-
position.x - ANCHOR_MARGIN,
|
|
228
|
-
position.y - ANCHOR_MARGIN,
|
|
229
|
-
ANCHOR_MARGIN * 2,
|
|
230
|
-
ANCHOR_MARGIN * 2
|
|
231
|
-
);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* The ray is built here and the answer acted on whenever it comes. Nothing checks whether the
|
|
236
|
-
* pointer has moved since: the answer describes where the pointer was, the next tick asks about
|
|
237
|
-
* where it is now, and a tooltip that lags the pointer by a tick is what the whole item is.
|
|
238
|
-
*/
|
|
239
|
-
async #ask() {
|
|
240
|
-
const graphics = this.#graphics;
|
|
241
|
-
const position = this.#pointer.position;
|
|
242
|
-
|
|
243
|
-
SCRATCH_POINT.set(position.x, position.y);
|
|
244
|
-
|
|
245
|
-
graphics.normalizeViewportPoint(SCRATCH_POINT, SCRATCH_POINT);
|
|
246
|
-
graphics.viewportProjectionRay(
|
|
247
|
-
SCRATCH_POINT.x, SCRATCH_POINT.y,
|
|
248
|
-
SCRATCH_ORIGIN, SCRATCH_DIRECTION
|
|
249
|
-
);
|
|
250
|
-
|
|
251
|
-
const query = PickingQuery.from(SCRATCH_ORIGIN, SCRATCH_DIRECTION);
|
|
252
|
-
|
|
253
|
-
this.#query_in_flight = true;
|
|
254
|
-
|
|
255
|
-
const [result] = await this.#picking.pick([query]);
|
|
256
|
-
|
|
257
|
-
this.#query_in_flight = false;
|
|
258
|
-
|
|
259
|
-
this.#receive(result.entity);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* @param {number} entity what the ray found, or {@link PickingResult.NOTHING}
|
|
264
|
-
*/
|
|
265
|
-
#receive(entity) {
|
|
266
|
-
if (!this.#running) {
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
if (entity === PickingResult.NOTHING) {
|
|
271
|
-
this.#clear_tip();
|
|
272
|
-
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
const dataset = this.entityManager.dataset;
|
|
277
|
-
|
|
278
|
-
if (dataset === null || !dataset.entityExists(entity)) {
|
|
279
|
-
// the level went away, or that entity did, while the question was out
|
|
280
|
-
this.#clear_tip();
|
|
281
|
-
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
const tooltip = dataset.getComponent(entity, TooltipComponent);
|
|
286
|
-
|
|
287
|
-
if (tooltip === undefined) {
|
|
288
|
-
this.#clear_tip();
|
|
289
|
-
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
if (entity === this.#tip_entity) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
this.#clear_tip();
|
|
298
|
-
this.#show_tip(entity, tooltip);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* @param {number} entity
|
|
303
|
-
* @param {TooltipComponent} tooltip
|
|
304
|
-
*/
|
|
305
|
-
#show_tip(entity, tooltip) {
|
|
306
|
-
this.#anchor_to_pointer();
|
|
307
|
-
|
|
308
|
-
const tooltips = this.#tooltips;
|
|
309
|
-
const text = this.#localization.getString(tooltip.key);
|
|
310
|
-
|
|
311
|
-
const tip = new VisualTip(this.target, () => tooltips.getGML().compile(text));
|
|
312
|
-
|
|
313
|
-
this.#tip = tip;
|
|
314
|
-
this.#tip_entity = entity;
|
|
315
|
-
|
|
316
|
-
tooltips.add(tip);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
#clear_tip() {
|
|
320
|
-
if (this.#tip !== null) {
|
|
321
|
-
this.#tooltips.remove(this.#tip);
|
|
322
|
-
|
|
323
|
-
this.#tip = null;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
this.#tip_entity = PickingResult.NOTHING;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
10
|
+
export const TooltipComponentSystem3 = TooltipComponentSystem;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draws {@link Trail3D}'s tubes under Shade, on the dynamic-geometry path.
|
|
3
|
+
*
|
|
4
|
+
* **A trail is dynamic content by definition** — every knot of it is rewritten as the entity moves
|
|
5
|
+
* and every knot's opacity as it ages — so it goes down S4's dedicated non-meshlet path (D5/I-10),
|
|
6
|
+
* the same one particles, paths and debug shapes take.
|
|
7
|
+
*
|
|
8
|
+
* **The simulation is not this system's, and that is deliberate.** {@link seed_trail_tube} and
|
|
9
|
+
* {@link advance_trail} are what the legacy `Trail3DSystem` runs too: the knots a trail lays down
|
|
10
|
+
* are a property of the trail, not of the renderer drawing it, and two implementations of them
|
|
11
|
+
* would be two trails that age differently. What is this system's is turning those knots into
|
|
12
|
+
* vertices, once a frame, per trail.
|
|
13
|
+
*
|
|
14
|
+
* **Every trail is rewritten every frame it exists**, moving or not, because the simulator ages
|
|
15
|
+
* every knot on every tick and the age is what the vertex opacity carries. There is no quiet trail
|
|
16
|
+
* — a trail that has stopped is a trail fading out.
|
|
17
|
+
*
|
|
18
|
+
* **What the tube material had and this does not**: a texture, and per-trail depth writing. The
|
|
19
|
+
* dynamic path has one pipeline, one vertex layout — position and colour — and one blend mode
|
|
20
|
+
* (straight alpha over the finished scene, depth tested, never written), which is what a trail
|
|
21
|
+
* wants and what the game's trails are authored as. `Trail3D.textureURL` therefore draws untinted
|
|
22
|
+
* here; nothing in the game's own effects sets it to anything a flat colour does not carry.
|
|
23
|
+
*/
|
|
24
|
+
export class Trail3DSystem extends System<any> {
|
|
25
|
+
/**
|
|
26
|
+
* @param {GraphicsEngine} graphics
|
|
27
|
+
*/
|
|
28
|
+
constructor(graphics: GraphicsEngine);
|
|
29
|
+
dependencies: (typeof Transform | typeof Trail3D)[];
|
|
30
|
+
/**
|
|
31
|
+
* What the pass draws. Read-only — the meshes follow the entities.
|
|
32
|
+
*
|
|
33
|
+
* @returns {DynamicMeshBatch}
|
|
34
|
+
*/
|
|
35
|
+
get batch(): DynamicMeshBatch;
|
|
36
|
+
startup(entityManager: any): Promise<void>;
|
|
37
|
+
shutdown(entityManager: any): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* @param {Trail3D} trail
|
|
40
|
+
* @param {Transform} transform
|
|
41
|
+
* @param {number} entity
|
|
42
|
+
*/
|
|
43
|
+
link(trail: Trail3D, transform: Transform, entity: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* @param {Trail3D} trail
|
|
46
|
+
* @param {Transform} transform
|
|
47
|
+
* @param {number} entity
|
|
48
|
+
*/
|
|
49
|
+
unlink(trail: Trail3D, transform: Transform, entity: number): void;
|
|
50
|
+
update(timeDelta: any): void;
|
|
51
|
+
/**
|
|
52
|
+
* @param {FrameContext} frame
|
|
53
|
+
*/
|
|
54
|
+
record(frame: FrameContext): void;
|
|
55
|
+
#private;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A trail is drawn into the scene and is concealed by the fog of war like anything else in it.
|
|
59
|
+
*/
|
|
60
|
+
export class TrailExtension extends RenderExtension {
|
|
61
|
+
/**
|
|
62
|
+
* @param {Trail3DSystem} system
|
|
63
|
+
*/
|
|
64
|
+
constructor(system: Trail3DSystem);
|
|
65
|
+
record(frame: any): void;
|
|
66
|
+
#private;
|
|
67
|
+
}
|
|
68
|
+
import { System } from "../ecs/System.js";
|
|
69
|
+
import { Transform } from "../ecs/transform/Transform.js";
|
|
70
|
+
import Trail3D from "../graphics/ecs/trail3d/Trail3D.js";
|
|
71
|
+
import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
|
|
72
|
+
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
73
|
+
//# sourceMappingURL=Trail3DSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IA0CI;;OAEG;IACH,sCAMC;IAlDD,oDAAoC;IAgCpC;;;;OAIG;IACH,8BAEC;IAaD,2CAIC;IAED,4CAWC;IAED;;;;OAIG;IACH,YAJW,OAAO,aACP,SAAS,UACT,MAAM,QAkBhB;IAED;;;;OAIG;IACH,cAJW,OAAO,aACP,SAAS,UACT,MAAM,QAiBhB;IAED,6BAYC;IAED;;OAEG;IACH,kCAeC;;CACJ;AAED;;GAEG;AACH;IAUI;;OAEG;IACH,oBAFW,aAAa,EAMvB;IAED,yBAEC;;CACJ;uBAnNsB,kBAAkB;0BACf,+BAA+B;oBAGrC,oCAAoC;iCALvB,gDAAgD;gCAJjD,mDAAmD"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { assert } from "../../core/assert.js";
|
|
2
|
+
import { GPUDynamicMeshRenderer } from "../../shade/renderer/dynamic/GPUDynamicMeshRenderer.js";
|
|
3
|
+
import { Geometry } from "../../shade/renderer/geometry/Geometry.js";
|
|
4
|
+
import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
|
|
5
|
+
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
6
|
+
import { SceneColor } from "../../shade/renderer/extension/SceneColor.js";
|
|
7
|
+
import { ViewTextures } from "../../shade/renderer/extension/ViewTextures.js";
|
|
8
|
+
import { DynamicMesh } from "../../shade/renderer/scene/DynamicMesh.js";
|
|
9
|
+
import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
|
|
10
|
+
import { System } from "../ecs/System.js";
|
|
11
|
+
import { Transform } from "../ecs/transform/Transform.js";
|
|
12
|
+
import { advance_trail } from "../graphics/ecs/trail3d/advance_trail.js";
|
|
13
|
+
import { seed_trail_tube } from "../graphics/ecs/trail3d/seed_trail_tube.js";
|
|
14
|
+
import Trail3D from "../graphics/ecs/trail3d/Trail3D.js";
|
|
15
|
+
import { Trail3DFlags } from "../graphics/ecs/trail3d/Trail3DFlags.js";
|
|
16
|
+
import {
|
|
17
|
+
TubeXFixedPhysicsSimulator
|
|
18
|
+
} from "../graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js";
|
|
19
|
+
import { trail_tube_write_geometry } from "./trail/trail_tube_write_geometry.js";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Draws {@link Trail3D}'s tubes under Shade, on the dynamic-geometry path.
|
|
23
|
+
*
|
|
24
|
+
* **A trail is dynamic content by definition** — every knot of it is rewritten as the entity moves
|
|
25
|
+
* and every knot's opacity as it ages — so it goes down S4's dedicated non-meshlet path (D5/I-10),
|
|
26
|
+
* the same one particles, paths and debug shapes take.
|
|
27
|
+
*
|
|
28
|
+
* **The simulation is not this system's, and that is deliberate.** {@link seed_trail_tube} and
|
|
29
|
+
* {@link advance_trail} are what the legacy `Trail3DSystem` runs too: the knots a trail lays down
|
|
30
|
+
* are a property of the trail, not of the renderer drawing it, and two implementations of them
|
|
31
|
+
* would be two trails that age differently. What is this system's is turning those knots into
|
|
32
|
+
* vertices, once a frame, per trail.
|
|
33
|
+
*
|
|
34
|
+
* **Every trail is rewritten every frame it exists**, moving or not, because the simulator ages
|
|
35
|
+
* every knot on every tick and the age is what the vertex opacity carries. There is no quiet trail
|
|
36
|
+
* — a trail that has stopped is a trail fading out.
|
|
37
|
+
*
|
|
38
|
+
* **What the tube material had and this does not**: a texture, and per-trail depth writing. The
|
|
39
|
+
* dynamic path has one pipeline, one vertex layout — position and colour — and one blend mode
|
|
40
|
+
* (straight alpha over the finished scene, depth tested, never written), which is what a trail
|
|
41
|
+
* wants and what the game's trails are authored as. `Trail3D.textureURL` therefore draws untinted
|
|
42
|
+
* here; nothing in the game's own effects sets it to anything a flat colour does not carry.
|
|
43
|
+
*/
|
|
44
|
+
export class Trail3DSystem extends System {
|
|
45
|
+
dependencies = [Trail3D, Transform];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @type {GraphicsEngine}
|
|
49
|
+
*/
|
|
50
|
+
#graphics;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @type {GPUDynamicMeshRenderer}
|
|
54
|
+
*/
|
|
55
|
+
#renderer = new GPUDynamicMeshRenderer();
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @type {DynamicMeshBatch}
|
|
59
|
+
*/
|
|
60
|
+
#batch = new DynamicMeshBatch();
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @type {Map<number, {trail: Trail3D, transform: Transform, mesh: DynamicMesh}>}
|
|
64
|
+
*/
|
|
65
|
+
#entries = new Map();
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @type {TubeXFixedPhysicsSimulator}
|
|
69
|
+
*/
|
|
70
|
+
#simulator = new TubeXFixedPhysicsSimulator();
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @type {RenderExtension|null}
|
|
74
|
+
*/
|
|
75
|
+
#extension = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* What the pass draws. Read-only — the meshes follow the entities.
|
|
79
|
+
*
|
|
80
|
+
* @returns {DynamicMeshBatch}
|
|
81
|
+
*/
|
|
82
|
+
get batch() {
|
|
83
|
+
return this.#batch;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @param {GraphicsEngine} graphics
|
|
88
|
+
*/
|
|
89
|
+
constructor(graphics) {
|
|
90
|
+
super();
|
|
91
|
+
|
|
92
|
+
assert.defined(graphics, 'graphics');
|
|
93
|
+
|
|
94
|
+
this.#graphics = graphics;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async startup(entityManager) {
|
|
98
|
+
this.entityManager = entityManager;
|
|
99
|
+
|
|
100
|
+
this.#extension = this.#graphics.add_extension(new TrailExtension(this));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async shutdown(entityManager) {
|
|
104
|
+
if (this.#extension !== null) {
|
|
105
|
+
this.#graphics.remove_extension(this.#extension);
|
|
106
|
+
|
|
107
|
+
this.#extension = null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
this.#renderer.destroy();
|
|
111
|
+
|
|
112
|
+
this.#batch.clear();
|
|
113
|
+
this.#entries.clear();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @param {Trail3D} trail
|
|
118
|
+
* @param {Transform} transform
|
|
119
|
+
* @param {number} entity
|
|
120
|
+
*/
|
|
121
|
+
link(trail, transform, entity) {
|
|
122
|
+
if (!trail.getFlag(Trail3DFlags.Built)) {
|
|
123
|
+
seed_trail_tube(trail, transform);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const mesh = DynamicMesh.from(new Geometry());
|
|
127
|
+
|
|
128
|
+
// the extrusion produces world-space vertices, so what the draw applies is identity — but a
|
|
129
|
+
// node's world transform is derived and stays unset until it is asked for
|
|
130
|
+
mesh.updateMatrices();
|
|
131
|
+
|
|
132
|
+
trail_tube_write_geometry(mesh.geometry, trail.tube);
|
|
133
|
+
|
|
134
|
+
this.#batch.add(mesh);
|
|
135
|
+
|
|
136
|
+
this.#entries.set(entity, { trail, transform, mesh });
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @param {Trail3D} trail
|
|
141
|
+
* @param {Transform} transform
|
|
142
|
+
* @param {number} entity
|
|
143
|
+
*/
|
|
144
|
+
unlink(trail, transform, entity) {
|
|
145
|
+
const entry = this.#entries.get(entity);
|
|
146
|
+
|
|
147
|
+
if (entry === undefined) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
this.#batch.remove(entry.mesh);
|
|
152
|
+
|
|
153
|
+
// residency deliberately survives leaving the batch, so nothing else would free it
|
|
154
|
+
this.#renderer.release(entry.mesh.geometry);
|
|
155
|
+
|
|
156
|
+
this.#entries.delete(entity);
|
|
157
|
+
|
|
158
|
+
trail.dispose();
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
update(timeDelta) {
|
|
162
|
+
for (const entry of this.#entries.values()) {
|
|
163
|
+
const trail = entry.trail;
|
|
164
|
+
|
|
165
|
+
advance_trail(trail, entry.transform, timeDelta, this.#simulator);
|
|
166
|
+
|
|
167
|
+
// bounds are the GPU's business on this path (§4.5), so the flag the head raises has
|
|
168
|
+
// nobody else to answer it
|
|
169
|
+
trail.clearFlag(Trail3DFlags.BoundsNeedUpdate);
|
|
170
|
+
|
|
171
|
+
trail_tube_write_geometry(entry.mesh.geometry, trail.tube);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @param {FrameContext} frame
|
|
177
|
+
*/
|
|
178
|
+
record(frame) {
|
|
179
|
+
if (this.#batch.count === 0) {
|
|
180
|
+
// nothing to draw, and the frame's colour is left exactly as it was
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const scene = frame.get(SceneColor);
|
|
185
|
+
|
|
186
|
+
scene.color = this.#renderer.graph_draw({
|
|
187
|
+
graph: frame.graph,
|
|
188
|
+
batch: this.#batch,
|
|
189
|
+
color: scene.color,
|
|
190
|
+
depth: frame.get(ViewTextures).depth,
|
|
191
|
+
camera: frame.view.camera.buffer
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* A trail is drawn into the scene and is concealed by the fog of war like anything else in it.
|
|
198
|
+
*/
|
|
199
|
+
export class TrailExtension extends RenderExtension {
|
|
200
|
+
name = "trails";
|
|
201
|
+
|
|
202
|
+
phase = FramePhase.AfterTransparency;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @type {Trail3DSystem}
|
|
206
|
+
*/
|
|
207
|
+
#system;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* @param {Trail3DSystem} system
|
|
211
|
+
*/
|
|
212
|
+
constructor(system) {
|
|
213
|
+
super();
|
|
214
|
+
|
|
215
|
+
this.#system = system;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
record(frame) {
|
|
219
|
+
this.#system.record(frame);
|
|
220
|
+
}
|
|
221
|
+
}
|