@woosh/meep-engine 3.33.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/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/{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/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 +7 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +11 -2
- 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/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/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/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/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 -15
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/Sprite.js +0 -14
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -11
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -144
- 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
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
3
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
4
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
5
|
+
import {
|
|
6
|
+
build_indirect_compute_dispatch_command,
|
|
7
|
+
INDIRECT_COMPUTE_COMMAND_DESCRIPTOR
|
|
8
|
+
} from "../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
9
|
+
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
10
|
+
import { shader_gather_bucket } from "../bucket/shader_gather_bucket.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Several buckets' mesh indices out of a bucket-sorted mesh buffer, into one flat
|
|
14
|
+
* {@link COLLECTION_U32_STRUCT_READ} buffer, end to end in bucket order.
|
|
15
|
+
*
|
|
16
|
+
* What lets the fast path expand and cut a view once rather than once per opaque bucket
|
|
17
|
+
* (CUT_PLAN_2026_09_14 §7 6b): the opaque buckets are not neighbours in the sorted buffer — the
|
|
18
|
+
* transparency mode is the low bits of a bucket id — so they cannot be read out as one range.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} options
|
|
21
|
+
* @param {FrameGraph} options.graph
|
|
22
|
+
* @param {number} options.buckets bucket-sorted meshes resource ID
|
|
23
|
+
* @param {number[]} options.bucket_ids the buckets to gather, ascending
|
|
24
|
+
* @param {GPUCollectionLimits} options.limits
|
|
25
|
+
* @returns {number} resource ID of the gathered mesh list
|
|
26
|
+
*/
|
|
27
|
+
export function graph_gather_meshes_from_buckets({
|
|
28
|
+
graph,
|
|
29
|
+
buckets,
|
|
30
|
+
bucket_ids,
|
|
31
|
+
limits,
|
|
32
|
+
}) {
|
|
33
|
+
assert.isArray(bucket_ids, 'bucket_ids');
|
|
34
|
+
|
|
35
|
+
let gathered = 0;
|
|
36
|
+
|
|
37
|
+
for (let i = 0; i < bucket_ids.length; i++) {
|
|
38
|
+
const bucket_id = bucket_ids[i];
|
|
39
|
+
|
|
40
|
+
assert.isNonNegativeInteger(bucket_id, 'bucket_id');
|
|
41
|
+
assert.lessThan(bucket_id, 32, 'bucket_id');
|
|
42
|
+
|
|
43
|
+
// the count the last dispatch writes is the total only if the last is the highest
|
|
44
|
+
assert.ok(i === 0 || bucket_ids[i - 1] < bucket_id, 'bucket_ids must be ascending');
|
|
45
|
+
|
|
46
|
+
gathered |= 1 << bucket_id;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
gathered >>>= 0;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
*
|
|
53
|
+
* @param data
|
|
54
|
+
* @param {FramePassResources} resources
|
|
55
|
+
* @param {GraphicsExecutionContext} context
|
|
56
|
+
*/
|
|
57
|
+
function execute(data, resources, context) {
|
|
58
|
+
const encoder = context.encoder;
|
|
59
|
+
|
|
60
|
+
const buckets = resources.get(data.buckets);
|
|
61
|
+
const output = resources.get(data.output);
|
|
62
|
+
|
|
63
|
+
for (let i = 0; i < bucket_ids.length; i++) {
|
|
64
|
+
const bucket_id = bucket_ids[i];
|
|
65
|
+
const command = resources.get(data.commands[i]);
|
|
66
|
+
|
|
67
|
+
build_indirect_compute_dispatch_command(
|
|
68
|
+
COMPUTE_SHADER_DEFAULT_GROUP_SIZE,
|
|
69
|
+
encoder,
|
|
70
|
+
buckets,
|
|
71
|
+
// the bucketed buffer header consists of pairs of u32 values (count,offset)
|
|
72
|
+
bucket_id * (u32.size * 2),
|
|
73
|
+
command,
|
|
74
|
+
0
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
shader_gather_bucket.dispatchIndirect({
|
|
78
|
+
encoder,
|
|
79
|
+
command,
|
|
80
|
+
bindings: {
|
|
81
|
+
settings: { bucket_id, gathered },
|
|
82
|
+
input: buckets,
|
|
83
|
+
output,
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const data = {};
|
|
90
|
+
|
|
91
|
+
const pass = graph.add("gather meshes from buckets", data, execute);
|
|
92
|
+
|
|
93
|
+
data.buckets = pass.read(buckets);
|
|
94
|
+
data.commands = bucket_ids.map(() => pass.create("command", INDIRECT_COMPUTE_COMMAND_DESCRIPTOR));
|
|
95
|
+
data.output = pass.create("output", BufferResourceDescriptor.from(
|
|
96
|
+
limits.compute_buffer_size(RasterizationCollectionType.Meshes),
|
|
97
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
98
|
+
0, 16 // clear count
|
|
99
|
+
));
|
|
100
|
+
|
|
101
|
+
return data.output;
|
|
102
|
+
}
|
|
@@ -32,7 +32,8 @@ export function graph_rasterize_scene_fast_raw({ graph, meshes, limits, target_d
|
|
|
32
32
|
* Flow:
|
|
33
33
|
* 1. Frustum cull the scene meshes
|
|
34
34
|
* 2. Sort culled meshes into rasterization buckets
|
|
35
|
-
* 3.
|
|
35
|
+
* 3. Gather every active opaque bucket -> expand to meshlets and cut, once -> rasterize a bucket
|
|
36
|
+
* at a time
|
|
36
37
|
* 4. If an alpha-tested pass is configured, rasterize it without HZB filtering
|
|
37
38
|
*
|
|
38
39
|
* @param {Object} options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_scene_fast.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_rasterize_scene_fast.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;GAUG;AACH;;;;;;;IAFa;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAC,CAwK3D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAJ+B,KAAK;IACC,GAAG;IACA,MAAM;SA8C7C"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { ShadeDrawMode } from "../../material/ShadeDrawMode.js";
|
|
3
2
|
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
4
|
-
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
5
3
|
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
6
4
|
import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
|
|
7
5
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
8
6
|
import { rasterization_material_bucket } from "../expand/bucket/chunk_rasterization_material_bucket.js";
|
|
9
7
|
import { graph_meshes_classify_buckets } from "../expand/bucket/mesh/graph_meshes_classify_buckets.js";
|
|
10
|
-
import { graph_meshlets_rasterize } from "../expand/graph_meshlets_rasterize.js";
|
|
11
8
|
import { graph_expand_meshes_to_meshlets } from "../expand/mesh/graph_expand_meshes_to_meshlets.js";
|
|
12
9
|
import { graph_vgeo_expand_if_enabled } from "../../geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js";
|
|
13
10
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
14
|
-
import {
|
|
11
|
+
import { graph_meshlets_rasterize_by_bucket } from "../bucket/graph_meshlets_rasterize_by_bucket.js";
|
|
15
12
|
import { rasterization_opaque_buckets } from "../bucket/rasterization_opaque_buckets.js";
|
|
16
13
|
import { graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
|
|
17
14
|
import { graph_clear_raster_targets } from "../graph_clear_raster_targets.js";
|
|
18
15
|
import { graph_rasterize_meshes_alpha_tested } from "../native/graph_rasterize_meshes_alpha_tested.js";
|
|
19
|
-
import {
|
|
16
|
+
import { graph_gather_meshes_from_buckets } from "./graph_gather_meshes_from_buckets.js";
|
|
20
17
|
|
|
21
18
|
/**
|
|
22
19
|
*
|
|
@@ -74,49 +71,55 @@ export function graph_rasterize_scene_fast_raw({
|
|
|
74
71
|
active_buckets.add(bucket_id);
|
|
75
72
|
}
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
const opaque = Array.from(rasterization_opaque_buckets(active_buckets));
|
|
75
|
+
|
|
78
76
|
let is_first_draw = true;
|
|
79
77
|
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
if (opaque.length > 0) {
|
|
79
|
+
/*
|
|
80
|
+
Every opaque bucket's meshes in one collection, expanded and cut once, then drawn a bucket at
|
|
81
|
+
a time with no occlusion filtering. The cut is the one per view (CUT_PLAN_2026_09_14 §7 6b),
|
|
82
|
+
and the ids are ascending, which is what the gather's count needs.
|
|
83
|
+
*/
|
|
84
|
+
const gr_opaque_meshes = graph_gather_meshes_from_buckets({
|
|
82
85
|
graph,
|
|
83
86
|
buckets: gr_render_buckets,
|
|
84
|
-
bucket_id,
|
|
87
|
+
bucket_ids: opaque.map(bucket => bucket.bucket_id),
|
|
85
88
|
limits,
|
|
86
89
|
});
|
|
87
90
|
|
|
88
|
-
let
|
|
91
|
+
let gr_meshlets = graph_expand_meshes_to_meshlets({
|
|
89
92
|
graph,
|
|
90
|
-
input_meshes:
|
|
93
|
+
input_meshes: gr_opaque_meshes,
|
|
91
94
|
scene: scene_ctx,
|
|
92
95
|
expected_output_size: limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
|
|
93
96
|
limits,
|
|
94
97
|
});
|
|
95
98
|
|
|
96
|
-
// the seam:
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
+
// the seam: the view's virtual-geometry instances select their cut and append it to the
|
|
100
|
+
// same collection, which is the whole of what the rest of this function is told
|
|
101
|
+
gr_meshlets = graph_vgeo_expand_if_enabled({
|
|
99
102
|
graph,
|
|
100
|
-
input_meshes:
|
|
101
|
-
output_meshlets:
|
|
103
|
+
input_meshes: gr_opaque_meshes,
|
|
104
|
+
output_meshlets: gr_meshlets,
|
|
102
105
|
view: view_ctx,
|
|
103
106
|
limits,
|
|
104
107
|
});
|
|
105
108
|
|
|
106
|
-
graph_record_stat(graph, limits.stats, RasterizationCollectionType.Meshlets,
|
|
109
|
+
graph_record_stat(graph, limits.stats, RasterizationCollectionType.Meshlets, gr_meshlets);
|
|
107
110
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
[target_depth, targets_color] = graph_meshlets_rasterize({
|
|
111
|
+
[target_depth, targets_color] = graph_meshlets_rasterize_by_bucket({
|
|
111
112
|
graph,
|
|
112
113
|
view: view_ctx,
|
|
113
|
-
input_meshlets:
|
|
114
|
+
input_meshlets: gr_meshlets,
|
|
115
|
+
buckets: opaque,
|
|
114
116
|
depth: target_depth,
|
|
115
117
|
color_targets: targets_color,
|
|
116
118
|
pass_descriptor: job.opaque_pass,
|
|
117
|
-
clear_targets:
|
|
118
|
-
|
|
119
|
+
clear_targets: true,
|
|
120
|
+
cull_policy: job.cull_policy,
|
|
119
121
|
viewport,
|
|
122
|
+
limits,
|
|
120
123
|
});
|
|
121
124
|
|
|
122
125
|
is_first_draw = false;
|
|
@@ -203,7 +206,8 @@ export function graph_rasterize_scene_fast_raw({
|
|
|
203
206
|
* Flow:
|
|
204
207
|
* 1. Frustum cull the scene meshes
|
|
205
208
|
* 2. Sort culled meshes into rasterization buckets
|
|
206
|
-
* 3.
|
|
209
|
+
* 3. Gather every active opaque bucket -> expand to meshlets and cut, once -> rasterize a bucket
|
|
210
|
+
* at a time
|
|
207
211
|
* 4. If an alpha-tested pass is configured, rasterize it without HZB filtering
|
|
208
212
|
*
|
|
209
213
|
* @param {Object} options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_partial_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_rasterize_partial_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;GAeG;AACH,gMAFa;IAAC,eAAe,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,EAAE,CAAA;CAAC,CA0NjG"}
|
|
@@ -3,9 +3,6 @@ import { noop } from "../../../../core/function/noop.js";
|
|
|
3
3
|
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
4
4
|
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
5
5
|
import { shader_hzb_mesh_filter_2way } from "../cull/hzb/shader_hzb_mesh_filter_2way.js";
|
|
6
|
-
import { ShadeDrawMode } from "../../material/ShadeDrawMode.js";
|
|
7
|
-
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
8
|
-
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
9
6
|
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
10
7
|
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
11
8
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
@@ -14,12 +11,12 @@ import {
|
|
|
14
11
|
graph_build_indirect_dispatch_command,
|
|
15
12
|
INDIRECT_COMPUTE_COMMAND_DESCRIPTOR
|
|
16
13
|
} from "../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
17
|
-
import { graph_meshlets_rasterize } from "../expand/graph_meshlets_rasterize.js";
|
|
18
14
|
import { graph_expand_meshes_to_meshlets } from "../expand/mesh/graph_expand_meshes_to_meshlets.js";
|
|
19
15
|
import { graph_vgeo_expand_if_enabled } from "../../geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js";
|
|
20
16
|
import { MeshletFilter2WayPassData, pass_filter_meshlets_2way } from "../expand/pass1/pass_filter_meshlets_2way.js";
|
|
21
17
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
22
|
-
import {
|
|
18
|
+
import { CullPolicy } from "../bucket/construct_primitive_state.js";
|
|
19
|
+
import { graph_meshlets_rasterize_by_bucket } from "../bucket/graph_meshlets_rasterize_by_bucket.js";
|
|
23
20
|
import { rasterization_opaque_buckets } from "../bucket/rasterization_opaque_buckets.js";
|
|
24
21
|
import { graph_clear_raster_targets } from "../graph_clear_raster_targets.js";
|
|
25
22
|
|
|
@@ -110,9 +107,6 @@ export function graph_rasterize_partial_opaque({
|
|
|
110
107
|
},
|
|
111
108
|
command
|
|
112
109
|
});
|
|
113
|
-
|
|
114
|
-
limits.stats.record(encoder, RasterizationCollectionType.Meshes, instances_positive);
|
|
115
|
-
|
|
116
110
|
}
|
|
117
111
|
|
|
118
112
|
|
|
@@ -122,6 +116,17 @@ export function graph_rasterize_partial_opaque({
|
|
|
122
116
|
// create a dummy pass to spawn persistent resources
|
|
123
117
|
const dummy_pass = graph.add('dummy/spawn', {}, noop);
|
|
124
118
|
|
|
119
|
+
/*
|
|
120
|
+
One positive set for every bucket, as the maybe set always was. The filter appends, so each
|
|
121
|
+
bucket's pass adds its instances to what the buckets before it left, and what comes out of the
|
|
122
|
+
loop is every instance the view draws in this phase — which is what gets expanded and cut, once
|
|
123
|
+
(CUT_PLAN_2026_09_14 §7 6b).
|
|
124
|
+
*/
|
|
125
|
+
let gr_instances_positive = dummy_pass.create("positive meshes", BufferResourceDescriptor.from(
|
|
126
|
+
collection_size_meshes,
|
|
127
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
128
|
+
0, 16
|
|
129
|
+
));
|
|
125
130
|
let gr_instances_maybe = dummy_pass.create("maybe meshes", BufferResourceDescriptor.from(
|
|
126
131
|
collection_size_meshes,
|
|
127
132
|
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
@@ -136,10 +141,9 @@ export function graph_rasterize_partial_opaque({
|
|
|
136
141
|
|
|
137
142
|
let viz_depth = depth;
|
|
138
143
|
|
|
144
|
+
const opaque = Array.from(rasterization_opaque_buckets(active_buckets));
|
|
139
145
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
for (const { draw_mode, side, bucket_id } of rasterization_opaque_buckets(active_buckets)) {
|
|
146
|
+
for (const { bucket_id } of opaque) {
|
|
143
147
|
const pass_data_instances_0 = {};
|
|
144
148
|
|
|
145
149
|
const pass_instances_0 = graph.add("HZB mesh filter", pass_data_instances_0, execute);
|
|
@@ -151,33 +155,34 @@ export function graph_rasterize_partial_opaque({
|
|
|
151
155
|
pass_data_instances_0.camera_previous = pass_instances_0.read(camera_previous);
|
|
152
156
|
pass_data_instances_0.hzb = pass_instances_0.read(hzb);
|
|
153
157
|
|
|
154
|
-
pass_data_instances_0.instances_positive = pass_instances_0.
|
|
155
|
-
collection_size_meshes,
|
|
156
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
157
|
-
0, 16
|
|
158
|
-
));
|
|
159
|
-
|
|
158
|
+
gr_instances_positive = pass_data_instances_0.instances_positive = pass_instances_0.write(gr_instances_positive);
|
|
160
159
|
gr_instances_maybe = pass_data_instances_0.instances_maybe = pass_instances_0.write(gr_instances_maybe);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
let is_first_draw = true;
|
|
163
|
+
|
|
164
|
+
if (opaque.length > 0) {
|
|
165
|
+
graph_record_stat(graph, limits.stats, RasterizationCollectionType.Meshes, gr_instances_positive);
|
|
161
166
|
|
|
162
167
|
let meshlet_expansion_0 = graph_expand_meshes_to_meshlets({
|
|
163
168
|
graph,
|
|
164
|
-
input_meshes:
|
|
169
|
+
input_meshes: gr_instances_positive,
|
|
165
170
|
scene: scene_ctx,
|
|
166
171
|
expected_output_size: collection_size_meshlets,
|
|
167
172
|
limits,
|
|
168
173
|
});
|
|
169
174
|
|
|
170
|
-
// the seam. The instance sets of the two HZB passes are
|
|
171
|
-
//
|
|
175
|
+
// the seam, over every opaque bucket at once. The instance sets of the two HZB passes are
|
|
176
|
+
// disjoint, so this and the second phase's are one cut per view in total, and no instance
|
|
177
|
+
// is ever cut twice
|
|
172
178
|
meshlet_expansion_0 = graph_vgeo_expand_if_enabled({
|
|
173
179
|
graph,
|
|
174
|
-
input_meshes:
|
|
180
|
+
input_meshes: gr_instances_positive,
|
|
175
181
|
output_meshlets: meshlet_expansion_0,
|
|
176
182
|
view,
|
|
177
183
|
limits,
|
|
178
184
|
});
|
|
179
185
|
|
|
180
|
-
|
|
181
186
|
graph_record_stat(graph, limits.stats, RasterizationCollectionType.Meshlets, meshlet_expansion_0);
|
|
182
187
|
|
|
183
188
|
// ----------
|
|
@@ -201,22 +206,21 @@ export function graph_rasterize_partial_opaque({
|
|
|
201
206
|
));
|
|
202
207
|
gr_meshlets_maybe = pass_data_meshlets_1.out_meshlets_maybe = pass_meshlets_1.write(gr_meshlets_maybe);
|
|
203
208
|
|
|
204
|
-
const primitive_state = construct_primitive_state(draw_mode, side, cull_policy);
|
|
205
|
-
|
|
206
209
|
// ----------
|
|
207
|
-
[viz_depth, raster_color_targets] =
|
|
210
|
+
[viz_depth, raster_color_targets] = graph_meshlets_rasterize_by_bucket({
|
|
208
211
|
graph,
|
|
209
212
|
view,
|
|
210
213
|
input_meshlets: pass_data_meshlets_1.out_meshlets_positive,
|
|
214
|
+
buckets: opaque,
|
|
211
215
|
depth: viz_depth,
|
|
212
216
|
color_targets: raster_color_targets,
|
|
213
217
|
pass_descriptor: render_pass_descriptor,
|
|
214
|
-
clear_targets:
|
|
215
|
-
|
|
218
|
+
clear_targets: true,
|
|
219
|
+
cull_policy,
|
|
216
220
|
viewport,
|
|
221
|
+
limits,
|
|
217
222
|
});
|
|
218
223
|
|
|
219
|
-
//
|
|
220
224
|
is_first_draw = false;
|
|
221
225
|
}
|
|
222
226
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_remaining_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_rasterize_remaining_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;GAiBG;AACH,kOAFa;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,EAAE,CAAA;CAAC,CAqFlD"}
|
|
@@ -1,96 +1,13 @@
|
|
|
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 { ShadeDrawMode } from "../../material/ShadeDrawMode.js";
|
|
5
|
-
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
6
|
-
import { TransparencyMode } from "../../material/TransparencyMode.js";
|
|
7
|
-
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
8
1
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
9
|
-
import { build_indirect_compute_dispatch_command } from "../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
10
|
-
import { graph_sort_meshlets_by_bucket_id } from "../expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js";
|
|
11
|
-
import { shader_meshlets_extract_bucket } from "../expand/bucket/meshlet/shader_meshlets_extract_bucket.js";
|
|
12
2
|
import { graph_mesh_filter_one_way } from "../expand/graph_mesh_filter_one_way.js";
|
|
13
3
|
import { graph_meshlets_filter_one_way } from "../expand/graph_meshlets_filter_one_way.js";
|
|
14
|
-
import { graph_meshlets_rasterize } from "../expand/graph_meshlets_rasterize.js";
|
|
15
4
|
import { graph_expand_meshes_to_meshlets } from "../expand/mesh/graph_expand_meshes_to_meshlets.js";
|
|
16
5
|
import { graph_vgeo_expand_if_enabled } from "../../geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js";
|
|
17
6
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
18
|
-
import {
|
|
7
|
+
import { CullPolicy } from "../bucket/construct_primitive_state.js";
|
|
8
|
+
import { graph_meshlets_rasterize_by_bucket } from "../bucket/graph_meshlets_rasterize_by_bucket.js";
|
|
19
9
|
import { rasterization_opaque_buckets } from "../bucket/rasterization_opaque_buckets.js";
|
|
20
10
|
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* @param {Object} options
|
|
24
|
-
* @param {FrameGraph} options.graph
|
|
25
|
-
* @param {number} options.buckets
|
|
26
|
-
* @param {number} options.bucket_id
|
|
27
|
-
* @param {GPUCollectionLimits} options.limits
|
|
28
|
-
*/
|
|
29
|
-
function graph_extract_meshlets_from_bucket({
|
|
30
|
-
graph,
|
|
31
|
-
buckets,
|
|
32
|
-
bucket_id,
|
|
33
|
-
limits,
|
|
34
|
-
}) {
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* @param data
|
|
39
|
-
* @param {FramePassResources} resources
|
|
40
|
-
* @param {GraphicsExecutionContext} context
|
|
41
|
-
*/
|
|
42
|
-
function execute(data, resources, context) {
|
|
43
|
-
const encoder = context.encoder;
|
|
44
|
-
|
|
45
|
-
const buckets = resources.get(data.buckets);
|
|
46
|
-
const output = resources.get(data.output);
|
|
47
|
-
const command = resources.get(data.command);
|
|
48
|
-
|
|
49
|
-
const bucket_id = data.bucket_id;
|
|
50
|
-
|
|
51
|
-
// folded: a meshlet collection is past what one dispatch dimension reaches — see
|
|
52
|
-
// IndirectComputeCommandBuildPass
|
|
53
|
-
build_indirect_compute_dispatch_command(
|
|
54
|
-
COMPUTE_SHADER_DEFAULT_GROUP_SIZE,
|
|
55
|
-
encoder,
|
|
56
|
-
buckets,
|
|
57
|
-
// the bucketed buffer header consists of pairs of u32 values (count,offset)
|
|
58
|
-
bucket_id * (u32.size * 2),
|
|
59
|
-
command,
|
|
60
|
-
0,
|
|
61
|
-
true,
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
shader_meshlets_extract_bucket.dispatchIndirect({
|
|
65
|
-
encoder,
|
|
66
|
-
command,
|
|
67
|
-
bindings: {
|
|
68
|
-
bucket_index: { value: bucket_id },
|
|
69
|
-
bucket_data: buckets,
|
|
70
|
-
output: output,
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const data = {};
|
|
76
|
-
|
|
77
|
-
const pass = graph.add("extract meshlets from bucket", data, execute);
|
|
78
|
-
|
|
79
|
-
data.buckets = pass.read(buckets);
|
|
80
|
-
data.bucket_id = bucket_id;
|
|
81
|
-
data.command = pass.create("command", BufferResourceDescriptor.from(
|
|
82
|
-
STRUCT_DISPATCH_COMPUTE_COMMAND.aligned_size,
|
|
83
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT,
|
|
84
|
-
));
|
|
85
|
-
data.output = pass.create("output", BufferResourceDescriptor.from(
|
|
86
|
-
limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
|
|
87
|
-
GPUBufferUsage.STORAGE,
|
|
88
|
-
0, 16 // clear count
|
|
89
|
-
));
|
|
90
|
-
|
|
91
|
-
return data.output;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
11
|
/**
|
|
95
12
|
*
|
|
96
13
|
* @param {FrameGraph} graph
|
|
@@ -170,34 +87,21 @@ export function graph_rasterize_remaining_opaque({
|
|
|
170
87
|
});
|
|
171
88
|
|
|
172
89
|
|
|
173
|
-
const
|
|
174
|
-
graph,
|
|
175
|
-
input_meshlets: gr_live_meshlets,
|
|
176
|
-
scene_ctx: view.scene,
|
|
177
|
-
limits,
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
for (const { draw_mode, side, bucket_id } of rasterization_opaque_buckets(active_buckets)) {
|
|
181
|
-
const primitive_state = construct_primitive_state(draw_mode, side, cull_policy);
|
|
182
|
-
|
|
183
|
-
// copy out a meshlet set
|
|
184
|
-
const meshlets = graph_extract_meshlets_from_bucket({
|
|
185
|
-
graph,
|
|
186
|
-
buckets: meshlet_buckets,
|
|
187
|
-
bucket_id,
|
|
188
|
-
limits,
|
|
189
|
-
});
|
|
90
|
+
const opaque = Array.from(rasterization_opaque_buckets(active_buckets));
|
|
190
91
|
|
|
191
|
-
|
|
92
|
+
if (opaque.length > 0) {
|
|
93
|
+
[gr_depth_texture, raster_color_targets] = graph_meshlets_rasterize_by_bucket({
|
|
192
94
|
graph,
|
|
193
95
|
view,
|
|
194
|
-
input_meshlets:
|
|
96
|
+
input_meshlets: gr_live_meshlets,
|
|
97
|
+
buckets: opaque,
|
|
195
98
|
depth: gr_depth_texture,
|
|
196
99
|
color_targets: raster_color_targets,
|
|
197
100
|
pass_descriptor: render_pass_descriptor,
|
|
198
101
|
clear_targets: false,
|
|
199
|
-
|
|
102
|
+
cull_policy,
|
|
200
103
|
viewport,
|
|
104
|
+
limits,
|
|
201
105
|
});
|
|
202
106
|
}
|
|
203
107
|
|
|
@@ -69,6 +69,11 @@ export class GPUInstancesAccelerationStructure {
|
|
|
69
69
|
* on its own — what a frame does, so the build follows the bounds pass it reads
|
|
70
70
|
*/
|
|
71
71
|
update(scene_database_buffer: GPUBuffer, cmd_ctx?: ShadeGPUCommandContext): void;
|
|
72
|
+
/**
|
|
73
|
+
* Release the tree and the list of rows it was built over. For the scene context's own
|
|
74
|
+
* teardown: nothing builds or reads the tree afterwards. Safe to call twice.
|
|
75
|
+
*/
|
|
76
|
+
destroy(): void;
|
|
72
77
|
#private;
|
|
73
78
|
}
|
|
74
79
|
export type GraphicsContext = import("../GraphicsContext.js").GraphicsContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUInstancesAccelerationStructure.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUInstancesAccelerationStructure.js"],"names":[],"mappings":"AAmCA;;GAEG;AACH;IA8DI;;;OAGG;IACH,sBAFW,eAAe,EAqBzB;IAzED,cAIC;IAOD;;;OAGG;IACH,wBAEC;IAmED;;;;OAIG;IACH,oBAFW,MAAM,QAUhB;IAED;;;;;OAKG;IACH,uBAFW,MAAM,QAUhB;IAED;;;;OAIG;IACH,uBAFW,MAAM,QAOhB;IA8CD;;;;OAIG;IACH;;;OAGG;IACH,mBAEC;IAiGD;;;;;;;;;;;;OAYG;IACH,0BAHW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,GAChC,QAAQ,OAAO,CAAC,CA0C5B;IAED;;;OAGG;IACH,wDAFW,sBAAsB,QAMhC;IAED;;;;;;OAMG;IACH,mDAHW,sBAAsB,QAShC;;CACJ;
|
|
1
|
+
{"version":3,"file":"GPUInstancesAccelerationStructure.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUInstancesAccelerationStructure.js"],"names":[],"mappings":"AAmCA;;GAEG;AACH;IA8DI;;;OAGG;IACH,sBAFW,eAAe,EAqBzB;IAzED,cAIC;IAOD;;;OAGG;IACH,wBAEC;IAmED;;;;OAIG;IACH,oBAFW,MAAM,QAUhB;IAED;;;;;OAKG;IACH,uBAFW,MAAM,QAUhB;IAED;;;;OAIG;IACH,uBAFW,MAAM,QAOhB;IA8CD;;;;OAIG;IACH;;;OAGG;IACH,mBAEC;IAiGD;;;;;;;;;;;;OAYG;IACH,0BAHW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,GAChC,QAAQ,OAAO,CAAC,CA0C5B;IAED;;;OAGG;IACH,wDAFW,sBAAsB,QAMhC;IAED;;;;;;OAMG;IACH,mDAHW,sBAAsB,QAShC;IAED;;;OAGG;IACH,gBAKC;;CACJ;8BAxZY,OAAO,uBAAuB,EAAE,eAAe;uCARrB,wCAAwC"}
|
|
@@ -406,6 +406,17 @@ export class GPUInstancesAccelerationStructure {
|
|
|
406
406
|
|
|
407
407
|
this.push_to_gpu(scene_database_buffer, cmd_ctx);
|
|
408
408
|
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Release the tree and the list of rows it was built over. For the scene context's own
|
|
412
|
+
* teardown: nothing builds or reads the tree afterwards. Safe to call twice.
|
|
413
|
+
*/
|
|
414
|
+
destroy() {
|
|
415
|
+
this.#buffer.destroy();
|
|
416
|
+
this.#rows_buffer?.destroy();
|
|
417
|
+
|
|
418
|
+
this.#live.clear();
|
|
419
|
+
}
|
|
409
420
|
}
|
|
410
421
|
|
|
411
422
|
/**
|
|
@@ -75,9 +75,10 @@ export class GPUSceneContext {
|
|
|
75
75
|
*
|
|
76
76
|
* And the residency and the feedback loop with it, so that an engine host gets the whole
|
|
77
77
|
* streaming loop by enabling virtual geometry rather than by wiring four objects itself
|
|
78
|
-
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency},
|
|
79
|
-
*
|
|
80
|
-
* and
|
|
78
|
+
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
|
|
79
|
+
* page after the root arrives because a cut asked for it. The renderer opens and closes each
|
|
80
|
+
* frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
|
|
81
|
+
* of it.
|
|
81
82
|
*
|
|
82
83
|
* @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
|
|
83
84
|
* {@link GPUVirtualGeometryRuntime}, except for `residency`
|
|
@@ -181,6 +182,13 @@ export class GPUSceneContext {
|
|
|
181
182
|
* @param {number} dt_seconds wall-clock seconds since last call
|
|
182
183
|
*/
|
|
183
184
|
tick(cmd_ctx: ShadeGPUCommandContext, dt_seconds: number): void;
|
|
185
|
+
/**
|
|
186
|
+
* Release this context's virtual geometry — everything {@link enable_virtual_geometry} built,
|
|
187
|
+
* so that a host tears a scene down by destroying the renderer and nothing of the streaming loop
|
|
188
|
+
* is left for it to find — then its rows, its database, its TLAS, its lights, its probe volume,
|
|
189
|
+
* its volumetrics, its volumetric light map, its animation and its skinning: every buffer the
|
|
190
|
+
* context made. Safe to call twice, and on a context that never enabled virtual geometry.
|
|
191
|
+
*/
|
|
184
192
|
destroy(): void;
|
|
185
193
|
/**
|
|
186
194
|
* @readonly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUSceneContext.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUSceneContext.js"],"names":[],"mappings":"AAqEA;;;;;;;;;GASG;AACH;IA0II;;;;OAIG;IACH,sBAHW,eAAe,SACf,KAAK,EAiCf;IA5KD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAGV;;OAEG;IACH,sBAFU,cAAc,CAEH;IASrB;;;OAGG;IACH,mBAEC;IAOD,uCAEC;IAQD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,8CAEC;IAOD;;;OAGG;IACH,8CAEC;
|
|
1
|
+
{"version":3,"file":"GPUSceneContext.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUSceneContext.js"],"names":[],"mappings":"AAqEA;;;;;;;;;GASG;AACH;IA0II;;;;OAIG;IACH,sBAHW,eAAe,SACf,KAAK,EAiCf;IA5KD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAGV;;OAEG;IACH,sBAFU,cAAc,CAEH;IASrB;;;OAGG;IACH,mBAEC;IAOD,uCAEC;IAQD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,8CAEC;IAOD;;;OAGG;IACH,8CAEC;IA2HD;;OAEG;IACH,kDAEC;IAED;;OAEG;IACH,gDAEC;IAED;;OAEG;IACH,kDAEC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH;QAH0C,SAAS,GAAxC,oBAAoB;QAClB,yBAAyB,CAuDrC;IAED;;OAEG;IACH,6CAEC;IAYD;;;OAGG;IACH,kCAEC;IAED;;;;;OAKG;IACH,uCAEC;IAED;;;;;;;;;;;OAWG;IACH,uCAUC;IAED,+BAUC;IAED;;;;;;;;;;OAUG;IACH,yBAEC;IAED;;;;;OAKG;IACH,sCAMC;IAOD;;;;;;;OAOG;IACH,8EAEC;IA0BD;;;;;OAKG;IACH,cAsEC;IAED;;;OAGG;IACH,YAFW,eAAe,QA0BzB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAHW,sBAAsB,cACtB,MAAM,QAuBhB;IAoCD;;;;;;OAMG;IACH,gBAiBC;IAoCL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;8BAtuBY,OAAO,uBAAuB,EAAE,eAAe;iCAC/C,OAAO,mCAAmC,EAAE,kBAAkB;iCAC9D,OAAO,mCAAmC,EAAE,kBAAkB;4BAC9D,OAAO,8BAA8B,EAAE,aAAa;8BACpD,OAAO,iDAAiD,EAAE,eAAe;+BAtBvD,iDAAiD;sBAI1D,YAAY;oCADE,uCAAuC;mCADxC,gCAAgC;oCAD/B,mDAAmD;kDAIrC,wCAAwC;0CAfhD,0DAA0D;8BAItE,8CAA8C;iCAF3C,iDAAiD;qCAG7C,qDAAqD;oCAGtD,qCAAqC;4BAC7C,gCAAgC;uCAOrB,iDAAiD;6BAM3D,wBAAwB;wCADb,mCAAmC;uCAdpC,wCAAwC"}
|