@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,123 +1,123 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { round_up } from "../../../../core/math/round_up.js";
|
|
3
|
-
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
4
|
-
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
5
|
-
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
6
|
-
import {
|
|
7
|
-
shader_nodes_update_transform_hierarchy_naive
|
|
8
|
-
} from "./shader_nodes_update_transform_hierarchy_naive.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* High-level wrapper for the brute-force transform-hierarchy update.
|
|
12
|
-
*
|
|
13
|
-
* Drop-in alternative to {@link graph_scene_update_transform_hierarchy}
|
|
14
|
-
* that drives the simple "every thread walks its own parent chain"
|
|
15
|
-
* shader instead of the CSDLDF lookback variant. Same input shape
|
|
16
|
-
* (full `[0, node_count)` sweep), same output (writes `node.global`),
|
|
17
|
-
* same return contract — swap the import in the caller and nothing
|
|
18
|
-
* else changes.
|
|
19
|
-
*
|
|
20
|
-
* Useful as a known-correct reference: when the CSDLDF variant
|
|
21
|
-
* misbehaves, run the naive one in its place and see if the symptom
|
|
22
|
-
* persists. If it does, the bug is upstream of the propagation
|
|
23
|
-
* (apply pass, build, scene_database upload). If it doesn't, the
|
|
24
|
-
* bug is in CSDLDF's lookback / fallback / spine logic.
|
|
25
|
-
*
|
|
26
|
-
* @param {object} args
|
|
27
|
-
* @param {FrameGraph} args.graph
|
|
28
|
-
* @param {GPUSceneContext} args.scene
|
|
29
|
-
* @param {number} [args.scene_database] optional graph
|
|
30
|
-
* resource handle to chain off if the database was already
|
|
31
|
-
* written by an earlier pass this frame. Omit for a standalone
|
|
32
|
-
* import.
|
|
33
|
-
*
|
|
34
|
-
* @returns {{ scene_database: number }}
|
|
35
|
-
*/
|
|
36
|
-
export function graph_scene_update_transform_hierarchy_naive({
|
|
37
|
-
graph,
|
|
38
|
-
scene,
|
|
39
|
-
scene_database,
|
|
40
|
-
}) {
|
|
41
|
-
assert.defined(graph, 'graph');
|
|
42
|
-
assert.defined(scene, 'scene');
|
|
43
|
-
assert.equal(scene.isGPUSceneContext, true, 'scene must be a GPUSceneContext');
|
|
44
|
-
|
|
45
|
-
// Live rows, which is not the same as the highest row in use: removal frees a row and leaves a
|
|
46
|
-
// hole, so the ids are taken from the table's occupancy below rather than counted up.
|
|
47
|
-
const transforms_table = scene.scene_database.get('transforms');
|
|
48
|
-
const node_count = transforms_table.count;
|
|
49
|
-
|
|
50
|
-
const gr_scene_database = scene_database !== undefined
|
|
51
|
-
? scene_database
|
|
52
|
-
: graph_import_buffer(graph, scene.scene_database_buffer, "scene_database");
|
|
53
|
-
|
|
54
|
-
if (node_count === 0) {
|
|
55
|
-
return { scene_database: gr_scene_database };
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// ── Pass 1: assemble the input buffer ───────────────────────────
|
|
59
|
-
// Same layout as the CSDLDF wrapper: u32 count + 12 bytes of
|
|
60
|
-
// alignment padding + `array<u32>` of node ids.
|
|
61
|
-
|
|
62
|
-
const HEADER_BYTES = 16;
|
|
63
|
-
const HEADER_U32S = HEADER_BYTES / u32.size;
|
|
64
|
-
const buffer_byte_size = round_up(HEADER_BYTES + node_count * u32.size, 16);
|
|
65
|
-
|
|
66
|
-
const build_data = {};
|
|
67
|
-
|
|
68
|
-
function build_execute(data, resources, context) {
|
|
69
|
-
const buffer = resources.get(data.buffer);
|
|
70
|
-
const encoder = context.encoder;
|
|
71
|
-
|
|
72
|
-
const flat = new Uint32Array(HEADER_U32S + node_count);
|
|
73
|
-
flat[0] = transforms_table.write_occupied_element_ids(flat, HEADER_U32S);
|
|
74
|
-
|
|
75
|
-
encoder.writeBuffer(
|
|
76
|
-
buffer, 0,
|
|
77
|
-
flat.buffer, flat.byteOffset,
|
|
78
|
-
flat.byteLength,
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const build_pass = graph.add(
|
|
83
|
-
"scene-graph naive / build node id list",
|
|
84
|
-
build_data,
|
|
85
|
-
build_execute,
|
|
86
|
-
);
|
|
87
|
-
build_data.buffer = build_pass.create(
|
|
88
|
-
"node id list (naive)",
|
|
89
|
-
BufferResourceDescriptor.from(
|
|
90
|
-
buffer_byte_size,
|
|
91
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
92
|
-
),
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
// ── Pass 2: dispatch the brute-force update ────────────────────
|
|
96
|
-
|
|
97
|
-
const update_data = {};
|
|
98
|
-
|
|
99
|
-
function update_execute(data, resources, context) {
|
|
100
|
-
shader_nodes_update_transform_hierarchy_naive.
|
|
101
|
-
encoder: context.encoder,
|
|
102
|
-
|
|
103
|
-
bindings: {
|
|
104
|
-
input: resources.get(data.input),
|
|
105
|
-
scene_database: resources.get(data.scene_database),
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const update_pass = graph.add(
|
|
111
|
-
"scene-graph naive / propagate",
|
|
112
|
-
update_data,
|
|
113
|
-
update_execute,
|
|
114
|
-
);
|
|
115
|
-
update_data.input = update_pass.read(build_data.buffer);
|
|
116
|
-
update_data.scene_database = update_pass.write(
|
|
117
|
-
update_pass.read(gr_scene_database)
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
return {
|
|
121
|
-
scene_database: update_data.scene_database,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { round_up } from "../../../../core/math/round_up.js";
|
|
3
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
4
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
5
|
+
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
6
|
+
import {
|
|
7
|
+
shader_nodes_update_transform_hierarchy_naive
|
|
8
|
+
} from "./shader_nodes_update_transform_hierarchy_naive.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* High-level wrapper for the brute-force transform-hierarchy update.
|
|
12
|
+
*
|
|
13
|
+
* Drop-in alternative to {@link graph_scene_update_transform_hierarchy}
|
|
14
|
+
* that drives the simple "every thread walks its own parent chain"
|
|
15
|
+
* shader instead of the CSDLDF lookback variant. Same input shape
|
|
16
|
+
* (full `[0, node_count)` sweep), same output (writes `node.global`),
|
|
17
|
+
* same return contract — swap the import in the caller and nothing
|
|
18
|
+
* else changes.
|
|
19
|
+
*
|
|
20
|
+
* Useful as a known-correct reference: when the CSDLDF variant
|
|
21
|
+
* misbehaves, run the naive one in its place and see if the symptom
|
|
22
|
+
* persists. If it does, the bug is upstream of the propagation
|
|
23
|
+
* (apply pass, build, scene_database upload). If it doesn't, the
|
|
24
|
+
* bug is in CSDLDF's lookback / fallback / spine logic.
|
|
25
|
+
*
|
|
26
|
+
* @param {object} args
|
|
27
|
+
* @param {FrameGraph} args.graph
|
|
28
|
+
* @param {GPUSceneContext} args.scene
|
|
29
|
+
* @param {number} [args.scene_database] optional graph
|
|
30
|
+
* resource handle to chain off if the database was already
|
|
31
|
+
* written by an earlier pass this frame. Omit for a standalone
|
|
32
|
+
* import.
|
|
33
|
+
*
|
|
34
|
+
* @returns {{ scene_database: number }}
|
|
35
|
+
*/
|
|
36
|
+
export function graph_scene_update_transform_hierarchy_naive({
|
|
37
|
+
graph,
|
|
38
|
+
scene,
|
|
39
|
+
scene_database,
|
|
40
|
+
}) {
|
|
41
|
+
assert.defined(graph, 'graph');
|
|
42
|
+
assert.defined(scene, 'scene');
|
|
43
|
+
assert.equal(scene.isGPUSceneContext, true, 'scene must be a GPUSceneContext');
|
|
44
|
+
|
|
45
|
+
// Live rows, which is not the same as the highest row in use: removal frees a row and leaves a
|
|
46
|
+
// hole, so the ids are taken from the table's occupancy below rather than counted up.
|
|
47
|
+
const transforms_table = scene.scene_database.get('transforms');
|
|
48
|
+
const node_count = transforms_table.count;
|
|
49
|
+
|
|
50
|
+
const gr_scene_database = scene_database !== undefined
|
|
51
|
+
? scene_database
|
|
52
|
+
: graph_import_buffer(graph, scene.scene_database_buffer, "scene_database");
|
|
53
|
+
|
|
54
|
+
if (node_count === 0) {
|
|
55
|
+
return { scene_database: gr_scene_database };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ── Pass 1: assemble the input buffer ───────────────────────────
|
|
59
|
+
// Same layout as the CSDLDF wrapper: u32 count + 12 bytes of
|
|
60
|
+
// alignment padding + `array<u32>` of node ids.
|
|
61
|
+
|
|
62
|
+
const HEADER_BYTES = 16;
|
|
63
|
+
const HEADER_U32S = HEADER_BYTES / u32.size;
|
|
64
|
+
const buffer_byte_size = round_up(HEADER_BYTES + node_count * u32.size, 16);
|
|
65
|
+
|
|
66
|
+
const build_data = {};
|
|
67
|
+
|
|
68
|
+
function build_execute(data, resources, context) {
|
|
69
|
+
const buffer = resources.get(data.buffer);
|
|
70
|
+
const encoder = context.encoder;
|
|
71
|
+
|
|
72
|
+
const flat = new Uint32Array(HEADER_U32S + node_count);
|
|
73
|
+
flat[0] = transforms_table.write_occupied_element_ids(flat, HEADER_U32S);
|
|
74
|
+
|
|
75
|
+
encoder.writeBuffer(
|
|
76
|
+
buffer, 0,
|
|
77
|
+
flat.buffer, flat.byteOffset,
|
|
78
|
+
flat.byteLength,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const build_pass = graph.add(
|
|
83
|
+
"scene-graph naive / build node id list",
|
|
84
|
+
build_data,
|
|
85
|
+
build_execute,
|
|
86
|
+
);
|
|
87
|
+
build_data.buffer = build_pass.create(
|
|
88
|
+
"node id list (naive)",
|
|
89
|
+
BufferResourceDescriptor.from(
|
|
90
|
+
buffer_byte_size,
|
|
91
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
92
|
+
),
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
// ── Pass 2: dispatch the brute-force update ────────────────────
|
|
96
|
+
|
|
97
|
+
const update_data = {};
|
|
98
|
+
|
|
99
|
+
function update_execute(data, resources, context) {
|
|
100
|
+
shader_nodes_update_transform_hierarchy_naive.dispatchThreads({
|
|
101
|
+
encoder: context.encoder,
|
|
102
|
+
thread_count_x: node_count,
|
|
103
|
+
bindings: {
|
|
104
|
+
input: resources.get(data.input),
|
|
105
|
+
scene_database: resources.get(data.scene_database),
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const update_pass = graph.add(
|
|
111
|
+
"scene-graph naive / propagate",
|
|
112
|
+
update_data,
|
|
113
|
+
update_execute,
|
|
114
|
+
);
|
|
115
|
+
update_data.input = update_pass.read(build_data.buffer);
|
|
116
|
+
update_data.scene_database = update_pass.write(
|
|
117
|
+
update_pass.read(gr_scene_database)
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
scene_database: update_data.scene_database,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_nodes_record_input_positions.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js"],"names":[],"mappings":"AAwDA;;GAEG;AACH,kDAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_nodes_record_input_positions.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js"],"names":[],"mappings":"AAwDA;;GAEG;AACH,kDAFU,aAAa,CAMpB;8BA3D2B,+BAA+B"}
|
|
@@ -1,65 +1,64 @@
|
|
|
1
|
-
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
-
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
3
|
-
import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
4
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
5
|
-
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
6
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
-
import { TRANSFORM_HIERARCHY_PARTITION_SIZE } from "./TRANSFORM_HIERARCHY_PARTITION_SIZE.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Setup pass for the CSDLDF-style transform-hierarchy update — fills the
|
|
11
|
-
* `node_to_tile` lookup table that the update shader uses to ask "is this
|
|
12
|
-
* parent in the input, and if so where?" in O(1).
|
|
13
|
-
*
|
|
14
|
-
* Each input position `i` writes its node id's slot:
|
|
15
|
-
*
|
|
16
|
-
* node_to_tile[input.elements[i]] = i + 1
|
|
17
|
-
*
|
|
18
|
-
* The +1 lets us treat 0 as a sentinel for "not in input" — which is how
|
|
19
|
-
* `BufferResourceDescriptor.empty` leaves the buffer between frames, so
|
|
20
|
-
* we don't have to clear it ourselves with a non-zero pattern.
|
|
21
|
-
*
|
|
22
|
-
* The lookup is *position*-based, not tile-based: the update shader needs
|
|
23
|
-
* the position to index `published_globals` (per-input-position atomic
|
|
24
|
-
* mat4 buffer); the tile is derived as `position / PARTITION_SIZE` for
|
|
25
|
-
* the spine-flag check. Encoding position covers both needs in one slot.
|
|
26
|
-
*
|
|
27
|
-
* The buffer is sized to cover every node id the input might reference
|
|
28
|
-
* (i.e. the transforms-table's element capacity). Slots for nodes not in
|
|
29
|
-
* the input keep their cleared 0 value, signalling "look me up directly
|
|
30
|
-
* from the database".
|
|
31
|
-
*/
|
|
32
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
33
|
-
resources.createGroup()
|
|
34
|
-
.addStorageBuffer("input", COLLECTION_U32_STRUCT_READ)
|
|
35
|
-
.addStorageBuffer("node_to_tile", WebGPUArray.from(u32), true);
|
|
36
|
-
|
|
37
|
-
const body = CodeChunk.from(
|
|
38
|
-
//language=WGSL
|
|
39
|
-
`
|
|
40
|
-
@compute @workgroup_size(${TRANSFORM_HIERARCHY_PARTITION_SIZE})
|
|
41
|
-
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
42
|
-
let pos = gid.x;
|
|
43
|
-
if(pos >= input.count){
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
let node_id = input.elements[pos];
|
|
48
|
-
|
|
49
|
-
// Encode position + 1; the 0 sentinel reserved for "not in input"
|
|
50
|
-
// dovetails with the buffer's zero-initialized state. The update
|
|
51
|
-
// shader recovers the tile as (position / PARTITION_SIZE) when it
|
|
52
|
-
// needs the spine-flag index.
|
|
53
|
-
node_to_tile[node_id] = pos + 1u;
|
|
54
|
-
}
|
|
55
|
-
`, []);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @type {ComputeShader}
|
|
59
|
-
*/
|
|
60
|
-
export const shader_nodes_record_input_positions = ComputeShader.from({
|
|
61
|
-
label: "SceneGraph/RecordInputPositions",
|
|
62
|
-
body,
|
|
63
|
-
resources,
|
|
64
|
-
|
|
65
|
-
});
|
|
1
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
3
|
+
import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
4
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
6
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
+
import { TRANSFORM_HIERARCHY_PARTITION_SIZE } from "./TRANSFORM_HIERARCHY_PARTITION_SIZE.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Setup pass for the CSDLDF-style transform-hierarchy update — fills the
|
|
11
|
+
* `node_to_tile` lookup table that the update shader uses to ask "is this
|
|
12
|
+
* parent in the input, and if so where?" in O(1).
|
|
13
|
+
*
|
|
14
|
+
* Each input position `i` writes its node id's slot:
|
|
15
|
+
*
|
|
16
|
+
* node_to_tile[input.elements[i]] = i + 1
|
|
17
|
+
*
|
|
18
|
+
* The +1 lets us treat 0 as a sentinel for "not in input" — which is how
|
|
19
|
+
* `BufferResourceDescriptor.empty` leaves the buffer between frames, so
|
|
20
|
+
* we don't have to clear it ourselves with a non-zero pattern.
|
|
21
|
+
*
|
|
22
|
+
* The lookup is *position*-based, not tile-based: the update shader needs
|
|
23
|
+
* the position to index `published_globals` (per-input-position atomic
|
|
24
|
+
* mat4 buffer); the tile is derived as `position / PARTITION_SIZE` for
|
|
25
|
+
* the spine-flag check. Encoding position covers both needs in one slot.
|
|
26
|
+
*
|
|
27
|
+
* The buffer is sized to cover every node id the input might reference
|
|
28
|
+
* (i.e. the transforms-table's element capacity). Slots for nodes not in
|
|
29
|
+
* the input keep their cleared 0 value, signalling "look me up directly
|
|
30
|
+
* from the database".
|
|
31
|
+
*/
|
|
32
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
33
|
+
resources.createGroup()
|
|
34
|
+
.addStorageBuffer("input", COLLECTION_U32_STRUCT_READ)
|
|
35
|
+
.addStorageBuffer("node_to_tile", WebGPUArray.from(u32), true);
|
|
36
|
+
|
|
37
|
+
const body = CodeChunk.from(
|
|
38
|
+
//language=WGSL
|
|
39
|
+
`
|
|
40
|
+
@compute @workgroup_size(${TRANSFORM_HIERARCHY_PARTITION_SIZE})
|
|
41
|
+
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
42
|
+
let pos = gid.x;
|
|
43
|
+
if(pos >= input.count){
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let node_id = input.elements[pos];
|
|
48
|
+
|
|
49
|
+
// Encode position + 1; the 0 sentinel reserved for "not in input"
|
|
50
|
+
// dovetails with the buffer's zero-initialized state. The update
|
|
51
|
+
// shader recovers the tile as (position / PARTITION_SIZE) when it
|
|
52
|
+
// needs the spine-flag index.
|
|
53
|
+
node_to_tile[node_id] = pos + 1u;
|
|
54
|
+
}
|
|
55
|
+
`, []);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @type {ComputeShader}
|
|
59
|
+
*/
|
|
60
|
+
export const shader_nodes_record_input_positions = ComputeShader.from({
|
|
61
|
+
label: "SceneGraph/RecordInputPositions",
|
|
62
|
+
body,
|
|
63
|
+
resources,
|
|
64
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_nodes_update_transform_hierarchy.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js"],"names":[],"mappings":"AA2WA;;;GAGG;AACH,sDAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_nodes_update_transform_hierarchy.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js"],"names":[],"mappings":"AA2WA;;;GAGG;AACH,sDAFU,aAAa,CAMpB;8BA5W2B,+BAA+B"}
|