@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
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
const SCRATCH_P = new Float64Array(3);
|
|
2
|
+
const SCRATCH_T = new Float64Array(3);
|
|
3
|
+
const SCRATCH_R = new Float64Array(3);
|
|
4
|
+
const SCRATCH_V = new Float64Array(3);
|
|
5
|
+
const SCRATCH_NODES = [];
|
|
6
|
+
const SCRATCH_EDGES = [];
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {Object} TreeBranchPlacement where a copied branch goes, when not where it was: `p' = to + scale turn (p - from)`
|
|
10
|
+
* @property {ArrayLike<number>} turn row-major 3x3 rotation, turning its spine, frames, tangents and scars
|
|
11
|
+
* @property {number} scale uniform: positions about `from`, arc and segment lengths, and girth
|
|
12
|
+
* @property {ArrayLike<number>} from the point placed at `to`
|
|
13
|
+
* @property {ArrayLike<number>} to
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Copies branch `b` of `source`, with its nodes, segments, annual units, scars and dead flag, into `out`, hanging from
|
|
18
|
+
* `parent` there (or starting a tree of its own when `-1`) at `attach_t` on its segment `parent_edge`, its first node
|
|
19
|
+
* from `hang`, at depth `level`; carried by `placement` if given. The wind rig's joints are not copied: the rig is
|
|
20
|
+
* assigned to `out` as a whole.
|
|
21
|
+
*
|
|
22
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} source
|
|
23
|
+
* @param {number} b
|
|
24
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} out
|
|
25
|
+
* @param {number} parent branch in `out`, or `-1`
|
|
26
|
+
* @param {number} parent_edge segment of `parent` in `out`, or `-1`
|
|
27
|
+
* @param {number} attach_t where along `parent`, as `t_norm`
|
|
28
|
+
* @param {number} hang node of `out` its first node hangs from, or `-1`
|
|
29
|
+
* @param {number} level
|
|
30
|
+
* @param {TreeBranchPlacement|null} placement
|
|
31
|
+
* @param {Map<number, number>} edge_of receives each copied segment's id in `out`, by its id in `source`
|
|
32
|
+
* @returns {number} its id in `out`
|
|
33
|
+
*/
|
|
34
|
+
export function tree_skeleton_copy_branch(source, b, out, parent, parent_edge, attach_t, hang, level, placement, edge_of) {
|
|
35
|
+
const m0 = source.attr_segment_hermite_m0.data;
|
|
36
|
+
const m1 = source.attr_segment_hermite_m1.data;
|
|
37
|
+
const scale = placement !== null ? placement.scale : 1;
|
|
38
|
+
source.collect_branch_chain(b, SCRATCH_NODES, SCRATCH_EDGES);
|
|
39
|
+
const id = out.add_branch(0, level, source.branch_generator[b], parent, parent_edge, attach_t,
|
|
40
|
+
source.branch_length[b] * scale, source.branch_base_radius[b] * scale, source.branch_phase_hash[b]);
|
|
41
|
+
out.branch_dead[id] = source.branch_dead[b];
|
|
42
|
+
|
|
43
|
+
let prev = -1;
|
|
44
|
+
for (let k = 0; k < SCRATCH_NODES.length; k++) {
|
|
45
|
+
const v = SCRATCH_NODES[k];
|
|
46
|
+
source.node_read_position(SCRATCH_P, 0, v);
|
|
47
|
+
source.node_read_tangent(SCRATCH_T, 0, v);
|
|
48
|
+
source.node_read_frame_r(SCRATCH_R, 0, v);
|
|
49
|
+
if (placement !== null) {
|
|
50
|
+
tree_branch_placement_apply(SCRATCH_P, placement);
|
|
51
|
+
tree_branch_turn(SCRATCH_T, placement.turn);
|
|
52
|
+
tree_branch_turn(SCRATCH_R, placement.turn);
|
|
53
|
+
}
|
|
54
|
+
const w = out.add_node(SCRATCH_P[0], SCRATCH_P[1], SCRATCH_P[2], SCRATCH_T[0], SCRATCH_T[1], SCRATCH_T[2],
|
|
55
|
+
SCRATCH_R[0], SCRATCH_R[1], SCRATCH_R[2], source.node_read_radius(v) * scale, id, level, parent,
|
|
56
|
+
source.node_t_norm(v), source.node_arc_s(v) * scale, source.node_phase_hash(v));
|
|
57
|
+
if (k === 0) {
|
|
58
|
+
out.branch_root_vertex[id] = w;
|
|
59
|
+
if (hang >= 0) out.connect_nodes(hang, w);
|
|
60
|
+
} else {
|
|
61
|
+
const e = SCRATCH_EDGES[k - 1];
|
|
62
|
+
const o = e * 3;
|
|
63
|
+
SCRATCH_T[0] = m0[o];
|
|
64
|
+
SCRATCH_T[1] = m0[o + 1];
|
|
65
|
+
SCRATCH_T[2] = m0[o + 2];
|
|
66
|
+
SCRATCH_V[0] = m1[o];
|
|
67
|
+
SCRATCH_V[1] = m1[o + 1];
|
|
68
|
+
SCRATCH_V[2] = m1[o + 2];
|
|
69
|
+
if (placement !== null) {
|
|
70
|
+
tree_branch_turn(SCRATCH_T, placement.turn);
|
|
71
|
+
tree_branch_turn(SCRATCH_V, placement.turn);
|
|
72
|
+
for (let d = 0; d < 3; d++) {
|
|
73
|
+
SCRATCH_T[d] *= scale;
|
|
74
|
+
SCRATCH_V[d] *= scale;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
edge_of.set(e, out.add_segment(prev, w, SCRATCH_T[0], SCRATCH_T[1], SCRATCH_T[2],
|
|
78
|
+
SCRATCH_V[0], SCRATCH_V[1], SCRATCH_V[2], source.segment_length(e) * scale, source.segment_parent_attach_t(e)));
|
|
79
|
+
}
|
|
80
|
+
prev = w;
|
|
81
|
+
}
|
|
82
|
+
out.branch_tip_vertex[id] = prev;
|
|
83
|
+
|
|
84
|
+
const unit_count = source.branch_unit_count[b];
|
|
85
|
+
if (unit_count > 0) {
|
|
86
|
+
const offset = source.branch_unit_offset[b];
|
|
87
|
+
out.set_branch_units(id, source.unit_start_t.subarray(offset, offset + unit_count));
|
|
88
|
+
}
|
|
89
|
+
for (let s = 0; s < source.scar_count; s++) {
|
|
90
|
+
if (source.scar_branch[s] !== b) continue;
|
|
91
|
+
const d = s * 5;
|
|
92
|
+
SCRATCH_V[0] = source.scar_data[d + 1];
|
|
93
|
+
SCRATCH_V[1] = source.scar_data[d + 2];
|
|
94
|
+
SCRATCH_V[2] = source.scar_data[d + 3];
|
|
95
|
+
if (placement !== null) tree_branch_turn(SCRATCH_V, placement.turn);
|
|
96
|
+
out.add_scar(id, source.scar_data[d], SCRATCH_V[0], SCRATCH_V[1], SCRATCH_V[2], source.scar_data[d + 4] * scale);
|
|
97
|
+
}
|
|
98
|
+
return id;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Copies `branches` of `source` into `out`, where they are (`tree_skeleton_copy_branch`). A branch whose parent is
|
|
103
|
+
* copied before it hangs from that parent's copy, from the node the original hung from; any other starts a tree of its
|
|
104
|
+
* own in `out`, at the level it had.
|
|
105
|
+
*
|
|
106
|
+
* A species' prototypes are gathered from the trees they grew in this way (`tree_shoot_prototypes`).
|
|
107
|
+
*
|
|
108
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} source
|
|
109
|
+
* @param {ArrayLike<number>} branches parents before their children
|
|
110
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} out
|
|
111
|
+
* @returns {Int32Array} each copied branch's id in `out`, in the order of `branches`
|
|
112
|
+
*/
|
|
113
|
+
export function tree_skeleton_copy_branches(source, branches, out) {
|
|
114
|
+
const copied = new Int32Array(branches.length);
|
|
115
|
+
const branch_of = new Map();
|
|
116
|
+
const edge_of = new Map();
|
|
117
|
+
const nodes = [];
|
|
118
|
+
const edges = [];
|
|
119
|
+
for (let i = 0; i < branches.length; i++) {
|
|
120
|
+
const b = branches[i];
|
|
121
|
+
const parent_src = source.branch_parent[b];
|
|
122
|
+
const inside = branch_of.has(parent_src);
|
|
123
|
+
let hang = -1;
|
|
124
|
+
if (inside) {
|
|
125
|
+
// the node of its parent it hung from, by its place on the parent's chain
|
|
126
|
+
const hung = source.node_parent_vertex(source.branch_root_vertex[b]);
|
|
127
|
+
source.collect_branch_chain(parent_src, nodes, edges);
|
|
128
|
+
const at = nodes.indexOf(hung);
|
|
129
|
+
if (at >= 0) {
|
|
130
|
+
out.collect_branch_chain(branch_of.get(parent_src), nodes, edges);
|
|
131
|
+
hang = nodes[at];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const id = tree_skeleton_copy_branch(source, b, out,
|
|
135
|
+
inside ? branch_of.get(parent_src) : -1,
|
|
136
|
+
inside ? edge_of.get(source.branch_parent_edge[b]) : -1,
|
|
137
|
+
inside ? source.branch_parent_attach_t[b] : 0,
|
|
138
|
+
hang, source.branch_level[b], null, edge_of);
|
|
139
|
+
branch_of.set(b, id);
|
|
140
|
+
copied[i] = id;
|
|
141
|
+
}
|
|
142
|
+
return copied;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* `v = M v`: a direction carried by a placement's `turn`.
|
|
147
|
+
* @param {Float64Array|number[]} v
|
|
148
|
+
* @param {ArrayLike<number>} m row-major 3x3
|
|
149
|
+
*/
|
|
150
|
+
export function tree_branch_turn(v, m) {
|
|
151
|
+
const x = v[0], y = v[1], z = v[2];
|
|
152
|
+
v[0] = m[0] * x + m[1] * y + m[2] * z;
|
|
153
|
+
v[1] = m[3] * x + m[4] * y + m[5] * z;
|
|
154
|
+
v[2] = m[6] * x + m[7] * y + m[8] * z;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* `p = to + scale turn (p - from)`: a point carried by `placement`.
|
|
159
|
+
* @param {Float64Array|number[]} p
|
|
160
|
+
* @param {TreeBranchPlacement} placement
|
|
161
|
+
*/
|
|
162
|
+
export function tree_branch_placement_apply(p, placement) {
|
|
163
|
+
const { from, to, scale } = placement;
|
|
164
|
+
p[0] -= from[0];
|
|
165
|
+
p[1] -= from[1];
|
|
166
|
+
p[2] -= from[2];
|
|
167
|
+
tree_branch_turn(p, placement.turn);
|
|
168
|
+
p[0] = to[0] + scale * p[0];
|
|
169
|
+
p[1] = to[1] + scale * p[1];
|
|
170
|
+
p[2] = to[2] + scale * p[2];
|
|
171
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extends `branch` past its tip along `points`, a node at each and a segment between, as long as `lengths` says (an
|
|
3
|
+
* annual unit's length, which its chord may fall short of): the shoot simulation
|
|
4
|
+
* grows a carrier on this way, and a graft carries a prototype's extension onto its host's carrier. Its nodes, the
|
|
5
|
+
* branches it carries and its scars keep their place along it as it grows longer: their `t_norm` shrinks by its old
|
|
6
|
+
* length over its new.
|
|
7
|
+
*
|
|
8
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
9
|
+
* @param {number} branch
|
|
10
|
+
* @param {ArrayLike<number>} points `3 (n + 1)`: its tip, then each new node
|
|
11
|
+
* @param {ArrayLike<number>} radii `n + 1`, at each of `points`
|
|
12
|
+
* @param {ArrayLike<number>} lengths `n`, m, each new segment's
|
|
13
|
+
* @param {number[]} [out_edges] receives the new segments, base first
|
|
14
|
+
* @returns {number} its new length
|
|
15
|
+
*/
|
|
16
|
+
export function tree_skeleton_extend_branch(skeleton: import("./TreeSkeleton.js").TreeSkeleton, branch: number, points: ArrayLike<number>, radii: ArrayLike<number>, lengths: ArrayLike<number>, out_edges?: number[]): number;
|
|
17
|
+
//# sourceMappingURL=tree_skeleton_extend_branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree_skeleton_extend_branch.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/tree_skeleton_extend_branch.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;GAcG;AACH,sDARW,OAAO,mBAAmB,EAAE,YAAY,UACxC,MAAM,UACN,UAAU,MAAM,CAAC,SACjB,UAAU,MAAM,CAAC,WACjB,UAAU,MAAM,CAAC,cACjB,MAAM,EAAE,GACN,MAAM,CAyDlB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { spine_frame_double_reflection } from "./spine_frame_double_reflection.js";
|
|
2
|
+
|
|
3
|
+
const SCRATCH_R = new Float32Array(3);
|
|
4
|
+
const SCRATCH_T = new Float32Array(3);
|
|
5
|
+
const SCRATCH_RMF = new Float64Array(6);
|
|
6
|
+
const SCRATCH_NODES = [];
|
|
7
|
+
const SCRATCH_EDGES = [];
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Extends `branch` past its tip along `points`, a node at each and a segment between, as long as `lengths` says (an
|
|
11
|
+
* annual unit's length, which its chord may fall short of): the shoot simulation
|
|
12
|
+
* grows a carrier on this way, and a graft carries a prototype's extension onto its host's carrier. Its nodes, the
|
|
13
|
+
* branches it carries and its scars keep their place along it as it grows longer: their `t_norm` shrinks by its old
|
|
14
|
+
* length over its new.
|
|
15
|
+
*
|
|
16
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
17
|
+
* @param {number} branch
|
|
18
|
+
* @param {ArrayLike<number>} points `3 (n + 1)`: its tip, then each new node
|
|
19
|
+
* @param {ArrayLike<number>} radii `n + 1`, at each of `points`
|
|
20
|
+
* @param {ArrayLike<number>} lengths `n`, m, each new segment's
|
|
21
|
+
* @param {number[]} [out_edges] receives the new segments, base first
|
|
22
|
+
* @returns {number} its new length
|
|
23
|
+
*/
|
|
24
|
+
export function tree_skeleton_extend_branch(skeleton, branch, points, radii, lengths, out_edges) {
|
|
25
|
+
const old_length = skeleton.branch_length[branch];
|
|
26
|
+
const n = lengths.length;
|
|
27
|
+
let added = 0;
|
|
28
|
+
for (let k = 0; k < n; k++) added += lengths[k];
|
|
29
|
+
const length = old_length + added;
|
|
30
|
+
const scale = old_length / length;
|
|
31
|
+
|
|
32
|
+
skeleton.collect_branch_chain(branch, SCRATCH_NODES, SCRATCH_EDGES);
|
|
33
|
+
for (let i = 0; i < SCRATCH_NODES.length; i++) {
|
|
34
|
+
skeleton.node_write_t_norm(SCRATCH_NODES[i], skeleton.node_t_norm(SCRATCH_NODES[i]) * scale);
|
|
35
|
+
}
|
|
36
|
+
for (let child = 0; child < skeleton.branch_count; child++) {
|
|
37
|
+
if (skeleton.branch_parent[child] === branch) skeleton.branch_parent_attach_t[child] *= scale;
|
|
38
|
+
}
|
|
39
|
+
for (let i = 0; i < skeleton.scar_count; i++) {
|
|
40
|
+
if (skeleton.scar_branch[i] === branch) skeleton.scar_data[i * 5] *= scale;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const level = skeleton.branch_level[branch];
|
|
44
|
+
const parent_branch = skeleton.branch_parent[branch];
|
|
45
|
+
const phase = skeleton.branch_phase_hash[branch];
|
|
46
|
+
let prev_v = skeleton.branch_tip_vertex[branch];
|
|
47
|
+
const arc_base = skeleton.node_arc_s(prev_v);
|
|
48
|
+
skeleton.node_read_frame_r(SCRATCH_R, 0, prev_v);
|
|
49
|
+
let rx = SCRATCH_R[0], ry = SCRATCH_R[1], rz = SCRATCH_R[2];
|
|
50
|
+
skeleton.node_read_tangent(SCRATCH_T, 0, prev_v);
|
|
51
|
+
let tx = SCRATCH_T[0], ty = SCRATCH_T[1], tz = SCRATCH_T[2];
|
|
52
|
+
let px = points[0], py = points[1], pz = points[2];
|
|
53
|
+
let arc = old_length;
|
|
54
|
+
for (let k = 0; k < n; k++) {
|
|
55
|
+
const nx = points[(k + 1) * 3], ny = points[(k + 1) * 3 + 1], nz = points[(k + 1) * 3 + 2];
|
|
56
|
+
const len = lengths[k];
|
|
57
|
+
const d = Math.max(1e-9, Math.hypot(nx - px, ny - py, nz - pz));
|
|
58
|
+
const ntx = (nx - px) / d, nty = (ny - py) / d, ntz = (nz - pz) / d;
|
|
59
|
+
spine_frame_double_reflection(SCRATCH_RMF, 0, px, py, pz, tx, ty, tz, rx, ry, rz, nx, ny, nz, ntx, nty, ntz);
|
|
60
|
+
rx = SCRATCH_RMF[0];
|
|
61
|
+
ry = SCRATCH_RMF[1];
|
|
62
|
+
rz = SCRATCH_RMF[2];
|
|
63
|
+
tx = ntx;
|
|
64
|
+
ty = nty;
|
|
65
|
+
tz = ntz;
|
|
66
|
+
const t_prev = arc / length;
|
|
67
|
+
arc += len;
|
|
68
|
+
const curr_v = skeleton.add_node(nx, ny, nz, tx, ty, tz, rx, ry, rz, radii[k + 1], branch, level, parent_branch, arc / length, arc_base + arc - old_length, phase);
|
|
69
|
+
const e = skeleton.add_segment(prev_v, curr_v, tx * len, ty * len, tz * len, tx * len, ty * len, tz * len, len, t_prev);
|
|
70
|
+
if (out_edges !== undefined) out_edges.push(e);
|
|
71
|
+
prev_v = curr_v;
|
|
72
|
+
px = nx;
|
|
73
|
+
py = ny;
|
|
74
|
+
pz = nz;
|
|
75
|
+
}
|
|
76
|
+
skeleton.branch_tip_vertex[branch] = prev_v;
|
|
77
|
+
skeleton.branch_length[branch] = length;
|
|
78
|
+
return length;
|
|
79
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fits the skeleton's crown frame (`crown_center`, `crown_radii`), which the foliage and the crown's shading read, to the
|
|
3
|
+
* crown as grown: centred on, and spanning, every living branch a shoot rule grows on or grows (its `source`, its
|
|
4
|
+
* `target`s and its `short_target`). Both front ends end on it, so the frame follows one law however the tree grew:
|
|
5
|
+
* the graph's carriers alone, or the carriers with the shoot systems on them. A species without shoot rules keeps the
|
|
6
|
+
* frame its envelope set.
|
|
7
|
+
*
|
|
8
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
9
|
+
* @param {import("../config/TreeSpeciesConfig.js").TreeSpeciesConfig} species
|
|
10
|
+
*/
|
|
11
|
+
export function tree_skeleton_fit_crown_frame(skeleton: import("./TreeSkeleton.js").TreeSkeleton, species: import("../config/TreeSpeciesConfig.js").TreeSpeciesConfig): void;
|
|
12
|
+
//# sourceMappingURL=tree_skeleton_fit_crown_frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree_skeleton_fit_crown_frame.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wDAHW,OAAO,mBAAmB,EAAE,YAAY,WACxC,OAAO,gCAAgC,EAAE,iBAAiB,QA6BpE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const SCRATCH_P = new Float32Array(3);
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fits the skeleton's crown frame (`crown_center`, `crown_radii`), which the foliage and the crown's shading read, to the
|
|
5
|
+
* crown as grown: centred on, and spanning, every living branch a shoot rule grows on or grows (its `source`, its
|
|
6
|
+
* `target`s and its `short_target`). Both front ends end on it, so the frame follows one law however the tree grew:
|
|
7
|
+
* the graph's carriers alone, or the carriers with the shoot systems on them. A species without shoot rules keeps the
|
|
8
|
+
* frame its envelope set.
|
|
9
|
+
*
|
|
10
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
11
|
+
* @param {import("../config/TreeSpeciesConfig.js").TreeSpeciesConfig} species
|
|
12
|
+
*/
|
|
13
|
+
export function tree_skeleton_fit_crown_frame(skeleton, species) {
|
|
14
|
+
const rules = species.shoot_rules;
|
|
15
|
+
if (rules.length === 0) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let x0 = Infinity, y0 = Infinity, z0 = Infinity, x1 = -Infinity, y1 = -Infinity, z1 = -Infinity;
|
|
19
|
+
for (let v = 0; v < skeleton.node_count; v++) {
|
|
20
|
+
const b = skeleton.node_branch_id(v);
|
|
21
|
+
if (skeleton.branch_dead[b] || !shoot_generator(rules, skeleton.branch_generator[b])) continue;
|
|
22
|
+
skeleton.node_read_position(SCRATCH_P, 0, v);
|
|
23
|
+
x0 = Math.min(x0, SCRATCH_P[0]);
|
|
24
|
+
y0 = Math.min(y0, SCRATCH_P[1]);
|
|
25
|
+
z0 = Math.min(z0, SCRATCH_P[2]);
|
|
26
|
+
x1 = Math.max(x1, SCRATCH_P[0]);
|
|
27
|
+
y1 = Math.max(y1, SCRATCH_P[1]);
|
|
28
|
+
z1 = Math.max(z1, SCRATCH_P[2]);
|
|
29
|
+
}
|
|
30
|
+
if (!(x1 >= x0)) {
|
|
31
|
+
// nothing a shoot rule grows on is alive
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
skeleton.crown_center[0] = 0.5 * (x0 + x1);
|
|
35
|
+
skeleton.crown_center[1] = 0.5 * (y0 + y1);
|
|
36
|
+
skeleton.crown_center[2] = 0.5 * (z0 + z1);
|
|
37
|
+
skeleton.crown_radii[0] = Math.max(0.25, 0.5 * (x1 - x0));
|
|
38
|
+
skeleton.crown_radii[1] = Math.max(0.25, 0.5 * (y1 - y0));
|
|
39
|
+
skeleton.crown_radii[2] = Math.max(0.25, 0.5 * (z1 - z0));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Whether a shoot rule grows on, or grows, branches of `generator`.
|
|
44
|
+
* @param {import("../config/ShootSystemRule.js").ShootSystemRule[]} rules
|
|
45
|
+
* @param {number} generator
|
|
46
|
+
* @returns {boolean}
|
|
47
|
+
*/
|
|
48
|
+
function shoot_generator(rules, generator) {
|
|
49
|
+
for (let r = 0; r < rules.length; r++) {
|
|
50
|
+
const rule = rules[r];
|
|
51
|
+
if (rule.source === generator || rule.target.includes(generator)) return true;
|
|
52
|
+
// its short shoots, if it grows any
|
|
53
|
+
if (rule.short_target === generator && rule.zones.some(z => z.short.some(p => p > 0))) return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raises every branch to at least the girth of what grows from it: where a living branch hangs, its parent is at least
|
|
3
|
+
* as thick as its base, and no branch thickens towards its tip. Only ever raises. A tree whose wood came from different
|
|
4
|
+
* growths (a graph tree's framework with its shoot prototypes' carriers, `tree_shoot_instances`) holds together by it.
|
|
5
|
+
*
|
|
6
|
+
* Children must come after their parents, as every grower writes them.
|
|
7
|
+
*
|
|
8
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
9
|
+
*/
|
|
10
|
+
export function tree_skeleton_floor_girth(skeleton: import("./TreeSkeleton.js").TreeSkeleton): void;
|
|
11
|
+
//# sourceMappingURL=tree_skeleton_floor_girth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree_skeleton_floor_girth.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/tree_skeleton_floor_girth.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,oDAFW,OAAO,mBAAmB,EAAE,YAAY,QA2BlD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const SCRATCH_NODES = [];
|
|
2
|
+
const SCRATCH_EDGES = [];
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Raises every branch to at least the girth of what grows from it: where a living branch hangs, its parent is at least
|
|
6
|
+
* as thick as its base, and no branch thickens towards its tip. Only ever raises. A tree whose wood came from different
|
|
7
|
+
* growths (a graph tree's framework with its shoot prototypes' carriers, `tree_shoot_instances`) holds together by it.
|
|
8
|
+
*
|
|
9
|
+
* Children must come after their parents, as every grower writes them.
|
|
10
|
+
*
|
|
11
|
+
* @param {import("./TreeSkeleton.js").TreeSkeleton} skeleton
|
|
12
|
+
*/
|
|
13
|
+
export function tree_skeleton_floor_girth(skeleton) {
|
|
14
|
+
// the thickest living child hanging on each segment, by its base
|
|
15
|
+
const hung = new Float64Array(skeleton.segment_count);
|
|
16
|
+
for (let b = skeleton.branch_count - 1; b >= 0; b--) {
|
|
17
|
+
skeleton.collect_branch_chain(b, SCRATCH_NODES, SCRATCH_EDGES);
|
|
18
|
+
const n = SCRATCH_NODES.length;
|
|
19
|
+
if (n === 0) continue;
|
|
20
|
+
// from the tip to the base: as thick as anything further out on it, and, at both ends of a segment, as anything
|
|
21
|
+
// hanging from it
|
|
22
|
+
let need = 0;
|
|
23
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
24
|
+
const v = SCRATCH_NODES[i];
|
|
25
|
+
if (i < n - 1) need = Math.max(need, hung[SCRATCH_EDGES[i]]);
|
|
26
|
+
if (i > 0) need = Math.max(need, hung[SCRATCH_EDGES[i - 1]]);
|
|
27
|
+
const r = skeleton.node_read_radius(v);
|
|
28
|
+
if (need > r) skeleton.node_write_radius(v, need);
|
|
29
|
+
else need = r;
|
|
30
|
+
}
|
|
31
|
+
skeleton.branch_base_radius[b] = Math.max(skeleton.branch_base_radius[b], skeleton.node_read_radius(SCRATCH_NODES[0]));
|
|
32
|
+
// its base, on the segment of its parent it hangs from
|
|
33
|
+
const edge = skeleton.branch_parent_edge[b];
|
|
34
|
+
if (edge >= 0 && !skeleton.branch_dead[b]) {
|
|
35
|
+
hung[edge] = Math.max(hung[edge], skeleton.node_read_radius(SCRATCH_NODES[0]));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* - Botanical phyllotaxis (`SpiralGolden`, `AlternateDistichous`, `Tristichous`, `Opposite`, `OppositeDecussate`, `Whorled`, `FlareLobes`)
|
|
7
|
-
* - Structural surface roots (`BranchGeneratorConfig.root`) that creep along the ground plane `y = 0`
|
|
8
|
-
* - Gravitropism (toward `-Y`), phototropism (toward `+Y` and outward crown exterior), and 3D `curl_noise_3d` gnarl
|
|
9
|
-
* - Dichotomous / sympodial trunk & bough splitting
|
|
10
|
-
* - Space colonization crown competition via `PointHashGrid3`
|
|
11
|
-
* - Rotation-Minimizing Frames (`spine_frame_double_reflection`)
|
|
12
|
-
* - Pipe Model cross-section radius accumulation (`tree_skeleton_compute_pipe_radii`)
|
|
2
|
+
* Grows a whole tree botanically (`TreeGrowth.Botanical`): its framework from the generator graph
|
|
3
|
+
* (`tree_skeleton_grow_framework`), then the shoot systems of its `shoot_rules`, year by year on that framework, its
|
|
4
|
+
* girth final (`tree_skeleton_grow_shoots`), and fits the crown frame to them as the framework did to its carriers
|
|
5
|
+
* (`tree_skeleton_fit_crown_frame`).
|
|
13
6
|
*
|
|
14
7
|
* @param {TreeSpeciesConfig|Object} [config]
|
|
15
8
|
* @param {TreeSkeleton} [out]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree_skeleton_grow.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/tree_skeleton_grow.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tree_skeleton_grow.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/tree_skeleton_grow.js"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,4CAJW,iBAAiB,MAAO,QACxB,YAAY,GACV,YAAY,CAQxB;kCAtBiC,gCAAgC;6BACrC,mBAAmB"}
|