@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,84 +1,84 @@
|
|
|
1
|
-
import { Name } from "../ecs/name/Name.js";
|
|
2
|
-
import { EntityNode } from "../ecs/parent/EntityNode.js";
|
|
3
|
-
import { Transform } from "../ecs/transform/Transform.js";
|
|
4
|
-
import { transform_copy_from_t64 } from "../ecs/transform/transform_copy_from_t64.js";
|
|
5
|
-
import { DrawMode } from "../graphics/ecs/mesh-v2/DrawMode.js";
|
|
6
|
-
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Turn a loaded model's node tree into entities.
|
|
10
|
-
*
|
|
11
|
-
* **This is what a hierarchy is in an ECS** (D47). meep has no scene graph to hand a model to: it
|
|
12
|
-
* has entities, `EntityNode` to parent them, and `ShadedGeometry` for the ones that draw. A model
|
|
13
|
-
* file is therefore not a thing an entity *holds* — it is a shape an entity's descendants take, and
|
|
14
|
-
* this function is where the file stops being the renderer's tree and becomes the dataset's.
|
|
15
|
-
*
|
|
16
|
-
* It is `three_object_to_entity_composition` with the source swapped: the same output, built from
|
|
17
|
-
* Shade's `Node3D`s instead of three's `Object3D`s. The two exist side by side for as long as both
|
|
18
|
-
* renderers do.
|
|
19
|
-
*
|
|
20
|
-
* **Geometry and material are shared, not copied.** Two entities placing the same model name the
|
|
21
|
-
* same `MeshletGeometry` and the same `ShadeMaterial`; what is per-entity is the row each one gets
|
|
22
|
-
* in the scene, which is `
|
|
23
|
-
* needs no clone of the bundle at all.
|
|
24
|
-
*
|
|
25
|
-
* **A skinned mesh is not expanded, and that is a boundary rather than an omission.** Its vertices
|
|
26
|
-
* are deformed against a skeleton the renderer owns and the GPU poses, and making those joints
|
|
27
|
-
* entities is a design this program does not do (D47). A `SkinnedMesh` node therefore contributes
|
|
28
|
-
* its transform and its name and no geometry, and whatever placed the model keeps drawing it the way
|
|
29
|
-
* Phase 4 built.
|
|
30
|
-
*
|
|
31
|
-
* @param {Node3D} node
|
|
32
|
-
* @returns {EntityNode}
|
|
33
|
-
*/
|
|
34
|
-
export function shade_node_to_entity_composition(node) {
|
|
35
|
-
const result = new EntityNode();
|
|
36
|
-
|
|
37
|
-
// the hierarchy's own transform: what this node is, relative to its parent
|
|
38
|
-
transform_copy_from_t64(result.transform, node.transform_local);
|
|
39
|
-
|
|
40
|
-
const entity = result.entity;
|
|
41
|
-
|
|
42
|
-
entity.add(transform_copy_from_t64(new Transform(), node.transform_global));
|
|
43
|
-
entity.add(new Name(node.name));
|
|
44
|
-
|
|
45
|
-
if (node.isMesh === true && node.isSkinnedMesh !== true) {
|
|
46
|
-
entity.add(ShadedGeometry.from(node.geometry, node.material, DrawMode.Triangles));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const children = node.children;
|
|
50
|
-
|
|
51
|
-
for (let i = 0; i < children.length; i++) {
|
|
52
|
-
result.addChild(shade_node_to_entity_composition(children[i]));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* The same, for everything a loader produced.
|
|
60
|
-
*
|
|
61
|
-
* A bundle can carry more than one scene — glTF allows it — and the entity that placed the file owns
|
|
62
|
-
* all of them, so they become children of one root rather than several compositions nobody joins.
|
|
63
|
-
*
|
|
64
|
-
* @param {SceneBundle} bundle
|
|
65
|
-
* @returns {EntityNode}
|
|
66
|
-
*/
|
|
67
|
-
export function shade_bundle_to_entity_composition(bundle) {
|
|
68
|
-
const scenes = bundle.scenes;
|
|
69
|
-
|
|
70
|
-
if (scenes.length === 1) {
|
|
71
|
-
return shade_node_to_entity_composition(scenes[0]);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const root = new EntityNode();
|
|
75
|
-
|
|
76
|
-
root.entity.add(new Transform());
|
|
77
|
-
root.entity.add(new Name(""));
|
|
78
|
-
|
|
79
|
-
for (let i = 0; i < scenes.length; i++) {
|
|
80
|
-
root.addChild(shade_node_to_entity_composition(scenes[i]));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return root;
|
|
84
|
-
}
|
|
1
|
+
import { Name } from "../ecs/name/Name.js";
|
|
2
|
+
import { EntityNode } from "../ecs/parent/EntityNode.js";
|
|
3
|
+
import { Transform } from "../ecs/transform/Transform.js";
|
|
4
|
+
import { transform_copy_from_t64 } from "../ecs/transform/transform_copy_from_t64.js";
|
|
5
|
+
import { DrawMode } from "../graphics/ecs/mesh-v2/DrawMode.js";
|
|
6
|
+
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Turn a loaded model's node tree into entities.
|
|
10
|
+
*
|
|
11
|
+
* **This is what a hierarchy is in an ECS** (D47). meep has no scene graph to hand a model to: it
|
|
12
|
+
* has entities, `EntityNode` to parent them, and `ShadedGeometry` for the ones that draw. A model
|
|
13
|
+
* file is therefore not a thing an entity *holds* — it is a shape an entity's descendants take, and
|
|
14
|
+
* this function is where the file stops being the renderer's tree and becomes the dataset's.
|
|
15
|
+
*
|
|
16
|
+
* It is `three_object_to_entity_composition` with the source swapped: the same output, built from
|
|
17
|
+
* Shade's `Node3D`s instead of three's `Object3D`s. The two exist side by side for as long as both
|
|
18
|
+
* renderers do.
|
|
19
|
+
*
|
|
20
|
+
* **Geometry and material are shared, not copied.** Two entities placing the same model name the
|
|
21
|
+
* same `MeshletGeometry` and the same `ShadeMaterial`; what is per-entity is the row each one gets
|
|
22
|
+
* in the scene, which is `ShadedGeometrySystem`'s business. That is the whole reason a static model
|
|
23
|
+
* needs no clone of the bundle at all.
|
|
24
|
+
*
|
|
25
|
+
* **A skinned mesh is not expanded, and that is a boundary rather than an omission.** Its vertices
|
|
26
|
+
* are deformed against a skeleton the renderer owns and the GPU poses, and making those joints
|
|
27
|
+
* entities is a design this program does not do (D47). A `SkinnedMesh` node therefore contributes
|
|
28
|
+
* its transform and its name and no geometry, and whatever placed the model keeps drawing it the way
|
|
29
|
+
* Phase 4 built.
|
|
30
|
+
*
|
|
31
|
+
* @param {Node3D} node
|
|
32
|
+
* @returns {EntityNode}
|
|
33
|
+
*/
|
|
34
|
+
export function shade_node_to_entity_composition(node) {
|
|
35
|
+
const result = new EntityNode();
|
|
36
|
+
|
|
37
|
+
// the hierarchy's own transform: what this node is, relative to its parent
|
|
38
|
+
transform_copy_from_t64(result.transform, node.transform_local);
|
|
39
|
+
|
|
40
|
+
const entity = result.entity;
|
|
41
|
+
|
|
42
|
+
entity.add(transform_copy_from_t64(new Transform(), node.transform_global));
|
|
43
|
+
entity.add(new Name(node.name));
|
|
44
|
+
|
|
45
|
+
if (node.isMesh === true && node.isSkinnedMesh !== true) {
|
|
46
|
+
entity.add(ShadedGeometry.from(node.geometry, node.material, DrawMode.Triangles));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const children = node.children;
|
|
50
|
+
|
|
51
|
+
for (let i = 0; i < children.length; i++) {
|
|
52
|
+
result.addChild(shade_node_to_entity_composition(children[i]));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The same, for everything a loader produced.
|
|
60
|
+
*
|
|
61
|
+
* A bundle can carry more than one scene — glTF allows it — and the entity that placed the file owns
|
|
62
|
+
* all of them, so they become children of one root rather than several compositions nobody joins.
|
|
63
|
+
*
|
|
64
|
+
* @param {SceneBundle} bundle
|
|
65
|
+
* @returns {EntityNode}
|
|
66
|
+
*/
|
|
67
|
+
export function shade_bundle_to_entity_composition(bundle) {
|
|
68
|
+
const scenes = bundle.scenes;
|
|
69
|
+
|
|
70
|
+
if (scenes.length === 1) {
|
|
71
|
+
return shade_node_to_entity_composition(scenes[0]);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const root = new EntityNode();
|
|
75
|
+
|
|
76
|
+
root.entity.add(new Transform());
|
|
77
|
+
root.entity.add(new Name(""));
|
|
78
|
+
|
|
79
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
80
|
+
root.addChild(shade_node_to_entity_composition(scenes[i]));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return root;
|
|
84
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;AA4D5C;;;;;;;;;;;;;;;;GAgBG;AACH,+CAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;AA4D5C;;;;;;;;;;;;;;;;GAgBG;AACH,+CAFU,aAAa,CAMpB;8BAnG2B,wCAAwC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;AA8CzB;;;;;;;;;;;;;GAaG;AACH,uCAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;AA8CzB;;;;;;;;;;;;;GAaG;AACH,uCAFU,aAAa,CAMpB;6BA1F0B,4CAA4C;8BAE3C,wCAAwC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;AA0E7B;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;AA0E7B;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,aAAa,CAMpB;6BAlI0B,4CAA4C;8BAE3C,wCAAwC"}
|
|
@@ -1,134 +1,133 @@
|
|
|
1
|
-
import { f32, u32, vec3f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
-
import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
|
|
3
|
-
import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
|
|
4
|
-
import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
|
|
5
|
-
import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
|
|
6
|
-
import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
-
import {
|
|
8
|
-
BVH_NODE_CHILD_2_WORD,
|
|
9
|
-
BVH_NODE_STRIDE_WORDS
|
|
10
|
-
} from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
|
|
11
|
-
import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
|
|
12
|
-
import { BVH_TRAVERSAL_STACK_SIZE } from "../../renderer/shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
|
|
13
|
-
import {
|
|
14
|
-
chunk_ray_query_blas_nearest
|
|
15
|
-
} from "../../renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
|
|
16
|
-
import {
|
|
17
|
-
chunk_geometry_read_triangle_vertices
|
|
18
|
-
} from "../../renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
|
|
19
|
-
import { RAY_STRUCT } from "../../renderer/shader/chunk/geometry/ray/RAY_STRUCT.js";
|
|
20
|
-
import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
21
|
-
import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
|
|
22
|
-
import {
|
|
23
|
-
MESHLET_METADATA_STRUCT
|
|
24
|
-
} from "../../renderer/geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
25
|
-
|
|
26
|
-
export const BLAS_VISIBILITY_WORKGROUP_SIZE = 64;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @type {WebGPUStruct}
|
|
30
|
-
*/
|
|
31
|
-
export const BLAS_VISIBILITY_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
32
|
-
origin: vec3f,
|
|
33
|
-
leaf_count: u32,
|
|
34
|
-
node_word_offset: u32,
|
|
35
|
-
leaf_nodes_offset: u32,
|
|
36
|
-
geometry_index: u32,
|
|
37
|
-
tmax: f32,
|
|
38
|
-
}, "BlasVisibilitySettings");
|
|
39
|
-
|
|
40
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
41
|
-
resources.createGroup()
|
|
42
|
-
.addUniform("settings", BLAS_VISIBILITY_SETTINGS_STRUCT)
|
|
43
|
-
.addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
|
|
44
|
-
.addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
|
|
45
|
-
.addStorageBuffer("blas_data", WebGPUArray.from(BVH2_NODE_STRUCT), false)
|
|
46
|
-
.addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false)
|
|
47
|
-
.addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT), false)
|
|
48
|
-
.addStorageBuffer("meshlet_data", GEOMETRY_ATTRIBUTE_DATA_TYPE, false)
|
|
49
|
-
.addStorageBuffer("nodes", WebGPUArray.from(f32), false)
|
|
50
|
-
// per leaf: the parametric t the traversal came back with, negative for a miss
|
|
51
|
-
.addStorageBuffer("out_t", WebGPUArray.from(f32), true)
|
|
52
|
-
// per leaf: the triangle the traversal returned, or 0xFFFFFFFF
|
|
53
|
-
.addStorageBuffer("out_triangle", WebGPUArray.from(u32), true)
|
|
54
|
-
// per leaf: the distance to the point the ray was aimed at, which the answer cannot exceed
|
|
55
|
-
.addStorageBuffer("out_expected_t", WebGPUArray.from(f32), true);
|
|
56
|
-
|
|
57
|
-
const body = CodeChunk.from(
|
|
58
|
-
//language=WGSL
|
|
59
|
-
`
|
|
60
|
-
const NODE_STRIDE = ${BVH_NODE_STRIDE_WORDS}u;
|
|
61
|
-
const NODE_CHILD_2 = ${BVH_NODE_CHILD_2_WORD}u;
|
|
62
|
-
|
|
63
|
-
@compute @workgroup_size(${BLAS_VISIBILITY_WORKGROUP_SIZE}, 1, 1)
|
|
64
|
-
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
65
|
-
let i = gid.x;
|
|
66
|
-
|
|
67
|
-
if (i >= settings.leaf_count) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
let leaf_node = leaf_nodes[settings.leaf_nodes_offset + i];
|
|
72
|
-
|
|
73
|
-
let node_word = settings.node_word_offset + leaf_node * NODE_STRIDE;
|
|
74
|
-
|
|
75
|
-
let meshlet_triangle_id = bitcast<u32>(nodes[node_word + NODE_CHILD_2]);
|
|
76
|
-
|
|
77
|
-
let triangle = geometry_read_triangle_vertices(
|
|
78
|
-
geometries[settings.geometry_index],
|
|
79
|
-
meshlet_triangle_id
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
// Aim at the triangle's own centroid, which is strictly inside it. The ray provably intersects
|
|
83
|
-
// this triangle, so the traversal has to come back with *something* — this one, or something
|
|
84
|
-
// occluding it. A miss is not a geometric possibility; it is the traversal failing to reach a
|
|
85
|
-
// leaf whose box, by construction, the ray passes through.
|
|
86
|
-
let centre = (triangle.a.position + triangle.b.position + triangle.c.position) / 3.0;
|
|
87
|
-
|
|
88
|
-
var ray: ${RAY_STRUCT.wgsl_ref};
|
|
89
|
-
|
|
90
|
-
ray.origin = settings.origin;
|
|
91
|
-
ray.direction = normalize(centre - settings.origin);
|
|
92
|
-
ray.tmax = settings.tmax;
|
|
93
|
-
|
|
94
|
-
var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
|
|
95
|
-
|
|
96
|
-
let hit = ray_query_blas_nearest(ray, settings.geometry_index, &stack, 0u);
|
|
97
|
-
|
|
98
|
-
out_t[i] = hit.t;
|
|
99
|
-
out_triangle[i] = select(0xFFFFFFFFu, hit.triangle, hit.t >= 0.0);
|
|
100
|
-
|
|
101
|
-
// The ray was aimed at a point on this triangle, so the nearest surface along it is at most
|
|
102
|
-
// this far. An answer beyond it is not an occlusion and not a miss — it is the traversal
|
|
103
|
-
// walking past a surface it was pointed at, which is what a hole in the traced image is.
|
|
104
|
-
out_expected_t[i] = length(centre - settings.origin);
|
|
105
|
-
}
|
|
106
|
-
`, [
|
|
107
|
-
RAY_STRUCT.declaration_chunk,
|
|
108
|
-
chunk_geometry_read_triangle_vertices,
|
|
109
|
-
chunk_ray_query_blas_nearest,
|
|
110
|
-
]);
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Ask the traversal, once per triangle, whether it can find that triangle.
|
|
114
|
-
*
|
|
115
|
-
* Every structural check on the tree has passed, which narrows the fault to the traversal itself —
|
|
116
|
-
* and traversal is the one thing no readback of the tree can exercise. So this runs the real
|
|
117
|
-
* `ray_query_blas_nearest`, the same function the path tracer calls, along a ray whose answer is
|
|
118
|
-
* known in advance.
|
|
119
|
-
*
|
|
120
|
-
* The ray goes from the camera to a triangle's centroid. That point is inside the triangle, so the
|
|
121
|
-
* ray intersects it, so the query must return a hit — this triangle if nothing is in front, some
|
|
122
|
-
* other one if something is. Only a miss is impossible, and a miss is therefore a traversal that
|
|
123
|
-
* failed to reach a leaf whose box it was inside.
|
|
124
|
-
*
|
|
125
|
-
* Which triangles miss, and where they are, is the whole diagnosis.
|
|
126
|
-
*
|
|
127
|
-
* @type {ComputeShader}
|
|
128
|
-
*/
|
|
129
|
-
export const shader_blas_audit_visibility = ComputeShader.from({
|
|
130
|
-
label: "BLAS/AuditVisibility",
|
|
131
|
-
resources,
|
|
132
|
-
body,
|
|
133
|
-
|
|
134
|
-
});
|
|
1
|
+
import { f32, u32, vec3f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
|
|
3
|
+
import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
|
|
4
|
+
import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
|
|
5
|
+
import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
|
|
6
|
+
import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
+
import {
|
|
8
|
+
BVH_NODE_CHILD_2_WORD,
|
|
9
|
+
BVH_NODE_STRIDE_WORDS
|
|
10
|
+
} from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
|
|
11
|
+
import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
|
|
12
|
+
import { BVH_TRAVERSAL_STACK_SIZE } from "../../renderer/shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
|
|
13
|
+
import {
|
|
14
|
+
chunk_ray_query_blas_nearest
|
|
15
|
+
} from "../../renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
|
|
16
|
+
import {
|
|
17
|
+
chunk_geometry_read_triangle_vertices
|
|
18
|
+
} from "../../renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
|
|
19
|
+
import { RAY_STRUCT } from "../../renderer/shader/chunk/geometry/ray/RAY_STRUCT.js";
|
|
20
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
21
|
+
import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
|
|
22
|
+
import {
|
|
23
|
+
MESHLET_METADATA_STRUCT
|
|
24
|
+
} from "../../renderer/geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
25
|
+
|
|
26
|
+
export const BLAS_VISIBILITY_WORKGROUP_SIZE = 64;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @type {WebGPUStruct}
|
|
30
|
+
*/
|
|
31
|
+
export const BLAS_VISIBILITY_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
32
|
+
origin: vec3f,
|
|
33
|
+
leaf_count: u32,
|
|
34
|
+
node_word_offset: u32,
|
|
35
|
+
leaf_nodes_offset: u32,
|
|
36
|
+
geometry_index: u32,
|
|
37
|
+
tmax: f32,
|
|
38
|
+
}, "BlasVisibilitySettings");
|
|
39
|
+
|
|
40
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
41
|
+
resources.createGroup()
|
|
42
|
+
.addUniform("settings", BLAS_VISIBILITY_SETTINGS_STRUCT)
|
|
43
|
+
.addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
|
|
44
|
+
.addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
|
|
45
|
+
.addStorageBuffer("blas_data", WebGPUArray.from(BVH2_NODE_STRUCT), false)
|
|
46
|
+
.addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false)
|
|
47
|
+
.addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT), false)
|
|
48
|
+
.addStorageBuffer("meshlet_data", GEOMETRY_ATTRIBUTE_DATA_TYPE, false)
|
|
49
|
+
.addStorageBuffer("nodes", WebGPUArray.from(f32), false)
|
|
50
|
+
// per leaf: the parametric t the traversal came back with, negative for a miss
|
|
51
|
+
.addStorageBuffer("out_t", WebGPUArray.from(f32), true)
|
|
52
|
+
// per leaf: the triangle the traversal returned, or 0xFFFFFFFF
|
|
53
|
+
.addStorageBuffer("out_triangle", WebGPUArray.from(u32), true)
|
|
54
|
+
// per leaf: the distance to the point the ray was aimed at, which the answer cannot exceed
|
|
55
|
+
.addStorageBuffer("out_expected_t", WebGPUArray.from(f32), true);
|
|
56
|
+
|
|
57
|
+
const body = CodeChunk.from(
|
|
58
|
+
//language=WGSL
|
|
59
|
+
`
|
|
60
|
+
const NODE_STRIDE = ${BVH_NODE_STRIDE_WORDS}u;
|
|
61
|
+
const NODE_CHILD_2 = ${BVH_NODE_CHILD_2_WORD}u;
|
|
62
|
+
|
|
63
|
+
@compute @workgroup_size(${BLAS_VISIBILITY_WORKGROUP_SIZE}, 1, 1)
|
|
64
|
+
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
65
|
+
let i = gid.x;
|
|
66
|
+
|
|
67
|
+
if (i >= settings.leaf_count) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let leaf_node = leaf_nodes[settings.leaf_nodes_offset + i];
|
|
72
|
+
|
|
73
|
+
let node_word = settings.node_word_offset + leaf_node * NODE_STRIDE;
|
|
74
|
+
|
|
75
|
+
let meshlet_triangle_id = bitcast<u32>(nodes[node_word + NODE_CHILD_2]);
|
|
76
|
+
|
|
77
|
+
let triangle = geometry_read_triangle_vertices(
|
|
78
|
+
geometries[settings.geometry_index],
|
|
79
|
+
meshlet_triangle_id
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// Aim at the triangle's own centroid, which is strictly inside it. The ray provably intersects
|
|
83
|
+
// this triangle, so the traversal has to come back with *something* — this one, or something
|
|
84
|
+
// occluding it. A miss is not a geometric possibility; it is the traversal failing to reach a
|
|
85
|
+
// leaf whose box, by construction, the ray passes through.
|
|
86
|
+
let centre = (triangle.a.position + triangle.b.position + triangle.c.position) / 3.0;
|
|
87
|
+
|
|
88
|
+
var ray: ${RAY_STRUCT.wgsl_ref};
|
|
89
|
+
|
|
90
|
+
ray.origin = settings.origin;
|
|
91
|
+
ray.direction = normalize(centre - settings.origin);
|
|
92
|
+
ray.tmax = settings.tmax;
|
|
93
|
+
|
|
94
|
+
var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
|
|
95
|
+
|
|
96
|
+
let hit = ray_query_blas_nearest(ray, settings.geometry_index, &stack, 0u);
|
|
97
|
+
|
|
98
|
+
out_t[i] = hit.t;
|
|
99
|
+
out_triangle[i] = select(0xFFFFFFFFu, hit.triangle, hit.t >= 0.0);
|
|
100
|
+
|
|
101
|
+
// The ray was aimed at a point on this triangle, so the nearest surface along it is at most
|
|
102
|
+
// this far. An answer beyond it is not an occlusion and not a miss — it is the traversal
|
|
103
|
+
// walking past a surface it was pointed at, which is what a hole in the traced image is.
|
|
104
|
+
out_expected_t[i] = length(centre - settings.origin);
|
|
105
|
+
}
|
|
106
|
+
`, [
|
|
107
|
+
RAY_STRUCT.declaration_chunk,
|
|
108
|
+
chunk_geometry_read_triangle_vertices,
|
|
109
|
+
chunk_ray_query_blas_nearest,
|
|
110
|
+
]);
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Ask the traversal, once per triangle, whether it can find that triangle.
|
|
114
|
+
*
|
|
115
|
+
* Every structural check on the tree has passed, which narrows the fault to the traversal itself —
|
|
116
|
+
* and traversal is the one thing no readback of the tree can exercise. So this runs the real
|
|
117
|
+
* `ray_query_blas_nearest`, the same function the path tracer calls, along a ray whose answer is
|
|
118
|
+
* known in advance.
|
|
119
|
+
*
|
|
120
|
+
* The ray goes from the camera to a triangle's centroid. That point is inside the triangle, so the
|
|
121
|
+
* ray intersects it, so the query must return a hit — this triangle if nothing is in front, some
|
|
122
|
+
* other one if something is. Only a miss is impossible, and a miss is therefore a traversal that
|
|
123
|
+
* failed to reach a leaf whose box it was inside.
|
|
124
|
+
*
|
|
125
|
+
* Which triangles miss, and where they are, is the whole diagnosis.
|
|
126
|
+
*
|
|
127
|
+
* @type {ComputeShader}
|
|
128
|
+
*/
|
|
129
|
+
export const shader_blas_audit_visibility = ComputeShader.from({
|
|
130
|
+
label: "BLAS/AuditVisibility",
|
|
131
|
+
resources,
|
|
132
|
+
body,
|
|
133
|
+
});
|