@woosh/meep-engine 3.11.2 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -18
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/SelectionVisualizer.js +127 -127
- package/editor/entity_world_bounds.js +27 -27
- package/editor/particles/rebuildParticleEmitter.js +31 -31
- package/editor/process/SymbolicDisplayProcess.js +1 -1
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
- package/editor/prototypeEditorShell.js +156 -156
- package/editor/selection/editor_pick.js +130 -130
- package/editor/selection/screen_rect_frustum.js +119 -119
- package/editor/tools/v2/TransformControls.js +971 -971
- package/package.json +1 -1
- package/src/engine/Engine.d.ts +3 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +726 -726
- package/src/engine/EngineHarness.d.ts +1 -1
- package/src/engine/EngineHarness.js +590 -590
- package/src/engine/ecs/HIERARCHY_REVIEW.md +717 -717
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.d.ts +1 -1
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.js +27 -27
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -5
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.js +790 -790
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -129
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +1 -1
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -28
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +428 -428
- package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
- package/src/engine/graphics/ecs/water/Water.js +104 -104
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +65 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationGraphSystem.js +329 -0
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts +6 -61
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem3.js +6 -325
- package/src/engine/graphics3/AnimationSystem.d.ts +76 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationSystem.js +352 -0
- package/src/engine/graphics3/AnimationSystem3.d.ts +6 -72
- package/src/engine/graphics3/AnimationSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem3.js +6 -348
- package/src/engine/graphics3/CameraSystem.d.ts +49 -0
- package/src/engine/graphics3/CameraSystem.d.ts.map +1 -0
- package/src/engine/graphics3/CameraSystem.js +170 -0
- package/src/engine/graphics3/CameraSystem3.d.ts +6 -45
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +6 -166
- package/src/engine/graphics3/DebugDrawSystem.d.ts +72 -0
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DebugDrawSystem.js +205 -0
- package/src/engine/graphics3/DebugDrawSystem3.d.ts +6 -68
- package/src/engine/graphics3/DebugDrawSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem3.js +6 -201
- package/src/engine/graphics3/DecalSystem.d.ts +81 -0
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DecalSystem.js +441 -0
- package/src/engine/graphics3/DecalSystem3.d.ts +6 -77
- package/src/engine/graphics3/DecalSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem3.js +6 -437
- package/src/engine/graphics3/FogOfWarSystem.d.ts +74 -0
- package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -0
- package/src/engine/graphics3/FogOfWarSystem.js +265 -0
- package/src/engine/graphics3/FogOfWarSystem3.d.ts +6 -70
- package/src/engine/graphics3/FogOfWarSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/FogOfWarSystem3.js +6 -261
- package/src/engine/graphics3/GraphicsEngine.d.ts +340 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -0
- package/src/engine/graphics3/GraphicsEngine.js +790 -0
- package/src/engine/graphics3/GraphicsEngine3.d.ts +6 -336
- package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine3.js +6 -786
- package/src/engine/graphics3/HighlightSystem.d.ts +82 -0
- package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/HighlightSystem.js +241 -0
- package/src/engine/graphics3/HighlightSystem3.d.ts +6 -78
- package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightSystem3.js +6 -237
- package/src/engine/graphics3/LightSystem.d.ts +40 -0
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/LightSystem.js +211 -0
- package/src/engine/graphics3/LightSystem3.d.ts +6 -36
- package/src/engine/graphics3/LightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem3.js +6 -207
- package/src/engine/graphics3/MeshSystem.d.ts +106 -0
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -0
- package/src/engine/graphics3/MeshSystem.js +647 -0
- package/src/engine/graphics3/MeshSystem3.d.ts +6 -102
- package/src/engine/graphics3/MeshSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem3.js +6 -642
- package/src/engine/graphics3/ParticipatingMedia.d.ts +2 -2
- package/src/engine/graphics3/ParticipatingMedia.js +203 -203
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +87 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.js +184 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +6 -83
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem3.js +6 -180
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts +76 -0
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticleEmitterSystem.js +289 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +6 -72
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +6 -285
- package/src/engine/graphics3/PathDisplaySystem.d.ts +70 -0
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -0
- package/src/engine/graphics3/PathDisplaySystem.js +309 -0
- package/src/engine/graphics3/PathDisplaySystem3.d.ts +6 -66
- package/src/engine/graphics3/PathDisplaySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem3.js +6 -305
- package/src/engine/graphics3/Pickable.d.ts +1 -1
- package/src/engine/graphics3/Pickable.js +65 -65
- package/src/engine/graphics3/PickingQuery.d.ts +1 -1
- package/src/engine/graphics3/PickingQuery.js +48 -48
- package/src/engine/graphics3/PickingSystem.d.ts +67 -0
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -0
- package/src/engine/graphics3/PickingSystem.js +273 -0
- package/src/engine/graphics3/PickingSystem3.d.ts +6 -63
- package/src/engine/graphics3/PickingSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem3.js +6 -269
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +47 -0
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -0
- package/src/engine/graphics3/ShadedGeometrySystem.js +169 -0
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts +6 -43
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem3.js +6 -165
- package/src/engine/graphics3/TerrainSystem.d.ts +80 -0
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TerrainSystem.js +566 -0
- package/src/engine/graphics3/TerrainSystem3.d.ts +6 -76
- package/src/engine/graphics3/TerrainSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem3.js +6 -562
- package/src/engine/graphics3/TooltipComponentSystem.d.ts +65 -0
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TooltipComponentSystem.js +328 -0
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts +6 -61
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem3.js +6 -324
- package/src/engine/graphics3/Trail3DSystem.d.ts +73 -0
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -0
- package/src/engine/graphics3/Trail3DSystem.js +221 -0
- package/src/engine/graphics3/Trail3DSystem3.d.ts +6 -69
- package/src/engine/graphics3/Trail3DSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem3.js +6 -217
- package/src/engine/graphics3/VolumetricLightMap.d.ts +2 -2
- package/src/engine/graphics3/VolumetricLightMap.js +2 -2
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts +98 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.js +261 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +6 -94
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/VolumetricLightMapSystem3.js +10 -261
- package/src/engine/graphics3/WaterSystem.d.ts +59 -0
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/WaterSystem.js +293 -0
- package/src/engine/graphics3/WaterSystem3.d.ts +6 -55
- package/src/engine/graphics3/WaterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem3.js +6 -289
- package/src/engine/graphics3/animation/AnimationGraphController.d.ts +1 -1
- package/src/engine/graphics3/animation/AnimationGraphController.js +518 -518
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +263 -263
- package/src/engine/graphics3/animation/ClipPlayback.d.ts +2 -2
- package/src/engine/graphics3/animation/ClipPlayback.js +84 -84
- package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
- package/src/engine/graphics3/decal/graph_build_decal_clusters.js +6 -8
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts +0 -7
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts +0 -4
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
- package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
- package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
- package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +16 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +28 -4
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +5 -2
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +564 -451
- package/src/shade/device/ShadeGPUCommandContext.d.ts +18 -2
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +994 -940
- package/src/shade/device/immediate_data_supported.d.ts +33 -0
- package/src/shade/device/immediate_data_supported.d.ts.map +1 -0
- package/src/shade/device/immediate_data_supported.js +53 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts +18 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.js +24 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +49 -1
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -2
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts +65 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts.map +1 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.js +160 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +50 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts +11 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts.map +1 -0
- package/src/shade/device/mock/pipeline_immediate_size.js +18 -0
- package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/PipelineLayoutManager.js +1 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +0 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +0 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +133 -134
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
- package/src/shade/renderer/GraphicsContext.d.ts +9 -2
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +13 -1
- package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
- package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
- package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_tick.js +125 -126
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +98 -99
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +212 -213
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +120 -121
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +75 -76
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +371 -372
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +145 -142
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +34 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +36 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +20 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +25 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +14 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +163 -177
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts +20 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.js +46 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +11 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +57 -27
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +19 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +69 -33
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +35 -35
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.js +38 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.js +29 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts +21 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.js +42 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts +2 -2
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -84
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +215 -204
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +79 -67
- package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +2 -3
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +319 -319
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +41 -42
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
- package/src/shade/renderer/geometry/bvh/record_blas_refit.js +4 -4
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +121 -122
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +774 -774
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +69 -70
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +184 -184
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +142 -143
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +0 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +140 -141
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +0 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +0 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +10 -9
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
- package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
- package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
- package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
- package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +57 -58
- package/src/shade/renderer/particles/prototypeParticleSystem.js +2 -3
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +117 -118
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +77 -79
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +99 -100
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +158 -161
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +119 -119
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +3 -4
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +266 -267
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +270 -271
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +4 -0
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +68 -69
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +341 -345
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +0 -2
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +57 -57
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +109 -110
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +115 -116
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +65 -66
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -3
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +77 -81
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +5 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +136 -137
- package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resample.js +129 -130
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +99 -100
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +383 -383
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +0 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +24 -3
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +350 -292
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +217 -214
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +46 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +32 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js +17 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +69 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js +41 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js +15 -19
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js +44 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js +1 -4
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +7 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +37 -2
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.js +6 -0
- package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +1 -1
- package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_image_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +7 -0
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts +3 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +12 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts +21 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts.map +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.js +21 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +59 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +195 -2
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts +14 -0
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts.map +1 -0
- package/src/shade/renderer/shader/type/type_has_arrays.js +33 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
- package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +2 -2
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -4
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +231 -232
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/NOTES.md +238 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -145
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +38 -15
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +14 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +591 -577
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +17 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +20 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +29 -18
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +260 -260
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts +53 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +175 -59
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
- package/src/shade/renderer/water/shader_water.js +246 -246
- package/src/shade/vitest.setup.mjs +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +1325 -1297
- package/src/view/minimap/Minimap.d.ts +2 -2
- package/src/view/minimap/Minimap.d.ts.map +1 -1
- package/src/view/minimap/Minimap.js +225 -225
- package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.js +0 -1
package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js
CHANGED
|
@@ -1,121 +1,120 @@
|
|
|
1
|
-
import { atomic_u32, u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
-
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
3
|
-
import { GEOMETRY_METADATA_STRUCT } from "../../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
4
|
-
import { MESHLET_METADATA_STRUCT } from "../../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
5
|
-
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
6
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
7
|
-
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
8
|
-
import { SKINNING_BINDING_STRUCT } from "../SKINNING_BINDING_STRUCT.js";
|
|
9
|
-
|
|
10
|
-
export const WORKGROUP_SIZE = 64;
|
|
11
|
-
|
|
12
|
-
// Struct field offsets resolved at module-load time and baked into the
|
|
13
|
-
// shader as constants. The structs use `.pack()` for minimum-size
|
|
14
|
-
// layout, so the field positions depend on the packing heuristic —
|
|
15
|
-
// reading `.get(field).offset` after the build phase is the only
|
|
16
|
-
// reliable way to know where bounds_box / bounding_box actually sit.
|
|
17
|
-
const MESHLET_BOUNDS_OFFSET_WORDS = MESHLET_METADATA_STRUCT.get('bounds_box').offset / 4;
|
|
18
|
-
const MESHLET_STRIDE_WORDS = MESHLET_METADATA_STRUCT.size / 4;
|
|
19
|
-
|
|
20
|
-
const GEOMETRY_BBOX_OFFSET_WORDS = GEOMETRY_METADATA_STRUCT.get('bounding_box').offset / 4;
|
|
21
|
-
const GEOMETRY_STRIDE_WORDS = GEOMETRY_METADATA_STRUCT.size / 4;
|
|
22
|
-
|
|
23
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
24
|
-
resources.createGroup()
|
|
25
|
-
// Sub-dispatch first-pair offset, in pair units. The host
|
|
26
|
-
// paginates if `total_pair_count > maxComputeWorkgroupsPerDimension
|
|
27
|
-
// * WORKGROUP_SIZE`; under typical stress-test scale (~71k pairs)
|
|
28
|
-
// a single sub-dispatch suffices and `dispatch_offset` is zero.
|
|
29
|
-
.addUniform('dispatch_offset', u32)
|
|
30
|
-
.addUniform('total_pair_count', u32)
|
|
31
|
-
.addStorageBuffer('skinning_bindings', WebGPUArray.from(SKINNING_BINDING_STRUCT), false)
|
|
32
|
-
.addStorageBuffer('dispatch_lookup', WebGPUArray.from(u32), false)
|
|
33
|
-
// Same buffers the rasterizer reads as typed structs, bound here
|
|
34
|
-
// as flat `atomic<u32>` arrays so we can do per-cell atomic
|
|
35
|
-
// stores at known field offsets (resolved above at module-load).
|
|
36
|
-
.addStorageBuffer('meshlet_metadata_atomic', WebGPUArray.from(atomic_u32), true)
|
|
37
|
-
.addStorageBuffer('geometry_metadata_atomic', WebGPUArray.from(atomic_u32), true);
|
|
38
|
-
|
|
39
|
-
const body = CodeChunk.from(
|
|
40
|
-
//language=WGSL
|
|
41
|
-
`
|
|
42
|
-
const PLUS_INF: u32 = 0x7F800000u; // bitcast f32(+inf)
|
|
43
|
-
const MINUS_INF: u32 = 0xFF800000u; // bitcast f32(-inf)
|
|
44
|
-
|
|
45
|
-
const MESHLET_BOUNDS_OFFSET: u32 = ${MESHLET_BOUNDS_OFFSET_WORDS}u;
|
|
46
|
-
const MESHLET_STRIDE: u32 = ${MESHLET_STRIDE_WORDS}u;
|
|
47
|
-
const GEOMETRY_BBOX_OFFSET: u32 = ${GEOMETRY_BBOX_OFFSET_WORDS}u;
|
|
48
|
-
const GEOMETRY_STRIDE: u32 = ${GEOMETRY_STRIDE_WORDS}u;
|
|
49
|
-
|
|
50
|
-
@compute @workgroup_size(${WORKGROUP_SIZE},1,1)
|
|
51
|
-
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
52
|
-
let pair_index = gid.x + dispatch_offset;
|
|
53
|
-
if pair_index >= total_pair_count {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let lookup_base = pair_index * 2u;
|
|
58
|
-
let binding_index = dispatch_lookup[lookup_base];
|
|
59
|
-
let meshlet_local = dispatch_lookup[lookup_base + 1u];
|
|
60
|
-
|
|
61
|
-
let binding = skinning_bindings[binding_index];
|
|
62
|
-
let clone_meshlet_abs = binding.clone_meshlet_metadata_offset + meshlet_local;
|
|
63
|
-
|
|
64
|
-
// Meshlet bounds reset: +inf for the 3 min slots, -inf for the
|
|
65
|
-
// 3 max slots. Each meshlet has exactly one (binding, meshlet)
|
|
66
|
-
// pair that touches it, so there's no cross-thread race on these
|
|
67
|
-
// slots — atomicStore is technically overkill, but the buffer is
|
|
68
|
-
// bound atomic-typed for the reduce pass and atomicStore is the
|
|
69
|
-
// way to write through that view.
|
|
70
|
-
let m_base = clone_meshlet_abs * MESHLET_STRIDE + MESHLET_BOUNDS_OFFSET;
|
|
71
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 0u], PLUS_INF);
|
|
72
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 1u], PLUS_INF);
|
|
73
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 2u], PLUS_INF);
|
|
74
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 3u], MINUS_INF);
|
|
75
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 4u], MINUS_INF);
|
|
76
|
-
atomicStore(&meshlet_metadata_atomic[m_base + 5u], MINUS_INF);
|
|
77
|
-
|
|
78
|
-
// Geometry bounds reset gate: the first meshlet of each binding
|
|
79
|
-
// (meshlet_local == 0) does the reset for the binding's clone
|
|
80
|
-
// geometry. Every clone has at least one meshlet, so this fires
|
|
81
|
-
// exactly once per active binding. Multiple bindings could in
|
|
82
|
-
// principle target the same clone — the skinning context allocates
|
|
83
|
-
// one clone per SkinnedMesh, so in practice each binding owns its
|
|
84
|
-
// own geometry — but even if they didn't, the writes here are
|
|
85
|
-
// idempotent (same sentinels).
|
|
86
|
-
if meshlet_local == 0u {
|
|
87
|
-
let g_base = binding.clone_geometry_index * GEOMETRY_STRIDE + GEOMETRY_BBOX_OFFSET;
|
|
88
|
-
atomicStore(&geometry_metadata_atomic[g_base + 0u], PLUS_INF);
|
|
89
|
-
atomicStore(&geometry_metadata_atomic[g_base + 1u], PLUS_INF);
|
|
90
|
-
atomicStore(&geometry_metadata_atomic[g_base + 2u], PLUS_INF);
|
|
91
|
-
atomicStore(&geometry_metadata_atomic[g_base + 3u], MINUS_INF);
|
|
92
|
-
atomicStore(&geometry_metadata_atomic[g_base + 4u], MINUS_INF);
|
|
93
|
-
atomicStore(&geometry_metadata_atomic[g_base + 5u], MINUS_INF);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
`);
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Compute shader that resets per-meshlet `bounds_box` (clone meshlets
|
|
100
|
-
* only) and per-clone-geometry `bounding_box` to ±inf sentinels —
|
|
101
|
-
* the prerequisite for the reduce / merge passes that follow.
|
|
102
|
-
*
|
|
103
|
-
* Linear-thread dispatch: one thread per (binding, meshlet) pair in
|
|
104
|
-
* the skinning context's `dispatch_lookup`. With workgroup size 64,
|
|
105
|
-
* `ceil(total_pair_count / 64)` workgroups cover everything; the
|
|
106
|
-
* `dispatch_offset` uniform lets the host paginate when
|
|
107
|
-
* `total_pair_count > maxComputeWorkgroupsPerDimension * 64`
|
|
108
|
-
* (currently won't trigger — 65535 * 64 ≈ 4M pairs).
|
|
109
|
-
*
|
|
110
|
-
* The geometry bounds reset is gated to `meshlet_local == 0` so each
|
|
111
|
-
* clone geometry is reset exactly once. The clone's bounding_sphere
|
|
112
|
-
* is NOT reset here — the derive-sphere pass at the end of the
|
|
113
|
-
* refresh chain overwrites it wholesale from the box, so no
|
|
114
|
-
* transient state matters.
|
|
115
|
-
*/
|
|
116
|
-
export const shader_meshlet_bounds_scatter = ComputeShader.from({
|
|
117
|
-
label: "Skinning/MeshletBoundsScatter",
|
|
118
|
-
resources,
|
|
119
|
-
body,
|
|
120
|
-
|
|
121
|
-
});
|
|
1
|
+
import { atomic_u32, u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
3
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
4
|
+
import { MESHLET_METADATA_STRUCT } from "../../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
5
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
6
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
7
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
8
|
+
import { SKINNING_BINDING_STRUCT } from "../SKINNING_BINDING_STRUCT.js";
|
|
9
|
+
|
|
10
|
+
export const WORKGROUP_SIZE = 64;
|
|
11
|
+
|
|
12
|
+
// Struct field offsets resolved at module-load time and baked into the
|
|
13
|
+
// shader as constants. The structs use `.pack()` for minimum-size
|
|
14
|
+
// layout, so the field positions depend on the packing heuristic —
|
|
15
|
+
// reading `.get(field).offset` after the build phase is the only
|
|
16
|
+
// reliable way to know where bounds_box / bounding_box actually sit.
|
|
17
|
+
const MESHLET_BOUNDS_OFFSET_WORDS = MESHLET_METADATA_STRUCT.get('bounds_box').offset / 4;
|
|
18
|
+
const MESHLET_STRIDE_WORDS = MESHLET_METADATA_STRUCT.size / 4;
|
|
19
|
+
|
|
20
|
+
const GEOMETRY_BBOX_OFFSET_WORDS = GEOMETRY_METADATA_STRUCT.get('bounding_box').offset / 4;
|
|
21
|
+
const GEOMETRY_STRIDE_WORDS = GEOMETRY_METADATA_STRUCT.size / 4;
|
|
22
|
+
|
|
23
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
24
|
+
resources.createGroup()
|
|
25
|
+
// Sub-dispatch first-pair offset, in pair units. The host
|
|
26
|
+
// paginates if `total_pair_count > maxComputeWorkgroupsPerDimension
|
|
27
|
+
// * WORKGROUP_SIZE`; under typical stress-test scale (~71k pairs)
|
|
28
|
+
// a single sub-dispatch suffices and `dispatch_offset` is zero.
|
|
29
|
+
.addUniform('dispatch_offset', u32)
|
|
30
|
+
.addUniform('total_pair_count', u32)
|
|
31
|
+
.addStorageBuffer('skinning_bindings', WebGPUArray.from(SKINNING_BINDING_STRUCT), false)
|
|
32
|
+
.addStorageBuffer('dispatch_lookup', WebGPUArray.from(u32), false)
|
|
33
|
+
// Same buffers the rasterizer reads as typed structs, bound here
|
|
34
|
+
// as flat `atomic<u32>` arrays so we can do per-cell atomic
|
|
35
|
+
// stores at known field offsets (resolved above at module-load).
|
|
36
|
+
.addStorageBuffer('meshlet_metadata_atomic', WebGPUArray.from(atomic_u32), true)
|
|
37
|
+
.addStorageBuffer('geometry_metadata_atomic', WebGPUArray.from(atomic_u32), true);
|
|
38
|
+
|
|
39
|
+
const body = CodeChunk.from(
|
|
40
|
+
//language=WGSL
|
|
41
|
+
`
|
|
42
|
+
const PLUS_INF: u32 = 0x7F800000u; // bitcast f32(+inf)
|
|
43
|
+
const MINUS_INF: u32 = 0xFF800000u; // bitcast f32(-inf)
|
|
44
|
+
|
|
45
|
+
const MESHLET_BOUNDS_OFFSET: u32 = ${MESHLET_BOUNDS_OFFSET_WORDS}u;
|
|
46
|
+
const MESHLET_STRIDE: u32 = ${MESHLET_STRIDE_WORDS}u;
|
|
47
|
+
const GEOMETRY_BBOX_OFFSET: u32 = ${GEOMETRY_BBOX_OFFSET_WORDS}u;
|
|
48
|
+
const GEOMETRY_STRIDE: u32 = ${GEOMETRY_STRIDE_WORDS}u;
|
|
49
|
+
|
|
50
|
+
@compute @workgroup_size(${WORKGROUP_SIZE},1,1)
|
|
51
|
+
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
52
|
+
let pair_index = gid.x + dispatch_offset;
|
|
53
|
+
if pair_index >= total_pair_count {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let lookup_base = pair_index * 2u;
|
|
58
|
+
let binding_index = dispatch_lookup[lookup_base];
|
|
59
|
+
let meshlet_local = dispatch_lookup[lookup_base + 1u];
|
|
60
|
+
|
|
61
|
+
let binding = skinning_bindings[binding_index];
|
|
62
|
+
let clone_meshlet_abs = binding.clone_meshlet_metadata_offset + meshlet_local;
|
|
63
|
+
|
|
64
|
+
// Meshlet bounds reset: +inf for the 3 min slots, -inf for the
|
|
65
|
+
// 3 max slots. Each meshlet has exactly one (binding, meshlet)
|
|
66
|
+
// pair that touches it, so there's no cross-thread race on these
|
|
67
|
+
// slots — atomicStore is technically overkill, but the buffer is
|
|
68
|
+
// bound atomic-typed for the reduce pass and atomicStore is the
|
|
69
|
+
// way to write through that view.
|
|
70
|
+
let m_base = clone_meshlet_abs * MESHLET_STRIDE + MESHLET_BOUNDS_OFFSET;
|
|
71
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 0u], PLUS_INF);
|
|
72
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 1u], PLUS_INF);
|
|
73
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 2u], PLUS_INF);
|
|
74
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 3u], MINUS_INF);
|
|
75
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 4u], MINUS_INF);
|
|
76
|
+
atomicStore(&meshlet_metadata_atomic[m_base + 5u], MINUS_INF);
|
|
77
|
+
|
|
78
|
+
// Geometry bounds reset gate: the first meshlet of each binding
|
|
79
|
+
// (meshlet_local == 0) does the reset for the binding's clone
|
|
80
|
+
// geometry. Every clone has at least one meshlet, so this fires
|
|
81
|
+
// exactly once per active binding. Multiple bindings could in
|
|
82
|
+
// principle target the same clone — the skinning context allocates
|
|
83
|
+
// one clone per SkinnedMesh, so in practice each binding owns its
|
|
84
|
+
// own geometry — but even if they didn't, the writes here are
|
|
85
|
+
// idempotent (same sentinels).
|
|
86
|
+
if meshlet_local == 0u {
|
|
87
|
+
let g_base = binding.clone_geometry_index * GEOMETRY_STRIDE + GEOMETRY_BBOX_OFFSET;
|
|
88
|
+
atomicStore(&geometry_metadata_atomic[g_base + 0u], PLUS_INF);
|
|
89
|
+
atomicStore(&geometry_metadata_atomic[g_base + 1u], PLUS_INF);
|
|
90
|
+
atomicStore(&geometry_metadata_atomic[g_base + 2u], PLUS_INF);
|
|
91
|
+
atomicStore(&geometry_metadata_atomic[g_base + 3u], MINUS_INF);
|
|
92
|
+
atomicStore(&geometry_metadata_atomic[g_base + 4u], MINUS_INF);
|
|
93
|
+
atomicStore(&geometry_metadata_atomic[g_base + 5u], MINUS_INF);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`);
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Compute shader that resets per-meshlet `bounds_box` (clone meshlets
|
|
100
|
+
* only) and per-clone-geometry `bounding_box` to ±inf sentinels —
|
|
101
|
+
* the prerequisite for the reduce / merge passes that follow.
|
|
102
|
+
*
|
|
103
|
+
* Linear-thread dispatch: one thread per (binding, meshlet) pair in
|
|
104
|
+
* the skinning context's `dispatch_lookup`. With workgroup size 64,
|
|
105
|
+
* `ceil(total_pair_count / 64)` workgroups cover everything; the
|
|
106
|
+
* `dispatch_offset` uniform lets the host paginate when
|
|
107
|
+
* `total_pair_count > maxComputeWorkgroupsPerDimension * 64`
|
|
108
|
+
* (currently won't trigger — 65535 * 64 ≈ 4M pairs).
|
|
109
|
+
*
|
|
110
|
+
* The geometry bounds reset is gated to `meshlet_local == 0` so each
|
|
111
|
+
* clone geometry is reset exactly once. The clone's bounding_sphere
|
|
112
|
+
* is NOT reset here — the derive-sphere pass at the end of the
|
|
113
|
+
* refresh chain overwrites it wholesale from the box, so no
|
|
114
|
+
* transient state matters.
|
|
115
|
+
*/
|
|
116
|
+
export const shader_meshlet_bounds_scatter = ComputeShader.from({
|
|
117
|
+
label: "Skinning/MeshletBoundsScatter",
|
|
118
|
+
resources,
|
|
119
|
+
body,
|
|
120
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_skinned_mesh_bounds_refresh.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js"],"names":[],"mappings":"AAWA,gCAAiC;AAuCjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,+
|
|
1
|
+
{"version":3,"file":"shader_skinned_mesh_bounds_refresh.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js"],"names":[],"mappings":"AAWA,gCAAiC;AAuCjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,+DAIG;8BAnE2B,kCAAkC"}
|
package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js
CHANGED
|
@@ -1,76 +1,75 @@
|
|
|
1
|
-
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
-
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
3
|
-
import { GEOMETRY_METADATA_STRUCT } from "../../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
4
|
-
import {
|
|
5
|
-
chunk_update_object_property_mesh_instance_bounds
|
|
6
|
-
} from "../../../object_property/chunk_update_object_property_mesh_instance_bounds.js";
|
|
7
|
-
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
8
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
9
|
-
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
10
|
-
import { SKINNING_BINDING_STRUCT } from "../SKINNING_BINDING_STRUCT.js";
|
|
11
|
-
|
|
12
|
-
export const WORKGROUP_SIZE = 64;
|
|
13
|
-
|
|
14
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
15
|
-
resources.createGroup()
|
|
16
|
-
// Number of active skinning bindings (= one per skinned mesh
|
|
17
|
-
// instance). Threads past `binding_count` early-out.
|
|
18
|
-
.addUniform('binding_count', u32)
|
|
19
|
-
.addStorageBuffer('skinning_bindings', WebGPUArray.from(SKINNING_BINDING_STRUCT), false)
|
|
20
|
-
// `chunk_update_object_property_mesh_instance_bounds` expects
|
|
21
|
-
// these binding names — see its docstring's importing-shader
|
|
22
|
-
// contract. scene_database is rw because the mesh bounds writes
|
|
23
|
-
// route through `scene_write_mesh_*` per-field helpers, which
|
|
24
|
-
// need the read_write access mode.
|
|
25
|
-
.addStorageBuffer('scene_database', WebGPUArray.from(u32), true)
|
|
26
|
-
.addStorageBuffer('geometries', WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false);
|
|
27
|
-
|
|
28
|
-
const body = CodeChunk.from(
|
|
29
|
-
//language=WGSL
|
|
30
|
-
`
|
|
31
|
-
@compute @workgroup_size(${WORKGROUP_SIZE},1,1)
|
|
32
|
-
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
33
|
-
let binding_index = gid.x;
|
|
34
|
-
if binding_index >= binding_count {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let binding = skinning_bindings[binding_index];
|
|
39
|
-
|
|
40
|
-
// Per-instance world-space bounds: reads geometry.bounding_box
|
|
41
|
-
// (just refreshed by the per-meshlet reduce pass) and
|
|
42
|
-
// geometry.bounding_sphere (just refreshed by the sphere-derive
|
|
43
|
-
// pass), projects through the mesh's node.global, writes back
|
|
44
|
-
// to mesh.bounding_box / bounding_sphere. Reuses the existing
|
|
45
|
-
// chunk so the math (max-column-length sphere radius scaling for
|
|
46
|
-
// non-uniform-scale-safe culling) stays in one place.
|
|
47
|
-
update_object_property_mesh_instance_bounds(binding.mesh_instance_index);
|
|
48
|
-
}
|
|
49
|
-
`, [chunk_update_object_property_mesh_instance_bounds]);
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Compute shader that refreshes the world-space `bounding_box` and
|
|
53
|
-
* `bounding_sphere` of every SkinnedMesh instance in the scene's
|
|
54
|
-
* meshes table from its (now up-to-date) clone geometry bounds.
|
|
55
|
-
*
|
|
56
|
-
* One thread per active skinning binding. Each thread:
|
|
57
|
-
* - Looks up its binding's `mesh_instance_index` in the meshes table.
|
|
58
|
-
* - Reads `geometry.bounding_box` + `geometry.bounding_sphere` from
|
|
59
|
-
* the geometry metadata table (post-reduce + post-sphere-derive).
|
|
60
|
-
* - Reads `node.global` for the mesh's world transform.
|
|
61
|
-
* - Projects the local AABB / sphere into world space.
|
|
62
|
-
* - Writes back to `mesh.bounding_box` / `mesh.bounding_sphere`.
|
|
63
|
-
*
|
|
64
|
-
* Must run AFTER `shader_geometry_sphere_derive` (which writes the
|
|
65
|
-
* geometry sphere this pass reads) and AFTER the transform-hierarchy
|
|
66
|
-
* propagate pass (which writes `node.global`). Without the mesh
|
|
67
|
-
* bounds refreshed, the rasterizer's sphere-cull and frustum-cull
|
|
68
|
-
* passes reject animated meshes that move outside their original
|
|
69
|
-
* source-encoded bounds.
|
|
70
|
-
*/
|
|
71
|
-
export const shader_skinned_mesh_bounds_refresh = ComputeShader.from({
|
|
72
|
-
label: "Skinning/SkinnedMeshBoundsRefresh",
|
|
73
|
-
resources,
|
|
74
|
-
body,
|
|
75
|
-
|
|
76
|
-
});
|
|
1
|
+
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
3
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
4
|
+
import {
|
|
5
|
+
chunk_update_object_property_mesh_instance_bounds
|
|
6
|
+
} from "../../../object_property/chunk_update_object_property_mesh_instance_bounds.js";
|
|
7
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
8
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
9
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
10
|
+
import { SKINNING_BINDING_STRUCT } from "../SKINNING_BINDING_STRUCT.js";
|
|
11
|
+
|
|
12
|
+
export const WORKGROUP_SIZE = 64;
|
|
13
|
+
|
|
14
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
15
|
+
resources.createGroup()
|
|
16
|
+
// Number of active skinning bindings (= one per skinned mesh
|
|
17
|
+
// instance). Threads past `binding_count` early-out.
|
|
18
|
+
.addUniform('binding_count', u32)
|
|
19
|
+
.addStorageBuffer('skinning_bindings', WebGPUArray.from(SKINNING_BINDING_STRUCT), false)
|
|
20
|
+
// `chunk_update_object_property_mesh_instance_bounds` expects
|
|
21
|
+
// these binding names — see its docstring's importing-shader
|
|
22
|
+
// contract. scene_database is rw because the mesh bounds writes
|
|
23
|
+
// route through `scene_write_mesh_*` per-field helpers, which
|
|
24
|
+
// need the read_write access mode.
|
|
25
|
+
.addStorageBuffer('scene_database', WebGPUArray.from(u32), true)
|
|
26
|
+
.addStorageBuffer('geometries', WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false);
|
|
27
|
+
|
|
28
|
+
const body = CodeChunk.from(
|
|
29
|
+
//language=WGSL
|
|
30
|
+
`
|
|
31
|
+
@compute @workgroup_size(${WORKGROUP_SIZE},1,1)
|
|
32
|
+
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
33
|
+
let binding_index = gid.x;
|
|
34
|
+
if binding_index >= binding_count {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let binding = skinning_bindings[binding_index];
|
|
39
|
+
|
|
40
|
+
// Per-instance world-space bounds: reads geometry.bounding_box
|
|
41
|
+
// (just refreshed by the per-meshlet reduce pass) and
|
|
42
|
+
// geometry.bounding_sphere (just refreshed by the sphere-derive
|
|
43
|
+
// pass), projects through the mesh's node.global, writes back
|
|
44
|
+
// to mesh.bounding_box / bounding_sphere. Reuses the existing
|
|
45
|
+
// chunk so the math (max-column-length sphere radius scaling for
|
|
46
|
+
// non-uniform-scale-safe culling) stays in one place.
|
|
47
|
+
update_object_property_mesh_instance_bounds(binding.mesh_instance_index);
|
|
48
|
+
}
|
|
49
|
+
`, [chunk_update_object_property_mesh_instance_bounds]);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Compute shader that refreshes the world-space `bounding_box` and
|
|
53
|
+
* `bounding_sphere` of every SkinnedMesh instance in the scene's
|
|
54
|
+
* meshes table from its (now up-to-date) clone geometry bounds.
|
|
55
|
+
*
|
|
56
|
+
* One thread per active skinning binding. Each thread:
|
|
57
|
+
* - Looks up its binding's `mesh_instance_index` in the meshes table.
|
|
58
|
+
* - Reads `geometry.bounding_box` + `geometry.bounding_sphere` from
|
|
59
|
+
* the geometry metadata table (post-reduce + post-sphere-derive).
|
|
60
|
+
* - Reads `node.global` for the mesh's world transform.
|
|
61
|
+
* - Projects the local AABB / sphere into world space.
|
|
62
|
+
* - Writes back to `mesh.bounding_box` / `mesh.bounding_sphere`.
|
|
63
|
+
*
|
|
64
|
+
* Must run AFTER `shader_geometry_sphere_derive` (which writes the
|
|
65
|
+
* geometry sphere this pass reads) and AFTER the transform-hierarchy
|
|
66
|
+
* propagate pass (which writes `node.global`). Without the mesh
|
|
67
|
+
* bounds refreshed, the rasterizer's sphere-cull and frustum-cull
|
|
68
|
+
* passes reject animated meshes that move outside their original
|
|
69
|
+
* source-encoded bounds.
|
|
70
|
+
*/
|
|
71
|
+
export const shader_skinned_mesh_bounds_refresh = ComputeShader.from({
|
|
72
|
+
label: "Skinning/SkinnedMeshBoundsRefresh",
|
|
73
|
+
resources,
|
|
74
|
+
body,
|
|
75
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_meshlet_apply_skinning.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,yCAA0C;AA6S1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,
|
|
1
|
+
{"version":3,"file":"shader_meshlet_apply_skinning.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,yCAA0C;AA6S1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,0DAIG;8BAlV2B,+BAA+B"}
|