@woosh/meep-engine 3.53.0 → 3.54.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.
Files changed (194) hide show
  1. package/package.json +1 -1
  2. package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
  3. package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
  4. package/src/core/math/noise/worley_noise_2d.js +74 -0
  5. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
  6. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  7. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
  8. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
  9. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
  10. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
  11. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
  12. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
  13. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
  14. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
  15. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
  16. package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
  17. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts +12 -0
  18. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
  19. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
  20. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
  21. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  22. package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
  23. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts +52 -0
  24. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
  25. package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
  26. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  27. package/src/engine/graphics3/DecalSystem.js +447 -450
  28. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -22
  29. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  30. package/src/engine/graphics3/GPUParticleEmitterSystem.js +892 -951
  31. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  32. package/src/generation/foliage/FOLIAGE_DESIGN.md +2 -1
  33. package/src/generation/foliage/config/BarkMaterialConfig.d.ts +4 -3
  34. package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -1
  35. package/src/generation/foliage/config/BarkMaterialConfig.js +6 -6
  36. package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
  37. package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
  38. package/src/generation/foliage/config/FoliageBarkType.js +16 -0
  39. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +58 -5
  40. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -1
  41. package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -181
  42. package/src/generation/foliage/index.d.ts +2 -1
  43. package/src/generation/foliage/index.js +44 -43
  44. package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -1
  45. package/src/generation/foliage/material/make_bark_material.js +23 -95
  46. package/src/generation/foliage/material/make_foliage_material.d.ts +29 -3
  47. package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -1
  48. package/src/generation/foliage/material/make_foliage_material.js +605 -359
  49. package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -1
  50. package/src/generation/foliage/mesh/branch_collar_project.js +205 -203
  51. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +15 -0
  52. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -1
  53. package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -502
  54. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
  55. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -1047
  56. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +2 -1
  57. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -1
  58. package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -415
  59. package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
  60. package/src/generation/foliage/presets/make_tree_species_preset.js +870 -837
  61. package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -121
  62. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +10 -7
  63. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -1
  64. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -179
  65. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
  66. package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -1104
  67. package/src/shade/playground/foliage_wind/foliage_world.d.ts +6 -0
  68. package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
  69. package/src/shade/playground/foliage_wind/foliage_world.js +602 -593
  70. package/src/shade/playground/foliage_wind/index.html +260 -254
  71. package/src/shade/playground/foliage_wind/main.js +275 -263
  72. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  73. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  74. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  75. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  76. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  77. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
  78. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
  79. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  80. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
  81. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
  82. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
  83. package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
  84. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
  85. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
  86. package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
  87. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
  88. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
  89. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
  90. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
  91. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  92. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
  93. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
  94. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  95. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
  96. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
  97. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
  98. package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
  99. package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
  100. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  101. package/src/shade/renderer/light/GPULightCollection.js +67 -0
  102. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
  103. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
  104. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
  105. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
  106. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
  107. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
  108. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
  109. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
  110. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
  111. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
  112. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
  113. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
  114. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
  115. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
  116. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
  117. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
  118. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
  119. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
  120. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
  121. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
  122. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
  123. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  124. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  125. package/src/shade/renderer/particles/GPUParticleSystem.js +4 -3
  126. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
  127. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  128. package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
  129. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
  130. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  131. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
  132. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  133. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +21 -38
  134. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  135. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
  136. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
  137. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
  138. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
  139. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
  140. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
  141. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
  142. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
  143. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
  144. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
  145. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
  146. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
  147. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
  148. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
  149. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  150. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
  151. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +24 -0
  152. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +1 -0
  153. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +1 -1
  154. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
  155. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
  156. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
  157. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
  158. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
  159. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
  160. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
  161. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
  162. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
  163. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
  164. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
  165. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
  166. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
  167. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
  168. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
  169. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
  170. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
  171. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +31 -0
  172. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
  173. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +113 -0
  174. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
  175. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
  176. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +356 -0
  177. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
  178. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
  179. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
  180. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +16 -0
  181. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +1 -0
  182. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +23 -0
  183. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts.map +1 -0
  184. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  185. package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
  186. package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
  187. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
  188. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
  189. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
  190. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
  191. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
  192. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
  193. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
  194. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
