@woosh/meep-engine 3.58.0 → 3.59.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/particles/effect/ParticleEffectDocument.d.ts +162 -43
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +450 -43
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts +12 -3
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +78 -23
- package/editor/particles/effect/make_starter_particle_effect.js +17 -17
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts +3 -3
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +224 -67
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +44 -11
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts +2 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +46 -16
- package/editor/view/particles/effect/ParticlePreviewView.js +2 -2
- package/editor/view/particles/effect/particle-editor.css +77 -68
- package/package.json +1 -1
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +2 -2
- package/src/engine/ecs/EntityManager.d.ts +29 -5
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +37 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +74 -17
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +156 -25
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +13 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +59 -13
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +3 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +9 -9
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.d.ts +15 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.js +78 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +2 -0
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +1 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +1 -1
- package/src/engine/graphics/trail/tube/TubeX.d.ts +5 -3
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/TubeX.js +5 -3
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +3 -2
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +9 -8
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +65 -4
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +1351 -904
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +1 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +13 -13
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/FOLIAGE_DESIGN.md +26 -5
- package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +35 -0
- package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +2 -1
- package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +552 -0
- package/src/generation/foliage/analysis/tree_crown_opacity.d.ts.map +1 -1
- package/src/generation/foliage/analysis/tree_crown_opacity.js +2 -1
- package/src/generation/foliage/analysis/tree_render_cost.d.ts +5 -3
- package/src/generation/foliage/analysis/tree_render_cost.d.ts.map +1 -1
- package/src/generation/foliage/analysis/tree_render_cost.js +8 -7
- package/src/generation/foliage/asset/TreeAsset.d.ts +17 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -1
- package/src/generation/foliage/asset/TreeAsset.js +20 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.d.ts +69 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.js +147 -0
- package/src/generation/foliage/asset/generate_tree.d.ts +10 -0
- package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -1
- package/src/generation/foliage/asset/generate_tree.js +57 -29
- package/src/generation/foliage/asset/place_tree.d.ts +2 -1
- package/src/generation/foliage/asset/place_tree.d.ts.map +1 -1
- package/src/generation/foliage/asset/place_tree.js +2 -1
- package/src/generation/foliage/asset/tree_lod_plan.d.ts +4 -2
- package/src/generation/foliage/asset/tree_lod_plan.d.ts.map +1 -1
- package/src/generation/foliage/asset/tree_lod_plan.js +12 -14
- package/src/generation/foliage/asset/tree_shoot_instances.d.ts +119 -0
- package/src/generation/foliage/asset/tree_shoot_instances.d.ts.map +1 -0
- package/src/generation/foliage/asset/tree_shoot_instances.js +410 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.d.ts +155 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.d.ts.map +1 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.js +251 -0
- package/src/generation/foliage/config/TreeGrowth.d.ts +10 -0
- package/src/generation/foliage/config/TreeGrowth.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeGrowth.js +18 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts +6 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/TreeLODConfig.js +7 -0
- package/src/generation/foliage/index.d.ts +3 -0
- package/src/generation/foliage/index.js +3 -0
- package/src/generation/foliage/material/foliage_tile.d.ts +6 -6
- package/src/generation/foliage/material/foliage_tile.js +3 -3
- package/src/generation/foliage/material/tree_cluster_atlas.d.ts +44 -0
- package/src/generation/foliage/material/tree_cluster_atlas.d.ts.map +1 -0
- package/src/generation/foliage/material/tree_cluster_atlas.js +37 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +2 -2
- package/src/generation/foliage/mesh/foliage_scale_spread.d.ts +14 -0
- package/src/generation/foliage/mesh/foliage_scale_spread.d.ts.map +1 -0
- package/src/generation/foliage/mesh/foliage_scale_spread.js +15 -0
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -7
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_cluster_representatives.js +85 -40
- package/src/generation/foliage/mesh/tree_clusters.d.ts +26 -5
- package/src/generation/foliage/mesh/tree_clusters.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_clusters.js +52 -39
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +32 -54
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts +6 -1
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
- package/src/generation/foliage/presets/make_tree_species_preset.js +157 -3
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +19 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/TreeSkeleton.js +41 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.d.ts +5 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.js +8 -1
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.d.ts +70 -0
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.js +171 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.d.ts +17 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.js +79 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.d.ts +12 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.js +56 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.d.ts +11 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.js +38 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +4 -11
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +8 -2034
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.d.ts +22 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.js +2050 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.d.ts +10 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.js +27 -56
- package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/DepthStencilState.js +170 -144
- package/src/shade/descriptor/pipeline/render/MultisampleState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/MultisampleState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/MultisampleState.js +78 -65
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +176 -172
- package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/StencilFaceState.js +107 -88
- package/src/shade/playground/particle_ecs/README.md +9 -8
- package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +6 -6
- package/src/shade/playground/particle_ecs/bonfire_effects.js +6 -6
- package/src/shade/playground/particle_editor/README.md +14 -11
- package/src/shade/playground/particle_system/particle_prototype.js +18 -18
- package/src/shade/playground/particle_system/particle_scene.js +13 -13
- package/src/shade/playground/probe_clipmap/README.md +42 -0
- package/src/shade/playground/probe_clipmap/index.html +178 -0
- package/src/shade/playground/probe_clipmap/main.d.ts +8 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap/main.js +360 -0
- package/src/shade/renderer/Renderer.d.ts +3 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +94 -38
- package/src/shade/renderer/extension/ViewTextures.d.ts +2 -1
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +2 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +34 -12
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +56 -15
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +13 -26
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +25 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +54 -32
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.js +37 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.js +16 -0
- 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 -6
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.d.ts +131 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.js +467 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts +24 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +111 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.d.ts +42 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.js +404 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.js +23 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.js +65 -0
- 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 +14 -70
- 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 +13 -773
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.d.ts +55 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.js +248 -0
- 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 +15 -174
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.js +8 -24
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.js +1 -25
- package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.js +5 -23
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +25 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +126 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +832 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +8 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +16 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +9 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/{mesh/chunk_mesh_brick_object.d.ts → chunk_brick_object.d.ts} +8 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.js +42 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.d.ts +45 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.js +93 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.d.ts +0 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.js +0 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +5 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.js +13 -22
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.d.ts +99 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.js +139 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.d.ts +65 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.js +393 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.d.ts +17 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.js +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.d.ts +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.js +108 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.d.ts +31 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.js +113 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.d.ts +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.js +85 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.d.ts +23 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.js +273 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.js +151 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.js +133 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.d.ts +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.js +135 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +20 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +152 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +8 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +14 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +50 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +19 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +72 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +343 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +188 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +132 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +4 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +26 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +3 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +8 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts +12 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +101 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +15 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +175 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +210 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.js +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +3 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +5 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +9 -110
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +27 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +110 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +13 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +40 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +11 -6
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +15 -8
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +9 -2
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +25 -11
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/DESIGN.md +151 -42
- package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +283 -0
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +10 -2
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +46 -8
- package/src/shade/renderer/particles/ParticleConstants.d.ts +23 -6
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +25 -6
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +5 -5
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -187
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts +20 -9
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.js +36 -10
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +8 -7
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +25 -16
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.d.ts +51 -0
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.d.ts.map +1 -0
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.js +56 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -0
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +1 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +22 -11
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +14 -11
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +4 -4
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +59 -24
- package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +3 -3
- package/src/shade/renderer/particles/graph/ParticleValueType.js +287 -287
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +13 -6
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +46 -27
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts +8 -2
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.js +240 -234
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.js +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +3 -2
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_authoring.js +3 -2
- package/src/shade/renderer/particles/graph/particle_graph_distributions.js +170 -170
- package/src/shade/renderer/particles/graph/particle_graph_json.d.ts +25 -16
- package/src/shade/renderer/particles/graph/particle_graph_json.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_json.js +16 -2
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +29 -15
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +54 -22
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +18 -8
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +9 -2
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +70 -32
- package/src/shade/renderer/particles/graph_particles.d.ts +9 -4
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +27 -4
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +7 -6
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +17 -16
- package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +17 -0
- package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleAssembler.js +35 -0
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +26 -6
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleProgram.js +61 -9
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +55 -4
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +79 -10
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +20 -6
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +136 -25
- package/src/shade/renderer/particles/isa/particle_link_global_fields.d.ts +20 -0
- package/src/shade/renderer/particles/isa/particle_link_global_fields.d.ts.map +1 -0
- package/src/shade/renderer/particles/isa/particle_link_global_fields.js +46 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.js +8 -8
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +62 -28
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/layout/ParticleLayout.js +102 -62
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +2 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +4 -3
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +2 -2
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +3 -3
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +11 -11
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +4 -4
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +5 -4
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +4 -4
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +13 -11
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +7 -7
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +3 -2
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +5 -4
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.js +51 -51
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +5 -5
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_schedule.js +2 -2
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +5 -4
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +93 -22
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +336 -29
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +43 -3
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +43 -3
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +56 -26
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +89 -33
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.d.ts +85 -0
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.js +221 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +143 -18
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ProgramHeap.js +378 -28
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +19 -7
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -9
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +8 -8
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts +3 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.js +4 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.d.ts +30 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.js +121 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +3 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +12 -4
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +48 -11
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +36 -14
- package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/PostProcess.js +2 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +31 -19
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +44 -30
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +16 -2
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.js +4 -3
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +7 -1
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +16 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts +20 -2
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +53 -3
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts +10 -2
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +31 -3
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +17 -11
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +4 -2
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/TAA.js +6 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +10 -5
- package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.js +15 -12
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +26 -17
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts +4 -3
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +6 -4
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +12 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +57 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +4 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +4 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +8 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +28 -15
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.js +19 -3
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +4 -2
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +3 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +27 -14
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +19 -3
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +2 -8
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +25 -52
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.js +52 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.js +12 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.js +37 -0
- package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.js +26 -60
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.js +54 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.js +43 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.js +37 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.d.ts +27 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.js +61 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.js +41 -0
- package/src/shade/renderer/texture/util/texture_fill_rectangle.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/texture_fill_rectangle.js +282 -267
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +8 -4
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +36 -36
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +6 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +498 -484
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +15 -2
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +57 -3
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +197 -191
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +4 -4
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +2 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +5 -1
- package/src/shade/renderer/water/chunk_water_gi.d.ts +13 -3
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_gi.js +47 -5
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts +3 -2
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +9 -3
- package/src/shade/renderer/geometry/sdf/SDF_BUILD_SETTINGS_STRUCT.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/SDF_BUILD_SETTINGS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/SFD_BUILD_WORKGROUP_SIZE.d.ts +0 -2
- package/src/shade/renderer/geometry/sdf/SFD_BUILD_WORKGROUP_SIZE.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_sdf.d.ts +0 -8
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_sdf.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_volume_sign.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_volume_sign.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_object.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_object.js +0 -42
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts +0 -31
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +0 -42
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +0 -54
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +0 -14
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +0 -30
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +0 -23
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +0 -1
|
@@ -37,6 +37,13 @@ export const BRICK_OBJECT_CELLS_PER_AXIS: number;
|
|
|
37
37
|
* @type {number}
|
|
38
38
|
*/
|
|
39
39
|
export const BRICK_OBJECT_CELLS: number;
|
|
40
|
+
/**
|
|
41
|
+
* The `meshes` rows an object cell can name: one more than the largest row that fits in the 24 bits
|
|
42
|
+
* the object decision packs a row into beside its distance byte (`chunk_brick_object`). A row past it
|
|
43
|
+
* writes no object, as a provider that cannot name a row does (§7.6, contract 5).
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
export const BRICK_OBJECT_ROW_LIMIT: number;
|
|
40
47
|
/**
|
|
41
48
|
* Words of a build slot's staged distances: 512 bytes, four texels a word, texel `t` in byte `t % 4`
|
|
42
49
|
* of word `t / 4`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BRICK_CLIPMAP.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,oCAFU,MAAM,CAEgC;AAEhD;;;;GAIG;AACH,kCAFU,MAAM,CAE8B;AAE9C;;;;GAIG;AACH,yCAFU,MAAM,CAEkD;AAElE;;;;GAIG;AACH,0CAFU,MAAM,CAEmD;AAEnE;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;GAGG;AACH,iCAFU,MAAM,CAEmD;AAEnE;;;;GAIG;AACH,2CAFU,MAAM,CAE2D;AAE3E;;;GAGG;AACH,kCAFU,MAAM,CAEqE;AAErF;;;;GAIG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,0CAFU,MAAM,CAE8B;AAM9C;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;;;GAKG;AACH,kCAFU,MAAM,CAEqB;AAErC;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAQnC;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;GAGG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;GAIG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAOlC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,8BAFU,MAAM,CAEiB;AAEjC;;;GAGG;AACH,qCAFU,MAAM,CAEwB"}
|
|
1
|
+
{"version":3,"file":"BRICK_CLIPMAP.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,oCAFU,MAAM,CAEgC;AAEhD;;;;GAIG;AACH,kCAFU,MAAM,CAE8B;AAE9C;;;;GAIG;AACH,yCAFU,MAAM,CAEkD;AAElE;;;;GAIG;AACH,0CAFU,MAAM,CAEmD;AAEnE;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;GAGG;AACH,iCAFU,MAAM,CAEmD;AAEnE;;;;;GAKG;AACH,qCAFU,MAAM,CAE8B;AAE9C;;;;GAIG;AACH,2CAFU,MAAM,CAE2D;AAE3E;;;GAGG;AACH,kCAFU,MAAM,CAEqE;AAErF;;;;GAIG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,0CAFU,MAAM,CAE8B;AAM9C;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;;;GAKG;AACH,kCAFU,MAAM,CAEqB;AAErC;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAQnC;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;GAGG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;GAIG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAOlC;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;GAGG;AACH,8BAFU,MAAM,CAEiB;AAEjC;;;GAGG;AACH,qCAFU,MAAM,CAEwB"}
|
|
@@ -57,6 +57,14 @@ export const BRICK_OBJECT_CELLS_PER_AXIS = 4;
|
|
|
57
57
|
*/
|
|
58
58
|
export const BRICK_OBJECT_CELLS = BRICK_OBJECT_CELLS_PER_AXIS ** 3;
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* The `meshes` rows an object cell can name: one more than the largest row that fits in the 24 bits
|
|
62
|
+
* the object decision packs a row into beside its distance byte (`chunk_brick_object`). A row past it
|
|
63
|
+
* writes no object, as a provider that cannot name a row does (§7.6, contract 5).
|
|
64
|
+
* @type {number}
|
|
65
|
+
*/
|
|
66
|
+
export const BRICK_OBJECT_ROW_LIMIT = 1 << 24;
|
|
67
|
+
|
|
60
68
|
/**
|
|
61
69
|
* Words of a build slot's staged distances: 512 bytes, four texels a word, texel `t` in byte `t % 4`
|
|
62
70
|
* of word `t / 4`.
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
* @property {number} staging `brick_staging`'s handle, `BRICK_STAGING_WORDS` words a build slot
|
|
13
13
|
* @property {GPUBuffer} ring the keys; taken key `b` sits at `(taken_first + b) & (ring_capacity - 1)`
|
|
14
14
|
* @property {number} ring_capacity
|
|
15
|
+
* @property {GPUBuffer} pending a bit per key, set while the key is on the ring or being built. With `state` and
|
|
16
|
+
* `ring`, the queue that a provider which learns on the device that a cell must be built again puts its key on,
|
|
17
|
+
* with `brick_clipmap_enqueue` (contract 6). Such a pass writes `state` and hands its version on, as
|
|
18
|
+
* `staging`.
|
|
19
|
+
* @property {number} budget cells taken a frame at most: what sizes a provider's own buffers of the taken cells
|
|
15
20
|
* @property {number} resolution cells a cascade's window has a side
|
|
16
21
|
* @property {number} cascade_count
|
|
17
22
|
* @property {GPUBuffer} levels the cascades' windows, a {@link CLIPMAP_LEVEL_ARRAY}, finest first, a
|
|
@@ -200,6 +205,17 @@ export type BrickProviderContext = {
|
|
|
200
205
|
*/
|
|
201
206
|
ring: GPUBuffer;
|
|
202
207
|
ring_capacity: number;
|
|
208
|
+
/**
|
|
209
|
+
* a bit per key, set while the key is on the ring or being built. With `state` and
|
|
210
|
+
* `ring`, the queue that a provider which learns on the device that a cell must be built again puts its key on,
|
|
211
|
+
* with `brick_clipmap_enqueue` (contract 6). Such a pass writes `state` and hands its version on, as
|
|
212
|
+
* `staging`.
|
|
213
|
+
*/
|
|
214
|
+
pending: GPUBuffer;
|
|
215
|
+
/**
|
|
216
|
+
* cells taken a frame at most: what sizes a provider's own buffers of the taken cells
|
|
217
|
+
*/
|
|
218
|
+
budget: number;
|
|
203
219
|
/**
|
|
204
220
|
* cells a cascade's window has a side
|
|
205
221
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUBrickClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js"],"names":[],"mappings":"AAiFA
|
|
1
|
+
{"version":3,"file":"GPUBrickClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js"],"names":[],"mappings":"AAiFA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IA4JI;;;;;;OAMG;IACH;QAJ2B,aAAa,EAA7B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,UAAU,EAA1B,MAAM;OA8FhB;IA9PD;;;OAGG;IACH,wBAHU,MAAM,CAGF;IAEd;;;;OAIG;IACH,qBAHU,MAAM,CAGL;IAEX;;;;OAIG;IACH,qBAHU,MAAM,CAGL;IA8OX;;OAEG;IACH,4BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;OAEG;IACH,yBAEC;IAED;;;;OAIG;IACH,wBAEC;IAED;;;;;;;;OAQG;IACH,mCASC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,gBAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,sBAFW,UAAU,MAAM,CAAC,QAiB3B;IAED;;;OAGG;IACH,oBAHW,oBAAoB,GAClB,OAAO,CAMnB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH;QAZ+B,KAAK,EAAzB,UAAU;QACM,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,MAAM,EAAtB,MAAM;QAC4B,SAAS,EAA3C,UAAU,aAAa,CAAC;QACM,KAAK,EAAnC,eAAe,GAAC,IAAI;QACH,MAAM,GAAvB,MAAM;QAEJ,MAAM,CAkGlB;IAgWD,gBAcC;;CACJ;mCAp7BY,OAAO,4BAA4B,EAAE,oBAAoB;yBACzD,OAAO,iEAAiE,EAAE,UAAU;8BACpF,OAAO,mCAAmC,EAAE,eAAe;;;;;;;WAyC1D,UAAU;;;;WACV,MAAM;;;;;;UACN,MAAM;;;;aAGN,MAAM;;;;;mBAEN,MAAM;;;;;;;;;;;YAKN,MAAM;;;;gBACN,MAAM;mBACN,MAAM;;;;;;;;;;WAGN,eAAe;;;+BAMN,UAAU,QAAE,oBAAoB,KAAG,IAAI;;+BA7F/B,0CAA0C"}
|
|
@@ -93,6 +93,11 @@ const SCROLL_BOXES_PER_CASCADE = 3;
|
|
|
93
93
|
* @property {number} staging `brick_staging`'s handle, `BRICK_STAGING_WORDS` words a build slot
|
|
94
94
|
* @property {GPUBuffer} ring the keys; taken key `b` sits at `(taken_first + b) & (ring_capacity - 1)`
|
|
95
95
|
* @property {number} ring_capacity
|
|
96
|
+
* @property {GPUBuffer} pending a bit per key, set while the key is on the ring or being built. With `state` and
|
|
97
|
+
* `ring`, the queue that a provider which learns on the device that a cell must be built again puts its key on,
|
|
98
|
+
* with `brick_clipmap_enqueue` (contract 6). Such a pass writes `state` and hands its version on, as
|
|
99
|
+
* `staging`.
|
|
100
|
+
* @property {number} budget cells taken a frame at most: what sizes a provider's own buffers of the taken cells
|
|
96
101
|
* @property {number} resolution cells a cascade's window has a side
|
|
97
102
|
* @property {number} cascade_count
|
|
98
103
|
* @property {GPUBuffer} levels the cascades' windows, a {@link CLIPMAP_LEVEL_ARRAY}, finest first, a
|
|
@@ -280,6 +285,8 @@ export class GPUBrickClipmap {
|
|
|
280
285
|
staging: -1,
|
|
281
286
|
ring: null,
|
|
282
287
|
ring_capacity: 0,
|
|
288
|
+
pending: null,
|
|
289
|
+
budget: 0,
|
|
283
290
|
resolution: 0,
|
|
284
291
|
cascade_count: 0,
|
|
285
292
|
levels: null,
|
|
@@ -578,6 +585,8 @@ export class GPUBrickClipmap {
|
|
|
578
585
|
context.staging = take_data.staging;
|
|
579
586
|
context.ring = this.#ring;
|
|
580
587
|
context.ring_capacity = this.#ring_capacity;
|
|
588
|
+
context.pending = this.#pending;
|
|
589
|
+
context.budget = budget;
|
|
581
590
|
context.resolution = this.resolution;
|
|
582
591
|
context.cascade_count = this.cascade_count;
|
|
583
592
|
context.levels = this.#levels;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A world texel's byte and a texel's bid to be its object cell's object
|
|
2
|
+
* A world texel's byte and a texel's bid to be its object cell's object, the same for every provider
|
|
3
3
|
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.2, §7.6):
|
|
4
4
|
*
|
|
5
5
|
* ```wgsl
|
|
6
|
-
* fn
|
|
7
|
-
* fn
|
|
8
|
-
* fn
|
|
9
|
-
* fn
|
|
6
|
+
* fn brick_encode(distance: f32, band: f32) -> u32 // saturate(d / 2R + 0.5), in a byte
|
|
7
|
+
* fn brick_object_key(byte: u32, row: u32) -> u32 // larger for a nearer texel
|
|
8
|
+
* fn brick_object_key_byte(key: u32) -> u32
|
|
9
|
+
* fn brick_object_key_row(key: u32) -> u32
|
|
10
10
|
* ```
|
|
11
11
|
*
|
|
12
12
|
* A key is the complement of the byte in its high eight bits and the row in its low 24, so the
|
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @type {CodeChunk}
|
|
18
18
|
*/
|
|
19
|
-
export const
|
|
20
|
-
import { CodeChunk } from "
|
|
21
|
-
//# sourceMappingURL=
|
|
19
|
+
export const chunk_brick_object: CodeChunk;
|
|
20
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
21
|
+
//# sourceMappingURL=chunk_brick_object.d.ts.map
|
package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_brick_object.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,iCAFU,SAAS,CAsBhB;0BAzCuB,uCAAuC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { BRICK_OBJECT_ROW_LIMIT } from "./BRICK_CLIPMAP.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A world texel's byte and a texel's bid to be its object cell's object, the same for every provider
|
|
6
|
+
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.2, §7.6):
|
|
7
|
+
*
|
|
8
|
+
* ```wgsl
|
|
9
|
+
* fn brick_encode(distance: f32, band: f32) -> u32 // saturate(d / 2R + 0.5), in a byte
|
|
10
|
+
* fn brick_object_key(byte: u32, row: u32) -> u32 // larger for a nearer texel
|
|
11
|
+
* fn brick_object_key_byte(key: u32) -> u32
|
|
12
|
+
* fn brick_object_key_row(key: u32) -> u32
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* A key is the complement of the byte in its high eight bits and the row in its low 24, so the
|
|
16
|
+
* largest of a cell's keys, which workgroup atomics can take, is its nearest texel, and among equally
|
|
17
|
+
* near ones the lowest row: the same object whatever order the lanes ran in. A row past the 24 bits
|
|
18
|
+
* cannot be named and bids as row 0, no object.
|
|
19
|
+
*
|
|
20
|
+
* @type {CodeChunk}
|
|
21
|
+
*/
|
|
22
|
+
export const chunk_brick_object = CodeChunk.from(
|
|
23
|
+
//language=WGSL
|
|
24
|
+
`
|
|
25
|
+
fn brick_encode(distance: f32, band: f32) -> u32 {
|
|
26
|
+
return u32(round(saturate(distance / (2.0 * band) + 0.5) * 255.0));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fn brick_object_key(byte: u32, row: u32) -> u32 {
|
|
30
|
+
let named = select(0u, row, row < ${BRICK_OBJECT_ROW_LIMIT}u);
|
|
31
|
+
|
|
32
|
+
return ~((byte << 24u) | named);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fn brick_object_key_byte(key: u32) -> u32 {
|
|
36
|
+
return (~key) >> 24u;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
fn brick_object_key_row(key: u32) -> u32 {
|
|
40
|
+
return (~key) & ${BRICK_OBJECT_ROW_LIMIT - 1}u;
|
|
41
|
+
}
|
|
42
|
+
`);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A brick provider's resolution cull (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.7), which reads nothing:
|
|
3
|
+
*
|
|
4
|
+
* ```wgsl
|
|
5
|
+
* fn brick_provider_resolves(bounds: array<f32, 6>, voxel: f32) -> bool
|
|
6
|
+
* ```
|
|
7
|
+
*
|
|
8
|
+
* An instance whose world box is under half a voxel across is out of the cascade, emissive or not. The ½-voxel
|
|
9
|
+
* hit would make it a lamp a voxel wide, 4 m at cascade 5.
|
|
10
|
+
*
|
|
11
|
+
* @type {CodeChunk}
|
|
12
|
+
*/
|
|
13
|
+
export const chunk_brick_provider_resolves: CodeChunk;
|
|
14
|
+
/**
|
|
15
|
+
* A taken cell's key's cell in the world (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.6), the same for every provider:
|
|
16
|
+
*
|
|
17
|
+
* ```wgsl
|
|
18
|
+
* fn brick_provider_cell(key: u32, resolution: u32) -> BrickProviderCell
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Its cascade, its lattice cell (the window's one congruent to the storage cell), the cascade's voxel and the band
|
|
22
|
+
* of the field's encoding in world units, and the cell's box, texel 0 at its corner (§7.2).
|
|
23
|
+
*
|
|
24
|
+
* Requires the importing shader to declare `brick_levels`.
|
|
25
|
+
*
|
|
26
|
+
* @type {CodeChunk}
|
|
27
|
+
*/
|
|
28
|
+
export const chunk_brick_provider_cell: CodeChunk;
|
|
29
|
+
/**
|
|
30
|
+
* What a brick provider (§7.6) reads of a taken cell, the same for every provider:
|
|
31
|
+
*
|
|
32
|
+
* ```wgsl
|
|
33
|
+
* fn brick_provider_key(build: u32, ring_capacity: u32) -> u32
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Taken cell `build`'s key, whose cell {@link chunk_brick_provider_cell} places. The resolution cull comes with it
|
|
37
|
+
* ({@link chunk_brick_provider_resolves}).
|
|
38
|
+
*
|
|
39
|
+
* Requires the importing shader to declare `brick_take`, `brick_ring` and `brick_levels`.
|
|
40
|
+
*
|
|
41
|
+
* @type {CodeChunk}
|
|
42
|
+
*/
|
|
43
|
+
export const chunk_brick_provider: CodeChunk;
|
|
44
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
45
|
+
//# sourceMappingURL=chunk_brick_provider.d.ts.map
|
package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_brick_provider.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,4CAFU,SAAS,CAUhB;AAEH;;;;;;;;;;;;;GAaG;AACH,wCAFU,SAAS,CA+BsB;AAEzC;;;;;;;;;;;;;GAaG;AACH,mCAFU,SAAS,CAQiE;0BA1F1D,uCAAuC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { MESH_SDF_BAND_VOXELS, MESH_SDF_BRICK_VOXELS } from "../../../geometry/sdf/MESH_SDF.js";
|
|
2
|
+
import { chunk_mod_v3i } from "../../../shader/chunk/geometry/vec3/chunk_mod_v3i.js";
|
|
3
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
4
|
+
import { chunk_brick_clipmap } from "./chunk_brick_clipmap.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A brick provider's resolution cull (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.7), which reads nothing:
|
|
8
|
+
*
|
|
9
|
+
* ```wgsl
|
|
10
|
+
* fn brick_provider_resolves(bounds: array<f32, 6>, voxel: f32) -> bool
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* An instance whose world box is under half a voxel across is out of the cascade, emissive or not. The ½-voxel
|
|
14
|
+
* hit would make it a lamp a voxel wide, 4 m at cascade 5.
|
|
15
|
+
*
|
|
16
|
+
* @type {CodeChunk}
|
|
17
|
+
*/
|
|
18
|
+
export const chunk_brick_provider_resolves = CodeChunk.from(
|
|
19
|
+
//language=WGSL
|
|
20
|
+
`
|
|
21
|
+
fn brick_provider_resolves(bounds: array<f32, 6>, voxel: f32) -> bool {
|
|
22
|
+
let diagonal = length(vec3<f32>(bounds[3] - bounds[0], bounds[4] - bounds[1], bounds[5] - bounds[2]));
|
|
23
|
+
|
|
24
|
+
return !(diagonal < 0.5 * voxel);
|
|
25
|
+
}
|
|
26
|
+
`);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A taken cell's key's cell in the world (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.6), the same for every provider:
|
|
30
|
+
*
|
|
31
|
+
* ```wgsl
|
|
32
|
+
* fn brick_provider_cell(key: u32, resolution: u32) -> BrickProviderCell
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Its cascade, its lattice cell (the window's one congruent to the storage cell), the cascade's voxel and the band
|
|
36
|
+
* of the field's encoding in world units, and the cell's box, texel 0 at its corner (§7.2).
|
|
37
|
+
*
|
|
38
|
+
* Requires the importing shader to declare `brick_levels`.
|
|
39
|
+
*
|
|
40
|
+
* @type {CodeChunk}
|
|
41
|
+
*/
|
|
42
|
+
export const chunk_brick_provider_cell = CodeChunk.from(
|
|
43
|
+
//language=WGSL
|
|
44
|
+
`
|
|
45
|
+
struct BrickProviderCell {
|
|
46
|
+
cascade: u32,
|
|
47
|
+
cell: vec3<i32>,
|
|
48
|
+
voxel: f32,
|
|
49
|
+
band: f32,
|
|
50
|
+
corner: vec3<f32>,
|
|
51
|
+
far: vec3<f32>,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
fn brick_provider_cell(key: u32, resolution: u32) -> BrickProviderCell {
|
|
55
|
+
let cascade = brick_clipmap_key_cascade(key, resolution);
|
|
56
|
+
let level = brick_levels[cascade];
|
|
57
|
+
|
|
58
|
+
var out: BrickProviderCell;
|
|
59
|
+
|
|
60
|
+
out.cascade = cascade;
|
|
61
|
+
// the world cell the storage cell holds: the window's one congruent to it
|
|
62
|
+
out.cell = level.corner + mod_v3i(vec3<i32>(brick_clipmap_key_storage(key, resolution)) - level.corner, vec3<i32>(i32(resolution)));
|
|
63
|
+
out.voxel = level.cell_size / ${MESH_SDF_BRICK_VOXELS}.0;
|
|
64
|
+
out.band = ${MESH_SDF_BAND_VOXELS}.0 * out.voxel;
|
|
65
|
+
// texel 0, at voxel 7·cell of the cascade (§7.2)
|
|
66
|
+
out.corner = vec3<f32>(out.cell) * level.cell_size;
|
|
67
|
+
out.far = out.corner + vec3<f32>(level.cell_size);
|
|
68
|
+
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
`, [chunk_brick_clipmap, chunk_mod_v3i]);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* What a brick provider (§7.6) reads of a taken cell, the same for every provider:
|
|
75
|
+
*
|
|
76
|
+
* ```wgsl
|
|
77
|
+
* fn brick_provider_key(build: u32, ring_capacity: u32) -> u32
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* Taken cell `build`'s key, whose cell {@link chunk_brick_provider_cell} places. The resolution cull comes with it
|
|
81
|
+
* ({@link chunk_brick_provider_resolves}).
|
|
82
|
+
*
|
|
83
|
+
* Requires the importing shader to declare `brick_take`, `brick_ring` and `brick_levels`.
|
|
84
|
+
*
|
|
85
|
+
* @type {CodeChunk}
|
|
86
|
+
*/
|
|
87
|
+
export const chunk_brick_provider = CodeChunk.from(
|
|
88
|
+
//language=WGSL
|
|
89
|
+
`
|
|
90
|
+
fn brick_provider_key(build: u32, ring_capacity: u32) -> u32 {
|
|
91
|
+
return brick_ring[(brick_take[BRICK_TAKE_FIRST] + build) & (ring_capacity - 1u)];
|
|
92
|
+
}
|
|
93
|
+
`, [chunk_brick_clipmap, chunk_brick_provider_cell, chunk_brick_provider_resolves]);
|
|
@@ -5,13 +5,6 @@
|
|
|
5
5
|
* @type {number}
|
|
6
6
|
*/
|
|
7
7
|
export const MESH_BRICK_INSTANCE_LIMIT: number;
|
|
8
|
-
/**
|
|
9
|
-
* The `meshes` rows an object cell can name: one more than the largest row that fits in the 24 bits
|
|
10
|
-
* the object decision packs a row into beside its distance byte. A row past it writes no object, as
|
|
11
|
-
* a provider that cannot name a row does (§7.6, contract 5).
|
|
12
|
-
* @type {number}
|
|
13
|
-
*/
|
|
14
|
-
export const MESH_BRICK_ROW_LIMIT: number;
|
|
15
8
|
/**
|
|
16
9
|
* An instance as the mesh provider samples it, made once a cell (§7.7):
|
|
17
10
|
* - `to_local_0..2`: the rows of the inverse of the instance's `node.global`, from the world into the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MESH_BRICK_INSTANCE_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wCAFU,MAAM,CAE4B;AAE5C
|
|
1
|
+
{"version":3,"file":"MESH_BRICK_INSTANCE_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;;;;;;;;;;GAYG;AACH,yCAFU,YAAY,CAYE;6BAjCK,yCAAyC"}
|
|
@@ -9,14 +9,6 @@ import { WebGPUStruct } from "../../../../shader/type/WebGPUStruct.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export const MESH_BRICK_INSTANCE_LIMIT = 64;
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* The `meshes` rows an object cell can name: one more than the largest row that fits in the 24 bits
|
|
14
|
-
* the object decision packs a row into beside its distance byte. A row past it writes no object, as
|
|
15
|
-
* a provider that cannot name a row does (§7.6, contract 5).
|
|
16
|
-
* @type {number}
|
|
17
|
-
*/
|
|
18
|
-
export const MESH_BRICK_ROW_LIMIT = 1 << 24;
|
|
19
|
-
|
|
20
12
|
/**
|
|
21
13
|
* An instance as the mesh provider samples it, made once a cell (§7.7):
|
|
22
14
|
* - `to_local_0..2`: the rows of the inverse of the instance's `node.global`, from the world into the
|
|
@@ -9,10 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* `mesh_brick_accept` is the gather's leaf filter, with `bounds` the row's world box and `voxel` the
|
|
11
11
|
* cascade's: the row is in the SDF world, its geometry's field is resident (a skinned clone's through
|
|
12
|
-
* its source's, the hook), and its box
|
|
13
|
-
* header, so it is not resident and is the vgeo provider's (§7.8).
|
|
14
|
-
* of the cascade, emissive or not: the half-voxel hit would make it a lamp a voxel wide, 4 m at
|
|
15
|
-
* cascade 5.
|
|
12
|
+
* its source's, the hook), and its box resolves in the cascade (`brick_provider_resolves`). A virtual
|
|
13
|
+
* geometry has no header, so it is not resident and is the vgeo provider's (§7.8).
|
|
16
14
|
*
|
|
17
15
|
* `mesh_brick_instance` makes the instance the texels sample: the inverse of its transform, its box,
|
|
18
16
|
* its smallest axis scale, and the coarsest level of its field no coarser than the cascade,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_mesh_brick_instance.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_mesh_brick_instance.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wCAFU,SAAS,CA4DZ;0BAtFmB,0CAA0C"}
|
package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js
CHANGED
|
@@ -4,6 +4,7 @@ import { chunk_scene_database_access } from "../../../../scene/chunk_scene_datab
|
|
|
4
4
|
import { MESH_FLAG_SDF_WORLD } from "../../../../scene/MESH_INSTANCE_METADATA_STRUCT.js";
|
|
5
5
|
import { chunk_mat4_inverse } from "../../../../shader/chunk/geometry/mat4/chunk_mat4_inverse.js";
|
|
6
6
|
import { CodeChunk } from "../../../../shader/compiler/CodeChunk.js";
|
|
7
|
+
import { chunk_brick_provider_resolves } from "../chunk_brick_provider.js";
|
|
7
8
|
import { MESH_BRICK_INSTANCE_STRUCT } from "./MESH_BRICK_INSTANCE_STRUCT.js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -17,10 +18,8 @@ import { MESH_BRICK_INSTANCE_STRUCT } from "./MESH_BRICK_INSTANCE_STRUCT.js";
|
|
|
17
18
|
*
|
|
18
19
|
* `mesh_brick_accept` is the gather's leaf filter, with `bounds` the row's world box and `voxel` the
|
|
19
20
|
* cascade's: the row is in the SDF world, its geometry's field is resident (a skinned clone's through
|
|
20
|
-
* its source's, the hook), and its box
|
|
21
|
-
* header, so it is not resident and is the vgeo provider's (§7.8).
|
|
22
|
-
* of the cascade, emissive or not: the half-voxel hit would make it a lamp a voxel wide, 4 m at
|
|
23
|
-
* cascade 5.
|
|
21
|
+
* its source's, the hook), and its box resolves in the cascade (`brick_provider_resolves`). A virtual
|
|
22
|
+
* geometry has no header, so it is not resident and is the vgeo provider's (§7.8).
|
|
24
23
|
*
|
|
25
24
|
* `mesh_brick_instance` makes the instance the texels sample: the inverse of its transform, its box,
|
|
26
25
|
* its smallest axis scale, and the coarsest level of its field no coarser than the cascade,
|
|
@@ -50,10 +49,7 @@ fn mesh_brick_accept(row: u32, bounds: array<f32, 6>, voxel: f32) -> bool {
|
|
|
50
49
|
return false;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
let diagonal = length(vec3<f32>(bounds[3] - bounds[0], bounds[4] - bounds[1], bounds[5] - bounds[2]));
|
|
55
|
-
|
|
56
|
-
if (diagonal < 0.5 * voxel) {
|
|
52
|
+
if (!brick_provider_resolves(bounds, voxel)) {
|
|
57
53
|
return false;
|
|
58
54
|
}
|
|
59
55
|
|
|
@@ -89,6 +85,7 @@ fn mesh_brick_instance(row: u32, voxel: f32) -> ${MESH_BRICK_INSTANCE_STRUCT.wgs
|
|
|
89
85
|
}
|
|
90
86
|
`, [
|
|
91
87
|
chunk_mesh_sdf,
|
|
88
|
+
chunk_brick_provider_resolves,
|
|
92
89
|
chunk_scene_database_access,
|
|
93
90
|
chunk_mat4_inverse,
|
|
94
91
|
MESH_BRICK_INSTANCE_STRUCT.declaration_chunk,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_brick_provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_mesh_brick_provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.js"],"names":[],"mappings":"AAiCA;;GAEG;AACH,uDAAwD;AACxD,wDAAyD;AACzD,mDAAoD;AACpD,2CAA4C;AAE5C;;GAEG;AACH,2CAFU,YAAY,CAOU;AAoKhC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,yCAFU,aAAa,CAMpB;6BA1N0B,yCAAyC;8BAJxC,qCAAqC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../../../../core/assert.js";
|
|
2
2
|
import { WebGPUExtensionType } from "../../../../../descriptor/WebGPUExtensionType.js";
|
|
3
|
-
import { MESH_SDF_BAND_VOXELS, MESH_SDF_BRICK_VOXELS } from "../../../../geometry/sdf/MESH_SDF.js";
|
|
4
3
|
import {
|
|
5
4
|
MESH_SDF_ATLAS_RESOURCE,
|
|
6
5
|
MESH_SDF_HEADERS_RESOURCE,
|
|
@@ -12,7 +11,6 @@ import { BVH_STRUCT } from "../../../../shader/chunk/bvh/BVH_STRUCT.js";
|
|
|
12
11
|
import { chunk_bvh_query_aabb_cooperative } from "../../../../shader/chunk/bvh/chunk_bvh_query_aabb_cooperative.js";
|
|
13
12
|
import { BVH_QUERY_AABB_WORKGROUP_SIZE } from "../../../../shader/chunk/bvh/chunk_bvh_query_aabb_frontier.js";
|
|
14
13
|
import { CLIPMAP_LEVEL_ARRAY } from "../../../../shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js";
|
|
15
|
-
import { chunk_mod_v3i } from "../../../../shader/chunk/geometry/vec3/chunk_mod_v3i.js";
|
|
16
14
|
import { chunk_folded_workgroup_index } from "../../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
|
|
17
15
|
import { CodeChunk } from "../../../../shader/compiler/CodeChunk.js";
|
|
18
16
|
import { ComputeShader } from "../../../../shader/ComputeShader.js";
|
|
@@ -21,6 +19,8 @@ import { atomic_u32, u32 } from "../../../../shader/type/WEBGPU_WGSL_PRIMITIVE_T
|
|
|
21
19
|
import { WebGPUArray } from "../../../../shader/type/WebGPUArray.js";
|
|
22
20
|
import { WebGPUStruct } from "../../../../shader/type/WebGPUStruct.js";
|
|
23
21
|
import { BRICK_CELL_WORKGROUP_SIZE, BRICK_OBJECT_CELLS_PER_AXIS } from "../BRICK_CLIPMAP.js";
|
|
22
|
+
import { chunk_brick_object } from "../chunk_brick_object.js";
|
|
23
|
+
import { chunk_brick_provider } from "../chunk_brick_provider.js";
|
|
24
24
|
import {
|
|
25
25
|
BRICK_RING_RESOURCE,
|
|
26
26
|
BRICK_STAGING_RESOURCE,
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
chunk_brick_clipmap
|
|
29
29
|
} from "../chunk_brick_clipmap.js";
|
|
30
30
|
import { chunk_mesh_brick_instance } from "./chunk_mesh_brick_instance.js";
|
|
31
|
-
import { chunk_mesh_brick_object } from "./chunk_mesh_brick_object.js";
|
|
32
31
|
import { chunk_mesh_brick_texel } from "./chunk_mesh_brick_texel.js";
|
|
33
32
|
import { MESH_BRICK_INSTANCE_LIMIT, MESH_BRICK_INSTANCE_STRUCT } from "./MESH_BRICK_INSTANCE_STRUCT.js";
|
|
34
33
|
|
|
@@ -116,20 +115,12 @@ fn main(
|
|
|
116
115
|
return;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
let
|
|
120
|
-
let resolution = settings.resolution;
|
|
121
|
-
let cascade = brick_clipmap_key_cascade(key, resolution);
|
|
122
|
-
let level = brick_levels[cascade];
|
|
118
|
+
let at = brick_provider_cell(brick_provider_key(build, settings.ring_capacity), settings.resolution);
|
|
123
119
|
|
|
124
|
-
|
|
125
|
-
let
|
|
126
|
-
|
|
127
|
-
let
|
|
128
|
-
let band = ${MESH_SDF_BAND_VOXELS}.0 * voxel;
|
|
129
|
-
|
|
130
|
-
// texel 0, at voxel 7·cell of the cascade (§7.2)
|
|
131
|
-
let corner = vec3<f32>(cell) * level.cell_size;
|
|
132
|
-
let far = corner + vec3<f32>(level.cell_size);
|
|
120
|
+
let voxel = at.voxel;
|
|
121
|
+
let band = at.band;
|
|
122
|
+
let corner = at.corner;
|
|
123
|
+
let far = at.far;
|
|
133
124
|
|
|
134
125
|
mesh_brick_voxel = voxel;
|
|
135
126
|
|
|
@@ -174,7 +165,7 @@ fn main(
|
|
|
174
165
|
let staged = (word >> shift) & 0xffu;
|
|
175
166
|
|
|
176
167
|
let texel = mesh_brick_texel(corner + vec3<f32>(f32(x), f32(y), f32(z)) * voxel, count);
|
|
177
|
-
let byte =
|
|
168
|
+
let byte = brick_encode(texel.distance, band);
|
|
178
169
|
|
|
179
170
|
// contract 2: the encoding is monotone, so the minimum of the bytes is the byte of the minimum
|
|
180
171
|
word = (word & ~(0xffu << shift)) | (min(staged, byte) << shift);
|
|
@@ -183,7 +174,7 @@ fn main(
|
|
|
183
174
|
let o = x / 2u;
|
|
184
175
|
|
|
185
176
|
staged_min[o] = min(staged_min[o], staged);
|
|
186
|
-
best[o] = max(best[o],
|
|
177
|
+
best[o] = max(best[o], brick_object_key(byte, texel.row));
|
|
187
178
|
}
|
|
188
179
|
|
|
189
180
|
brick_staging[first + w] = word;
|
|
@@ -203,19 +194,19 @@ fn main(
|
|
|
203
194
|
// the provider's cell minimum against the staged one from before its merge: ties keep the staged
|
|
204
195
|
let nearest = atomicLoad(&object_best[object]);
|
|
205
196
|
|
|
206
|
-
if (
|
|
207
|
-
brick_staging[build * BRICK_STAGING_WORDS + BRICK_STAGING_DISTANCE_WORDS + object] =
|
|
197
|
+
if (brick_object_key_byte(nearest) < 255u - atomicLoad(&object_staged[object])) {
|
|
198
|
+
brick_staging[build * BRICK_STAGING_WORDS + BRICK_STAGING_DISTANCE_WORDS + object] = brick_object_key_row(nearest);
|
|
208
199
|
}
|
|
209
200
|
}
|
|
210
201
|
}
|
|
211
202
|
`, [
|
|
212
203
|
chunk_brick_clipmap,
|
|
204
|
+
chunk_brick_provider,
|
|
213
205
|
chunk_folded_workgroup_index,
|
|
214
|
-
chunk_mod_v3i,
|
|
215
206
|
chunk_bvh_query_aabb_cooperative,
|
|
216
207
|
chunk_mesh_brick_instance,
|
|
217
208
|
chunk_mesh_brick_texel,
|
|
218
|
-
|
|
209
|
+
chunk_brick_object,
|
|
219
210
|
]);
|
|
220
211
|
|
|
221
212
|
body.addExtension(WebGPUExtensionType.Subgroups);
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The provider's settings, an immediate of each of its passes.
|
|
3
|
+
* @type {WebGPUStruct}
|
|
4
|
+
*/
|
|
5
|
+
export const VGEO_BRICK_SETTINGS: WebGPUStruct;
|
|
6
|
+
/**
|
|
7
|
+
* Where a pair record keeps the box it is cut against: the cell grown by the field's band, in the instance's
|
|
8
|
+
* object space, lower xyz then upper xyz, in the words a view's record keeps its frustum in.
|
|
9
|
+
* @type {number}
|
|
10
|
+
*/
|
|
11
|
+
export const VGEO_BRICK_PAIR_BOX: number;
|
|
12
|
+
/**
|
|
13
|
+
* Where a pair record keeps its taken cell: the first word a view's record leaves free.
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
export const VGEO_BRICK_PAIR_BUILD: number;
|
|
17
|
+
/**
|
|
18
|
+
* Pair records a frame holds, for each cell of its take budget; past them, pairs are dropped and counted.
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
export const VGEO_BRICK_PAIRS_PER_CELL: number;
|
|
22
|
+
/**
|
|
23
|
+
* Clusters a taken cell's list holds; past them, clusters are dropped and counted.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
export const VGEO_BRICK_CELL_CLUSTERS: number;
|
|
27
|
+
/**
|
|
28
|
+
* A waiting cell: its key, then what the first cluster of its cut that stood something in waits on, and what wants
|
|
29
|
+
* it. The page it waits on is `PAGE` of the geometry whose page lookup starts at `LOOKUP`, and `GROUP` is the group in
|
|
30
|
+
* that page. The want for that page goes through the page the cluster was found in: `SOURCE` is its row, `SOURCE_PAGE`
|
|
31
|
+
* its own page index in the geometry, `REF` the entry of its child table naming the page, and `ERROR` the cluster's
|
|
32
|
+
* projected error, as the want's priority (`vg_want`). A group held back carries no want, as in the cut, whose rule
|
|
33
|
+
* leaves a held verdict's `REF` and `ERROR` at zero: the clamp beside it wants the page that holds it back.
|
|
34
|
+
*/
|
|
35
|
+
export const VGEO_BRICK_WAIT_OFFSET: Readonly<{
|
|
36
|
+
KEY: 0;
|
|
37
|
+
LOOKUP: 1;
|
|
38
|
+
PAGE: 2;
|
|
39
|
+
GROUP: 3;
|
|
40
|
+
SOURCE: 4;
|
|
41
|
+
SOURCE_PAGE: 5;
|
|
42
|
+
REF: 6;
|
|
43
|
+
ERROR: 7;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Words of a waiting cell.
|
|
47
|
+
* @type {number}
|
|
48
|
+
*/
|
|
49
|
+
export const VGEO_BRICK_WAIT_WORDS: number;
|
|
50
|
+
/**
|
|
51
|
+
* A taken cell's list: its header, then from `ENTRIES` a cluster's pair and meshlet row each. The header holds the
|
|
52
|
+
* clusters taken (a count that runs past what the list holds), how many of them stood in for a page or a group not
|
|
53
|
+
* there yet, and from `WAIT` the cell as a waiting cell's words ({@link VGEO_BRICK_WAIT_OFFSET}): its key, then the
|
|
54
|
+
* first stand-in's wait, which the distances copy onto the waiting list whole.
|
|
55
|
+
*/
|
|
56
|
+
export const VGEO_BRICK_CELL_OFFSET: Readonly<{
|
|
57
|
+
COUNT: 0;
|
|
58
|
+
WAITS: 1;
|
|
59
|
+
WAIT: 2;
|
|
60
|
+
KEY: number;
|
|
61
|
+
ENTRIES: number;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Words of a taken cell's list.
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/
|
|
67
|
+
export const VGEO_BRICK_CELL_WORDS: number;
|
|
68
|
+
/**
|
|
69
|
+
* Waiting cells the provider holds, for each cell of the take budget; past them, a cell that stood a cluster in is
|
|
70
|
+
* dropped and counted, and is not built again when its page arrives.
|
|
71
|
+
* @type {number}
|
|
72
|
+
*/
|
|
73
|
+
export const VGEO_BRICK_WAITS_PER_CELL: number;
|
|
74
|
+
/**
|
|
75
|
+
* Triangles of a taken cell's cut that its distances are made from, in workgroup memory (§7.8, chosen): past
|
|
76
|
+
* them, triangles are dropped and counted, and a dropped triangle can leave a hole. A texel's distance is a loop
|
|
77
|
+
* over them.
|
|
78
|
+
* @type {number}
|
|
79
|
+
*/
|
|
80
|
+
export const VGEO_BRICK_CELL_TRIANGLES: number;
|
|
81
|
+
/**
|
|
82
|
+
* Lanes of the distance pass, a workgroup a taken cell: a lane a triangle, of as many of the cell's clusters at a
|
|
83
|
+
* time as the lanes hold whole, then the cell's texels shared out evenly.
|
|
84
|
+
* @type {number}
|
|
85
|
+
*/
|
|
86
|
+
export const VGEO_BRICK_DISTANCE_WORKGROUP_SIZE: number;
|
|
87
|
+
/**
|
|
88
|
+
* Words of the provider's statistics, every one an atomic that accumulates: pairs dropped (the records were full,
|
|
89
|
+
* or the instance's transform flattens it), candidates and subtrees the gather's query dropped, triangles the
|
|
90
|
+
* distance pass dropped past {@link VGEO_BRICK_CELL_TRIANGLES}, and waiting cells dropped past the waiting list.
|
|
91
|
+
*/
|
|
92
|
+
export const VGEO_BRICK_STATISTIC_PAIRS_DROPPED: 0;
|
|
93
|
+
export const VGEO_BRICK_STATISTIC_CANDIDATES_DROPPED: 1;
|
|
94
|
+
export const VGEO_BRICK_STATISTIC_NODES_DROPPED: 2;
|
|
95
|
+
export const VGEO_BRICK_STATISTIC_TRIANGLES_DROPPED: 3;
|
|
96
|
+
export const VGEO_BRICK_STATISTIC_WAITS_DROPPED: 4;
|
|
97
|
+
export const VGEO_BRICK_STATISTIC_WORDS: 8;
|
|
98
|
+
import { WebGPUStruct } from "../../../../shader/type/WebGPUStruct.js";
|
|
99
|
+
//# sourceMappingURL=VGEO_BRICK.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_BRICK.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,kCAFU,YAAY,CAWE;AAExB;;;;GAIG;AACH,kCAFU,MAAM,CAEgD;AAEhE;;;GAGG;AACH,oCAFU,MAAM,CAE8D;AAI9E;;;GAGG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;;GAGG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;GAOG;AACH;;;;;;;;;GASG;AAEH;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;;;GAKG;AACH;;;;;;GAMG;AAEH;;;GAGG;AACH,oCAFU,MAAM,CAEmF;AAEnG;;;;GAIG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;;;;GAKG;AACH,wCAFU,MAAM,CAE6B;AAE7C;;;;GAIG;AACH,iDAFU,MAAM,CAEsE;AAKtF;;;;GAIG;AACH,mDAAoD;AACpD,wDAAyD;AACzD,mDAAoD;AACpD,uDAAwD;AACxD,mDAAoD;AACpD,2CAA4C;6BApIf,yCAAyC"}
|