@woosh/meep-engine 3.11.3 → 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/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/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/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/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +0 -1
- 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 +4 -7
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
- package/src/shade/renderer/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/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.js +2 -2
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +0 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +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/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
- package/src/shade/renderer/rasterize/native/oit/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/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 -296
- package/src/shade/renderer/shader/ImageShader.js +217 -217
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +20 -0
- package/src/shade/renderer/shader/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/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +12 -15
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +3 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +3 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
- package/src/shade/renderer/water/shader_water.js +246 -246
- package/src/shade/vitest.setup.mjs +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
- package/src/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
|
@@ -1,73 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @deprecated Renamed to {@link Trail3DSystem}. 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
|
-
* 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 Trail3DSystem3 extends System<any> {
|
|
25
|
-
/**
|
|
26
|
-
* @param {GraphicsEngine3} graphics
|
|
27
|
-
*/
|
|
28
|
-
constructor(graphics: GraphicsEngine3);
|
|
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.
|
|
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.
|
|
59
7
|
*/
|
|
60
|
-
export
|
|
61
|
-
|
|
62
|
-
* @param {Trail3DSystem3} system
|
|
63
|
-
*/
|
|
64
|
-
constructor(system: Trail3DSystem3);
|
|
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";
|
|
8
|
+
export const Trail3DSystem3: typeof Trail3DSystem;
|
|
9
|
+
import { Trail3DSystem } from "./Trail3DSystem.js";
|
|
73
10
|
//# sourceMappingURL=Trail3DSystem3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail3DSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem3.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Trail3DSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem3.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,kDAA4C;8BATd,oBAAoB"}
|
|
@@ -1,221 +1,10 @@
|
|
|
1
|
-
import {
|
|
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";
|
|
1
|
+
import { Trail3DSystem } from "./Trail3DSystem.js";
|
|
20
2
|
|
|
21
3
|
/**
|
|
22
|
-
*
|
|
4
|
+
* @deprecated Renamed to {@link Trail3DSystem}. 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.
|
|
23
6
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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 Trail3DSystem3 extends System {
|
|
45
|
-
dependencies = [Trail3D, Transform];
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @type {GraphicsEngine3}
|
|
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 {GraphicsEngine3} 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.
|
|
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.
|
|
198
9
|
*/
|
|
199
|
-
export
|
|
200
|
-
name = "trails";
|
|
201
|
-
|
|
202
|
-
phase = FramePhase.AfterTransparency;
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* @type {Trail3DSystem3}
|
|
206
|
-
*/
|
|
207
|
-
#system;
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* @param {Trail3DSystem3} system
|
|
211
|
-
*/
|
|
212
|
-
constructor(system) {
|
|
213
|
-
super();
|
|
214
|
-
|
|
215
|
-
this.#system = system;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
record(frame) {
|
|
219
|
-
this.#system.record(frame);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
10
|
+
export const Trail3DSystem3 = Trail3DSystem;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* is in Brick4 mode — so a level's lightmap is a property of the level, not of a thing standing in
|
|
7
7
|
* it. Making it a component is what gives it a lifetime an entity already has: it arrives when the
|
|
8
8
|
* level's entity is built, it is saved with it, and it goes away when the entity does. See
|
|
9
|
-
* {@link
|
|
9
|
+
* {@link VolumetricLightMapSystem} for what happens when two entities claim the scene at once.
|
|
10
10
|
*
|
|
11
11
|
* **The payload is opaque here on purpose.** It is brick4's own GPU structure — the format
|
|
12
12
|
* `brick4_to_gpu_structure` writes and the indirect-lighting shaders read — and everything inside
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* with the world-space bounds it was baked against, so the map already knows where it is. Moving
|
|
19
19
|
* the entity that carries it moves nothing.
|
|
20
20
|
*
|
|
21
|
-
* @see
|
|
21
|
+
* @see VolumetricLightMapSystem
|
|
22
22
|
* @see Brick4LightMap
|
|
23
23
|
*/
|
|
24
24
|
export class VolumetricLightMap {
|
|
@@ -10,7 +10,7 @@ import { is_array_buffer_equals } from "../../core/collection/array/typed/is_arr
|
|
|
10
10
|
* is in Brick4 mode — so a level's lightmap is a property of the level, not of a thing standing in
|
|
11
11
|
* it. Making it a component is what gives it a lifetime an entity already has: it arrives when the
|
|
12
12
|
* level's entity is built, it is saved with it, and it goes away when the entity does. See
|
|
13
|
-
* {@link
|
|
13
|
+
* {@link VolumetricLightMapSystem} for what happens when two entities claim the scene at once.
|
|
14
14
|
*
|
|
15
15
|
* **The payload is opaque here on purpose.** It is brick4's own GPU structure — the format
|
|
16
16
|
* `brick4_to_gpu_structure` writes and the indirect-lighting shaders read — and everything inside
|
|
@@ -22,7 +22,7 @@ import { is_array_buffer_equals } from "../../core/collection/array/typed/is_arr
|
|
|
22
22
|
* with the world-space bounds it was baked against, so the map already knows where it is. Moving
|
|
23
23
|
* the entity that carries it moves nothing.
|
|
24
24
|
*
|
|
25
|
-
* @see
|
|
25
|
+
* @see VolumetricLightMapSystem
|
|
26
26
|
* @see Brick4LightMap
|
|
27
27
|
*/
|
|
28
28
|
export class VolumetricLightMap {
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bytes the scene's lightmap buffer should hold for a given claim.
|
|
3
|
+
*
|
|
4
|
+
* **A claim with nothing usable in it is still a claim.** A component whose bake has not finished
|
|
5
|
+
* loading holds `null`, and one whose file turned out to be empty holds a zero-length buffer —
|
|
6
|
+
* neither is a structure the shader can traverse, and neither can simply be handed to
|
|
7
|
+
* `Brick4LightMap.upload`: it copies what it is given and no more, so a zero-length upload writes
|
|
8
|
+
* nothing at all and leaves the previous level's lighting exactly where it was. Both therefore
|
|
9
|
+
* resolve to an empty map, which is a real structure that lights nothing.
|
|
10
|
+
*
|
|
11
|
+
* @param {VolumetricLightMap|null} map `null` when nothing claims the scene
|
|
12
|
+
* @returns {ArrayBuffer}
|
|
13
|
+
*/
|
|
14
|
+
export function volumetric_light_map_payload(map: VolumetricLightMap | null): ArrayBuffer;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the scene's lightmap buffer is already holding what the claim says it should.
|
|
17
|
+
*
|
|
18
|
+
* The whole of what {@link VolumetricLightMapSystem.update} decides, and true on all but a handful
|
|
19
|
+
* of frames in a session — an upload is a state change, and there are only so many of those.
|
|
20
|
+
*
|
|
21
|
+
* **A claim is identified by the component, not by its bytes.** Comparing the buffers would answer
|
|
22
|
+
* the same question and cost a full read of a megabyte-scale map to do it; the version is what makes
|
|
23
|
+
* a component that swapped its bytes distinguishable from one that did not.
|
|
24
|
+
*
|
|
25
|
+
* **No claim and nothing uploaded is current; no claim after an upload is not.** That asymmetry is
|
|
26
|
+
* the unlink: a buffer nobody has written to holds nothing, and a buffer holding the last level's
|
|
27
|
+
* lighting has to be given an empty map before it holds nothing too.
|
|
28
|
+
*
|
|
29
|
+
* @param {VolumetricLightMap|null} active what claims the scene now
|
|
30
|
+
* @param {VolumetricLightMap|null} uploaded what the buffer was last given, `null` for none
|
|
31
|
+
* @param {number} uploaded_version {@link VolumetricLightMap.version} as of that upload
|
|
32
|
+
* @returns {boolean}
|
|
33
|
+
*/
|
|
34
|
+
export function volumetric_light_map_is_current(active: VolumetricLightMap | null, uploaded: VolumetricLightMap | null, uploaded_version: number): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Feeds the scene's baked volumetric lightmap to the GPU, and takes it away again.
|
|
37
|
+
*
|
|
38
|
+
* **The whole system is one buffer's worth of state.** Shade keeps a single `Brick4LightMap` on the
|
|
39
|
+
* scene's GPU context; a `VolumetricLightMap` component is a claim on it. So unlike the systems
|
|
40
|
+
* around it there is no per-entity object to build and place — there is one upload, and the work is
|
|
41
|
+
* deciding when it has to happen.
|
|
42
|
+
*
|
|
43
|
+
* **A scene has one lightmap, so a second claim waits rather than wins.** {@link active} is the
|
|
44
|
+
* *first* component to link and stays that way until it unlinks, at which point the next in line
|
|
45
|
+
* takes over. The alternative — last writer wins — makes the scene's lighting depend on the order
|
|
46
|
+
* entities happened to be built in, which is not a thing a level author controls. Swapping one map
|
|
47
|
+
* for another is therefore: remove the old component, add the new one.
|
|
48
|
+
*
|
|
49
|
+
* **The upload is decided in {@link update}, not in {@link link}.** A lightmap arrives whenever its
|
|
50
|
+
* level does, including before the renderer has a device — `scene_context` answers `null` until one
|
|
51
|
+
* exists, and answers with a *different* context after a restart, whose buffer is empty again. Both
|
|
52
|
+
* are the same question asked once a frame: is what the GPU holds still what the components say. A
|
|
53
|
+
* link is therefore eventually consistent, by at most one frame.
|
|
54
|
+
*
|
|
55
|
+
* **Unlinking uploads an empty map rather than leaving the last one there.** There is no way to
|
|
56
|
+
* un-upload — the shader reads the buffer unconditionally in Brick4 mode — so a component that
|
|
57
|
+
* removed itself and left the scene lit exactly as before would make the lifetime a fiction. A
|
|
58
|
+
* claim carrying nothing usable resolves the same way; see {@link volumetric_light_map_payload}.
|
|
59
|
+
*
|
|
60
|
+
* **What this does not do is turn Brick4 on.** Which indirect-lighting technique a frame uses is the
|
|
61
|
+
* renderer's setting, and a scene in IBL or LPV mode never reads this buffer no matter what is in
|
|
62
|
+
* it. Uploading a lightmap is necessary for Brick4 lighting and not sufficient for it.
|
|
63
|
+
*
|
|
64
|
+
* @see VolumetricLightMap
|
|
65
|
+
*/
|
|
66
|
+
export class VolumetricLightMapSystem extends System<any> {
|
|
67
|
+
/**
|
|
68
|
+
* @param {GraphicsEngine} graphics
|
|
69
|
+
* @param {Scene} scene
|
|
70
|
+
*/
|
|
71
|
+
constructor(graphics: GraphicsEngine, scene: Scene);
|
|
72
|
+
dependencies: (typeof VolumetricLightMap)[];
|
|
73
|
+
/**
|
|
74
|
+
* The component the scene is lit from, or `null` when nothing claims it.
|
|
75
|
+
*
|
|
76
|
+
* Read-only — it follows the entities. What the GPU holds catches up with this on the next
|
|
77
|
+
* {@link update}.
|
|
78
|
+
*
|
|
79
|
+
* @returns {VolumetricLightMap|null}
|
|
80
|
+
*/
|
|
81
|
+
get active(): VolumetricLightMap;
|
|
82
|
+
startup(entityManager: any): Promise<void>;
|
|
83
|
+
shutdown(entityManager: any): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* @param {VolumetricLightMap} map
|
|
86
|
+
* @param {number} entity
|
|
87
|
+
*/
|
|
88
|
+
link(map: VolumetricLightMap, entity: number): void;
|
|
89
|
+
/**
|
|
90
|
+
* @param {VolumetricLightMap} map
|
|
91
|
+
* @param {number} entity
|
|
92
|
+
*/
|
|
93
|
+
unlink(map: VolumetricLightMap, entity: number): void;
|
|
94
|
+
#private;
|
|
95
|
+
}
|
|
96
|
+
import { VolumetricLightMap } from "./VolumetricLightMap.js";
|
|
97
|
+
import { System } from "../ecs/System.js";
|
|
98
|
+
//# sourceMappingURL=VolumetricLightMapSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VolumetricLightMapSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/VolumetricLightMapSystem.js"],"names":[],"mappings":"AAoNA;;;;;;;;;;;;GAYG;AACH,kDAHW,kBAAkB,GAAC,IAAI,GACrB,WAAW,CAUvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wDALW,kBAAkB,GAAC,IAAI,YACvB,kBAAkB,GAAC,IAAI,oBACvB,MAAM,GACJ,OAAO,CAQnB;AA7PD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;IAyDI;;;OAGG;IACH,oDAQC;IAnED,4CAAoC;IAyCpC;;;;;;;OAOG;IACH,iCAIC;IAgBD,2CAEC;IAED,4CAUC;IAED;;;OAGG;IACH,UAHW,kBAAkB,UAClB,MAAM,QAIhB;IAED;;;OAGG;IACH,YAHW,kBAAkB,UAClB,MAAM,QAYhB;;CA+DJ;mCA7MkC,yBAAyB;uBADrC,kBAAkB"}
|