@woosh/meep-engine 3.32.0 → 3.34.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/build/bundle-worker-terrain.js +1 -1
- package/editor/Editor.d.ts.map +1 -1
- package/editor/Editor.js +0 -3
- package/editor/ecs/component/prototypeObjectEditor.js +1 -165
- package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -1
- package/editor/ecs/component/registerBasicTypeEditors.js +0 -5
- package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -1
- package/editor/ecs/component/registerEngineComponentEditors.js +0 -20
- package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -1
- package/editor/process/SymbolicDisplayProcess.js +100 -106
- package/editor/prototypeEditorShell.d.ts.map +1 -1
- package/editor/prototypeEditorShell.js +190 -186
- package/editor/templates/entity_templates.d.ts.map +1 -1
- package/editor/templates/entity_templates.js +10 -27
- package/editor/view/makeEntityDecorators.js +2 -2
- package/package.json +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts +8 -0
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.js +40 -11
- package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.d.ts +3 -3
- package/src/core/geom/3d/aabb/MovingBoundingBox.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.js +5 -5
- package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts +3 -0
- package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGBA_LUT_HEATMAP_IR.js +1 -1
- package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts +6 -0
- package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_INFERNO.js +1 -1
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.d.ts +1 -1
- package/src/core/math/lookup/RGB_LUT_TURBO.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.js +1 -1
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.d.ts +1 -1
- package/src/core/math/lookup/RGB_LUT_VIRIDIS.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.js +1 -1
- package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
- package/src/engine/animation/AnimatedActions.js +2 -4
- package/src/engine/animation/AnimationUtils.d.ts +1 -17
- package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
- package/src/engine/animation/AnimationUtils.js +138 -246
- package/src/engine/ecs/EntityManager.d.ts +1 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +2 -2
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +268 -275
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +0 -10
- package/src/engine/graphics/geometry/distribute_points_on_indexed_triangles.d.ts.map +1 -0
- package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.js +3 -3
- package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/lut_to_sampler.d.ts.map +1 -0
- package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.js +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -3
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +0 -3
- package/src/engine/network/NetworkSession.d.ts +1 -1
- package/src/engine/network/NetworkSession.js +1 -1
- package/src/engine/physics/cloth/MEASUREMENTS.md +115 -0
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +2 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +9 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +30 -7
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +12 -2
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +11 -2
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +14 -7
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +6 -15
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +161 -174
- package/src/shade/device/mock/SoftwareGPUBuffer.d.ts +5 -3
- package/src/shade/device/mock/SoftwareGPUBuffer.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUBuffer.js +32 -3
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +20 -3
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +21 -3
- package/src/shade/playground/caldera/main.js +73 -60
- package/src/shade/playground/vgeo_runtime/main.js +25 -77
- package/src/shade/playground/vgeo_scene/main.js +2231 -2217
- package/src/shade/renderer/GraphicsContext.d.ts +18 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +63 -40
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +38 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +8 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +21 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +6 -5
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +241 -240
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.d.ts +51 -0
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.js +214 -28
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.d.ts +2 -1
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.js +19 -17
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.d.ts +70 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.d.ts.map +1 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.js +257 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshRenderer.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshRenderer.js +19 -34
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +6 -20
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +42 -36
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +4 -3
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.d.ts +4 -3
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.js +7 -4
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +14 -15
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +49 -83
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts +19 -3
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +26 -6
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +2 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +12 -6
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +3 -2
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +21 -13
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +9 -10
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +5 -0
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +25 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +115 -101
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +282 -140
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +30 -0
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +4 -1
- package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +536 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +6 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +68 -19
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +17 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +4 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +42 -12
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +93 -12
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +166 -20
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -7
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +12 -5
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +23 -13
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +1 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +1 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +10 -6
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +45 -17
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +61 -19
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +8 -11
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +9 -16
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +25 -10
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +10 -8
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +19 -7
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +4 -2
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +4 -2
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.js +7 -0
- package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +1 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +2 -0
- package/src/shade/renderer/particles/DESIGN.md +4 -10
- package/src/shade/renderer/particles/ParticleConstants.d.ts +1 -3
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +1 -3
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +3 -4
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +3 -4
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +45 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +99 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +4 -4
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -36
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts +15 -0
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.js +103 -0
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +3 -0
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +6 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +26 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +91 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts +22 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js +102 -0
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +2 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +28 -24
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +20 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +32 -28
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +9 -105
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +5 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +11 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +11 -3
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +93 -21
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +4 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +5 -23
- package/src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.js +8 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +63 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts +12 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js +11 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +15 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +17 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts +25 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js +22 -0
- package/src/shade/renderer/shadow/map/shadowmap_update_score.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shadowmap_update_score.js +5 -2
- package/src/shade/renderer/texture/TextureManager.d.ts +2 -1
- package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/TextureManager.js +4 -1
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +1 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +9 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.js +55 -5
- package/src/shade/renderer/view/ViewManager.d.ts +7 -1
- package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
- package/src/shade/renderer/view/ViewManager.js +17 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +0 -20
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +0 -35
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +0 -12
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +0 -17
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +0 -14
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +0 -18
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +0 -52
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +0 -58
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +0 -47
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +0 -58
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +0 -16
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +0 -21
- package/editor/particles/rebuildParticleEmitter.d.ts +0 -11
- package/editor/particles/rebuildParticleEmitter.d.ts.map +0 -1
- package/editor/particles/rebuildParticleEmitter.js +0 -31
- package/editor/process/ParticleEmitterRebuildProcess.d.ts +0 -66
- package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +0 -1
- package/editor/process/ParticleEmitterRebuildProcess.js +0 -217
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +0 -18
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +0 -1
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +0 -140
- package/src/engine/animation/removeEntityGenericEffect.d.ts +0 -18
- package/src/engine/animation/removeEntityGenericEffect.d.ts.map +0 -1
- package/src/engine/animation/removeEntityGenericEffect.js +0 -160
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +0 -16
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +0 -1
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +0 -194
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts +0 -12
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/Sprite.js +0 -11
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -8
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -141
- package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +0 -61
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +0 -229
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.js +0 -8
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.js +0 -9
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js +0 -12
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts +0 -3
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +0 -84
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +0 -285
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +0 -1201
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +0 -67
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -197
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +0 -398
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.js +0 -4
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +0 -162
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -472
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +0 -10
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +0 -37
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +0 -25
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +0 -28
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +0 -162
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +0 -103
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts +0 -8
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.js +0 -28
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -60
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +0 -128
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts +0 -47
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +0 -77
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -45
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +0 -93
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts +0 -95
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +0 -239
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts +0 -3
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +0 -28
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +0 -24
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +0 -27
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts +0 -33
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +0 -80
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +0 -49
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +0 -135
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts +0 -7
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.js +0 -14
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts +0 -41
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +0 -59
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +0 -56
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +0 -84
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +0 -80
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts +0 -29
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +0 -43
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +0 -104
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.js +0 -11
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.js +0 -64
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +0 -172
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +0 -20
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +0 -84
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +0 -81
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +0 -200
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.js +0 -8
- package/src/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -20
- package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/Operation.js +0 -20
- package/src/engine/graphics/particles/particular/group/OperationType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/OperationType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/OperationType.js +0 -9
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -27
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +0 -27
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts +0 -8
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.js +0 -11
- package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleDataType.js +0 -10
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -24
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +0 -48
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +0 -20
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts +0 -6
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +0 -162
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts +0 -8
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +0 -19
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts +0 -77
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +0 -1
- package/src/engine/graphics3/ParticleEmitterSystem.js +0 -307
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +0 -10
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +0 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +0 -10
- package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +0 -61
- package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +0 -1
- package/src/engine/graphics3/particles/GPUParticularRenderer.js +0 -627
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts +0 -85
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +0 -1
- package/src/engine/graphics3/particles/particle_gpu_records.js +0 -227
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts +0 -35
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +0 -135
- /package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleConstants.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/ParticleConstants.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AACH,yCAFU,MAAM,CAE6B;AAE7C;;;;GAIG;AACH,6CAFU,MAAM,CAEgC;AAEhD;;;;;;GAMG;AACH,mDAFU,MAAM,CAEuC;AAEvD;;;;;;;;;;;GAWG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;;;;;GAOG;AACH,2CAFU,MAAM,CAEmC;AAEnD;;;;;;;;;;GAUG;AACH,wCAFU,MAAM,CAE6B;AAE7C;;;;;;;GAOG;AACH,6CAFU,MAAM,CAEkC;AAElD;;;;GAIG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;;;;;;GAQG;AACH,2CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,6CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,2CAFU,MAAM,CAE8B;AAE9C;;;;;;;;;GASG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,8CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,8CAFU,MAAM,CAEiC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,yCAFU,MAAM,CAE8B;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8CAFU,MAAM,CAEkC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,4CAFU,MAAM,CAEkC;;AASlD;;;;;;;;;;;;;;;GAeG;AACH,2CAFU,MAAM,CAEiC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,+CAFU,MAAM,CAEmC;AAEnD;;;;;;;;;;;;GAYG;AACH,oCAFU,MAAM,CAEgC;AAEhD
|
|
1
|
+
{"version":3,"file":"ParticleConstants.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/ParticleConstants.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AACH,yCAFU,MAAM,CAE6B;AAE7C;;;;GAIG;AACH,6CAFU,MAAM,CAEgC;AAEhD;;;;;;GAMG;AACH,mDAFU,MAAM,CAEuC;AAEvD;;;;;;;;;;;GAWG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;;;;;GAOG;AACH,2CAFU,MAAM,CAEmC;AAEnD;;;;;;;;;;GAUG;AACH,wCAFU,MAAM,CAE6B;AAE7C;;;;;;;GAOG;AACH,6CAFU,MAAM,CAEkC;AAElD;;;;GAIG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;;;;;;GAQG;AACH,2CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,6CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,2CAFU,MAAM,CAE8B;AAE9C;;;;;;;;;GASG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,8CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,8CAFU,MAAM,CAEiC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,yCAFU,MAAM,CAE8B;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8CAFU,MAAM,CAEkC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,4CAFU,MAAM,CAEkC;;AASlD;;;;;;;;;;;;;;;GAeG;AACH,2CAFU,MAAM,CAEiC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,+CAFU,MAAM,CAEmC;AAEnD;;;;;;;;;;;;GAYG;AACH,oCAFU,MAAM,CAEgC;AAEhD;;;;;;;;;;GAUG;AACH,uCAFU,MAAM,CAE4B"}
|
|
@@ -280,9 +280,7 @@ export const PARTICLE_SIM_PAD_SLOT = 0xffffffff;
|
|
|
280
280
|
* Above all it is what the two passes that have to agree on a fragment's coverage agree on: the
|
|
281
281
|
* AVBOIT draw, which weights the accumulators by it, and the AVBOIT splat, which records the
|
|
282
282
|
* extinction the volume then hands to everything behind. A fade in one and not the other is a
|
|
283
|
-
* surface that is invisible and still occludes.
|
|
284
|
-
* (`shaders/shader_particle_render.js`) reads it too, so a particle fades over the same distance
|
|
285
|
-
* whichever pipeline draws it.
|
|
283
|
+
* surface that is invisible and still occludes.
|
|
286
284
|
*
|
|
287
285
|
* @type {number}
|
|
288
286
|
*/
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The billboard vertex stage, shared by every pass that rasterizes particles: the AVBOIT splat and
|
|
3
|
-
* draw
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* camera.
|
|
3
|
+
* draw. One instance per particle, six vertices per instance; the instance indexes the slot list,
|
|
4
|
+
* the vertex picks a quad corner, and the corner is expanded per the emitter's projection mode and
|
|
5
|
+
* projected with the camera.
|
|
7
6
|
*
|
|
8
7
|
* The enclosing shader binds `camera` (`CAMERA_UNIFORM_STRUCT`), `pool` and `emitter_database`
|
|
9
8
|
* (`array<u32>`) and `draw_list` (the slot list, `array<u32>`) under those names; this reads them
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_particle_billboard_vertex.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"chunk_particle_billboard_vertex.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AACH,8CAFU,SAAS,CAuE6D;0BA7FtD,oCAAoC"}
|
|
@@ -7,10 +7,9 @@ import { chunk_particle_render_math } from "./chunk_particle_render_math.js";
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* The billboard vertex stage, shared by every pass that rasterizes particles: the AVBOIT splat and
|
|
10
|
-
* draw
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* camera.
|
|
10
|
+
* draw. One instance per particle, six vertices per instance; the instance indexes the slot list,
|
|
11
|
+
* the vertex picks a quad corner, and the corner is expanded per the emitter's projection mode and
|
|
12
|
+
* projected with the camera.
|
|
14
13
|
*
|
|
15
14
|
* The enclosing shader binds `camera` (`CAMERA_UNIFORM_STRUCT`), `pool` and `emitter_database`
|
|
16
15
|
* (`array<u32>`) and `draw_list` (the slot list, `array<u32>`) under those names; this reads them
|
|
@@ -53,7 +53,7 @@ export class NSS {
|
|
|
53
53
|
* @returns {number}
|
|
54
54
|
*/
|
|
55
55
|
static recommended_jitter_sequence_size(upscale_ratio: number): number;
|
|
56
|
-
static "__#
|
|
56
|
+
static "__#186@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
|
|
57
57
|
/**
|
|
58
58
|
* @param {GraphicsContext} graphics
|
|
59
59
|
*/
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draw one view's meshlets, of several opaque buckets at once, each bucket under its own pipeline
|
|
3
|
+
* state.
|
|
4
|
+
*
|
|
5
|
+
* The other half of cutting a view once (CUT_PLAN_2026_09_14 §7 6b). Expansion and the
|
|
6
|
+
* virtual-geometry cut run over every opaque instance of the view together, so what comes out is
|
|
7
|
+
* one collection with every bucket in it, and the buckets are separated here, after the fact: sort
|
|
8
|
+
* by bucket, then one draw per bucket over its slice.
|
|
9
|
+
*
|
|
10
|
+
* With a single bucket there is nothing to separate — every meshlet is in it — and the collection
|
|
11
|
+
* is drawn as it is.
|
|
12
|
+
*
|
|
13
|
+
* @param {Object} options
|
|
14
|
+
* @param {FrameGraph} options.graph
|
|
15
|
+
* @param {GPUViewContext} options.view
|
|
16
|
+
* @param {number} options.input_meshlets every meshlet to draw, all of them in `buckets`
|
|
17
|
+
* @param {{draw_mode: number, side: number, bucket_id: number}[]} options.buckets the opaque
|
|
18
|
+
* buckets drawn, as {@link rasterization_opaque_buckets} yields them; at least one
|
|
19
|
+
* @param {number} options.depth
|
|
20
|
+
* @param {number[]} options.color_targets
|
|
21
|
+
* @param {RenderPassDescriptor} options.pass_descriptor
|
|
22
|
+
* @param {boolean} options.clear_targets whether the first draw clears
|
|
23
|
+
* @param {Readonly<Record<number, GPUCullMode>>} options.cull_policy
|
|
24
|
+
* @param {number[]} [options.viewport]
|
|
25
|
+
* @param {GPUCollectionLimits} options.limits
|
|
26
|
+
* @returns {[number, number[]]} depth and colour handles, as {@link graph_meshlets_rasterize}
|
|
27
|
+
*/
|
|
28
|
+
export function graph_meshlets_rasterize_by_bucket({ graph, view, input_meshlets, buckets, depth, color_targets, pass_descriptor, clear_targets, cull_policy, viewport, limits, }: {
|
|
29
|
+
graph: FrameGraph;
|
|
30
|
+
view: GPUViewContext;
|
|
31
|
+
input_meshlets: number;
|
|
32
|
+
buckets: {
|
|
33
|
+
draw_mode: number;
|
|
34
|
+
side: number;
|
|
35
|
+
bucket_id: number;
|
|
36
|
+
}[];
|
|
37
|
+
depth: number;
|
|
38
|
+
color_targets: number[];
|
|
39
|
+
pass_descriptor: RenderPassDescriptor;
|
|
40
|
+
clear_targets: boolean;
|
|
41
|
+
cull_policy: Readonly<Record<number, GPUCullMode>>;
|
|
42
|
+
viewport?: number[];
|
|
43
|
+
limits: GPUCollectionLimits;
|
|
44
|
+
}): [number, number[]];
|
|
45
|
+
//# sourceMappingURL=graph_meshlets_rasterize_by_bucket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_meshlets_rasterize_by_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAd+B,KAAK;IACD,IAAI;IACZ,cAAc,EAA9B,MAAM;IAC0D,OAAO,EAAvE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,EAAE;IAEtC,KAAK,EAArB,MAAM;IACY,aAAa,EAA/B,MAAM,EAAE;IACsB,eAAe;IAC5B,aAAa,EAA9B,OAAO;IACwC,WAAW,EAA1D,SAAS,OAAO,MAAM,cAAc,CAAC;IAClB,QAAQ,GAA3B,MAAM,EAAE;IACqB,MAAM;IACjC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAmE9B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { graph_extract_meshlets_from_bucket } from "../expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js";
|
|
3
|
+
import { graph_sort_meshlets_by_bucket_id } from "../expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js";
|
|
4
|
+
import { graph_meshlets_rasterize } from "../expand/graph_meshlets_rasterize.js";
|
|
5
|
+
import { construct_primitive_state } from "./construct_primitive_state.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Draw one view's meshlets, of several opaque buckets at once, each bucket under its own pipeline
|
|
9
|
+
* state.
|
|
10
|
+
*
|
|
11
|
+
* The other half of cutting a view once (CUT_PLAN_2026_09_14 §7 6b). Expansion and the
|
|
12
|
+
* virtual-geometry cut run over every opaque instance of the view together, so what comes out is
|
|
13
|
+
* one collection with every bucket in it, and the buckets are separated here, after the fact: sort
|
|
14
|
+
* by bucket, then one draw per bucket over its slice.
|
|
15
|
+
*
|
|
16
|
+
* With a single bucket there is nothing to separate — every meshlet is in it — and the collection
|
|
17
|
+
* is drawn as it is.
|
|
18
|
+
*
|
|
19
|
+
* @param {Object} options
|
|
20
|
+
* @param {FrameGraph} options.graph
|
|
21
|
+
* @param {GPUViewContext} options.view
|
|
22
|
+
* @param {number} options.input_meshlets every meshlet to draw, all of them in `buckets`
|
|
23
|
+
* @param {{draw_mode: number, side: number, bucket_id: number}[]} options.buckets the opaque
|
|
24
|
+
* buckets drawn, as {@link rasterization_opaque_buckets} yields them; at least one
|
|
25
|
+
* @param {number} options.depth
|
|
26
|
+
* @param {number[]} options.color_targets
|
|
27
|
+
* @param {RenderPassDescriptor} options.pass_descriptor
|
|
28
|
+
* @param {boolean} options.clear_targets whether the first draw clears
|
|
29
|
+
* @param {Readonly<Record<number, GPUCullMode>>} options.cull_policy
|
|
30
|
+
* @param {number[]} [options.viewport]
|
|
31
|
+
* @param {GPUCollectionLimits} options.limits
|
|
32
|
+
* @returns {[number, number[]]} depth and colour handles, as {@link graph_meshlets_rasterize}
|
|
33
|
+
*/
|
|
34
|
+
export function graph_meshlets_rasterize_by_bucket({
|
|
35
|
+
graph,
|
|
36
|
+
view,
|
|
37
|
+
input_meshlets,
|
|
38
|
+
buckets,
|
|
39
|
+
depth,
|
|
40
|
+
color_targets,
|
|
41
|
+
pass_descriptor,
|
|
42
|
+
clear_targets,
|
|
43
|
+
cull_policy,
|
|
44
|
+
viewport,
|
|
45
|
+
limits,
|
|
46
|
+
}) {
|
|
47
|
+
assert.isArray(buckets, 'buckets');
|
|
48
|
+
assert.greaterThanOrEqual(buckets.length, 1, 'buckets.length');
|
|
49
|
+
|
|
50
|
+
if (buckets.length === 1) {
|
|
51
|
+
const { draw_mode, side } = buckets[0];
|
|
52
|
+
|
|
53
|
+
return graph_meshlets_rasterize({
|
|
54
|
+
graph,
|
|
55
|
+
view,
|
|
56
|
+
input_meshlets,
|
|
57
|
+
depth,
|
|
58
|
+
color_targets,
|
|
59
|
+
pass_descriptor,
|
|
60
|
+
clear_targets,
|
|
61
|
+
primitive_state: construct_primitive_state(draw_mode, side, cull_policy),
|
|
62
|
+
viewport,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const sorted = graph_sort_meshlets_by_bucket_id({
|
|
67
|
+
graph,
|
|
68
|
+
input_meshlets,
|
|
69
|
+
scene_ctx: view.scene,
|
|
70
|
+
limits,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
let clear = clear_targets;
|
|
74
|
+
|
|
75
|
+
for (const { draw_mode, side, bucket_id } of buckets) {
|
|
76
|
+
const meshlets = graph_extract_meshlets_from_bucket({
|
|
77
|
+
graph,
|
|
78
|
+
buckets: sorted,
|
|
79
|
+
bucket_id,
|
|
80
|
+
limits,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
[depth, color_targets] = graph_meshlets_rasterize({
|
|
84
|
+
graph,
|
|
85
|
+
view,
|
|
86
|
+
input_meshlets: meshlets,
|
|
87
|
+
depth,
|
|
88
|
+
color_targets,
|
|
89
|
+
pass_descriptor,
|
|
90
|
+
clear_targets: clear,
|
|
91
|
+
primitive_state: construct_primitive_state(draw_mode, side, cull_policy),
|
|
92
|
+
viewport,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
clear = false;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return [depth, color_targets];
|
|
99
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The opaque rasterization buckets a scene has anything in, once each.
|
|
3
3
|
*
|
|
4
|
-
* Every opaque path records
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Every opaque path records work per bucket — a filter, a slice of the sorted meshlets, a render
|
|
5
|
+
* pass. So what is iterated has to be the *buckets*, and iterating `ShadeDrawSide` is not that:
|
|
6
|
+
* `Front` and `Back` are one bucket, and a loop over the enum visits it twice and draws the scene's
|
|
7
|
+
* single-sided geometry twice.
|
|
8
8
|
*
|
|
9
9
|
* Which is why this exists rather than the three callers each writing the loop: the enum is the
|
|
10
10
|
* obvious thing to reach for and it is wrong, and it is wrong in a way that costs a whole pass and
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { ShadeDrawMode } from "../../material/ShadeDrawMode.js";
|
|
2
|
-
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
3
|
-
import { rasterization_material_bucket } from "../expand/bucket/chunk_rasterization_material_bucket.js";
|
|
4
|
-
import { RASTERIZATION_BUCKET_SIDES } from "./construct_primitive_state.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* The opaque rasterization buckets a scene has anything in, once each.
|
|
8
|
-
*
|
|
9
|
-
* Every opaque path records
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* Which is why this exists rather than the three callers each writing the loop: the enum is the
|
|
15
|
-
* obvious thing to reach for and it is wrong, and it is wrong in a way that costs a whole pass and
|
|
16
|
-
* shows up in nothing but a frame time.
|
|
17
|
-
*
|
|
18
|
-
* @param {Set<number>} active_buckets bucket ids any material in the scene asks for
|
|
19
|
-
* @yields {{draw_mode: ShadeDrawMode, side: ShadeDrawSide, bucket_id: number}} `side` is the
|
|
20
|
-
* bucket's representative, which is what {@link construct_primitive_state} wants
|
|
21
|
-
*/
|
|
22
|
-
export function* rasterization_opaque_buckets(active_buckets) {
|
|
23
|
-
for (const draw_mode of Object.values(ShadeDrawMode)) {
|
|
24
|
-
for (const side of RASTERIZATION_BUCKET_SIDES) {
|
|
25
|
-
|
|
26
|
-
const bucket_id = rasterization_material_bucket(TransparencyMode.Opaque, draw_mode, side);
|
|
27
|
-
|
|
28
|
-
if (!active_buckets.has(bucket_id)) {
|
|
29
|
-
// no matching materials, skip
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
yield { draw_mode, side, bucket_id };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
1
|
+
import { ShadeDrawMode } from "../../material/ShadeDrawMode.js";
|
|
2
|
+
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
3
|
+
import { rasterization_material_bucket } from "../expand/bucket/chunk_rasterization_material_bucket.js";
|
|
4
|
+
import { RASTERIZATION_BUCKET_SIDES } from "./construct_primitive_state.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The opaque rasterization buckets a scene has anything in, once each.
|
|
8
|
+
*
|
|
9
|
+
* Every opaque path records work per bucket — a filter, a slice of the sorted meshlets, a render
|
|
10
|
+
* pass. So what is iterated has to be the *buckets*, and iterating `ShadeDrawSide` is not that:
|
|
11
|
+
* `Front` and `Back` are one bucket, and a loop over the enum visits it twice and draws the scene's
|
|
12
|
+
* single-sided geometry twice.
|
|
13
|
+
*
|
|
14
|
+
* Which is why this exists rather than the three callers each writing the loop: the enum is the
|
|
15
|
+
* obvious thing to reach for and it is wrong, and it is wrong in a way that costs a whole pass and
|
|
16
|
+
* shows up in nothing but a frame time.
|
|
17
|
+
*
|
|
18
|
+
* @param {Set<number>} active_buckets bucket ids any material in the scene asks for
|
|
19
|
+
* @yields {{draw_mode: ShadeDrawMode, side: ShadeDrawSide, bucket_id: number}} `side` is the
|
|
20
|
+
* bucket's representative, which is what {@link construct_primitive_state} wants
|
|
21
|
+
*/
|
|
22
|
+
export function* rasterization_opaque_buckets(active_buckets) {
|
|
23
|
+
for (const draw_mode of Object.values(ShadeDrawMode)) {
|
|
24
|
+
for (const side of RASTERIZATION_BUCKET_SIDES) {
|
|
25
|
+
|
|
26
|
+
const bucket_id = rasterization_material_bucket(TransparencyMode.Opaque, draw_mode, side);
|
|
27
|
+
|
|
28
|
+
if (!active_buckets.has(bucket_id)) {
|
|
29
|
+
// no matching materials, skip
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
yield { draw_mode, side, bucket_id };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One bucket of a bucket-sorted collection, appended to a flat collection after the gathered
|
|
3
|
+
* buckets below it.
|
|
4
|
+
*
|
|
5
|
+
* Dispatched once per gathered bucket, in ascending id order, each sized off its own bucket's
|
|
6
|
+
* header. Where a bucket lands is the sum of the gathered buckets below it, so the output is their
|
|
7
|
+
* concatenation whatever the dispatches' timing, and not one atomic is involved.
|
|
8
|
+
*
|
|
9
|
+
* @see graph_gather_meshes_from_buckets
|
|
10
|
+
* @see shader_read_out_bucket which copies a bucket to the start of an output of its own
|
|
11
|
+
* @type {ComputeShader}
|
|
12
|
+
*/
|
|
13
|
+
export const shader_gather_bucket: ComputeShader;
|
|
14
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
15
|
+
//# sourceMappingURL=shader_gather_bucket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_gather_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/shader_gather_bucket.js"],"names":[],"mappings":"AAsFA;;;;;;;;;;;GAWG;AACH,mCAFU,aAAa,CAMrB;8BAhG4B,+BAA+B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
3
|
+
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
4
|
+
import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
5
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
6
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
7
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
8
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
9
|
+
import { RASTERIZATION_BUCKET_LIMIT } from "../expand/bucket/RASTERIZATION_BUCKET_LIMIT.js";
|
|
10
|
+
import {
|
|
11
|
+
RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ
|
|
12
|
+
} from "../expand/bucket/RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ.js";
|
|
13
|
+
|
|
14
|
+
// every bucket is one bit of `gathered`
|
|
15
|
+
assert.lessThanOrEqual(RASTERIZATION_BUCKET_LIMIT, 32, 'RASTERIZATION_BUCKET_LIMIT');
|
|
16
|
+
|
|
17
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
18
|
+
|
|
19
|
+
resources.setImmediate("settings", WebGPUStruct.from({
|
|
20
|
+
bucket_id: u32,
|
|
21
|
+
// every bucket this gather concatenates, one bit per bucket id
|
|
22
|
+
gathered: u32,
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
resources.createGroup()
|
|
26
|
+
.addStorageBuffer("input", RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ)
|
|
27
|
+
.addStorageBuffer("output", COLLECTION_U32_STRUCT_READ, true)
|
|
28
|
+
|
|
29
|
+
const body = CodeChunk.from(
|
|
30
|
+
//language=WGSL
|
|
31
|
+
`
|
|
32
|
+
// What a bucket holds, which is not always what its header says: the classify pass counts every
|
|
33
|
+
// visible mesh and writes one only while the input has room (see shader_read_out_bucket).
|
|
34
|
+
fn bucket_size(bucket_id: u32) -> u32 {
|
|
35
|
+
let header = input.headers[bucket_id];
|
|
36
|
+
|
|
37
|
+
let input_capacity = arrayLength(&input.elements);
|
|
38
|
+
let available = select(0u, input_capacity - header.offset, input_capacity > header.offset);
|
|
39
|
+
|
|
40
|
+
return min(header.count, available);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
|
|
44
|
+
fn main(@builtin(global_invocation_id) global_id : vec3<u32>){
|
|
45
|
+
|
|
46
|
+
let input_index = global_id.x;
|
|
47
|
+
|
|
48
|
+
let bucket_id = settings.bucket_id;
|
|
49
|
+
|
|
50
|
+
// the bucket starts where the gathered buckets below it end — each read off its own header, so
|
|
51
|
+
// no dispatch has to hand the next one where it stopped
|
|
52
|
+
var base = 0u;
|
|
53
|
+
var below = settings.gathered & ((1u << bucket_id) - 1u);
|
|
54
|
+
|
|
55
|
+
while (below != 0u) {
|
|
56
|
+
base += bucket_size(firstTrailingBit(below));
|
|
57
|
+
below &= below - 1u;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
let size = bucket_size(bucket_id);
|
|
61
|
+
let output_capacity = arrayLength(&output.elements);
|
|
62
|
+
|
|
63
|
+
/*
|
|
64
|
+
Every bucket writes the count it ends at, and the buckets are dispatched in ascending order, so
|
|
65
|
+
the last one standing wrote the total. Not only the highest: a bucket with nothing in it is a
|
|
66
|
+
dispatch of no workgroups, and writes nothing at all.
|
|
67
|
+
*/
|
|
68
|
+
if (input_index == 0u) {
|
|
69
|
+
output.count = min(base + size, output_capacity);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (input_index >= size) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
let output_index = base + input_index;
|
|
77
|
+
|
|
78
|
+
if (output_index >= output_capacity) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
output.elements[output_index] = input.elements[input.headers[bucket_id].offset + input_index];
|
|
83
|
+
}
|
|
84
|
+
`
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* One bucket of a bucket-sorted collection, appended to a flat collection after the gathered
|
|
89
|
+
* buckets below it.
|
|
90
|
+
*
|
|
91
|
+
* Dispatched once per gathered bucket, in ascending id order, each sized off its own bucket's
|
|
92
|
+
* header. Where a bucket lands is the sum of the gathered buckets below it, so the output is their
|
|
93
|
+
* concatenation whatever the dispatches' timing, and not one atomic is involved.
|
|
94
|
+
*
|
|
95
|
+
* @see graph_gather_meshes_from_buckets
|
|
96
|
+
* @see shader_read_out_bucket which copies a bucket to the start of an output of its own
|
|
97
|
+
* @type {ComputeShader}
|
|
98
|
+
*/
|
|
99
|
+
export const shader_gather_bucket = ComputeShader.from({
|
|
100
|
+
label: 'Gather bucket',
|
|
101
|
+
resources,
|
|
102
|
+
body,
|
|
103
|
+
})
|
|
@@ -46,6 +46,9 @@ export class GPUCollectionLimits {
|
|
|
46
46
|
compute_buffer_size(type: RasterizationCollectionType): number;
|
|
47
47
|
destroy(): void;
|
|
48
48
|
/**
|
|
49
|
+
* Read this frame's counts back once `encoder` is submitted and fold them into the limits.
|
|
50
|
+
* Resolves, never rejects, when the reading is lost to a teardown — see
|
|
51
|
+
* {@link Uint32BufferSamplingStats#readback_explicit} — and the limits then stand as they were.
|
|
49
52
|
*
|
|
50
53
|
* @param {ShadeGPUCommandContext} encoder
|
|
51
54
|
* @param {GPUBufferAllocator} buffers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUCollectionLimits.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/expand/GPUCollectionLimits.js"],"names":[],"mappings":"AAsBA;;GAEG;AACH;IAyBI;;;OAGG;IACH,+BAqBC;IAtCD;;;OAGG;IACH,uCAEC;IAkCD;;;;OAIG;IACH,gBAHW,2BAA2B,GAC1B,MAAM,CAMjB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAHW,2BAA2B,SAC3B,MAAM,QAQhB;IAED;;;;OAIG;IACH,0BAHW,2BAA2B,GACzB,MAAM,CAyBlB;IA+BD,gBAEC;IAED
|
|
1
|
+
{"version":3,"file":"GPUCollectionLimits.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/expand/GPUCollectionLimits.js"],"names":[],"mappings":"AAsBA;;GAEG;AACH;IAyBI;;;OAGG;IACH,+BAqBC;IAtCD;;;OAGG;IACH,uCAEC;IAkCD;;;;OAIG;IACH,gBAHW,2BAA2B,GAC1B,MAAM,CAMjB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAHW,2BAA2B,SAC3B,MAAM,QAQhB;IAED;;;;OAIG;IACH,0BAHW,2BAA2B,GACzB,MAAM,CAyBlB;IA+BD,gBAEC;IAED;;;;;;;OAOG;IACH,gBAHW,sBAAsB,WACtB,kBAAkB,iBAkB5B;;CAEJ;qCAjMY,OAAO,2CAA2C,EAAE,sBAAsB;iCAC1E,OAAO,oCAAoC,EAAE,kBAAkB;0CANlC,yCAAyC;4CACvC,kCAAkC"}
|
|
@@ -177,6 +177,9 @@ export class GPUCollectionLimits {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
/**
|
|
180
|
+
* Read this frame's counts back once `encoder` is submitted and fold them into the limits.
|
|
181
|
+
* Resolves, never rejects, when the reading is lost to a teardown — see
|
|
182
|
+
* {@link Uint32BufferSamplingStats#readback_explicit} — and the limits then stand as they were.
|
|
180
183
|
*
|
|
181
184
|
* @param {ShadeGPUCommandContext} encoder
|
|
182
185
|
* @param {GPUBufferAllocator} buffers
|
|
@@ -187,7 +190,9 @@ export class GPUCollectionLimits {
|
|
|
187
190
|
|
|
188
191
|
const stats = this.#stats;
|
|
189
192
|
|
|
190
|
-
await stats.readback_explicit(encoder, buffers)
|
|
193
|
+
if (!await stats.readback_explicit(encoder, buffers)) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
191
196
|
|
|
192
197
|
this.#clamp_stats_against_runaway();
|
|
193
198
|
|
package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy one bucket's meshlets out of a bucket-sorted meshlet buffer into a flat collection a raster
|
|
3
|
+
* pass can draw.
|
|
4
|
+
*
|
|
5
|
+
* The second half of expanding and cutting a view once and bucketing afterwards
|
|
6
|
+
* (CUT_PLAN_2026_09_14 §7 6b): the bucket loop that follows rasterizes each slice with its own
|
|
7
|
+
* primitive state, and nothing upstream of the sort had to know how many buckets there were.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} options
|
|
10
|
+
* @param {FrameGraph} options.graph
|
|
11
|
+
* @param {number} options.buckets bucket-sorted meshlets, as {@link graph_sort_meshlets_by_bucket_id}
|
|
12
|
+
* leaves them
|
|
13
|
+
* @param {number} options.bucket_id
|
|
14
|
+
* @param {GPUCollectionLimits} options.limits
|
|
15
|
+
* @returns {number} the bucket's meshlets
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function graph_extract_meshlets_from_bucket({ graph, buckets, bucket_id, limits, }: {
|
|
21
|
+
graph: FrameGraph;
|
|
22
|
+
buckets: number;
|
|
23
|
+
bucket_id: number;
|
|
24
|
+
limits: GPUCollectionLimits;
|
|
25
|
+
}): number;
|
|
26
|
+
//# sourceMappingURL=graph_extract_meshlets_from_bucket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_extract_meshlets_from_bucket.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAV+B,KAAK;IACT,OAAO,EAAvB,MAAM;IAEU,SAAS,EAAzB,MAAM;IACuB,MAAM;IACjC,MAAM,CAoElB"}
|
package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { BufferResourceDescriptor } from "../../../../../device/graph/BufferResourceDescriptor.js";
|
|
2
|
+
import { u32 } from "../../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
3
|
+
import { STRUCT_DISPATCH_COMPUTE_COMMAND } from "../../../../gpu_primitive/indirect/STRUCT_DISPATCH_COMPUTE_COMMAND.js";
|
|
4
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
5
|
+
import { build_indirect_compute_dispatch_command } from "../../../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
6
|
+
import { RasterizationCollectionType } from "../../RasterizationCollectionType.js";
|
|
7
|
+
import { shader_meshlets_extract_bucket } from "./shader_meshlets_extract_bucket.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Copy one bucket's meshlets out of a bucket-sorted meshlet buffer into a flat collection a raster
|
|
11
|
+
* pass can draw.
|
|
12
|
+
*
|
|
13
|
+
* The second half of expanding and cutting a view once and bucketing afterwards
|
|
14
|
+
* (CUT_PLAN_2026_09_14 §7 6b): the bucket loop that follows rasterizes each slice with its own
|
|
15
|
+
* primitive state, and nothing upstream of the sort had to know how many buckets there were.
|
|
16
|
+
*
|
|
17
|
+
* @param {Object} options
|
|
18
|
+
* @param {FrameGraph} options.graph
|
|
19
|
+
* @param {number} options.buckets bucket-sorted meshlets, as {@link graph_sort_meshlets_by_bucket_id}
|
|
20
|
+
* leaves them
|
|
21
|
+
* @param {number} options.bucket_id
|
|
22
|
+
* @param {GPUCollectionLimits} options.limits
|
|
23
|
+
* @returns {number} the bucket's meshlets
|
|
24
|
+
*
|
|
25
|
+
* @author Alex Goldring
|
|
26
|
+
* @copyright Company Named Limited (c) 2026
|
|
27
|
+
*/
|
|
28
|
+
export function graph_extract_meshlets_from_bucket({
|
|
29
|
+
graph,
|
|
30
|
+
buckets,
|
|
31
|
+
bucket_id,
|
|
32
|
+
limits,
|
|
33
|
+
}) {
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param data
|
|
38
|
+
* @param {FramePassResources} resources
|
|
39
|
+
* @param {GraphicsExecutionContext} context
|
|
40
|
+
*/
|
|
41
|
+
function execute(data, resources, context) {
|
|
42
|
+
const encoder = context.encoder;
|
|
43
|
+
|
|
44
|
+
const buckets = resources.get(data.buckets);
|
|
45
|
+
const output = resources.get(data.output);
|
|
46
|
+
const command = resources.get(data.command);
|
|
47
|
+
|
|
48
|
+
const bucket_id = data.bucket_id;
|
|
49
|
+
|
|
50
|
+
// folded: a meshlet collection is past what one dispatch dimension reaches — see
|
|
51
|
+
// IndirectComputeCommandBuildPass
|
|
52
|
+
build_indirect_compute_dispatch_command(
|
|
53
|
+
COMPUTE_SHADER_DEFAULT_GROUP_SIZE,
|
|
54
|
+
encoder,
|
|
55
|
+
buckets,
|
|
56
|
+
// the bucketed buffer header consists of pairs of u32 values (count,offset)
|
|
57
|
+
bucket_id * (u32.size * 2),
|
|
58
|
+
command,
|
|
59
|
+
0,
|
|
60
|
+
true,
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
shader_meshlets_extract_bucket.dispatchIndirect({
|
|
64
|
+
encoder,
|
|
65
|
+
command,
|
|
66
|
+
bindings: {
|
|
67
|
+
bucket_index: { value: bucket_id },
|
|
68
|
+
bucket_data: buckets,
|
|
69
|
+
output: output,
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const data = {};
|
|
75
|
+
|
|
76
|
+
const pass = graph.add("extract meshlets from bucket", data, execute);
|
|
77
|
+
|
|
78
|
+
data.buckets = pass.read(buckets);
|
|
79
|
+
data.bucket_id = bucket_id;
|
|
80
|
+
data.command = pass.create("command", BufferResourceDescriptor.from(
|
|
81
|
+
STRUCT_DISPATCH_COMPUTE_COMMAND.aligned_size,
|
|
82
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT,
|
|
83
|
+
));
|
|
84
|
+
data.output = pass.create("output", BufferResourceDescriptor.from(
|
|
85
|
+
limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
|
|
86
|
+
GPUBufferUsage.STORAGE,
|
|
87
|
+
0, 16 // clear count
|
|
88
|
+
));
|
|
89
|
+
|
|
90
|
+
return data.output;
|
|
91
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Several buckets' mesh indices out of a bucket-sorted mesh buffer, into one flat
|
|
3
|
+
* {@link COLLECTION_U32_STRUCT_READ} buffer, end to end in bucket order.
|
|
4
|
+
*
|
|
5
|
+
* What lets the fast path expand and cut a view once rather than once per opaque bucket
|
|
6
|
+
* (CUT_PLAN_2026_09_14 §7 6b): the opaque buckets are not neighbours in the sorted buffer — the
|
|
7
|
+
* transparency mode is the low bits of a bucket id — so they cannot be read out as one range.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} options
|
|
10
|
+
* @param {FrameGraph} options.graph
|
|
11
|
+
* @param {number} options.buckets bucket-sorted meshes resource ID
|
|
12
|
+
* @param {number[]} options.bucket_ids the buckets to gather, ascending
|
|
13
|
+
* @param {GPUCollectionLimits} options.limits
|
|
14
|
+
* @returns {number} resource ID of the gathered mesh list
|
|
15
|
+
*/
|
|
16
|
+
export function graph_gather_meshes_from_buckets({ graph, buckets, bucket_ids, limits, }: {
|
|
17
|
+
graph: FrameGraph;
|
|
18
|
+
buckets: number;
|
|
19
|
+
bucket_ids: number[];
|
|
20
|
+
limits: GPUCollectionLimits;
|
|
21
|
+
}): number;
|
|
22
|
+
//# sourceMappingURL=graph_gather_meshes_from_buckets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_gather_meshes_from_buckets.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;GAcG;AACH;IAN+B,KAAK;IACT,OAAO,EAAvB,MAAM;IACY,UAAU,EAA5B,MAAM,EAAE;IACqB,MAAM;IACjC,MAAM,CA6ElB"}
|