@@ -1,181 +1,279 @@
1
- import { assert } from "../../../core/assert.js";
2
- import { Color } from "../../../core/color/Color.js";
3
- import { hash_mix2 } from "../../../core/math/hash/hash_mix2.js";
4
- import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
5
- import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
6
-
7
- /**
8
- * Procedural foliage cluster PBR material & silhouette synthesis configuration.
9
- */
10
- export class FoliageMaterialConfig {
11
- /**
12
- * Procedural texture resolution (pixels, power of two).
13
- * @type {number}
14
- */
15
- resolution = 128;
16
-
17
- /**
18
- * Sun-facing leaf lamina color (sRGB).
19
- * @type {Color}
20
- */
21
- primary_color = new Color(0.26, 0.48, 0.16, 1.0);
22
-
23
- /**
24
- * Vein / young tip / secondary leaf color (sRGB).
25
- * @type {Color}
26
- */
27
- secondary_color = new Color(0.38, 0.58, 0.22, 1.0);
28
-
29
- /**
30
- * Autumn / golden-red shift factor [0, 1].
31
- * @type {number}
32
- */
33
- autumn_tint = 0.0;
34
-
35
- /**
36
- * Leaf cluster silhouette style: `"ovate" | "lobed" | "serrated" | "palmate" | "needle" | "frond"`.
37
- * @type {string}
38
- */
39
- leaf_shape = "lobed";
40
-
41
- /**
42
- * Number of leaflets arranged on the twig cluster card.
43
- * @type {number}
44
- */
45
- leaflets_per_cluster = 5;
46
-
47
- /**
48
- * Base PBR roughness [0, 1].
49
- * @type {number}
50
- */
51
- roughness = 0.56;
52
-
53
- /**
54
- * Venation normal-map relief strength [0, 1].
55
- * @type {number}
56
- */
57
- vein_strength = 0.5;
58
-
59
- /**
60
- * Horizontal UV coordinate [0, 1] on the foliage card where the drawn woody stem/petiole attaches to the branch.
61
- * @type {number}
62
- */
63
- stem_anchor_u = 0.5;
64
-
65
- /**
66
- * Vertical UV coordinate [0, 1] on the foliage card where the drawn woody stem/petiole attaches to the branch.
67
- * @type {number}
68
- */
69
- stem_anchor_v = 0.0;
70
-
71
- /**
72
- * @param {Partial<FoliageMaterialConfig>} [options]
73
- * @returns {FoliageMaterialConfig}
74
- */
75
- static from(options = {}) {
76
- const r = new FoliageMaterialConfig();
77
- r.applyOverrides(options);
78
- return r;
79
- }
80
-
81
- /**
82
- * @param {Partial<FoliageMaterialConfig>} [overrides]
83
- * @returns {this}
84
- */
85
- applyOverrides(overrides = {}) {
86
- if (overrides === null || overrides === undefined) {
87
- return this;
88
- }
89
- if (overrides.resolution !== undefined) this.resolution = Math.max(16, overrides.resolution | 0);
90
- if (overrides.primary_color !== undefined) {
91
- if (Array.isArray(overrides.primary_color)) {
92
- this.primary_color.setRGB(overrides.primary_color[0], overrides.primary_color[1], overrides.primary_color[2]);
93
- } else {
94
- this.primary_color.copy(overrides.primary_color);
95
- }
96
- }
97
- if (overrides.secondary_color !== undefined) {
98
- if (Array.isArray(overrides.secondary_color)) {
99
- this.secondary_color.setRGB(overrides.secondary_color[0], overrides.secondary_color[1], overrides.secondary_color[2]);
100
- } else {
101
- this.secondary_color.copy(overrides.secondary_color);
102
- }
103
- }
104
- if (overrides.autumn_tint !== undefined) this.autumn_tint = overrides.autumn_tint;
105
- if (overrides.leaf_shape !== undefined) this.leaf_shape = overrides.leaf_shape;
106
- if (overrides.leaflets_per_cluster !== undefined) this.leaflets_per_cluster = Math.max(1, overrides.leaflets_per_cluster | 0);
107
- if (overrides.roughness !== undefined) this.roughness = overrides.roughness;
108
- if (overrides.vein_strength !== undefined) this.vein_strength = overrides.vein_strength;
109
- if (overrides.stem_anchor_u !== undefined) this.stem_anchor_u = overrides.stem_anchor_u;
110
- if (overrides.stem_anchor_v !== undefined) this.stem_anchor_v = overrides.stem_anchor_v;
111
- return this;
112
- }
113
-
114
- /**
115
- * @param {FoliageMaterialConfig} other
116
- * @returns {this}
117
- */
118
- copy(other) {
119
- assert.defined(other, 'other');
120
- this.resolution = other.resolution;
121
- this.primary_color.copy(other.primary_color);
122
- this.secondary_color.copy(other.secondary_color);
123
- this.autumn_tint = other.autumn_tint;
124
- this.leaf_shape = other.leaf_shape;
125
- this.leaflets_per_cluster = other.leaflets_per_cluster;
126
- this.roughness = other.roughness;
127
- this.vein_strength = other.vein_strength;
128
- this.stem_anchor_u = other.stem_anchor_u;
129
- this.stem_anchor_v = other.stem_anchor_v;
130
- return this;
131
- }
132
-
133
- /**
134
- * @returns {FoliageMaterialConfig}
135
- */
136
- clone() {
137
- const r = new FoliageMaterialConfig();
138
- r.copy(this);
139
- return r;
140
- }
141
-
142
- /**
143
- * @param {FoliageMaterialConfig} other
144
- * @returns {boolean}
145
- */
146
- equals(other) {
147
- if (this === other) return true;
148
- if (!other || !other.isFoliageMaterialConfig) return false;
149
- return this.resolution === other.resolution
150
- && this.primary_color.equals(other.primary_color)
151
- && this.secondary_color.equals(other.secondary_color)
152
- && this.autumn_tint === other.autumn_tint
153
- && this.leaf_shape === other.leaf_shape
154
- && this.leaflets_per_cluster === other.leaflets_per_cluster
155
- && this.roughness === other.roughness
156
- && this.vein_strength === other.vein_strength
157
- && this.stem_anchor_u === other.stem_anchor_u
158
- && this.stem_anchor_v === other.stem_anchor_v;
159
- }
160
-
161
- /**
162
- * @returns {number}
163
- */
164
- hash() {
165
- let h = hash_mix2(this.resolution, this.primary_color.hash());
166
- h = hash_mix2(h, this.secondary_color.hash());
167
- h = hash_mix2(h, computeHashFloat(this.autumn_tint));
168
- h = hash_mix2(h, computeStringHash(this.leaf_shape));
169
- h = hash_mix2(h, this.leaflets_per_cluster);
170
- h = hash_mix2(h, computeHashFloat(this.roughness));
171
- h = hash_mix2(h, computeHashFloat(this.stem_anchor_u));
172
- h = hash_mix2(h, computeHashFloat(this.stem_anchor_v));
173
- return h;
174
- }
175
- }
176
-
177
- /**
178
- * @readonly
179
- * @type {boolean}
180
- */
181
- FoliageMaterialConfig.prototype.isFoliageMaterialConfig = true;
1
+ import { assert } from "../../../core/assert.js";
2
+ import { Color } from "../../../core/color/Color.js";
3
+ import { hash_mix2 } from "../../../core/math/hash/hash_mix2.js";
4
+ import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
5
+ import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
6
+
7
+ /**
8
+ * Procedural foliage cluster PBR material, ontogenetic variant atlas, & biochemical senescence configuration.
9
+ */
10
+ export class FoliageMaterialConfig {
11
+ /**
12
+ * Procedural per-variant tile resolution (pixels, power of two).
13
+ * @type {number}
14
+ */
15
+ resolution = 128;
16
+
17
+ /**
18
+ * Mature sun-facing leaf lamina color (sRGB).
19
+ * @type {Color}
20
+ */
21
+ primary_color = new Color(0.26, 0.48, 0.16, 1.0);
22
+
23
+ /**
24
+ * Vein / secondary leaf color (sRGB).
25
+ * @type {Color}
26
+ */
27
+ secondary_color = new Color(0.38, 0.58, 0.22, 1.0);
28
+
29
+ /**
30
+ * Legacy / convenience autumn shift factor [0, 1].
31
+ * Acts as a lower bound on `senescence` when non-zero for backwards compatibility.
32
+ * @type {number}
33
+ */
34
+ autumn_tint = 0.0;
35
+
36
+ /**
37
+ * Leaf cluster silhouette style: `"ovate" | "lobed" | "serrated" | "palmate" | "needle" | "frond"`.
38
+ * @type {string}
39
+ */
40
+ leaf_shape = "lobed";
41
+
42
+ /**
43
+ * Number of leaflets arranged on the twig cluster card.
44
+ * @type {number}
45
+ */
46
+ leaflets_per_cluster = 5;
47
+
48
+ /**
49
+ * Base PBR roughness [0, 1].
50
+ * @type {number}
51
+ */
52
+ roughness = 0.56;
53
+
54
+ /**
55
+ * Venation normal-map relief strength [0, 1].
56
+ * @type {number}
57
+ */
58
+ vein_strength = 0.5;
59
+
60
+ /**
61
+ * Horizontal UV coordinate [0, 1] on the foliage card where the drawn woody stem/petiole attaches to the branch.
62
+ * @type {number}
63
+ */
64
+ stem_anchor_u = 0.5;
65
+
66
+ /**
67
+ * Vertical UV coordinate [0, 1] on the foliage card where the drawn woody stem/petiole attaches to the branch.
68
+ * @type {number}
69
+ */
70
+ stem_anchor_v = 0.0;
71
+
72
+ /**
73
+ * Number of ontogenetic foliage card variants packed into the material atlas [1, 16].
74
+ * Variant 0 represents newly flushed juvenile apical leaves; Variant `variant_count - 1`
75
+ * represents fully mature (or most senescent) basal/interior leaves.
76
+ * @type {number}
77
+ */
78
+ variant_count = 4;
79
+
80
+ /**
81
+ * Juvenile-to-mature chlorophyll-lag lightening & yellow-green/chartreuse shift [0, 1].
82
+ * @type {number}
83
+ */
84
+ juvenile_color_shift = 0.38;
85
+
86
+ /**
87
+ * Transient epidermal anthocyanin bronze/reddish margin flush on newly emerging juvenile leaves [0, 1].
88
+ * @type {number}
89
+ */
90
+ juvenile_anthocyanin = 0.08;
91
+
92
+ /**
93
+ * Juvenile-to-mature leaflet aspect ratio, lobe/tooth incision depth, and lateral spread progression [0, 1].
94
+ * @type {number}
95
+ */
96
+ ontogeny_shape_variation = 0.35;
97
+
98
+ /**
99
+ * Juvenile-to-mature vascular venation relief, interveinal bullation, stem lignification, and cuticle roughness progression [0, 1].
100
+ * @type {number}
101
+ */
102
+ ontogeny_vein_contrast = 0.55;
103
+
104
+ /**
105
+ * Seasonal chlorophyll catabolism (autumn senescence) stage [0, 1].
106
+ * Governed by photoperiod/temperature breakdown of chlorophyll a/b, which unmasks plastid carotenoids,
107
+ * triggers photoprotective vacuolar anthocyanin synthesis in sunlit leaves, and oxidizes foliar tannins.
108
+ * @type {number}
109
+ */
110
+ senescence = 0.0;
111
+
112
+ /**
113
+ * Foliar xanthophyll & beta-carotene concentration [0, 1] unmasked as chlorophyll degrades
114
+ * (drives vivid golden-yellow autumn coloration in Birch, Willow, Aspen, Ginkgo, Maple).
115
+ * @type {number}
116
+ */
117
+ carotenoid_density = 0.75;
118
+
119
+ /**
120
+ * Species genetic potential [0, 1] for de novo vacuolar anthocyanin synthesis under high solar
121
+ * irradiance and carbohydrate accumulation during senescence (drives scarlet/crimson in Maple & Oak).
122
+ * @type {number}
123
+ */
124
+ anthocyanin_potential = 0.35;
125
+
126
+ /**
127
+ * Foliar condensed tannin / polyphenol oxidation rate [0, 1] into russet/copper-brown during late senescence
128
+ * (high in Oak, low in Birch/Maple).
129
+ * @type {number}
130
+ */
131
+ tannin_oxidation = 0.25;
132
+
133
+ /**
134
+ * @param {Partial<FoliageMaterialConfig>} [options]
135
+ * @returns {FoliageMaterialConfig}
136
+ */
137
+ static from(options = {}) {
138
+ const r = new FoliageMaterialConfig();
139
+ r.applyOverrides(options);
140
+ return r;
141
+ }
142
+
143
+ /**
144
+ * @param {Partial<FoliageMaterialConfig>} [overrides]
145
+ * @returns {this}
146
+ */
147
+ applyOverrides(overrides = {}) {
148
+ if (overrides === null || overrides === undefined) {
149
+ return this;
150
+ }
151
+ if (overrides.resolution !== undefined) this.resolution = Math.max(16, overrides.resolution | 0);
152
+ if (overrides.primary_color !== undefined) {
153
+ if (Array.isArray(overrides.primary_color)) {
154
+ this.primary_color.setRGB(overrides.primary_color[0], overrides.primary_color[1], overrides.primary_color[2]);
155
+ } else {
156
+ this.primary_color.copy(overrides.primary_color);
157
+ }
158
+ }
159
+ if (overrides.secondary_color !== undefined) {
160
+ if (Array.isArray(overrides.secondary_color)) {
161
+ this.secondary_color.setRGB(overrides.secondary_color[0], overrides.secondary_color[1], overrides.secondary_color[2]);
162
+ } else {
163
+ this.secondary_color.copy(overrides.secondary_color);
164
+ }
165
+ }
166
+ if (overrides.autumn_tint !== undefined) this.autumn_tint = overrides.autumn_tint;
167
+ if (overrides.leaf_shape !== undefined) this.leaf_shape = overrides.leaf_shape;
168
+ if (overrides.leaflets_per_cluster !== undefined) this.leaflets_per_cluster = Math.max(1, overrides.leaflets_per_cluster | 0);
169
+ if (overrides.roughness !== undefined) this.roughness = overrides.roughness;
170
+ if (overrides.vein_strength !== undefined) this.vein_strength = overrides.vein_strength;
171
+ if (overrides.stem_anchor_u !== undefined) this.stem_anchor_u = overrides.stem_anchor_u;
172
+ if (overrides.stem_anchor_v !== undefined) this.stem_anchor_v = overrides.stem_anchor_v;
173
+ if (overrides.variant_count !== undefined) this.variant_count = Math.max(1, Math.min(16, overrides.variant_count | 0));
174
+ if (overrides.juvenile_color_shift !== undefined) this.juvenile_color_shift = overrides.juvenile_color_shift;
175
+ if (overrides.juvenile_anthocyanin !== undefined) this.juvenile_anthocyanin = overrides.juvenile_anthocyanin;
176
+ if (overrides.ontogeny_shape_variation !== undefined) this.ontogeny_shape_variation = overrides.ontogeny_shape_variation;
177
+ if (overrides.ontogeny_vein_contrast !== undefined) this.ontogeny_vein_contrast = overrides.ontogeny_vein_contrast;
178
+ if (overrides.senescence !== undefined) this.senescence = overrides.senescence;
179
+ if (overrides.carotenoid_density !== undefined) this.carotenoid_density = overrides.carotenoid_density;
180
+ if (overrides.anthocyanin_potential !== undefined) this.anthocyanin_potential = overrides.anthocyanin_potential;
181
+ if (overrides.tannin_oxidation !== undefined) this.tannin_oxidation = overrides.tannin_oxidation;
182
+ return this;
183
+ }
184
+
185
+ /**
186
+ * @param {FoliageMaterialConfig} other
187
+ * @returns {this}
188
+ */
189
+ copy(other) {
190
+ assert.defined(other, 'other');
191
+ this.resolution = other.resolution;
192
+ this.primary_color.copy(other.primary_color);
193
+ this.secondary_color.copy(other.secondary_color);
194
+ this.autumn_tint = other.autumn_tint;
195
+ this.leaf_shape = other.leaf_shape;
196
+ this.leaflets_per_cluster = other.leaflets_per_cluster;
197
+ this.roughness = other.roughness;
198
+ this.vein_strength = other.vein_strength;
199
+ this.stem_anchor_u = other.stem_anchor_u;
200
+ this.stem_anchor_v = other.stem_anchor_v;
201
+ this.variant_count = other.variant_count;
202
+ this.juvenile_color_shift = other.juvenile_color_shift;
203
+ this.juvenile_anthocyanin = other.juvenile_anthocyanin;
204
+ this.ontogeny_shape_variation = other.ontogeny_shape_variation;
205
+ this.ontogeny_vein_contrast = other.ontogeny_vein_contrast;
206
+ this.senescence = other.senescence;
207
+ this.carotenoid_density = other.carotenoid_density;
208
+ this.anthocyanin_potential = other.anthocyanin_potential;
209
+ this.tannin_oxidation = other.tannin_oxidation;
210
+ return this;
211
+ }
212
+
213
+ /**
214
+ * @returns {FoliageMaterialConfig}
215
+ */
216
+ clone() {
217
+ const r = new FoliageMaterialConfig();
218
+ r.copy(this);
219
+ return r;
220
+ }
221
+
222
+ /**
223
+ * @param {FoliageMaterialConfig} other
224
+ * @returns {boolean}
225
+ */
226
+ equals(other) {
227
+ if (this === other) return true;
228
+ if (!other || !other.isFoliageMaterialConfig) return false;
229
+ return this.resolution === other.resolution
230
+ && this.primary_color.equals(other.primary_color)
231
+ && this.secondary_color.equals(other.secondary_color)
232
+ && this.autumn_tint === other.autumn_tint
233
+ && this.leaf_shape === other.leaf_shape
234
+ && this.leaflets_per_cluster === other.leaflets_per_cluster
235
+ && this.roughness === other.roughness
236
+ && this.vein_strength === other.vein_strength
237
+ && this.stem_anchor_u === other.stem_anchor_u
238
+ && this.stem_anchor_v === other.stem_anchor_v
239
+ && this.variant_count === other.variant_count
240
+ && this.juvenile_color_shift === other.juvenile_color_shift
241
+ && this.juvenile_anthocyanin === other.juvenile_anthocyanin
242
+ && this.ontogeny_shape_variation === other.ontogeny_shape_variation
243
+ && this.ontogeny_vein_contrast === other.ontogeny_vein_contrast
244
+ && this.senescence === other.senescence
245
+ && this.carotenoid_density === other.carotenoid_density
246
+ && this.anthocyanin_potential === other.anthocyanin_potential
247
+ && this.tannin_oxidation === other.tannin_oxidation;
248
+ }
249
+
250
+ /**
251
+ * @returns {number}
252
+ */
253
+ hash() {
254
+ let h = hash_mix2(this.resolution, this.primary_color.hash());
255
+ h = hash_mix2(h, this.secondary_color.hash());
256
+ h = hash_mix2(h, computeHashFloat(this.autumn_tint));
257
+ h = hash_mix2(h, computeStringHash(this.leaf_shape));
258
+ h = hash_mix2(h, this.leaflets_per_cluster);
259
+ h = hash_mix2(h, computeHashFloat(this.roughness));
260
+ h = hash_mix2(h, computeHashFloat(this.stem_anchor_u));
261
+ h = hash_mix2(h, computeHashFloat(this.stem_anchor_v));
262
+ h = hash_mix2(h, this.variant_count);
263
+ h = hash_mix2(h, computeHashFloat(this.juvenile_color_shift));
264
+ h = hash_mix2(h, computeHashFloat(this.juvenile_anthocyanin));
265
+ h = hash_mix2(h, computeHashFloat(this.ontogeny_shape_variation));
266
+ h = hash_mix2(h, computeHashFloat(this.ontogeny_vein_contrast));
267
+ h = hash_mix2(h, computeHashFloat(this.senescence));
268
+ h = hash_mix2(h, computeHashFloat(this.carotenoid_density));
269
+ h = hash_mix2(h, computeHashFloat(this.anthocyanin_potential));
270
+ h = hash_mix2(h, computeHashFloat(this.tannin_oxidation));
271
+ return h;
272
+ }
273
+ }
274
+
275
+ /**
276
+ * @readonly
277
+ * @type {boolean}
278
+ */
279
+ FoliageMaterialConfig.prototype.isFoliageMaterialConfig = true;
@@ -1,6 +1,7 @@
1
1
  export { CrownEnvelopeType } from "./config/CrownEnvelopeType.js";
