@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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlines highlighted entities under Shade.
|
|
3
|
+
*
|
|
4
|
+
* **An outline is a neighbourhood test on the visibility buffer**, which already says which mesh
|
|
5
|
+
* every pixel came from. The renderer this replaces drew each highlighted object a second time into
|
|
6
|
+
* an id target of its own, dilated the mask across two ping-ponged render targets, blurred it, and
|
|
7
|
+
* decoded ids back to colours — five render targets and a duplicated scene graph, for a picture this
|
|
8
|
+
* gets from a texture the frame was already writing.
|
|
9
|
+
*
|
|
10
|
+
* **Highlights no longer show through what stands in front of them (D27).** The old id pass cleared
|
|
11
|
+
* the depth buffer, so a unit behind a building was outlined in full; the visibility buffer knows
|
|
12
|
+
* only what was rasterized, so it is outlined where it can be seen and nowhere else. That is the
|
|
13
|
+
* accepted cost of not drawing the scene twice.
|
|
14
|
+
*
|
|
15
|
+
* The table is rebuilt every frame, and that is the cheaper arrangement rather than a concession:
|
|
16
|
+
* the game's highlights animate their colour and alpha continuously (0.2 s in, 0.7 s out), so
|
|
17
|
+
* nothing would be saved by watching for changes — and a `Color`'s change signal does not fire for
|
|
18
|
+
* alpha-only edits, which is exactly what this animation is.
|
|
19
|
+
*/
|
|
20
|
+
export class HighlightSystem extends System<any> {
|
|
21
|
+
/**
|
|
22
|
+
* @param {GraphicsEngine} graphics
|
|
23
|
+
* @param {MeshSystem} meshes
|
|
24
|
+
*/
|
|
25
|
+
constructor(graphics: GraphicsEngine, meshes: MeshSystem);
|
|
26
|
+
dependencies: (typeof SGMesh | typeof Highlight)[];
|
|
27
|
+
/**
|
|
28
|
+
* How wide the outline is drawn, in pixels.
|
|
29
|
+
*
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
thickness: number;
|
|
33
|
+
/**
|
|
34
|
+
* What is highlighted. Read-only — highlights follow their entities.
|
|
35
|
+
*
|
|
36
|
+
* @returns {Array}
|
|
37
|
+
*/
|
|
38
|
+
get highlights(): any[];
|
|
39
|
+
/**
|
|
40
|
+
* @returns {Uint32Array} the table the last update packed
|
|
41
|
+
*/
|
|
42
|
+
get table(): Uint32Array;
|
|
43
|
+
/**
|
|
44
|
+
* @returns {number} rows of {@link table} in use
|
|
45
|
+
*/
|
|
46
|
+
get table_size(): number;
|
|
47
|
+
startup(entityManager: any): Promise<void>;
|
|
48
|
+
shutdown(entityManager: any): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* @param {Highlight} highlight
|
|
51
|
+
* @param {SGMesh} mesh
|
|
52
|
+
* @param {number} entity
|
|
53
|
+
*/
|
|
54
|
+
link(highlight: Highlight, mesh: SGMesh, entity: number): void;
|
|
55
|
+
/**
|
|
56
|
+
* @param {Highlight} highlight
|
|
57
|
+
* @param {SGMesh} mesh
|
|
58
|
+
* @param {number} entity
|
|
59
|
+
*/
|
|
60
|
+
unlink(highlight: Highlight, mesh: SGMesh, entity: number): void;
|
|
61
|
+
/**
|
|
62
|
+
* @param {FrameContext} frame
|
|
63
|
+
*/
|
|
64
|
+
record(frame: FrameContext): void;
|
|
65
|
+
#private;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The outline is drawn into the scene, so the fog of war conceals it along with what it outlines.
|
|
69
|
+
*/
|
|
70
|
+
export class HighlightExtension extends RenderExtension {
|
|
71
|
+
/**
|
|
72
|
+
* @param {HighlightSystem} system
|
|
73
|
+
*/
|
|
74
|
+
constructor(system: HighlightSystem);
|
|
75
|
+
record(frame: any): void;
|
|
76
|
+
#private;
|
|
77
|
+
}
|
|
78
|
+
import { System } from "../ecs/System.js";
|
|
79
|
+
import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
|
|
80
|
+
import Highlight from "../graphics/ecs/highlight/Highlight.js";
|
|
81
|
+
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
82
|
+
//# sourceMappingURL=HighlightSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HighlightSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/HighlightSystem.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IA6EI;;;OAGG;IACH,0DAQC;IAxFD,mDAAmC;IA8CnC;;;;OAIG;IACH,WAFU,MAAM,CAEwB;IAExC;;;;OAIG;IACH,wBAEC;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,yBAEC;IAgBD,2CAIC;IAED,4CAYC;IAED;;;;OAIG;IACH,gBAJW,SAAS,QACT,MAAM,UACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,kBAJW,SAAS,QACT,MAAM,UACN,MAAM,QAgBhB;IAmBD;;OAEG;IACH,kCAmBC;;CACJ;AAED;;GAEG;AACH;IAUI;;OAEG;IACH,oBAFW,eAAe,EAMzB;IAED,yBAEC;;CACJ;uBA7OsB,kBAAkB;uBAElB,6CAA6C;sBAD9C,wCAAwC;gCAF9B,mDAAmD"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { assert } from "../../core/assert.js";
|
|
2
|
+
import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
|
|
3
|
+
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
4
|
+
import { System } from "../ecs/System.js";
|
|
5
|
+
import Highlight from "../graphics/ecs/highlight/Highlight.js";
|
|
6
|
+
import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
|
|
7
|
+
import { GPUHighlightRenderer } from "./highlight/GPUHighlightRenderer.js";
|
|
8
|
+
import { HIGHLIGHT_OUTLINE_THICKNESS } from "./highlight/HIGHLIGHT_OUTLINE.js";
|
|
9
|
+
import { pack_highlight_table } from "./highlight/pack_highlight_table.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Outlines highlighted entities under Shade.
|
|
13
|
+
*
|
|
14
|
+
* **An outline is a neighbourhood test on the visibility buffer**, which already says which mesh
|
|
15
|
+
* every pixel came from. The renderer this replaces drew each highlighted object a second time into
|
|
16
|
+
* an id target of its own, dilated the mask across two ping-ponged render targets, blurred it, and
|
|
17
|
+
* decoded ids back to colours — five render targets and a duplicated scene graph, for a picture this
|
|
18
|
+
* gets from a texture the frame was already writing.
|
|
19
|
+
*
|
|
20
|
+
* **Highlights no longer show through what stands in front of them (D27).** The old id pass cleared
|
|
21
|
+
* the depth buffer, so a unit behind a building was outlined in full; the visibility buffer knows
|
|
22
|
+
* only what was rasterized, so it is outlined where it can be seen and nowhere else. That is the
|
|
23
|
+
* accepted cost of not drawing the scene twice.
|
|
24
|
+
*
|
|
25
|
+
* The table is rebuilt every frame, and that is the cheaper arrangement rather than a concession:
|
|
26
|
+
* the game's highlights animate their colour and alpha continuously (0.2 s in, 0.7 s out), so
|
|
27
|
+
* nothing would be saved by watching for changes — and a `Color`'s change signal does not fire for
|
|
28
|
+
* alpha-only edits, which is exactly what this animation is.
|
|
29
|
+
*/
|
|
30
|
+
export class HighlightSystem extends System {
|
|
31
|
+
dependencies = [Highlight, SGMesh];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @type {GraphicsEngine}
|
|
35
|
+
*/
|
|
36
|
+
#graphics;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @type {MeshSystem}
|
|
40
|
+
*/
|
|
41
|
+
#meshes;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @type {GPUHighlightRenderer}
|
|
45
|
+
*/
|
|
46
|
+
#renderer = new GPUHighlightRenderer();
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Highlighted entities, in link order.
|
|
50
|
+
*
|
|
51
|
+
* @type {Array<{entity: number, highlight: Highlight}>}
|
|
52
|
+
*/
|
|
53
|
+
#entries = [];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @type {Map<number, object>}
|
|
57
|
+
*/
|
|
58
|
+
#by_entity = new Map();
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* One packed rgba8 colour per mesh row, indexed by the row the visibility buffer writes.
|
|
62
|
+
*
|
|
63
|
+
* @type {Uint32Array}
|
|
64
|
+
*/
|
|
65
|
+
#table = new Uint32Array(0);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @type {number}
|
|
69
|
+
*/
|
|
70
|
+
#table_size = 0;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @type {RenderExtension|null}
|
|
74
|
+
*/
|
|
75
|
+
#extension = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* How wide the outline is drawn, in pixels.
|
|
79
|
+
*
|
|
80
|
+
* @type {number}
|
|
81
|
+
*/
|
|
82
|
+
thickness = HIGHLIGHT_OUTLINE_THICKNESS;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* What is highlighted. Read-only — highlights follow their entities.
|
|
86
|
+
*
|
|
87
|
+
* @returns {Array}
|
|
88
|
+
*/
|
|
89
|
+
get highlights() {
|
|
90
|
+
return this.#entries;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @returns {Uint32Array} the table the last update packed
|
|
95
|
+
*/
|
|
96
|
+
get table() {
|
|
97
|
+
return this.#table;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @returns {number} rows of {@link table} in use
|
|
102
|
+
*/
|
|
103
|
+
get table_size() {
|
|
104
|
+
return this.#table_size;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @param {GraphicsEngine} graphics
|
|
109
|
+
* @param {MeshSystem} meshes
|
|
110
|
+
*/
|
|
111
|
+
constructor(graphics, meshes) {
|
|
112
|
+
super();
|
|
113
|
+
|
|
114
|
+
assert.defined(graphics, 'graphics');
|
|
115
|
+
assert.defined(meshes, 'meshes');
|
|
116
|
+
|
|
117
|
+
this.#graphics = graphics;
|
|
118
|
+
this.#meshes = meshes;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
async startup(entityManager) {
|
|
122
|
+
this.entityManager = entityManager;
|
|
123
|
+
|
|
124
|
+
this.#extension = this.#graphics.add_extension(new HighlightExtension(this));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async shutdown(entityManager) {
|
|
128
|
+
if (this.#extension !== null) {
|
|
129
|
+
this.#graphics.remove_extension(this.#extension);
|
|
130
|
+
|
|
131
|
+
this.#extension = null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
this.#renderer.destroy();
|
|
135
|
+
|
|
136
|
+
this.#entries.length = 0;
|
|
137
|
+
this.#by_entity.clear();
|
|
138
|
+
this.#table_size = 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @param {Highlight} highlight
|
|
143
|
+
* @param {SGMesh} mesh
|
|
144
|
+
* @param {number} entity
|
|
145
|
+
*/
|
|
146
|
+
link(highlight, mesh, entity) {
|
|
147
|
+
const entry = { entity, highlight };
|
|
148
|
+
|
|
149
|
+
this.#entries.push(entry);
|
|
150
|
+
this.#by_entity.set(entity, entry);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @param {Highlight} highlight
|
|
155
|
+
* @param {SGMesh} mesh
|
|
156
|
+
* @param {number} entity
|
|
157
|
+
*/
|
|
158
|
+
unlink(highlight, mesh, entity) {
|
|
159
|
+
const entry = this.#by_entity.get(entity);
|
|
160
|
+
|
|
161
|
+
if (entry === undefined) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const index = this.#entries.indexOf(entry);
|
|
166
|
+
|
|
167
|
+
if (index !== -1) {
|
|
168
|
+
this.#entries.splice(index, 1);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
this.#by_entity.delete(entity);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Pack this frame's table. See {@link pack_highlight_table} for why it is every frame.
|
|
176
|
+
*
|
|
177
|
+
* @param {GPUSceneContext} scene
|
|
178
|
+
*/
|
|
179
|
+
#pack(scene) {
|
|
180
|
+
const packed = pack_highlight_table({
|
|
181
|
+
entries: this.#entries,
|
|
182
|
+
meshes: this.#meshes,
|
|
183
|
+
scene,
|
|
184
|
+
table: this.#table
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
this.#table = packed.table;
|
|
188
|
+
this.#table_size = packed.size;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @param {FrameContext} frame
|
|
193
|
+
*/
|
|
194
|
+
record(frame) {
|
|
195
|
+
if (this.#entries.length === 0) {
|
|
196
|
+
// nothing highlighted, so the frame keeps the colour it had and pays nothing
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
this.#pack(frame.view.scene);
|
|
201
|
+
|
|
202
|
+
if (this.#table_size === 0) {
|
|
203
|
+
// highlighted entities whose models are not in the scene yet
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
this.#renderer.graph_draw({
|
|
208
|
+
frame,
|
|
209
|
+
table: this.#table,
|
|
210
|
+
table_size: this.#table_size,
|
|
211
|
+
thickness: this.thickness
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* The outline is drawn into the scene, so the fog of war conceals it along with what it outlines.
|
|
218
|
+
*/
|
|
219
|
+
export class HighlightExtension extends RenderExtension {
|
|
220
|
+
name = "highlight";
|
|
221
|
+
|
|
222
|
+
phase = FramePhase.AfterTransparency;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @type {HighlightSystem}
|
|
226
|
+
*/
|
|
227
|
+
#system;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* @param {HighlightSystem} system
|
|
231
|
+
*/
|
|
232
|
+
constructor(system) {
|
|
233
|
+
super();
|
|
234
|
+
|
|
235
|
+
this.#system = system;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
record(frame) {
|
|
239
|
+
this.#system.record(frame);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
@@ -1,82 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @deprecated Renamed to {@link HighlightSystem}. The trailing `3` marked the 2.x → 3.x renderer transition;
|
|
3
|
+
* the 2.x name it disambiguated against is gone, so the suffix no longer distinguishes anything.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* an id target of its own, dilated the mask across two ping-ponged render targets, blurred it, and
|
|
7
|
-
* decoded ids back to colours — five render targets and a duplicated scene graph, for a picture this
|
|
8
|
-
* gets from a texture the frame was already writing.
|
|
9
|
-
*
|
|
10
|
-
* **Highlights no longer show through what stands in front of them (D27).** The old id pass cleared
|
|
11
|
-
* the depth buffer, so a unit behind a building was outlined in full; the visibility buffer knows
|
|
12
|
-
* only what was rasterized, so it is outlined where it can be seen and nowhere else. That is the
|
|
13
|
-
* accepted cost of not drawing the scene twice.
|
|
14
|
-
*
|
|
15
|
-
* The table is rebuilt every frame, and that is the cheaper arrangement rather than a concession:
|
|
16
|
-
* the game's highlights animate their colour and alpha continuously (0.2 s in, 0.7 s out), so
|
|
17
|
-
* nothing would be saved by watching for changes — and a `Color`'s change signal does not fire for
|
|
18
|
-
* alpha-only edits, which is exactly what this animation is.
|
|
19
|
-
*/
|
|
20
|
-
export class HighlightSystem3 extends System<any> {
|
|
21
|
-
/**
|
|
22
|
-
* @param {GraphicsEngine3} graphics
|
|
23
|
-
* @param {MeshSystem3} meshes
|
|
24
|
-
*/
|
|
25
|
-
constructor(graphics: GraphicsEngine3, meshes: MeshSystem3);
|
|
26
|
-
dependencies: (typeof SGMesh | typeof Highlight)[];
|
|
27
|
-
/**
|
|
28
|
-
* How wide the outline is drawn, in pixels.
|
|
29
|
-
*
|
|
30
|
-
* @type {number}
|
|
31
|
-
*/
|
|
32
|
-
thickness: number;
|
|
33
|
-
/**
|
|
34
|
-
* What is highlighted. Read-only — highlights follow their entities.
|
|
35
|
-
*
|
|
36
|
-
* @returns {Array}
|
|
37
|
-
*/
|
|
38
|
-
get highlights(): any[];
|
|
39
|
-
/**
|
|
40
|
-
* @returns {Uint32Array} the table the last update packed
|
|
41
|
-
*/
|
|
42
|
-
get table(): Uint32Array;
|
|
43
|
-
/**
|
|
44
|
-
* @returns {number} rows of {@link table} in use
|
|
45
|
-
*/
|
|
46
|
-
get table_size(): number;
|
|
47
|
-
startup(entityManager: any): Promise<void>;
|
|
48
|
-
shutdown(entityManager: any): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* @param {Highlight} highlight
|
|
51
|
-
* @param {SGMesh} mesh
|
|
52
|
-
* @param {number} entity
|
|
53
|
-
*/
|
|
54
|
-
link(highlight: Highlight, mesh: SGMesh, entity: number): void;
|
|
55
|
-
/**
|
|
56
|
-
* @param {Highlight} highlight
|
|
57
|
-
* @param {SGMesh} mesh
|
|
58
|
-
* @param {number} entity
|
|
59
|
-
*/
|
|
60
|
-
unlink(highlight: Highlight, mesh: SGMesh, entity: number): void;
|
|
61
|
-
/**
|
|
62
|
-
* @param {FrameContext} frame
|
|
63
|
-
*/
|
|
64
|
-
record(frame: FrameContext): void;
|
|
65
|
-
#private;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* The outline is drawn into the scene, so the fog of war conceals it along with what it outlines.
|
|
5
|
+
* Kept as a re-export rather than removed: this is a library, and an import path is as much a
|
|
6
|
+
* published interface as a class name.
|
|
69
7
|
*/
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
-
* @param {HighlightSystem3} system
|
|
73
|
-
*/
|
|
74
|
-
constructor(system: HighlightSystem3);
|
|
75
|
-
record(frame: any): void;
|
|
76
|
-
#private;
|
|
77
|
-
}
|
|
78
|
-
import { System } from "../ecs/System.js";
|
|
79
|
-
import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
|
|
80
|
-
import Highlight from "../graphics/ecs/highlight/Highlight.js";
|
|
81
|
-
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
8
|
+
export const HighlightSystem3: typeof HighlightSystem;
|
|
9
|
+
import { HighlightSystem } from "./HighlightSystem.js";
|
|
82
10
|
//# sourceMappingURL=HighlightSystem3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HighlightSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/HighlightSystem3.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HighlightSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/HighlightSystem3.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,sDAAgD;gCAThB,sBAAsB"}
|
|
@@ -1,241 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
|
|
3
|
-
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
4
|
-
import { System } from "../ecs/System.js";
|
|
5
|
-
import Highlight from "../graphics/ecs/highlight/Highlight.js";
|
|
6
|
-
import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
|
|
7
|
-
import { GPUHighlightRenderer } from "./highlight/GPUHighlightRenderer.js";
|
|
8
|
-
import { HIGHLIGHT_OUTLINE_THICKNESS } from "./highlight/HIGHLIGHT_OUTLINE.js";
|
|
9
|
-
import { pack_highlight_table } from "./highlight/pack_highlight_table.js";
|
|
1
|
+
import { HighlightSystem } from "./HighlightSystem.js";
|
|
10
2
|
|
|
11
3
|
/**
|
|
12
|
-
*
|
|
4
|
+
* @deprecated Renamed to {@link HighlightSystem}. 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.
|
|
13
6
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* an id target of its own, dilated the mask across two ping-ponged render targets, blurred it, and
|
|
17
|
-
* decoded ids back to colours — five render targets and a duplicated scene graph, for a picture this
|
|
18
|
-
* gets from a texture the frame was already writing.
|
|
19
|
-
*
|
|
20
|
-
* **Highlights no longer show through what stands in front of them (D27).** The old id pass cleared
|
|
21
|
-
* the depth buffer, so a unit behind a building was outlined in full; the visibility buffer knows
|
|
22
|
-
* only what was rasterized, so it is outlined where it can be seen and nowhere else. That is the
|
|
23
|
-
* accepted cost of not drawing the scene twice.
|
|
24
|
-
*
|
|
25
|
-
* The table is rebuilt every frame, and that is the cheaper arrangement rather than a concession:
|
|
26
|
-
* the game's highlights animate their colour and alpha continuously (0.2 s in, 0.7 s out), so
|
|
27
|
-
* nothing would be saved by watching for changes — and a `Color`'s change signal does not fire for
|
|
28
|
-
* alpha-only edits, which is exactly what this animation is.
|
|
29
|
-
*/
|
|
30
|
-
export class HighlightSystem3 extends System {
|
|
31
|
-
dependencies = [Highlight, SGMesh];
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @type {GraphicsEngine3}
|
|
35
|
-
*/
|
|
36
|
-
#graphics;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* @type {MeshSystem3}
|
|
40
|
-
*/
|
|
41
|
-
#meshes;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @type {GPUHighlightRenderer}
|
|
45
|
-
*/
|
|
46
|
-
#renderer = new GPUHighlightRenderer();
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Highlighted entities, in link order.
|
|
50
|
-
*
|
|
51
|
-
* @type {Array<{entity: number, highlight: Highlight}>}
|
|
52
|
-
*/
|
|
53
|
-
#entries = [];
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @type {Map<number, object>}
|
|
57
|
-
*/
|
|
58
|
-
#by_entity = new Map();
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* One packed rgba8 colour per mesh row, indexed by the row the visibility buffer writes.
|
|
62
|
-
*
|
|
63
|
-
* @type {Uint32Array}
|
|
64
|
-
*/
|
|
65
|
-
#table = new Uint32Array(0);
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @type {number}
|
|
69
|
-
*/
|
|
70
|
-
#table_size = 0;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* @type {RenderExtension|null}
|
|
74
|
-
*/
|
|
75
|
-
#extension = null;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* How wide the outline is drawn, in pixels.
|
|
79
|
-
*
|
|
80
|
-
* @type {number}
|
|
81
|
-
*/
|
|
82
|
-
thickness = HIGHLIGHT_OUTLINE_THICKNESS;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* What is highlighted. Read-only — highlights follow their entities.
|
|
86
|
-
*
|
|
87
|
-
* @returns {Array}
|
|
88
|
-
*/
|
|
89
|
-
get highlights() {
|
|
90
|
-
return this.#entries;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* @returns {Uint32Array} the table the last update packed
|
|
95
|
-
*/
|
|
96
|
-
get table() {
|
|
97
|
-
return this.#table;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* @returns {number} rows of {@link table} in use
|
|
102
|
-
*/
|
|
103
|
-
get table_size() {
|
|
104
|
-
return this.#table_size;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* @param {GraphicsEngine3} graphics
|
|
109
|
-
* @param {MeshSystem3} meshes
|
|
110
|
-
*/
|
|
111
|
-
constructor(graphics, meshes) {
|
|
112
|
-
super();
|
|
113
|
-
|
|
114
|
-
assert.defined(graphics, 'graphics');
|
|
115
|
-
assert.defined(meshes, 'meshes');
|
|
116
|
-
|
|
117
|
-
this.#graphics = graphics;
|
|
118
|
-
this.#meshes = meshes;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
async startup(entityManager) {
|
|
122
|
-
this.entityManager = entityManager;
|
|
123
|
-
|
|
124
|
-
this.#extension = this.#graphics.add_extension(new HighlightExtension(this));
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
async shutdown(entityManager) {
|
|
128
|
-
if (this.#extension !== null) {
|
|
129
|
-
this.#graphics.remove_extension(this.#extension);
|
|
130
|
-
|
|
131
|
-
this.#extension = null;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
this.#renderer.destroy();
|
|
135
|
-
|
|
136
|
-
this.#entries.length = 0;
|
|
137
|
-
this.#by_entity.clear();
|
|
138
|
-
this.#table_size = 0;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* @param {Highlight} highlight
|
|
143
|
-
* @param {SGMesh} mesh
|
|
144
|
-
* @param {number} entity
|
|
145
|
-
*/
|
|
146
|
-
link(highlight, mesh, entity) {
|
|
147
|
-
const entry = { entity, highlight };
|
|
148
|
-
|
|
149
|
-
this.#entries.push(entry);
|
|
150
|
-
this.#by_entity.set(entity, entry);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* @param {Highlight} highlight
|
|
155
|
-
* @param {SGMesh} mesh
|
|
156
|
-
* @param {number} entity
|
|
157
|
-
*/
|
|
158
|
-
unlink(highlight, mesh, entity) {
|
|
159
|
-
const entry = this.#by_entity.get(entity);
|
|
160
|
-
|
|
161
|
-
if (entry === undefined) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const index = this.#entries.indexOf(entry);
|
|
166
|
-
|
|
167
|
-
if (index !== -1) {
|
|
168
|
-
this.#entries.splice(index, 1);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
this.#by_entity.delete(entity);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Pack this frame's table. See {@link pack_highlight_table} for why it is every frame.
|
|
176
|
-
*
|
|
177
|
-
* @param {GPUSceneContext} scene
|
|
178
|
-
*/
|
|
179
|
-
#pack(scene) {
|
|
180
|
-
const packed = pack_highlight_table({
|
|
181
|
-
entries: this.#entries,
|
|
182
|
-
meshes: this.#meshes,
|
|
183
|
-
scene,
|
|
184
|
-
table: this.#table
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
this.#table = packed.table;
|
|
188
|
-
this.#table_size = packed.size;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* @param {FrameContext} frame
|
|
193
|
-
*/
|
|
194
|
-
record(frame) {
|
|
195
|
-
if (this.#entries.length === 0) {
|
|
196
|
-
// nothing highlighted, so the frame keeps the colour it had and pays nothing
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
this.#pack(frame.view.scene);
|
|
201
|
-
|
|
202
|
-
if (this.#table_size === 0) {
|
|
203
|
-
// highlighted entities whose models are not in the scene yet
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
this.#renderer.graph_draw({
|
|
208
|
-
frame,
|
|
209
|
-
table: this.#table,
|
|
210
|
-
table_size: this.#table_size,
|
|
211
|
-
thickness: this.thickness
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* The outline is drawn into the scene, so the fog of war conceals it along with what it outlines.
|
|
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.
|
|
218
9
|
*/
|
|
219
|
-
export
|
|
220
|
-
name = "highlight";
|
|
221
|
-
|
|
222
|
-
phase = FramePhase.AfterTransparency;
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* @type {HighlightSystem3}
|
|
226
|
-
*/
|
|
227
|
-
#system;
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* @param {HighlightSystem3} system
|
|
231
|
-
*/
|
|
232
|
-
constructor(system) {
|
|
233
|
-
super();
|
|
234
|
-
|
|
235
|
-
this.#system = system;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
record(frame) {
|
|
239
|
-
this.#system.record(frame);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
10
|
+
export const HighlightSystem3 = HighlightSystem;
|