@woosh/meep-engine 3.64.1 → 3.67.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/CHANGELOG.md +85 -0
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BinaryBuffer.d.ts +5 -0
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +39 -5
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +65 -6
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +451 -101
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +4 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +4 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts +8 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +45 -10
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +237 -119
- package/src/engine/graphics/ecs/grass/GrassSpecies.d.ts +143 -0
- package/src/engine/graphics/ecs/grass/GrassSpecies.d.ts.map +1 -0
- package/src/engine/graphics/ecs/grass/GrassSpecies.js +189 -0
- package/src/engine/graphics/ecs/grass/GrassSurface.d.ts +25 -0
- package/src/engine/graphics/ecs/grass/GrassSurface.d.ts.map +1 -0
- package/src/engine/graphics/ecs/grass/GrassSurface.js +32 -0
- package/src/engine/graphics/ecs/grass/GroundCover.d.ts +68 -0
- package/src/engine/graphics/ecs/grass/GroundCover.d.ts.map +1 -0
- package/src/engine/graphics/ecs/grass/GroundCover.js +85 -0
- package/src/engine/graphics3/GrassSurfaceSystem.d.ts +153 -0
- package/src/engine/graphics3/GrassSurfaceSystem.d.ts.map +1 -0
- package/src/engine/graphics3/GrassSurfaceSystem.js +1076 -0
- package/src/engine/graphics3/GroundCoverSystem.d.ts +33 -0
- package/src/engine/graphics3/GroundCoverSystem.d.ts.map +1 -0
- package/src/engine/graphics3/GroundCoverSystem.js +58 -0
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +372 -110
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +6 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +9 -2
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +325 -140
- package/src/engine/network/sim/SimActionExecutor.d.ts +4 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +65 -9
- package/src/engine/network/state/PredictionHistory.d.ts.map +1 -1
- package/src/engine/network/state/PredictionHistory.js +6 -1
- package/src/engine/network/time/AdaptiveRenderDelay.d.ts +25 -14
- package/src/engine/network/time/AdaptiveRenderDelay.d.ts.map +1 -1
- package/src/engine/network/time/AdaptiveRenderDelay.js +38 -20
- package/src/engine/network/time/RenderPlayout.d.ts +23 -3
- package/src/engine/network/time/RenderPlayout.d.ts.map +1 -1
- package/src/engine/network/time/RenderPlayout.js +40 -4
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.d.ts +5 -1
- package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.js +27 -1
- package/src/format/lut/cube/CubeLut.d.ts +38 -0
- package/src/format/lut/cube/CubeLut.d.ts.map +1 -0
- package/src/format/lut/cube/CubeLut.js +23 -0
- package/src/format/lut/cube/cube_read.d.ts +23 -0
- package/src/format/lut/cube/cube_read.d.ts.map +1 -0
- package/src/format/lut/cube/cube_read.js +199 -0
- package/src/format/lut/cube/cube_write.d.ts +15 -0
- package/src/format/lut/cube/cube_write.d.ts.map +1 -0
- package/src/format/lut/cube/cube_write.js +90 -0
- package/src/shade/device/shader/ShaderModuleCompiler.d.ts +2 -0
- package/src/shade/device/shader/ShaderModuleCompiler.d.ts.map +1 -1
- package/src/shade/device/shader/ShaderModuleCompiler.js +25 -2
- package/src/shade/playground/grass_surfaces/index.html +75 -0
- package/src/shade/playground/grass_surfaces/main.d.ts +2 -0
- package/src/shade/playground/grass_surfaces/main.d.ts.map +1 -0
- package/src/shade/playground/grass_surfaces/main.js +593 -0
- package/src/shade/playground/grass_surfaces/read_grass_surfaces.d.ts +62 -0
- package/src/shade/playground/grass_surfaces/read_grass_surfaces.d.ts.map +1 -0
- package/src/shade/playground/grass_surfaces/read_grass_surfaces.js +188 -0
- package/src/shade/playground/probe_clipmap/README.md +1 -0
- package/src/shade/playground/probe_clipmap/index.html +5 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +7 -0
- package/src/shade/playground/probe_clipmap_box/README.md +5 -1
- package/src/shade/playground/probe_clipmap_box/index.html +12 -0
- package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap_box/main.js +15 -0
- package/src/shade/playground/probe_clipmap_box/scene.d.ts +8 -1
- package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap_box/scene.js +74 -6
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +59 -55
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts +73 -4
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +113 -7
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts +12 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.js +12 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +15 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.js +31 -3
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +25 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +51 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +2 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.js +6 -3
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +3 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.js +7 -3
- package/src/shade/renderer/extension/ViewTextures.d.ts +12 -5
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +19 -5
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +3 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +6 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +7 -0
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +10 -0
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +7 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +46 -15
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +3 -2
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +3 -2
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_sort_morton.d.ts +22 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_sort_morton.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_sort_morton.js +247 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +50 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +101 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +8 -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 +12 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +12 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +35 -29
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_clipmap.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +6 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +6 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +15 -14
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +19 -2
- 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 +128 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +19 -1
- 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 +27 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts +19 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.js +35 -11
- 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 +3 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_box_cages.d.ts +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_box_cages.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_box_cages.js +174 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +10 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_parallax.d.ts +31 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_parallax.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_parallax.js +54 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +8 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +10 -21
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +7 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +33 -29
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/graph_probe_clipmap_want_meshlets.d.ts +28 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/graph_probe_clipmap_want_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/graph_probe_clipmap_want_meshlets.js +138 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +13 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +18 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.js +2 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.js +15 -30
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -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 +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +11 -0
- 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 +29 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_late.d.ts +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_late.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_late.js +126 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_meshlets.d.ts +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_meshlets.js +221 -0
- package/src/shade/renderer/gpu_primitive/age_eviction/chunk_age_eviction.d.ts +40 -0
- package/src/shade/renderer/gpu_primitive/age_eviction/chunk_age_eviction.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/age_eviction/chunk_age_eviction.js +86 -0
- package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts +135 -0
- package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/GPUGrassBlades.js +676 -0
- package/src/shade/renderer/grass/blade/GRASS_BLADE.d.ts +145 -0
- package/src/shade/renderer/grass/blade/GRASS_BLADE.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/GRASS_BLADE.js +179 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade.d.ts +63 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade.js +244 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade_wind.d.ts +58 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade_wind.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/chunk_grass_blade_wind.js +174 -0
- package/src/shade/renderer/grass/blade/grass_blade_id_draw.d.ts +25 -0
- package/src/shade/renderer/grass/blade/grass_blade_id_draw.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/grass_blade_id_draw.js +133 -0
- package/src/shade/renderer/grass/blade/grass_blade_mechanics.d.ts +80 -0
- package/src/shade/renderer/grass/blade/grass_blade_mechanics.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/grass_blade_mechanics.js +92 -0
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +29 -0
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/grass_blade_resolve.js +175 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_draw_args.d.ts +14 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_draw_args.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_draw_args.js +45 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_expand.d.ts +61 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_expand.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/shader_grass_blade_expand.js +340 -0
- package/src/shade/renderer/grass/blade/shader_grass_cell_count.d.ts +46 -0
- package/src/shade/renderer/grass/blade/shader_grass_cell_count.d.ts.map +1 -0
- package/src/shade/renderer/grass/blade/shader_grass_cell_count.js +280 -0
- package/src/shade/renderer/grass/population/chunk_grass_population.d.ts +60 -0
- package/src/shade/renderer/grass/population/chunk_grass_population.d.ts.map +1 -0
- package/src/shade/renderer/grass/population/chunk_grass_population.js +171 -0
- package/src/shade/renderer/grass/press/GPUGrassPress.d.ts +99 -0
- package/src/shade/renderer/grass/press/GPUGrassPress.d.ts.map +1 -0
- package/src/shade/renderer/grass/press/GPUGrassPress.js +436 -0
- package/src/shade/renderer/grass/press/GRASS_PRESS.d.ts +179 -0
- package/src/shade/renderer/grass/press/GRASS_PRESS.d.ts.map +1 -0
- package/src/shade/renderer/grass/press/GRASS_PRESS.js +217 -0
- package/src/shade/renderer/grass/press/chunk_grass_press.d.ts +65 -0
- package/src/shade/renderer/grass/press/chunk_grass_press.d.ts.map +1 -0
- package/src/shade/renderer/grass/press/chunk_grass_press.js +296 -0
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts +31 -0
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -0
- package/src/shade/renderer/grass/press/shader_grass_press_mark.js +169 -0
- package/src/shade/renderer/grass/press/shader_grass_press_stamp.d.ts +27 -0
- package/src/shade/renderer/grass/press/shader_grass_press_stamp.d.ts.map +1 -0
- package/src/shade/renderer/grass/press/shader_grass_press_stamp.js +183 -0
- package/src/shade/renderer/grass/surface/GPUGrassSurfaces.d.ts +193 -0
- package/src/shade/renderer/grass/surface/GPUGrassSurfaces.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/GPUGrassSurfaces.js +1253 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE.d.ts +211 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE.js +241 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE_VIEW.d.ts +82 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE_VIEW.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/GRASS_SURFACE_VIEW.js +111 -0
- package/src/shade/renderer/grass/surface/chunk_grass_column_cross.d.ts +39 -0
- package/src/shade/renderer/grass/surface/chunk_grass_column_cross.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_column_cross.js +85 -0
- package/src/shade/renderer/grass/surface/chunk_grass_directory.d.ts +29 -0
- package/src/shade/renderer/grass/surface/chunk_grass_directory.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_directory.js +112 -0
- package/src/shade/renderer/grass/surface/chunk_grass_slot.d.ts +27 -0
- package/src/shade/renderer/grass/surface/chunk_grass_slot.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_slot.js +50 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_frame.d.ts +21 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_frame.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_frame.js +41 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_window.d.ts +32 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_window.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surface_window.js +136 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surfel.d.ts +37 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surfel.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_surfel.js +85 -0
- package/src/shade/renderer/grass/surface/chunk_grass_tile.d.ts +25 -0
- package/src/shade/renderer/grass/surface/chunk_grass_tile.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/chunk_grass_tile.js +52 -0
- package/src/shade/renderer/grass/surface/shader_grass_directory_fill.d.ts +23 -0
- package/src/shade/renderer/grass/surface/shader_grass_directory_fill.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_directory_fill.js +87 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.d.ts +43 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.js +265 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake_command.d.ts +13 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake_command.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake_command.js +49 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_invalidate.d.ts +62 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_invalidate.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_invalidate.js +162 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_retire.d.ts +40 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_retire.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_retire.js +155 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_schedule.d.ts +19 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_schedule.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_schedule.js +58 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_want.d.ts +30 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_want.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_want.js +251 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_window_count.d.ts +21 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_window_count.d.ts.map +1 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_window_count.js +75 -0
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +35 -9
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +81 -11
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +4 -1
- 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 +4 -23
- package/src/shade/renderer/postprocess/velocity/view_velocity_matrices.d.ts +12 -0
- package/src/shade/renderer/postprocess/velocity/view_velocity_matrices.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/velocity/view_velocity_matrices.js +29 -0
- 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 +22 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +3 -0
- package/src/shade/renderer/scene/GRASS_SURFACE_PARAMS_STRUCT.d.ts +27 -0
- package/src/shade/renderer/scene/GRASS_SURFACE_PARAMS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/scene/GRASS_SURFACE_PARAMS_STRUCT.js +38 -0
- package/src/shade/renderer/scene/MESH_GROUND_COVER_STRUCT.d.ts +28 -0
- package/src/shade/renderer/scene/MESH_GROUND_COVER_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/scene/MESH_GROUND_COVER_STRUCT.js +58 -0
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +8 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +7 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +4 -4
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +86 -5
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +65 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +136 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts +37 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.js +148 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_line_span.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_line_span.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_line_span.js +169 -0
- package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.d.ts +18 -0
- package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.d.ts.map +1 -1
- package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.js +28 -0
- package/src/shade/renderer/texture/atlas/tile_atlas_slot_shift.d.ts +13 -0
- package/src/shade/renderer/texture/atlas/tile_atlas_slot_shift.d.ts.map +1 -0
- package/src/shade/renderer/texture/atlas/tile_atlas_slot_shift.js +22 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +4 -0
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +52 -5
- package/src/shade/renderer/wind/GPUSceneWind.d.ts.map +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +164 -8
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts +3 -1
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.js +3 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +2 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +18 -13
- package/src/shade/renderer/wind/chunk_wind_field_sample_previous.d.ts +13 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_previous.d.ts.map +1 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_previous.js +23 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts +1 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.js +6 -1
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts +11 -0
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts.map +1 -1
- package/src/shade/renderer/wind/wind_field_add_resources.js +15 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +2 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts +0 -11
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.js +0 -56
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What grows on ground: one kind of grass, as content. Shared by every {@link GroundCover} that names it.
|
|
3
|
+
*
|
|
4
|
+
* Everything here is physical, in SI units, and describes the plant, not how well it is drawn: drawing
|
|
5
|
+
* fewer, wider blades of the same species at a distance is the renderer's business.
|
|
6
|
+
*
|
|
7
|
+
* After changing a field in place, dispatch {@link onChanged}.
|
|
8
|
+
*/
|
|
9
|
+
export class GrassSpecies {
|
|
10
|
+
/**
|
|
11
|
+
* @param {object} [options]
|
|
12
|
+
* @param {number} [options.blade_length]
|
|
13
|
+
* @param {number} [options.blade_width]
|
|
14
|
+
* @param {number} [options.density]
|
|
15
|
+
* @returns {GrassSpecies}
|
|
16
|
+
*/
|
|
17
|
+
static from({ blade_length, blade_width, density }?: {
|
|
18
|
+
blade_length?: number;
|
|
19
|
+
blade_width?: number;
|
|
20
|
+
density?: number;
|
|
21
|
+
}): GrassSpecies;
|
|
22
|
+
/**
|
|
23
|
+
* Length of a blade from root to tip, metres.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
blade_length: number;
|
|
27
|
+
/**
|
|
28
|
+
* Width of a blade at its root, metres.
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
blade_width: number;
|
|
32
|
+
/**
|
|
33
|
+
* Blades in a square metre of fully covered ground.
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
density: number;
|
|
37
|
+
/**
|
|
38
|
+
* A blade's colour at its root and at its tip, linear RGB.
|
|
39
|
+
* @type {number[]}
|
|
40
|
+
*/
|
|
41
|
+
color_root: number[];
|
|
42
|
+
/** @type {number[]} */
|
|
43
|
+
color_tip: number[];
|
|
44
|
+
/**
|
|
45
|
+
* How far a blade's colour strays from its species', as a share of it: a blade's own, the same every frame.
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
tint: number;
|
|
49
|
+
/**
|
|
50
|
+
* Roughness of a blade's surface.
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
roughness: number;
|
|
54
|
+
/**
|
|
55
|
+
* How much of {@link blade_length} a blade can lack, 0 to 1: blades are that share shorter at most.
|
|
56
|
+
* @type {number}
|
|
57
|
+
*/
|
|
58
|
+
length_variation: number;
|
|
59
|
+
/**
|
|
60
|
+
* The most a blade leans from upright at its root, in still air, radians.
|
|
61
|
+
* @type {number}
|
|
62
|
+
*/
|
|
63
|
+
lean: number;
|
|
64
|
+
/**
|
|
65
|
+
* The most a blade's tip turns further than its root leans, in still air, radians.
|
|
66
|
+
* @type {number}
|
|
67
|
+
*/
|
|
68
|
+
curl: number;
|
|
69
|
+
/**
|
|
70
|
+
* How far a blade's normal turns towards its edges, 0 for a flat blade: the tangent of the angle at an edge.
|
|
71
|
+
* @type {number}
|
|
72
|
+
*/
|
|
73
|
+
roundness: number;
|
|
74
|
+
/**
|
|
75
|
+
* Young's modulus of the blade in bending, Pa.
|
|
76
|
+
* @type {number}
|
|
77
|
+
*/
|
|
78
|
+
elastic_modulus: number;
|
|
79
|
+
/**
|
|
80
|
+
* Depth of the blade's section in bending, metres: the thickness of a flat strip as stiff as the
|
|
81
|
+
* blade. A folded or keeled blade, or one that stands in its sheath, is deeper than its leaf is thick.
|
|
82
|
+
* @type {number}
|
|
83
|
+
*/
|
|
84
|
+
blade_depth: number;
|
|
85
|
+
/**
|
|
86
|
+
* How unsteady the wind a blade feels is, beyond what the scene's wind resolves: the size of its
|
|
87
|
+
* swings as a share of its speed. A blade sways with it at its own frequency. 0 for none.
|
|
88
|
+
* @type {number}
|
|
89
|
+
*/
|
|
90
|
+
turbulence: number;
|
|
91
|
+
/**
|
|
92
|
+
* How long a blade that was pressed down takes to stand back up, seconds: what is left of its lean
|
|
93
|
+
* falls by a factor of `e` in this time. Must be positive.
|
|
94
|
+
* @type {number}
|
|
95
|
+
*/
|
|
96
|
+
recovery_time: number;
|
|
97
|
+
/**
|
|
98
|
+
* Dispatched by whoever edits the species in place.
|
|
99
|
+
* @type {Signal}
|
|
100
|
+
*/
|
|
101
|
+
onChanged: Signal;
|
|
102
|
+
toJSON(): {
|
|
103
|
+
blade_length: number;
|
|
104
|
+
blade_width: number;
|
|
105
|
+
density: number;
|
|
106
|
+
color_root: number[];
|
|
107
|
+
color_tip: number[];
|
|
108
|
+
tint: number;
|
|
109
|
+
roughness: number;
|
|
110
|
+
length_variation: number;
|
|
111
|
+
lean: number;
|
|
112
|
+
curl: number;
|
|
113
|
+
roundness: number;
|
|
114
|
+
elastic_modulus: number;
|
|
115
|
+
blade_depth: number;
|
|
116
|
+
turbulence: number;
|
|
117
|
+
recovery_time: number;
|
|
118
|
+
};
|
|
119
|
+
fromJSON({ blade_length, blade_width, density, color_root, color_tip, tint, roughness, length_variation, lean, curl, roundness, elastic_modulus, blade_depth, turbulence, recovery_time, }: {
|
|
120
|
+
blade_length?: number;
|
|
121
|
+
blade_width?: number;
|
|
122
|
+
density?: number;
|
|
123
|
+
color_root?: number[];
|
|
124
|
+
color_tip?: number[];
|
|
125
|
+
tint?: number;
|
|
126
|
+
roughness?: number;
|
|
127
|
+
length_variation?: number;
|
|
128
|
+
lean?: number;
|
|
129
|
+
curl?: number;
|
|
130
|
+
roundness?: number;
|
|
131
|
+
elastic_modulus?: number;
|
|
132
|
+
blade_depth?: number;
|
|
133
|
+
turbulence?: number;
|
|
134
|
+
recovery_time?: number;
|
|
135
|
+
}): void;
|
|
136
|
+
/**
|
|
137
|
+
* @readonly
|
|
138
|
+
* @type {boolean}
|
|
139
|
+
*/
|
|
140
|
+
readonly isGrassSpecies: boolean;
|
|
141
|
+
}
|
|
142
|
+
import Signal from "../../../../core/events/signal/Signal.js";
|
|
143
|
+
//# sourceMappingURL=GrassSpecies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrassSpecies.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/grass/GrassSpecies.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH;IAiGI;;;;;;OAMG;IACH;QAL4B,YAAY,GAA7B,MAAM;QACW,WAAW,GAA5B,MAAM;QACW,OAAO,GAAxB,MAAM;QACJ,YAAY,CAcxB;IAnHD;;;OAGG;IACH,cAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,aAFU,MAAM,CAEI;IAEpB;;;OAGG;IACH,SAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEc;IAEhC,uBAAuB;IACvB,WADW,MAAM,EAAE,CACY;IAE/B;;;OAGG;IACH,MAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,WAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,kBAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,MAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,MAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,WAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,aAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,YAFU,MAAM,CAEE;IAElB;;;;OAIG;IACH,eAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,WAFU,MAAM,CAES;IAuBzB;;;;;;;;;;;;;;;;MAkBC;IAED;;;;;;;;;;;;;;;;aAgCC;IAGL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CANpC;mBArLkB,0CAA0C"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import Signal from "../../../../core/events/signal/Signal.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* What grows on ground: one kind of grass, as content. Shared by every {@link GroundCover} that names it.
|
|
6
|
+
*
|
|
7
|
+
* Everything here is physical, in SI units, and describes the plant, not how well it is drawn: drawing
|
|
8
|
+
* fewer, wider blades of the same species at a distance is the renderer's business.
|
|
9
|
+
*
|
|
10
|
+
* After changing a field in place, dispatch {@link onChanged}.
|
|
11
|
+
*/
|
|
12
|
+
export class GrassSpecies {
|
|
13
|
+
/**
|
|
14
|
+
* Length of a blade from root to tip, metres.
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
blade_length = 0.4;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Width of a blade at its root, metres.
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
blade_width = 0.015;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Blades in a square metre of fully covered ground.
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
density = 300;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A blade's colour at its root and at its tip, linear RGB.
|
|
33
|
+
* @type {number[]}
|
|
34
|
+
*/
|
|
35
|
+
color_root = [0.04, 0.10, 0.02];
|
|
36
|
+
|
|
37
|
+
/** @type {number[]} */
|
|
38
|
+
color_tip = [0.20, 0.36, 0.08];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* How far a blade's colour strays from its species', as a share of it: a blade's own, the same every frame.
|
|
42
|
+
* @type {number}
|
|
43
|
+
*/
|
|
44
|
+
tint = 0.15;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Roughness of a blade's surface.
|
|
48
|
+
* @type {number}
|
|
49
|
+
*/
|
|
50
|
+
roughness = 0.6;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* How much of {@link blade_length} a blade can lack, 0 to 1: blades are that share shorter at most.
|
|
54
|
+
* @type {number}
|
|
55
|
+
*/
|
|
56
|
+
length_variation = 0.35;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The most a blade leans from upright at its root, in still air, radians.
|
|
60
|
+
* @type {number}
|
|
61
|
+
*/
|
|
62
|
+
lean = 0.35;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The most a blade's tip turns further than its root leans, in still air, radians.
|
|
66
|
+
* @type {number}
|
|
67
|
+
*/
|
|
68
|
+
curl = 0.9;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* How far a blade's normal turns towards its edges, 0 for a flat blade: the tangent of the angle at an edge.
|
|
72
|
+
* @type {number}
|
|
73
|
+
*/
|
|
74
|
+
roundness = 0.5;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Young's modulus of the blade in bending, Pa.
|
|
78
|
+
* @type {number}
|
|
79
|
+
*/
|
|
80
|
+
elastic_modulus = 5e8;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Depth of the blade's section in bending, metres: the thickness of a flat strip as stiff as the
|
|
84
|
+
* blade. A folded or keeled blade, or one that stands in its sheath, is deeper than its leaf is thick.
|
|
85
|
+
* @type {number}
|
|
86
|
+
*/
|
|
87
|
+
blade_depth = 1e-3;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* How unsteady the wind a blade feels is, beyond what the scene's wind resolves: the size of its
|
|
91
|
+
* swings as a share of its speed. A blade sways with it at its own frequency. 0 for none.
|
|
92
|
+
* @type {number}
|
|
93
|
+
*/
|
|
94
|
+
turbulence = 0.28;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* How long a blade that was pressed down takes to stand back up, seconds: what is left of its lean
|
|
98
|
+
* falls by a factor of `e` in this time. Must be positive.
|
|
99
|
+
* @type {number}
|
|
100
|
+
*/
|
|
101
|
+
recovery_time = 2;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Dispatched by whoever edits the species in place.
|
|
105
|
+
* @type {Signal}
|
|
106
|
+
*/
|
|
107
|
+
onChanged = new Signal();
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @param {object} [options]
|
|
111
|
+
* @param {number} [options.blade_length]
|
|
112
|
+
* @param {number} [options.blade_width]
|
|
113
|
+
* @param {number} [options.density]
|
|
114
|
+
* @returns {GrassSpecies}
|
|
115
|
+
*/
|
|
116
|
+
static from({ blade_length = 0.4, blade_width = 0.015, density = 300 } = {}) {
|
|
117
|
+
assert.greaterThan(blade_length, 0, 'blade_length');
|
|
118
|
+
assert.greaterThan(blade_width, 0, 'blade_width');
|
|
119
|
+
assert.greaterThan(density, 0, 'density');
|
|
120
|
+
|
|
121
|
+
const r = new GrassSpecies();
|
|
122
|
+
|
|
123
|
+
r.blade_length = blade_length;
|
|
124
|
+
r.blade_width = blade_width;
|
|
125
|
+
r.density = density;
|
|
126
|
+
|
|
127
|
+
return r;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
toJSON() {
|
|
131
|
+
return {
|
|
132
|
+
blade_length: this.blade_length,
|
|
133
|
+
blade_width: this.blade_width,
|
|
134
|
+
density: this.density,
|
|
135
|
+
color_root: this.color_root.slice(),
|
|
136
|
+
color_tip: this.color_tip.slice(),
|
|
137
|
+
tint: this.tint,
|
|
138
|
+
roughness: this.roughness,
|
|
139
|
+
length_variation: this.length_variation,
|
|
140
|
+
lean: this.lean,
|
|
141
|
+
curl: this.curl,
|
|
142
|
+
roundness: this.roundness,
|
|
143
|
+
elastic_modulus: this.elastic_modulus,
|
|
144
|
+
blade_depth: this.blade_depth,
|
|
145
|
+
turbulence: this.turbulence,
|
|
146
|
+
recovery_time: this.recovery_time,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
fromJSON({
|
|
151
|
+
blade_length = 0.4,
|
|
152
|
+
blade_width = 0.015,
|
|
153
|
+
density = 300,
|
|
154
|
+
color_root = [0.04, 0.10, 0.02],
|
|
155
|
+
color_tip = [0.20, 0.36, 0.08],
|
|
156
|
+
tint = 0.15,
|
|
157
|
+
roughness = 0.6,
|
|
158
|
+
length_variation = 0.35,
|
|
159
|
+
lean = 0.35,
|
|
160
|
+
curl = 0.9,
|
|
161
|
+
roundness = 0.5,
|
|
162
|
+
elastic_modulus = 5e8,
|
|
163
|
+
blade_depth = 1e-3,
|
|
164
|
+
turbulence = 0.28,
|
|
165
|
+
recovery_time = 2,
|
|
166
|
+
}) {
|
|
167
|
+
this.blade_length = blade_length;
|
|
168
|
+
this.blade_width = blade_width;
|
|
169
|
+
this.density = density;
|
|
170
|
+
this.color_root = color_root.slice();
|
|
171
|
+
this.color_tip = color_tip.slice();
|
|
172
|
+
this.tint = tint;
|
|
173
|
+
this.roughness = roughness;
|
|
174
|
+
this.length_variation = length_variation;
|
|
175
|
+
this.lean = lean;
|
|
176
|
+
this.curl = curl;
|
|
177
|
+
this.roundness = roundness;
|
|
178
|
+
this.elastic_modulus = elastic_modulus;
|
|
179
|
+
this.blade_depth = blade_depth;
|
|
180
|
+
this.turbulence = turbulence;
|
|
181
|
+
this.recovery_time = recovery_time;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @readonly
|
|
187
|
+
* @type {boolean}
|
|
188
|
+
*/
|
|
189
|
+
GrassSpecies.prototype.isGrassSpecies = true;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Makes its entity a grass surface: a group of mesh instances whose ground is sampled as one.
|
|
3
|
+
*
|
|
4
|
+
* The surface's frame is where the entity's `Transform64` is and how it is turned; the transform's scale
|
|
5
|
+
* is no part of it. The ground is sampled on a lattice in that frame, along the frame's up axis, so a
|
|
6
|
+
* surface that moves as one carries its grass with it.
|
|
7
|
+
*
|
|
8
|
+
* The members are the mesh entities whose {@link GroundCover} names this entity. A mesh entity that
|
|
9
|
+
* carries both components and names itself is a surface of one instance.
|
|
10
|
+
*
|
|
11
|
+
* The component holds nothing: which meshes belong is said by each of them.
|
|
12
|
+
*/
|
|
13
|
+
export class GrassSurface {
|
|
14
|
+
toJSON(): {};
|
|
15
|
+
fromJSON(json: any): void;
|
|
16
|
+
/**
|
|
17
|
+
* @readonly
|
|
18
|
+
* @type {boolean}
|
|
19
|
+
*/
|
|
20
|
+
readonly isGrassSurface: boolean;
|
|
21
|
+
}
|
|
22
|
+
export namespace GrassSurface {
|
|
23
|
+
let typeName: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=GrassSurface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrassSurface.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/grass/GrassSurface.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH;IACI,aAEC;IAED,0BACC;IASL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CAZpC;;kBAIS,MAAM"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Makes its entity a grass surface: a group of mesh instances whose ground is sampled as one.
|
|
3
|
+
*
|
|
4
|
+
* The surface's frame is where the entity's `Transform64` is and how it is turned; the transform's scale
|
|
5
|
+
* is no part of it. The ground is sampled on a lattice in that frame, along the frame's up axis, so a
|
|
6
|
+
* surface that moves as one carries its grass with it.
|
|
7
|
+
*
|
|
8
|
+
* The members are the mesh entities whose {@link GroundCover} names this entity. A mesh entity that
|
|
9
|
+
* carries both components and names itself is a surface of one instance.
|
|
10
|
+
*
|
|
11
|
+
* The component holds nothing: which meshes belong is said by each of them.
|
|
12
|
+
*/
|
|
13
|
+
export class GrassSurface {
|
|
14
|
+
toJSON() {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
fromJSON(json) {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @readonly
|
|
24
|
+
* @type {string}
|
|
25
|
+
*/
|
|
26
|
+
GrassSurface.typeName = "GrassSurface";
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @readonly
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
*/
|
|
32
|
+
GrassSurface.prototype.isGrassSurface = true;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Makes its mesh entity ground of a grass surface, and says what grows on it.
|
|
3
|
+
*
|
|
4
|
+
* The entity carries a `ShadedGeometry` and a `Transform64`. Its faces become ground of the surface
|
|
5
|
+
* {@link surface} names: columns of that surface's lattice find them, and they hide the ground of other
|
|
6
|
+
* members under them.
|
|
7
|
+
*
|
|
8
|
+
* **Membership is its own relation.** It says which surface a mesh is sampled with, and nothing about
|
|
9
|
+
* where the mesh is (`TransformAttachment`) or how long it lives (`ParentEntity`); the three are free to
|
|
10
|
+
* name different entities, and a meadow of loose meshes needs no transform parent to be one surface.
|
|
11
|
+
*
|
|
12
|
+
* **A member with no species only hides ground**: a boulder, a path, the floor of a building. Nothing
|
|
13
|
+
* grows on it, and nothing grows through it.
|
|
14
|
+
*
|
|
15
|
+
* How densely the species grows across the mesh is painted in the red of the geometry's vertex colour, 1
|
|
16
|
+
* where there is none; {@link density} scales that.
|
|
17
|
+
*
|
|
18
|
+
* After changing {@link species} or {@link density} in place, dispatch {@link onChanged}.
|
|
19
|
+
*/
|
|
20
|
+
export class GroundCover {
|
|
21
|
+
/**
|
|
22
|
+
* @param {object} options
|
|
23
|
+
* @param {number} options.surface the surface's entity
|
|
24
|
+
* @param {GrassSpecies|null} [options.species]
|
|
25
|
+
* @param {number} [options.density]
|
|
26
|
+
* @returns {GroundCover}
|
|
27
|
+
*/
|
|
28
|
+
static from({ surface, species, density }: {
|
|
29
|
+
surface: number;
|
|
30
|
+
species?: GrassSpecies | null;
|
|
31
|
+
density?: number;
|
|
32
|
+
}): GroundCover;
|
|
33
|
+
/**
|
|
34
|
+
* The entity whose {@link GrassSurface} this mesh is ground of.
|
|
35
|
+
* Must not be mutated (changed) while the component is attached to a dataset: remove the component and
|
|
36
|
+
* add it back to move a mesh to another surface.
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
surface: number;
|
|
41
|
+
/**
|
|
42
|
+
* What grows on the mesh, or null for a member that only hides ground.
|
|
43
|
+
*
|
|
44
|
+
* @type {GrassSpecies|null}
|
|
45
|
+
*/
|
|
46
|
+
species: GrassSpecies | null;
|
|
47
|
+
/**
|
|
48
|
+
* Scale on the mesh's painted density, 0 to 1.
|
|
49
|
+
*
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
density: number;
|
|
53
|
+
/**
|
|
54
|
+
* Dispatched by whoever edits the component in place.
|
|
55
|
+
* @type {Signal}
|
|
56
|
+
*/
|
|
57
|
+
onChanged: Signal;
|
|
58
|
+
/**
|
|
59
|
+
* @readonly
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
*/
|
|
62
|
+
readonly isGroundCover: boolean;
|
|
63
|
+
}
|
|
64
|
+
export namespace GroundCover {
|
|
65
|
+
let typeName: string;
|
|
66
|
+
}
|
|
67
|
+
import Signal from "../../../../core/events/signal/Signal.js";
|
|
68
|
+
//# sourceMappingURL=GroundCover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroundCover.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/grass/GroundCover.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IA8BI;;;;;;OAMG;IACH;QAL2B,OAAO,EAAvB,MAAM;QACsB,OAAO,GAAnC,eAAa,IAAI;QACA,OAAO,GAAxB,MAAM;QACJ,WAAW,CAcvB;IAhDD;;;;;;OAMG;IACH,SAFU,MAAM,CAEH;IAEb;;;;OAIG;IACH,SAFU,eAAa,IAAI,CAEZ;IAEf;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,WAFU,MAAM,CAES;IA8B7B;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CAZlC;;kBAIS,MAAM;;mBA3EG,0CAA0C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import Signal from "../../../../core/events/signal/Signal.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Makes its mesh entity ground of a grass surface, and says what grows on it.
|
|
6
|
+
*
|
|
7
|
+
* The entity carries a `ShadedGeometry` and a `Transform64`. Its faces become ground of the surface
|
|
8
|
+
* {@link surface} names: columns of that surface's lattice find them, and they hide the ground of other
|
|
9
|
+
* members under them.
|
|
10
|
+
*
|
|
11
|
+
* **Membership is its own relation.** It says which surface a mesh is sampled with, and nothing about
|
|
12
|
+
* where the mesh is (`TransformAttachment`) or how long it lives (`ParentEntity`); the three are free to
|
|
13
|
+
* name different entities, and a meadow of loose meshes needs no transform parent to be one surface.
|
|
14
|
+
*
|
|
15
|
+
* **A member with no species only hides ground**: a boulder, a path, the floor of a building. Nothing
|
|
16
|
+
* grows on it, and nothing grows through it.
|
|
17
|
+
*
|
|
18
|
+
* How densely the species grows across the mesh is painted in the red of the geometry's vertex colour, 1
|
|
19
|
+
* where there is none; {@link density} scales that.
|
|
20
|
+
*
|
|
21
|
+
* After changing {@link species} or {@link density} in place, dispatch {@link onChanged}.
|
|
22
|
+
*/
|
|
23
|
+
export class GroundCover {
|
|
24
|
+
/**
|
|
25
|
+
* The entity whose {@link GrassSurface} this mesh is ground of.
|
|
26
|
+
* Must not be mutated (changed) while the component is attached to a dataset: remove the component and
|
|
27
|
+
* add it back to move a mesh to another surface.
|
|
28
|
+
*
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
surface = -1;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* What grows on the mesh, or null for a member that only hides ground.
|
|
35
|
+
*
|
|
36
|
+
* @type {GrassSpecies|null}
|
|
37
|
+
*/
|
|
38
|
+
species = null;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Scale on the mesh's painted density, 0 to 1.
|
|
42
|
+
*
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
density = 1;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Dispatched by whoever edits the component in place.
|
|
49
|
+
* @type {Signal}
|
|
50
|
+
*/
|
|
51
|
+
onChanged = new Signal();
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @param {object} options
|
|
55
|
+
* @param {number} options.surface the surface's entity
|
|
56
|
+
* @param {GrassSpecies|null} [options.species]
|
|
57
|
+
* @param {number} [options.density]
|
|
58
|
+
* @returns {GroundCover}
|
|
59
|
+
*/
|
|
60
|
+
static from({ surface, species = null, density = 1 }) {
|
|
61
|
+
assert.isNonNegativeInteger(surface, 'surface');
|
|
62
|
+
assert.greaterThanOrEqual(density, 0, 'density');
|
|
63
|
+
assert.lessThanOrEqual(density, 1, 'density');
|
|
64
|
+
|
|
65
|
+
const r = new GroundCover();
|
|
66
|
+
|
|
67
|
+
r.surface = surface;
|
|
68
|
+
r.species = species;
|
|
69
|
+
r.density = density;
|
|
70
|
+
|
|
71
|
+
return r;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @readonly
|
|
77
|
+
* @type {string}
|
|
78
|
+
*/
|
|
79
|
+
GroundCover.typeName = "GroundCover";
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @readonly
|
|
83
|
+
* @type {boolean}
|
|
84
|
+
*/
|
|
85
|
+
GroundCover.prototype.isGroundCover = true;
|