2
2
  export { PhyllotaxisMode } from "./config/PhyllotaxisMode.js";
3
3
  export { FoliageCardType } from "./config/FoliageCardType.js";
4
+ export { FoliageBarkType } from "./config/FoliageBarkType.js";
4
5
  export { TreePreset } from "./config/TreePreset.js";
5
6
  export { BranchLevelConfig } from "./config/BranchLevelConfig.js";
6
7
  export { CrownConfig } from "./config/CrownConfig.js";
@@ -21,7 +22,6 @@ export { foliage_collect_attachments } from "./mesh/foliage_collect_attachments.
21
22
  export { tree_mesh_build_foliage } from "./mesh/tree_mesh_build_foliage.js";
22
23
  export { tree_mesh_apply_canopy_ao } from "./mesh/tree_mesh_apply_canopy_ao.js";
23
24
  export { make_bark_material } from "./material/make_bark_material.js";
24
- export { make_foliage_material } from "./material/make_foliage_material.js";
25
25
  export { build_tree_wind_rig } from "./animation/build_tree_wind_rig.js";
26
26
  export { FoliageWindJoint } from "../../shade/renderer/animation/foliage/FoliageWindJoint.js";
27
27
  export { FoliageWindRig } from "../../shade/renderer/animation/foliage/FoliageWindRig.js";
