@woosh/meep-engine 3.53.0 → 3.55.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/package.json +1 -1
- package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
- package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
- package/src/core/math/noise/worley_noise_2d.js +74 -0
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
- package/src/engine/{graphics3/decal/DecalAtlasFill.d.ts → graphics/texture/atlas/SpriteAtlasFill.d.ts} +4 -4
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
- package/src/engine/{graphics3/decal/decal_atlas_border.d.ts → graphics/texture/atlas/sprite_atlas_border.d.ts} +12 -12
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +447 -450
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -22
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +892 -951
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/FOLIAGE_DESIGN.md +2 -1
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts +4 -3
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/BarkMaterialConfig.js +6 -6
- package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageBarkType.js +16 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +58 -5
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -181
- package/src/generation/foliage/index.d.ts +2 -1
- package/src/generation/foliage/index.js +44 -43
- package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -1
- package/src/generation/foliage/material/make_bark_material.js +23 -95
- package/src/generation/foliage/material/make_foliage_material.d.ts +29 -3
- package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -1
- package/src/generation/foliage/material/make_foliage_material.js +605 -359
- package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -1
- package/src/generation/foliage/mesh/branch_collar_project.js +205 -203
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +15 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -1
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -502
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -1047
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +2 -1
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -415
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
- package/src/generation/foliage/presets/make_tree_species_preset.js +870 -837
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -121
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +10 -7
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -179
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -1104
- package/src/shade/RENDERER_CONTRACT.md +5 -2
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -1
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +2 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts +6 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
- package/src/shade/playground/foliage_wind/foliage_world.js +602 -593
- package/src/shade/playground/foliage_wind/index.html +260 -254
- package/src/shade/playground/foliage_wind/main.js +275 -263
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +1 -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/sdf/GPUGeometrySDFManager.js +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
- package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +67 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +21 -38
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +154 -147
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +5 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts +8 -0
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.js +10 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +5 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.js +33 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js +56 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts +13 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js +42 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +382 -357
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +414 -410
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +36 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +129 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +370 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
- package/src/engine/graphics3/decal/DecalAtlas.d.ts +0 -43
- package/src/engine/graphics3/decal/DecalAtlas.d.ts.map +0 -1
- package/src/engine/graphics3/decal/DecalAtlasFill.d.ts.map +0 -1
- package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
- package/src/engine/graphics3/decal/decal_atlas_border.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +0 -26
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +0 -268
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts +0 -3
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.js +0 -32
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts +0 -17
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +0 -98
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +0 -23
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +0 -118
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +0 -15
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +0 -17
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +0 -10
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +0 -28
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +0 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +0 -28
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PI2 } from "../../../core/math/PI2.js";
|
|
2
2
|
import { clamp } from "../../../core/math/clamp.js";
|
|
3
3
|
import { lerp } from "../../../core/math/lerp.js";
|
|
4
|
+
import { worley_noise_2d } from "../../../core/math/noise/worley_noise_2d.js";
|
|
4
5
|
import { seededRandom } from "../../../core/math/random/seededRandom.js";
|
|
5
6
|
import { smoothStep } from "../../../core/math/smoothStep.js";
|
|
6
7
|
import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
|
|
@@ -13,84 +14,12 @@ import { TextureFilterType } from "../../../shade/renderer/texture/TextureFilter
|
|
|
13
14
|
import { TextureWrapType } from "../../../shade/renderer/texture/TextureWrapType.js";
|
|
14
15
|
import { AlphaMode } from "../../../shade/renderer/texture/source/AlphaMode.js";
|
|
15
16
|
import { ShadeImage } from "../../../shade/renderer/texture/source/ShadeImage.js";
|
|
16
|
-
import { BarkMaterialConfig } from "../config/BarkMaterialConfig.js";
|
|
17
|
+
import { BarkMaterialConfig } from "../config/BarkMaterialConfig.js";
|
|
18
|
+
import { FoliageBarkType } from "../config/FoliageBarkType.js";
|
|
17
19
|
|
|
18
20
|
const SCRATCH_WORLEY = new Float32Array(3);
|
|
19
21
|
const SCRATCH_WORLEY2 = new Float32Array(3);
|
|
20
22
|
|
|
21
|
-
/**
|
|
22
|
-
* Fast deterministic integer hash in [0, 1).
|
|
23
|
-
* @param {number} ix
|
|
24
|
-
* @param {number} iy
|
|
25
|
-
* @param {number} seed
|
|
26
|
-
* @returns {number}
|
|
27
|
-
*/
|
|
28
|
-
function cell_hash_01(ix, iy, seed) {
|
|
29
|
-
let h = (ix * 374761393 + iy * 668265263 + seed * 1442695041) | 0;
|
|
30
|
-
h = Math.imul(h ^ (h >>> 13), 1274126177);
|
|
31
|
-
h = (h ^ (h >>> 16)) >>> 0;
|
|
32
|
-
return h / 4294967296.0;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Evaluates a seamlessly tileable 2D cellular Worley (Voronoi) noise on `[0, 1)^2`
|
|
37
|
-
* with periodic lattice dimensions `(cells_u, cells_v)`.
|
|
38
|
-
* Writes `[F1, F2 - F1, cell_id]` into `out`.
|
|
39
|
-
*
|
|
40
|
-
* @param {Float32Array|number[]} out
|
|
41
|
-
* @param {number} u
|
|
42
|
-
* @param {number} v
|
|
43
|
-
* @param {number} cells_u
|
|
44
|
-
* @param {number} cells_v
|
|
45
|
-
* @param {number} seed
|
|
46
|
-
*/
|
|
47
|
-
function sample_tileable_worley(out, u, v, cells_u, cells_v, seed) {
|
|
48
|
-
const cu = Math.max(1, cells_u | 0);
|
|
49
|
-
const cv = Math.max(1, cells_v | 0);
|
|
50
|
-
const u_wrap = ((u % 1.0) + 1.0) % 1.0;
|
|
51
|
-
const v_wrap = ((v % 1.0) + 1.0) % 1.0;
|
|
52
|
-
|
|
53
|
-
const gx = u_wrap * cu;
|
|
54
|
-
const gy = v_wrap * cv;
|
|
55
|
-
const ix0 = Math.floor(gx);
|
|
56
|
-
const iy0 = Math.floor(gy);
|
|
57
|
-
|
|
58
|
-
let d1 = 1e9;
|
|
59
|
-
let d2 = 1e9;
|
|
60
|
-
let best_id = 0.0;
|
|
61
|
-
|
|
62
|
-
for (let dy = -1; dy <= 1; dy++) {
|
|
63
|
-
const ny = iy0 + dy;
|
|
64
|
-
const wy = ((ny % cv) + cv) % cv;
|
|
65
|
-
for (let dx = -1; dx <= 1; dx++) {
|
|
66
|
-
const nx = ix0 + dx;
|
|
67
|
-
const wx = ((nx % cu) + cu) % cu;
|
|
68
|
-
|
|
69
|
-
const jx = cell_hash_01(wx, wy, seed);
|
|
70
|
-
const jy = cell_hash_01(wx, wy, seed ^ 0x6C8E9CF5);
|
|
71
|
-
const cid = cell_hash_01(wx, wy, seed ^ 0xB5297A4D);
|
|
72
|
-
|
|
73
|
-
const px = nx + 0.15 + 0.70 * jx - gx;
|
|
74
|
-
const py = ny + 0.15 + 0.70 * jy - gy;
|
|
75
|
-
const dist2 = px * px + py * py;
|
|
76
|
-
|
|
77
|
-
if (dist2 < d1) {
|
|
78
|
-
d2 = d1;
|
|
79
|
-
d1 = dist2;
|
|
80
|
-
best_id = cid;
|
|
81
|
-
} else if (dist2 < d2) {
|
|
82
|
-
d2 = dist2;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const f1 = Math.sqrt(d1);
|
|
88
|
-
const f2 = Math.sqrt(d2);
|
|
89
|
-
out[0] = f1;
|
|
90
|
-
out[1] = clamp(f2 - f1, 0.0, 1.0);
|
|
91
|
-
out[2] = best_id;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
23
|
/**
|
|
95
24
|
* Evaluates a seamlessly tileable 2D periodic gradient noise value on `[0, 1)^2`
|
|
96
25
|
* with integer periods `(freq_u, freq_v)` and zero allocation overhead.
|
|
@@ -160,7 +89,7 @@ function sample_tileable_bark_noise(u, v, freq_u, freq_v, ox, oy, oz) {
|
|
|
160
89
|
*
|
|
161
90
|
* @param {number} seed
|
|
162
91
|
* @param {number} count
|
|
163
|
-
* @param {
|
|
92
|
+
* @param {FoliageBarkType|number} bark_type
|
|
164
93
|
* @returns {Array<{u: number, v: number, rx: number, ry: number, phase: number}>}
|
|
165
94
|
*/
|
|
166
95
|
function build_bark_knot_sites(seed, count, bark_type) {
|
|
@@ -170,8 +99,8 @@ function build_bark_knot_sites(seed, count, bark_type) {
|
|
|
170
99
|
sites.push({
|
|
171
100
|
u: ((k + 0.22 + 0.55 * rng()) / Math.max(1, count)) % 1.0,
|
|
172
101
|
v: 0.18 + (k + 0.18 + 0.60 * rng()) / Math.max(1, count) * 0.44,
|
|
173
|
-
rx: bark_type ===
|
|
174
|
-
ry: bark_type ===
|
|
102
|
+
rx: bark_type === FoliageBarkType.Birch ? (0.075 + 0.030 * rng()) : (0.055 + 0.025 * rng()),
|
|
103
|
+
ry: bark_type === FoliageBarkType.Birch ? (0.008 + 0.004 * rng()) : (0.011 + 0.005 * rng()),
|
|
175
104
|
phase: rng() * PI2
|
|
176
105
|
});
|
|
177
106
|
}
|
|
@@ -200,7 +129,7 @@ export function evaluate_bark_relief(out, u, v, cfg, seed = 1) {
|
|
|
200
129
|
const oz = (((seed ^ 0x2DDFA232) * 1664525) & 0xFFFF) * 0.003 - 98.0;
|
|
201
130
|
|
|
202
131
|
const knot_amt = clamp(cfg.knot_amount ?? 0.55, 0.0, 1.0);
|
|
203
|
-
const bark_type =
|
|
132
|
+
const bark_type = cfg.bark_type ?? FoliageBarkType.Fissured;
|
|
204
133
|
|
|
205
134
|
// Ontogenetic attenuation: old basal/mid bark has macro-relief, young upper twigs are smooth
|
|
206
135
|
const young_fade = 1.0 - 0.82 * smoothStep(0.60, 0.84, v0);
|
|
@@ -248,7 +177,7 @@ export function evaluate_bark_relief(out, u, v, cfg, seed = 1) {
|
|
|
248
177
|
|
|
249
178
|
const n_macro1 = sample_tileable_bark_noise(u0, v_tile, 2, 7, ox, oy, oz);
|
|
250
179
|
const n_macro2 = sample_tileable_bark_noise(u0, v_tile, 3, 12, ox + 37.0, oy + 19.0, oz + 53.0);
|
|
251
|
-
const amp = bark_type ===
|
|
180
|
+
const amp = bark_type === FoliageBarkType.Birch ? 0.34 : 0.46;
|
|
252
181
|
const h = clamp(0.5 + (0.58 * n_macro1 + 0.42 * n_macro2) * amp * young_fade + knot_height, 0.0, 1.0);
|
|
253
182
|
|
|
254
183
|
const eps = 0.02;
|
|
@@ -312,9 +241,9 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
312
241
|
const base_rough = clamp(Math.max(0.86, cfg.roughness), 0.86, 0.98);
|
|
313
242
|
|
|
314
243
|
// Determine effective archetype
|
|
315
|
-
let bark_type =
|
|
316
|
-
if (bark_type ===
|
|
317
|
-
bark_type =
|
|
244
|
+
let bark_type = cfg.bark_type ?? FoliageBarkType.Fissured;
|
|
245
|
+
if (bark_type === FoliageBarkType.Fissured && lenticel > 0.55 && cfg.primary_color.r > 0.72) {
|
|
246
|
+
bark_type = FoliageBarkType.Birch;
|
|
318
247
|
}
|
|
319
248
|
|
|
320
249
|
const r1 = cfg.primary_color.r, g1 = cfg.primary_color.g, b1 = cfg.primary_color.b;
|
|
@@ -324,7 +253,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
324
253
|
const bi = cfg.inner_bark_color?.b ?? 0.22;
|
|
325
254
|
const rm = cfg.moss_color.r, gm = cfg.moss_color.g, bm = cfg.moss_color.b;
|
|
326
255
|
|
|
327
|
-
const knot_sites = build_bark_knot_sites(seed, bark_type ===
|
|
256
|
+
const knot_sites = build_bark_knot_sites(seed, bark_type === FoliageBarkType.Birch ? 6 : 5, bark_type);
|
|
328
257
|
|
|
329
258
|
// Pass 1: Synthesize species-specific ontogenetic bark heightfield and albedo
|
|
330
259
|
for (let y = 0; y < height; y++) {
|
|
@@ -364,7 +293,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
364
293
|
|
|
365
294
|
u_flow += -du * 0.20 * Math.exp(-0.55 * rho2) * knot_amt * mature_w;
|
|
366
295
|
|
|
367
|
-
if (bark_type ===
|
|
296
|
+
if (bark_type === FoliageBarkType.Birch) {
|
|
368
297
|
// Characteristic dark craggy chevron "Birch Eye" branch-collar scar
|
|
369
298
|
const y_chev = yk + 0.45 * Math.pow(Math.abs(xk), 1.15);
|
|
370
299
|
const chev_ridge = Math.exp(-3.4 * y_chev * y_chev) * Math.exp(-1.10 * xk * xk);
|
|
@@ -390,7 +319,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
390
319
|
let cr = r1, cg = g1, cb = b1;
|
|
391
320
|
let rough = base_rough;
|
|
392
321
|
|
|
393
|
-
if (bark_type ===
|
|
322
|
+
if (bark_type === FoliageBarkType.Birch) {
|
|
394
323
|
// --- ARCHETYPE 2: SILVER / PAPER BIRCH (WORLD-ASPECT CALIBRATED) ---
|
|
395
324
|
const n_low = sample_tileable_bark_noise(u, v, 2, 16, ox, oy, oz);
|
|
396
325
|
const n_med = sample_tileable_bark_noise(u, v, 4, 64, ox + 37.0, oy + 19.0, oz + 53.0);
|
|
@@ -413,8 +342,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
413
342
|
const fine_horiz = 0.5 + 0.5 * Math.sin(v * PI2 * 280.0 + n_med * 0.7);
|
|
414
343
|
|
|
415
344
|
// Crisp thin horizontal lenticel dashes (3x220 and 6x360 cells so dashes are thin in world Y!)
|
|
416
|
-
|
|
417
|
-
|
|
345
|
+
worley_noise_2d(SCRATCH_WORLEY, u + n_low * 0.012, v, 3, 220, seed ^ 0x13579BDF);
|
|
346
|
+
worley_noise_2d(SCRATCH_WORLEY2, u + n_med * 0.008, v, 6, 360, seed ^ 0x2468ACE0);
|
|
418
347
|
const lent_dash1 = smoothStep(0.28, 0.07, SCRATCH_WORLEY[0]) * (SCRATCH_WORLEY[2] < lenticel * 0.55 ? 1.0 : 0.0);
|
|
419
348
|
const lent_dash2 = smoothStep(0.25, 0.06, SCRATCH_WORLEY2[0]) * (SCRATCH_WORLEY2[2] < lenticel * 0.65 ? 1.0 : 0.0);
|
|
420
349
|
const lent_line = Math.pow(Math.max(0.0, Math.sin(v * PI2 * 180.0 + n_low * 1.4)), 7.0)
|
|
@@ -499,7 +428,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
499
428
|
}
|
|
500
429
|
|
|
501
430
|
rough = clamp(base_rough + 0.05 * birch_basal_mask - 0.02 * birch_young_mask, 0.85, 0.97);
|
|
502
|
-
} else if (bark_type ===
|
|
431
|
+
} else if (bark_type === FoliageBarkType.Plated) {
|
|
503
432
|
// --- ARCHETYPE 3: RAGGED FLAKY CONIFER SCALE BARK (PINE / SPRUCE, WORLD-ASPECT CALIBRATED) ---
|
|
504
433
|
const warp_u = (
|
|
505
434
|
sample_tileable_bark_noise(u, v, 3, 20, ox + 11.3, oy + 7.1, oz + 3.7) * 0.042
|
|
@@ -515,8 +444,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
515
444
|
|
|
516
445
|
// World-aspect-calibrated scale lattice: 6x28 primary scales + 12x56 secondary scales
|
|
517
446
|
const cells_v = Math.max(12, Math.round(freq_u * 4.5));
|
|
518
|
-
|
|
519
|
-
|
|
447
|
+
worley_noise_2d(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
|
|
448
|
+
worley_noise_2d(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x9E3779B9);
|
|
520
449
|
|
|
521
450
|
const df1 = SCRATCH_WORLEY[1];
|
|
522
451
|
const cid1 = SCRATCH_WORLEY[2];
|
|
@@ -566,7 +495,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
566
495
|
cg = lerp(mg, yg, young_w);
|
|
567
496
|
cb = lerp(mb, yb, young_w);
|
|
568
497
|
rough = clamp(lerp(0.95, base_rough, crevice_mix) * (1.0 - 0.03 * young_w), 0.86, 0.98);
|
|
569
|
-
} else if (bark_type ===
|
|
498
|
+
} else if (bark_type === FoliageBarkType.Ringed) {
|
|
570
499
|
// --- ARCHETYPE 4: RINGED / FIBROUS TRUNK BARK (PALM / SHRUB / FERN) ---
|
|
571
500
|
const n1 = sample_tileable_bark_noise(u, v, 2, 24, ox, oy, oz);
|
|
572
501
|
const n2 = sample_tileable_bark_noise(u, v, 12, 48, ox + 41.0, oy + 29.0, oz + 73.0);
|
|
@@ -597,8 +526,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
597
526
|
|
|
598
527
|
// Braided cellular Voronoi ridges + multi-harmonic vertical canyons + craggy transverse breaks
|
|
599
528
|
const cells_v = Math.max(10, Math.round(freq_u * 3.6));
|
|
600
|
-
|
|
601
|
-
|
|
529
|
+
worley_noise_2d(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
|
|
530
|
+
worley_noise_2d(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x5A3C9E17);
|
|
602
531
|
|
|
603
532
|
const detail_n1 = sample_tileable_bark_noise(uw, vw, freq_u, 24, ox, oy, oz);
|
|
604
533
|
const detail_n2 = sample_tileable_bark_noise(uw, vw, freq_u * 2, 48, ox + 37.0, oy + 19.0, oz + 53.0);
|
|
@@ -684,7 +613,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
684
613
|
|
|
685
614
|
// Pass 2: 3x3 rotationally invariant Scharr normal map + multi-radius Laplacian cavity AO
|
|
686
615
|
const res_scale = Math.max(1.0, width / 64.0);
|
|
687
|
-
const base_slope = (bark_type ===
|
|
616
|
+
const base_slope = (bark_type === FoliageBarkType.Birch
|
|
688
617
|
? (2.10 * depth + 0.45)
|
|
689
618
|
: (2.35 * depth + 0.52)) * res_scale;
|
|
690
619
|
const r_ao = Math.max(1, Math.round(width / 64));
|
|
@@ -795,7 +724,6 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
|
|
|
795
724
|
material.ambient_factors.a = 1.0;
|
|
796
725
|
material.ambient_factors.b = 0.0;
|
|
797
726
|
material.transparency_mode = TransparencyMode.Opaque;
|
|
798
|
-
material.transparency = TransparencyMode.Opaque;
|
|
799
727
|
material.draw_side = ShadeDrawSide.Front;
|
|
800
728
|
|
|
801
729
|
return material;
|
|
@@ -1,14 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packs `variant_count` square foliage card tiles of size `resolution x resolution` into a 2D atlas
|
|
3
|
+
* using the engine's `MaxRectanglesPacker` (`pack_max_rectangles`), returning the atlas dimensions,
|
|
4
|
+
* pixel-space `AABB2` boxes, and normalized `[u0, v0, u1, v1]` UV rectangles.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} [resolution=128]
|
|
7
|
+
* @param {number} [variant_count=4]
|
|
8
|
+
* @returns {{
|
|
9
|
+
* resolution: number,
|
|
10
|
+
* variant_count: number,
|
|
11
|
+
* atlas_w: number,
|
|
12
|
+
* atlas_h: number,
|
|
13
|
+
* boxes: AABB2[],
|
|
14
|
+
* uv_rects: Float32Array
|
|
15
|
+
* }}
|
|
16
|
+
*/
|
|
17
|
+
export function compute_foliage_variant_atlas_layout(resolution?: number, variant_count?: number): {
|
|
18
|
+
resolution: number;
|
|
19
|
+
variant_count: number;
|
|
20
|
+
atlas_w: number;
|
|
21
|
+
atlas_h: number;
|
|
22
|
+
boxes: AABB2[];
|
|
23
|
+
uv_rects: Float32Array;
|
|
24
|
+
};
|
|
1
25
|
/**
|
|
2
26
|
* Synthesizes a turn-key procedural PBR cutout `StandardShadeMaterial` (`TransparencyMode.AlphaTested`,
|
|
3
|
-
* `ShadeDrawSide.Double`) for botanical foliage cards,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
27
|
+
* `ShadeDrawSide.Double`) for botanical foliage cards, packing `config.variant_count` ontogenetic and
|
|
28
|
+
* biochemically senescent leaf cluster variants into the texture atlas via `MaxRectanglesPacker`
|
|
29
|
+
* (`pack_max_rectangles`), with dilated straight-alpha Albedo (`AlphaMode.Straight`, `ColorSpace.SRGB`),
|
|
30
|
+
* 2-channel Normal map (`ColorSpace.LinearSRGB`), and ORM (`ColorSpace.LinearSRGB`).
|
|
6
31
|
*
|
|
7
32
|
* @param {FoliageMaterialConfig|Object} [config]
|
|
8
33
|
* @param {number} [seed=1]
|
|
9
34
|
* @returns {StandardShadeMaterial}
|
|
10
35
|
*/
|
|
11
36
|
export function make_foliage_material(config?: FoliageMaterialConfig | any, seed?: number): StandardShadeMaterial;
|
|
37
|
+
import AABB2 from "../../../core/geom/2d/aabb/AABB2.js";
|
|
12
38
|
import { FoliageMaterialConfig } from "../config/FoliageMaterialConfig.js";
|
|
13
39
|
import { StandardShadeMaterial } from "../../../shade/renderer/material/StandardShadeMaterial.js";
|
|
14
40
|
//# sourceMappingURL=make_foliage_material.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_foliage_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_foliage_material.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make_foliage_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_foliage_material.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;GAeG;AACH,kEAXW,MAAM,kBACN,MAAM,GACJ;IACZ,UAAc,EAAE,MAAM,CAAC;IACvB,aAAiB,EAAE,MAAM,CAAC;IAC1B,OAAW,EAAE,MAAM,CAAC;IACpB,OAAW,EAAE,MAAM,CAAC;IACpB,KAAS,EAAE,KAAK,EAAE,CAAC;IACnB,QAAY,EAAE,YAAY,CAAA;CACvB,CA4CH;AAuGD;;;;;;;;;;GAUG;AACH,+CAJW,qBAAqB,MAAO,SAC5B,MAAM,GACJ,qBAAqB,CA6ZjC;kBA5lBiB,qCAAqC;sCAiBjB,oCAAoC;sCARpC,2DAA2D"}
|