@@ -34,5 +34,6 @@ export { generate_tree } from "./asset/generate_tree.js";
34
34
  export { crown_envelope_evaluate, crown_envelope_sdf } from "./skeleton/crown_envelope_evaluate.js";
35
35
  export { branch_ring_triangulate, branch_apex_triangulate } from "./mesh/branch_ring_triangulate.js";
36
36
  export { tree_mesh_build_bark, geometry_obtain_joints_attribute } from "./mesh/tree_mesh_build_bark.js";
37
+ export { make_foliage_material, compute_foliage_variant_atlas_layout } from "./material/make_foliage_material.js";
37
38
  export { place_tree, unplace_tree } from "./asset/place_tree.js";
38
39
  //# sourceMappingURL=index.d.ts.map
@@ -1,43 +1,44 @@
1
- export { CrownEnvelopeType } from "./config/CrownEnvelopeType.js";
2
- export { PhyllotaxisMode } from "./config/PhyllotaxisMode.js";
3
- export { FoliageCardType } from "./config/FoliageCardType.js";
4
- export { TreePreset } from "./config/TreePreset.js";
5
- export { BranchLevelConfig } from "./config/BranchLevelConfig.js";
6
- export { CrownConfig } from "./config/CrownConfig.js";
7
- export { FoliageConfig } from "./config/FoliageConfig.js";
8
- export { BarkMaterialConfig } from "./config/BarkMaterialConfig.js";
9
- export { FoliageMaterialConfig } from "./config/FoliageMaterialConfig.js";
10
- export { TreeWindConfig } from "./config/TreeWindConfig.js";
11
- export { TreeLODConfig } from "./config/TreeLODConfig.js";
12
- export { TreeSpeciesConfig } from "./config/TreeSpeciesConfig.js";
13
-
14
- export { make_tree_species_preset } from "./presets/make_tree_species_preset.js";
15
-
16
- export { TreeSkeleton } from "./skeleton/TreeSkeleton.js";
17
- export { crown_envelope_evaluate, crown_envelope_sdf } from "./skeleton/crown_envelope_evaluate.js";
18
- export { spine_frame_double_reflection } from "./skeleton/spine_frame_double_reflection.js";
19
- export { tree_skeleton_grow } from "./skeleton/tree_skeleton_grow.js";
20
- export { tree_skeleton_compute_pipe_radii } from "./skeleton/tree_skeleton_compute_pipe_radii.js";
21
- export { tree_skeleton_assign_skin_joints } from "./skeleton/tree_skeleton_assign_skin_joints.js";
22
-
23
- export { branch_collar_project } from "./mesh/branch_collar_project.js";
24
- export { branch_ring_triangulate, branch_apex_triangulate } from "./mesh/branch_ring_triangulate.js";
25
- export { tree_mesh_build_bark, geometry_obtain_joints_attribute } from "./mesh/tree_mesh_build_bark.js";
26
- export { foliage_collect_attachments } from "./mesh/foliage_collect_attachments.js";
27
- export { tree_mesh_build_foliage } from "./mesh/tree_mesh_build_foliage.js";
28
- export { tree_mesh_apply_canopy_ao } from "./mesh/tree_mesh_apply_canopy_ao.js";
29
-
30
- export { make_bark_material } from "./material/make_bark_material.js";
31
- export { make_foliage_material } from "./material/make_foliage_material.js";
32
-
33
- export { build_tree_wind_rig } from "./animation/build_tree_wind_rig.js";
34
- export { FoliageWindJoint } from "../../shade/renderer/animation/foliage/FoliageWindJoint.js";
35
- export { FoliageWindRig } from "../../shade/renderer/animation/foliage/FoliageWindRig.js";
36
- export { chunk_foliage_wind_step } from "../../shade/renderer/animation/foliage/chunk_foliage_wind_step.js";
37
- export { FoliageWindRigs } from "../../engine/graphics3/animation/FoliageWindRigs.js";
38
- export { FoliageWindSystem } from "../../engine/graphics3/FoliageWindSystem.js";
39
-
40
- export { TreeLODAsset } from "./asset/TreeLODAsset.js";
41
- export { TreeAsset } from "./asset/TreeAsset.js";
42
- export { generate_tree } from "./asset/generate_tree.js";
43
- export { place_tree, unplace_tree } from "./asset/place_tree.js";
1
+ export { CrownEnvelopeType } from "./config/CrownEnvelopeType.js";
2
+ export { PhyllotaxisMode } from "./config/PhyllotaxisMode.js";
3
+ export { FoliageCardType } from "./config/FoliageCardType.js";
4
+ export { FoliageBarkType } from "./config/FoliageBarkType.js";
5
+ export { TreePreset } from "./config/TreePreset.js";
6
+ export { BranchLevelConfig } from "./config/BranchLevelConfig.js";
7
+ export { CrownConfig } from "./config/CrownConfig.js";
8
+ export { FoliageConfig } from "./config/FoliageConfig.js";
9
+ export { BarkMaterialConfig } from "./config/BarkMaterialConfig.js";
10
+ export { FoliageMaterialConfig } from "./config/FoliageMaterialConfig.js";
11
+ export { TreeWindConfig } from "./config/TreeWindConfig.js";
12
+ export { TreeLODConfig } from "./config/TreeLODConfig.js";
13
+ export { TreeSpeciesConfig } from "./config/TreeSpeciesConfig.js";
14
+
15
+ export { make_tree_species_preset } from "./presets/make_tree_species_preset.js";
16
+
17
+ export { TreeSkeleton } from "./skeleton/TreeSkeleton.js";
18
+ export { crown_envelope_evaluate, crown_envelope_sdf } from "./skeleton/crown_envelope_evaluate.js";
19
+ export { spine_frame_double_reflection } from "./skeleton/spine_frame_double_reflection.js";
20
+ export { tree_skeleton_grow } from "./skeleton/tree_skeleton_grow.js";
21
+ export { tree_skeleton_compute_pipe_radii } from "./skeleton/tree_skeleton_compute_pipe_radii.js";
22
+ export { tree_skeleton_assign_skin_joints } from "./skeleton/tree_skeleton_assign_skin_joints.js";
23
+
24
+ export { branch_collar_project } from "./mesh/branch_collar_project.js";
25
+ export { branch_ring_triangulate, branch_apex_triangulate } from "./mesh/branch_ring_triangulate.js";
26
+ export { tree_mesh_build_bark, geometry_obtain_joints_attribute } from "./mesh/tree_mesh_build_bark.js";
27
+ export { foliage_collect_attachments } from "./mesh/foliage_collect_attachments.js";
28
+ export { tree_mesh_build_foliage } from "./mesh/tree_mesh_build_foliage.js";
29
+ export { tree_mesh_apply_canopy_ao } from "./mesh/tree_mesh_apply_canopy_ao.js";
30
+
31
+ export { make_bark_material } from "./material/make_bark_material.js";
32
+ export { make_foliage_material, compute_foliage_variant_atlas_layout } from "./material/make_foliage_material.js";
33
+
34
+ export { build_tree_wind_rig } from "./animation/build_tree_wind_rig.js";
35
+ export { FoliageWindJoint } from "../../shade/renderer/animation/foliage/FoliageWindJoint.js";
36
+ export { FoliageWindRig } from "../../shade/renderer/animation/foliage/FoliageWindRig.js";
37
+ export { chunk_foliage_wind_step } from "../../shade/renderer/animation/foliage/chunk_foliage_wind_step.js";
38
+ export { FoliageWindRigs } from "../../engine/graphics3/animation/FoliageWindRigs.js";
39
+ export { FoliageWindSystem } from "../../engine/graphics3/FoliageWindSystem.js";
40
+
41
+ export { TreeLODAsset } from "./asset/TreeLODAsset.js";
42
+ export { TreeAsset } from "./asset/TreeAsset.js";
43
+ export { generate_tree } from "./asset/generate_tree.js";
44
+ export { place_tree, unplace_tree } from "./asset/place_tree.js";
@@ -1 +1 @@
1
- {"version":3,"file":"make_bark_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_bark_material.js"],"names":[],"mappings":"AAoLA;;;;;;;;;;;;GAYG;AACH,0CANW,YAAY,GAAC,MAAM,EAAE,KACrB,MAAM,KACN,MAAM,OACN,kBAAkB,SAClB,MAAM,QAsEhB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,4CAJW,kBAAkB,MAAO,SACzB,MAAM,GACJ,qBAAqB,CAygBjC;mCAlxBkC,iCAAiC;sCAR9B,2DAA2D"}
1
+ {"version":3,"file":"make_bark_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_bark_material.js"],"names":[],"mappings":"AA6GA;;;;;;;;;;;;GAYG;AACH,0CANW,YAAY,GAAC,MAAM,EAAE,KACrB,MAAM,KACN,MAAM,OACN,kBAAkB,SAClB,MAAM,QAsEhB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,4CAJW,kBAAkB,MAAO,SACzB,MAAM,GACJ,qBAAqB,CAwgBjC;mCAzsBkC,iCAAiC;sCAR9B,2DAA2D"}