@woosh/meep-engine 3.60.3 → 3.60.5
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 +2602 -0
- package/CONTRIBUTING.md +7 -0
- package/MIGRATION_2_TO_3.md +136 -0
- package/SECURITY.md +4 -0
- package/editor/EditorCameraNavigation.d.ts +2 -1
- package/editor/EditorCameraNavigation.d.ts.map +1 -1
- package/editor/EditorCameraNavigation.js +51 -57
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +3 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +6 -0
- package/package.json +6 -2
- package/src/engine/EngineHarness.d.ts +3 -9
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +6 -8
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +9 -6
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +44 -71
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts +64 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.js +187 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts +86 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.js +319 -0
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +34 -10
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +116 -30
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -7
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +1 -37
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +1 -2
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.d.ts +14 -0
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.js +22 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +19 -3
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +31 -4
- package/src/engine/graphics/ecs/trail3d/advance_trail.js +1 -1
- package/src/engine/graphics/ecs/water/Water.d.ts +8 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +8 -0
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +5 -5
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +6 -6
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +731 -734
- package/src/engine/graphics3/decal/DecalTileShader.d.ts +61 -0
- package/src/engine/graphics3/decal/DecalTileShader.d.ts.map +1 -0
- package/src/engine/graphics3/decal/DecalTileShader.js +138 -0
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts +10 -4
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +149 -44
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts +25 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts.map +1 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.js +55 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts +22 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.js +70 -0
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts +7 -5
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +48 -44
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts +12 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.js +78 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts +11 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.js +80 -0
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +10 -0
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +1 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +13 -1
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts +13 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts.map +1 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.js +23 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts +4 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -45
- package/src/engine/physics/cloth/ecs/cloth_geodesic.d.ts +2 -2
- package/src/engine/physics/cloth/ecs/cloth_geodesic.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- 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 +16 -2
- package/src/shade/playground/vgeo_scene/README.md +1 -1
- package/src/shade/playground/water_refraction/README.md +5 -6
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +7 -5
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +4 -6
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +34 -36
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +162 -163
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +1 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.js +1 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +1 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -164
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +4 -4
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +4 -4
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +2 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +18 -1
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +2 -2
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts +4 -5
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.js +6 -7
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +2 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +5 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +10 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +12 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +4 -4
- 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 +50 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +6 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +17 -0
- 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 +20 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.d.ts +18 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.js +42 -0
- 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 +5 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +4 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +13 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +52 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +250 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -7
- package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
- package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
- package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.d.ts +39 -0
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.js +119 -0
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +15 -7
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +66 -83
- package/src/shade/renderer/light/environment/graph_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/graph_filter_environment_map.js +15 -6
- package/src/shade/renderer/light/environment/shader_blur_environment_map.d.ts +3 -0
- package/src/shade/renderer/light/environment/shader_blur_environment_map.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_blur_environment_map.js +111 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.d.ts +3 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.js +128 -0
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +0 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +7 -0
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +11 -0
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -3
- package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.js +1 -3
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.d.ts +5 -6
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.js +9 -10
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +48 -49
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +12 -16
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +246 -246
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts +1 -2
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.js +34 -35
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +2 -2
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +2 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_compute_extinction.js +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +1 -1
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.d.ts +3 -3
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.js +3 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts +9 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.js +9 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts +4 -4
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.js +5 -5
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts +1 -2
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.js +1 -2
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.d.ts +14 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.js +19 -6
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.d.ts +10 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.js +14 -6
- package/src/shade/renderer/shader/chunk/random/murmur/chunk_murmur3_vec3u.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/random/murmur/chunk_murmur3_vec3u.js +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.d.ts +2 -3
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.js +7 -8
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_LOAD_FACTOR.d.ts +1 -1
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_LOAD_FACTOR.js +12 -12
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +2 -2
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VSMPageManager.js +3 -4
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +22 -13
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +7 -7
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts +0 -19
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts.map +1 -1
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.js +2 -52
- package/editor/REWORK_PLAN_2026_08.md +0 -692
- package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
- package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
- package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
- package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
- package/src/REVIEW_2026_08_06/adv-core.md +0 -511
- package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
- package/src/REVIEW_2026_08_06/adv-view.md +0 -446
- package/src/REVIEW_2026_08_06/api-core.md +0 -296
- package/src/REVIEW_2026_08_06/api-engine.md +0 -195
- package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
- package/src/REVIEW_2026_08_06/core-binary.md +0 -348
- package/src/REVIEW_2026_08_06/core-collection.md +0 -376
- package/src/REVIEW_2026_08_06/core-math.md +0 -221
- package/src/REVIEW_2026_08_06/core-process.md +0 -266
- package/src/REVIEW_2026_08_06/core-science.md +0 -223
- package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
- package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
- package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
- package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
- package/src/REVIEW_2026_08_06/engine-input.md +0 -197
- package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
- package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
- package/src/REVIEW_2026_08_06/generation.md +0 -176
- package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
- package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
- package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
- package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
- package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
- package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
- package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
- package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
- package/src/REVIEW_2026_08_06/view.md +0 -667
- package/src/REVIEW_2026_08_06.md +0 -610
- package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
- package/src/core/bvh2/bvh3/NOTES.md +0 -2
- package/src/core/bvh8/NOTES.md +0 -63
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
- package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
- package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
- package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
- package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
- package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
- package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
- package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
- package/src/core/geom/3d/gjk/NOTES.md +0 -8
- package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
- package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
- package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
- package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
- package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
- package/src/engine/REVIEW_2026_07_03.md +0 -211
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
- package/src/engine/control/first-person/DESIGN.md +0 -658
- package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
- package/src/engine/control/first-person/TODO.md +0 -160
- package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
- package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
- package/src/engine/ecs/ik/PLAN.md +0 -179
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
- package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
- package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
- package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
- package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
- package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
- package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
- package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
- package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
- package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
- package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
- package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
- package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
- package/src/engine/network/CONGESTION_CONTROL.md +0 -87
- package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
- package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
- package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
- package/src/engine/physics/cloth/PLAN.md +0 -3056
- package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
- package/src/engine/physics/fluid/solver/NOTES.md +0 -46
- package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
- package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
- package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
- package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
- package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
- package/src/format/image/avif/DECISIONS.md +0 -545
- package/src/format/image/jpeg/NOTES.md +0 -3
- package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
- package/src/generation/COORDINATES.md +0 -54
- package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
- package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
- package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
- package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
- package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
- package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
- package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
- package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
- package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
- package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
- package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
- package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
- package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
- package/src/shade/RENDERER_CONTRACT.md +0 -697
- package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
- package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
- package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
- package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
- package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
- package/src/shade/renderer/NOTES.md +0 -78
- package/src/shade/renderer/PLAN.md +0 -8
- package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
- package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
- package/src/shade/renderer/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
- package/src/shade/renderer/camera/orbital/README.md +0 -81
- package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
- package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/index.js +0 -9
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
- package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
- package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
- package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
- package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
- package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -483
- package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
- package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
- package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
- package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -536
- package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4225
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
- package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
- package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
- package/src/shade/renderer/hiz/NOTES.md +0 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
- package/src/shade/renderer/light/cluster/NOTES.md +0 -11
- package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
- package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.d.ts +0 -13
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.d.ts.map +0 -1
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.js +0 -198
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
- package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
- package/src/shade/renderer/particles/DESIGN.md +0 -1011
- package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -283
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
- package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
- package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
- package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/nss/NOTES.md +0 -339
- package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
- package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
- package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
- package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
- package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
- package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
- package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
- package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -394
- package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -160
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
- package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
- package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -932
- package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
- package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
- package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
- package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
- package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
- package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
- package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
- package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
- package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
- package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
- package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -4
- package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
- package/src/shade/wgsl/NOTES.md +0 -4
- package/src/view/elements/progress/segmented/segment_frame_transform.d.ts +0 -15
- package/src/view/elements/progress/segmented/segment_frame_transform.d.ts.map +0 -1
- package/src/view/elements/progress/segmented/segment_frame_transform.js +0 -69
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tunable "feel" parameters for the orbital camera, shared by the control core
|
|
3
|
-
* ({@link OrbitalCameraRig}) and the input adapter ({@link OrbitalCameraInput}).
|
|
4
|
-
* One frozen source of truth so the two layers can never disagree.
|
|
5
|
-
*
|
|
6
|
-
* The model is **direct drive + release momentum** (a "throw", like Google Earth
|
|
7
|
-
* / Cesium), NOT a smoothed-target spring. While dragging, the camera follows
|
|
8
|
-
* input 1:1 (no lag, fully responsive). On release the recent input velocity is
|
|
9
|
-
* carried forward and decays exponentially — the weighty follow-through. See
|
|
10
|
-
* {@link MomentumAxis}.
|
|
11
|
-
*
|
|
12
|
-
* Defaults grounded in the competitor survey:
|
|
13
|
-
* - `momentumDecayHalfLife` ≈ Cesium spin inertia (tau 2.5 → half-life 0.28 s).
|
|
14
|
-
* - `velocityWindow` ≈ Mapbox's 160 ms release-velocity window (a touch shorter).
|
|
15
|
-
* - `zoomStep` 0.9 multiplicative per notch ≈ three.js `pow(0.95, zoomSpeed)`.
|
|
16
|
-
*/
|
|
17
|
-
export const ORBITAL_CAMERA_FEEL_DEFAULTS = Object.freeze({
|
|
18
|
-
// ── momentum / inertia (rotate + pan) ───────────────────────────────────
|
|
19
|
-
// false → motion stops the instant input ends (direct, zero-inertia; the
|
|
20
|
-
// Maya/CAD "precision" feel).
|
|
21
|
-
momentumEnabled: true,
|
|
22
|
-
// seconds for the coast velocity to halve. Larger = longer, heavier glide.
|
|
23
|
-
momentumDecayHalfLife: 0.10,
|
|
24
|
-
// seconds of recent input averaged to derive the throw velocity on release.
|
|
25
|
-
// Averaging (vs. taking the last frame) rejects a single jittery final frame.
|
|
26
|
-
velocityWindow: 0.10,
|
|
27
|
-
// below this angular speed (rad/s) the coast snaps to rest. Pan scales this
|
|
28
|
-
// by the orbit distance so the stop feels the same at any zoom.
|
|
29
|
-
momentumStopSpeed: 0.012,
|
|
30
|
-
|
|
31
|
-
// ── input mapping ───────────────────────────────────────────────────────
|
|
32
|
-
rotateSpeed: 1.0, // gain on pointer-pixels → radians
|
|
33
|
-
panSpeed: 1.0, // gain on pan drag
|
|
34
|
-
zoomStep: 0.9, // multiplicative distance factor per wheel notch (direct/instant)
|
|
35
|
-
invertWheel: false,
|
|
36
|
-
|
|
37
|
-
// ── orbit limits ────────────────────────────────────────────────────────
|
|
38
|
-
minPolar: 1e-6, // pitch clamp (radians), keep off the exact poles
|
|
39
|
-
maxPolar: Math.PI - 1e-6,
|
|
40
|
-
|
|
41
|
-
// ── programmatic framing glide (flyTo); 0 = instant snap ────────────────
|
|
42
|
-
flyToDuration: 0.35,
|
|
43
|
-
|
|
44
|
-
// ── dt safety ───────────────────────────────────────────────────────────
|
|
45
|
-
maxDt: 0.1, // clamp tab-hitch / first-frame spikes (seconds)
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Merge overrides over the defaults to produce a controller config.
|
|
50
|
-
* @param {Partial<typeof ORBITAL_CAMERA_FEEL_DEFAULTS>} [overrides]
|
|
51
|
-
* @returns {typeof ORBITAL_CAMERA_FEEL_DEFAULTS}
|
|
52
|
-
*/
|
|
53
|
-
export function createOrbitalCameraConfig(overrides = {}) {
|
|
54
|
-
return { ...ORBITAL_CAMERA_FEEL_DEFAULTS, ...overrides };
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Ready-made "Precision" profile: no inertia — the camera stops the instant you
|
|
59
|
-
* release (direct mouse-delta control, can stop on a pixel), the Maya/CAD
|
|
60
|
-
* convention.
|
|
61
|
-
* @param {Partial<typeof ORBITAL_CAMERA_FEEL_DEFAULTS>} [overrides]
|
|
62
|
-
* @returns {typeof ORBITAL_CAMERA_FEEL_DEFAULTS}
|
|
63
|
-
*/
|
|
64
|
-
export function createPrecisionProfile(overrides = {}) {
|
|
65
|
-
return createOrbitalCameraConfig({ momentumEnabled: false, ...overrides });
|
|
66
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The INPUT ADAPTER for the orbital camera. Translates pointer/keyboard events
|
|
3
|
-
* into {@link OrbitalCameraRig} intents — no camera state, no kinematics. Input
|
|
4
|
-
* and control stay decoupled, so the rig is testable with plain numbers and this
|
|
5
|
-
* adapter is testable by firing synthetic signals at injected fake devices.
|
|
6
|
-
*
|
|
7
|
-
* A drag is a bracketed gesture: `dragStart` engages the rig (rotate or pan,
|
|
8
|
-
* chosen by which button is down), each `drag` applies a delta directly (1:1),
|
|
9
|
-
* and `dragEnd` releases — handing the rig the recent velocity so it can throw.
|
|
10
|
-
* Continuous WASD is sampled per frame from {@link update}.
|
|
11
|
-
*
|
|
12
|
-
* @author Alex Goldring (orbital rework)
|
|
13
|
-
* @copyright Company Named Limited (c) 2026
|
|
14
|
-
*/
|
|
15
|
-
export class OrbitalCameraInput {
|
|
16
|
-
/**
|
|
17
|
-
* @param {object} deps
|
|
18
|
-
* @param {import("./OrbitalCameraRig.js").OrbitalCameraRig} deps.rig
|
|
19
|
-
* @param {import("../../../../engine/input/devices/PointerDevice.js").PointerDevice} deps.pointer
|
|
20
|
-
* @param {import("../../../../engine/input/devices/KeyboardDevice.js").default} deps.keyboard
|
|
21
|
-
* @param {{ clientHeight: number }} deps.viewport pixel→angle scaling source (canvas/DOM element)
|
|
22
|
-
* @param {{ fov: number }} deps.lens vertical fov in radians (e.g. the PerspectiveCamera)
|
|
23
|
-
* @param {object} deps.config shared feel config
|
|
24
|
-
*/
|
|
25
|
-
constructor({ rig, pointer, keyboard, viewport, lens, config }: {
|
|
26
|
-
rig: import("./OrbitalCameraRig.js").OrbitalCameraRig;
|
|
27
|
-
pointer: import("../../../../engine/input/devices/PointerDevice.js").PointerDevice;
|
|
28
|
-
keyboard: import("../../../../engine/input/devices/KeyboardDevice.js").default;
|
|
29
|
-
viewport: {
|
|
30
|
-
clientHeight: number;
|
|
31
|
-
};
|
|
32
|
-
lens: {
|
|
33
|
-
fov: number;
|
|
34
|
-
};
|
|
35
|
-
config: object;
|
|
36
|
-
});
|
|
37
|
-
rig: import("./OrbitalCameraRig.js").OrbitalCameraRig;
|
|
38
|
-
pointer: import("../../../../engine/input/devices/PointerDevice.js").PointerDevice;
|
|
39
|
-
keyboard: import("../../../../engine/input/devices/KeyboardDevice.js").default;
|
|
40
|
-
viewport: {
|
|
41
|
-
clientHeight: number;
|
|
42
|
-
};
|
|
43
|
-
lens: {
|
|
44
|
-
fov: number;
|
|
45
|
-
};
|
|
46
|
-
config: any;
|
|
47
|
-
_connected: boolean;
|
|
48
|
-
/** @type {'rotate'|'pan'|null} active gesture */
|
|
49
|
-
_mode: 'rotate' | 'pan' | null;
|
|
50
|
-
_onDragStart: any;
|
|
51
|
-
_onDrag: any;
|
|
52
|
-
_onDragEnd: any;
|
|
53
|
-
_onWheel: any;
|
|
54
|
-
_onPinch: any;
|
|
55
|
-
_onCancel: any;
|
|
56
|
-
_cancelTarget: Element;
|
|
57
|
-
/** Subscribe to device signals. Idempotent. */
|
|
58
|
-
connect(): void;
|
|
59
|
-
/** Unsubscribe. Releases any in-flight gesture so the rig doesn't hang engaged. */
|
|
60
|
-
disconnect(): void;
|
|
61
|
-
/**
|
|
62
|
-
* Sample continuous (held-key) input. Called once per frame with the frame dt.
|
|
63
|
-
* @param {number} dt seconds
|
|
64
|
-
*/
|
|
65
|
-
update(dt: number): void;
|
|
66
|
-
_handleDragStart(): void;
|
|
67
|
-
/**
|
|
68
|
-
* @param {{x:number,y:number}} position
|
|
69
|
-
* @param {{x:number,y:number}} _origin
|
|
70
|
-
* @param {{x:number,y:number}} lastPosition
|
|
71
|
-
*/
|
|
72
|
-
_handleDrag(position: {
|
|
73
|
-
x: number;
|
|
74
|
-
y: number;
|
|
75
|
-
}, _origin: {
|
|
76
|
-
x: number;
|
|
77
|
-
y: number;
|
|
78
|
-
}, lastPosition: {
|
|
79
|
-
x: number;
|
|
80
|
-
y: number;
|
|
81
|
-
}): void;
|
|
82
|
-
_handleDragEnd(): void;
|
|
83
|
-
_endGesture(): void;
|
|
84
|
-
_cancelGesture(): void;
|
|
85
|
-
/** @param {{x:number,y:number,z:number}} delta wheel delta (meep normalizes to signs) */
|
|
86
|
-
_handleWheel(delta: {
|
|
87
|
-
x: number;
|
|
88
|
-
y: number;
|
|
89
|
-
z: number;
|
|
90
|
-
}): void;
|
|
91
|
-
/**
|
|
92
|
-
* Forward-compatible pinch handler. `scale` is the finger-spread ratio
|
|
93
|
-
* (>1 spreading = zoom in). Inert until meep dispatches on.pinch.
|
|
94
|
-
* @param {number} scale
|
|
95
|
-
*/
|
|
96
|
-
_handlePinch(scale: number): void;
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=OrbitalCameraInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitalCameraInput.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraInput.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH;IACI;;;;;;;;OAQG;IACH;QAPkE,GAAG,EAA1D,OAAO,uBAAuB,EAAE,gBAAgB;QACgC,OAAO,EAAvF,OAAO,mDAAmD,EAAE,aAAa;QACE,QAAQ,EAAnF,OAAO,oDAAoD,EAAE,OAAO;QACrC,QAAQ,EAAvC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;QACF,IAAI,EAA1B;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE;QACF,MAAM,EAAnB,MAAM;OAqBhB;IAlBG,sDAAc;IACd,mFAAsB;IACtB,+EAAwB;IACxB;sBARuB,MAAM;MAQL;IACxB;aARc,MAAM;MAQJ;IAChB,YAAoB;IAEpB,oBAAuB;IACvB,iDAAiD;IACjD,OADW,QAAQ,GAAC,KAAK,GAAC,IAAI,CACb;IAEjB,kBAAoD;IACpD,aAA0C;IAC1C,gBAAgD;IAChD,cAA4C;IAC5C,cAA4C;IAC5C,eAA+C;IAC/C,uBAAyB;IAG7B,+CAA+C;IAC/C,gBAgBC;IAED,mFAAmF;IACnF,mBAgBC;IAED;;;OAGG;IACH,WAFW,MAAM,QAShB;IAID,yBAQC;IAED;;;;OAIG;IACH,sBAJW;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,WACnB;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,gBACnB;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAe7B;IAED,uBAEC;IAED,oBAOC;IAED,uBAMC;IAID,yFAAyF;IACzF,oBADY;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAmBvC;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAOhB;CACJ"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The INPUT ADAPTER for the orbital camera. Translates pointer/keyboard events
|
|
3
|
-
* into {@link OrbitalCameraRig} intents — no camera state, no kinematics. Input
|
|
4
|
-
* and control stay decoupled, so the rig is testable with plain numbers and this
|
|
5
|
-
* adapter is testable by firing synthetic signals at injected fake devices.
|
|
6
|
-
*
|
|
7
|
-
* A drag is a bracketed gesture: `dragStart` engages the rig (rotate or pan,
|
|
8
|
-
* chosen by which button is down), each `drag` applies a delta directly (1:1),
|
|
9
|
-
* and `dragEnd` releases — handing the rig the recent velocity so it can throw.
|
|
10
|
-
* Continuous WASD is sampled per frame from {@link update}.
|
|
11
|
-
*
|
|
12
|
-
* @author Alex Goldring (orbital rework)
|
|
13
|
-
* @copyright Company Named Limited (c) 2026
|
|
14
|
-
*/
|
|
15
|
-
export class OrbitalCameraInput {
|
|
16
|
-
/**
|
|
17
|
-
* @param {object} deps
|
|
18
|
-
* @param {import("./OrbitalCameraRig.js").OrbitalCameraRig} deps.rig
|
|
19
|
-
* @param {import("../../../../engine/input/devices/PointerDevice.js").PointerDevice} deps.pointer
|
|
20
|
-
* @param {import("../../../../engine/input/devices/KeyboardDevice.js").default} deps.keyboard
|
|
21
|
-
* @param {{ clientHeight: number }} deps.viewport pixel→angle scaling source (canvas/DOM element)
|
|
22
|
-
* @param {{ fov: number }} deps.lens vertical fov in radians (e.g. the PerspectiveCamera)
|
|
23
|
-
* @param {object} deps.config shared feel config
|
|
24
|
-
*/
|
|
25
|
-
constructor({ rig, pointer, keyboard, viewport, lens, config }) {
|
|
26
|
-
this.rig = rig;
|
|
27
|
-
this.pointer = pointer;
|
|
28
|
-
this.keyboard = keyboard;
|
|
29
|
-
this.viewport = viewport;
|
|
30
|
-
this.lens = lens;
|
|
31
|
-
this.config = config;
|
|
32
|
-
|
|
33
|
-
this._connected = false;
|
|
34
|
-
/** @type {'rotate'|'pan'|null} active gesture */
|
|
35
|
-
this._mode = null;
|
|
36
|
-
|
|
37
|
-
this._onDragStart = this._handleDragStart.bind(this);
|
|
38
|
-
this._onDrag = this._handleDrag.bind(this);
|
|
39
|
-
this._onDragEnd = this._handleDragEnd.bind(this);
|
|
40
|
-
this._onWheel = this._handleWheel.bind(this);
|
|
41
|
-
this._onPinch = this._handlePinch.bind(this);
|
|
42
|
-
this._onCancel = this._cancelGesture.bind(this);
|
|
43
|
-
this._cancelTarget = null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/** Subscribe to device signals. Idempotent. */
|
|
47
|
-
connect() {
|
|
48
|
-
if (this._connected) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
this._connected = true;
|
|
52
|
-
|
|
53
|
-
this.pointer.on.dragStart.add(this._onDragStart);
|
|
54
|
-
this.pointer.on.drag.add(this._onDrag);
|
|
55
|
-
this.pointer.on.dragEnd.add(this._onDragEnd);
|
|
56
|
-
this.pointer.on.wheel.add(this._onWheel);
|
|
57
|
-
// meep declares on.pinch but does not yet dispatch it (touch users get
|
|
58
|
-
// single-pointer rotate via drag). Wired so pinch works once it lands.
|
|
59
|
-
this.pointer.on.pinch.add(this._onPinch);
|
|
60
|
-
this._cancelTarget = this.pointer.domElement;
|
|
61
|
-
this._cancelTarget.addEventListener("pointercancel", this._onCancel);
|
|
62
|
-
window.addEventListener("blur", this._onCancel);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Unsubscribe. Releases any in-flight gesture so the rig doesn't hang engaged. */
|
|
66
|
-
disconnect() {
|
|
67
|
-
if (!this._connected) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
this._connected = false;
|
|
71
|
-
|
|
72
|
-
this.pointer.on.dragStart.remove(this._onDragStart);
|
|
73
|
-
this.pointer.on.drag.remove(this._onDrag);
|
|
74
|
-
this.pointer.on.dragEnd.remove(this._onDragEnd);
|
|
75
|
-
this.pointer.on.wheel.remove(this._onWheel);
|
|
76
|
-
this.pointer.on.pinch.remove(this._onPinch);
|
|
77
|
-
this._cancelTarget.removeEventListener("pointercancel", this._onCancel);
|
|
78
|
-
this._cancelTarget = null;
|
|
79
|
-
window.removeEventListener("blur", this._onCancel);
|
|
80
|
-
|
|
81
|
-
this._endGesture();
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Sample continuous (held-key) input. Called once per frame with the frame dt.
|
|
86
|
-
* @param {number} dt seconds
|
|
87
|
-
*/
|
|
88
|
-
update(dt) {
|
|
89
|
-
const keys = this.keyboard.keys;
|
|
90
|
-
const z = (keys.w?.is_down ? 1 : 0) + (keys.s?.is_down ? -1 : 0);
|
|
91
|
-
const x = (keys.a?.is_down ? 1 : 0) + (keys.d?.is_down ? -1 : 0);
|
|
92
|
-
if (x !== 0 || z !== 0) {
|
|
93
|
-
this.rig.truckLocal(x, z, dt);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// ── gesture lifecycle ────────────────────────────────────────────────────
|
|
98
|
-
|
|
99
|
-
_handleDragStart() {
|
|
100
|
-
// pick the gesture by which button is held when the drag begins
|
|
101
|
-
this._mode = this.pointer.mouseButtonRight?.is_down ? "pan" : "rotate";
|
|
102
|
-
if (this._mode === "pan") {
|
|
103
|
-
this.rig.engagePan();
|
|
104
|
-
} else {
|
|
105
|
-
this.rig.engageRotate();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* @param {{x:number,y:number}} position
|
|
111
|
-
* @param {{x:number,y:number}} _origin
|
|
112
|
-
* @param {{x:number,y:number}} lastPosition
|
|
113
|
-
*/
|
|
114
|
-
_handleDrag(position, _origin, lastPosition) {
|
|
115
|
-
if (this._mode === null) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const dx = lastPosition.x - position.x;
|
|
119
|
-
const dy = lastPosition.y - position.y;
|
|
120
|
-
|
|
121
|
-
if (this._mode === "pan") {
|
|
122
|
-
this.rig.panScreen(dx * this.config.panSpeed, dy * this.config.panSpeed, this.viewport.clientHeight, this.lens.fov);
|
|
123
|
-
} else {
|
|
124
|
-
const scale = (this.config.rotateSpeed * Math.PI * 2) / this.viewport.clientHeight;
|
|
125
|
-
this.rig.rotate(dy * scale, dx * scale); // dPhi from vertical, dTheta from horizontal
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
_handleDragEnd() {
|
|
130
|
-
this._endGesture();
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
_endGesture() {
|
|
134
|
-
if (this._mode === "pan") {
|
|
135
|
-
this.rig.disengagePan();
|
|
136
|
-
} else if (this._mode === "rotate") {
|
|
137
|
-
this.rig.disengageRotate();
|
|
138
|
-
}
|
|
139
|
-
this._mode = null;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
_cancelGesture() {
|
|
143
|
-
if (this._mode === null) {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
this.rig.cancelGesture();
|
|
147
|
-
this._mode = null;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// ── zoom ─────────────────────────────────────────────────────────────────
|
|
151
|
-
|
|
152
|
-
/** @param {{x:number,y:number,z:number}} delta wheel delta (meep normalizes to signs) */
|
|
153
|
-
_handleWheel(delta) {
|
|
154
|
-
let max = delta.x;
|
|
155
|
-
if (Math.abs(delta.y) > Math.abs(max)) {
|
|
156
|
-
max = delta.y;
|
|
157
|
-
}
|
|
158
|
-
if (Math.abs(delta.z) > Math.abs(max)) {
|
|
159
|
-
max = delta.z;
|
|
160
|
-
}
|
|
161
|
-
if (max === 0) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
let s = Math.sign(max);
|
|
166
|
-
if (this.config.invertWheel) {
|
|
167
|
-
s = -s;
|
|
168
|
-
}
|
|
169
|
-
// scroll down (s>0) → factor>1 → zoom out; multiplicative = scale-uniform
|
|
170
|
-
this.rig.dolly(Math.pow(this.config.zoomStep, -s));
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Forward-compatible pinch handler. `scale` is the finger-spread ratio
|
|
175
|
-
* (>1 spreading = zoom in). Inert until meep dispatches on.pinch.
|
|
176
|
-
* @param {number} scale
|
|
177
|
-
*/
|
|
178
|
-
_handlePinch(scale) {
|
|
179
|
-
if (typeof scale !== "number" || !(scale > 0)) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
this.rig.dolly(1 / scale);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The CONTROL CORE of the orbital camera — pure kinematics with no knowledge of
|
|
3
|
-
* the DOM, input devices, or a wall clock. Drive it with intents, advance it
|
|
4
|
-
* with an explicit `dt`, read a {@link Transform} back out. Unit testable with
|
|
5
|
-
* plain numbers (see `OrbitalCameraRig.spec.js`).
|
|
6
|
-
*
|
|
7
|
-
* Feel model: **direct drive + release momentum** (a "throw"), via
|
|
8
|
-
* {@link MomentumAxis}. A drag is bracketed by `engageRotate`/`disengageRotate`
|
|
9
|
-
* (or pan); between them the orbit angles / target follow input 1:1 — no lag.
|
|
10
|
-
* On disengage the recent input velocity is carried forward and decays to a
|
|
11
|
-
* weighty stop. This is the Google-Earth/Cesium feel, not a spring chasing a
|
|
12
|
-
* goal. Set `config.momentumEnabled = false` for an instant stop (precision).
|
|
13
|
-
*
|
|
14
|
-
* Zoom is applied directly (multiplicative, instant) — wheel notches are
|
|
15
|
-
* discrete impulses, so there is nothing to "catch up" and no lag to hide.
|
|
16
|
-
*
|
|
17
|
-
* @author Alex Goldring (orbital rework)
|
|
18
|
-
* @copyright Company Named Limited (c) 2026
|
|
19
|
-
*/
|
|
20
|
-
export class OrbitalCameraRig {
|
|
21
|
-
/**
|
|
22
|
-
* @param {object} [options]
|
|
23
|
-
* @param {ReturnType<typeof createOrbitalCameraConfig>} [options.config]
|
|
24
|
-
* @param {NumericInterval} [options.distanceLimits]
|
|
25
|
-
* @param {number} [options.movementSpeedScale]
|
|
26
|
-
*/
|
|
27
|
-
constructor({ config, distanceLimits, movementSpeedScale }?: {
|
|
28
|
-
config?: ReturnType<typeof createOrbitalCameraConfig>;
|
|
29
|
-
distanceLimits?: NumericInterval;
|
|
30
|
-
movementSpeedScale?: number;
|
|
31
|
-
});
|
|
32
|
-
config: Readonly<{
|
|
33
|
-
momentumEnabled: true;
|
|
34
|
-
momentumDecayHalfLife: 0.1;
|
|
35
|
-
velocityWindow: 0.1;
|
|
36
|
-
momentumStopSpeed: 0.012; /**
|
|
37
|
-
* @param {object} [options]
|
|
38
|
-
* @param {ReturnType<typeof createOrbitalCameraConfig>} [options.config]
|
|
39
|
-
* @param {NumericInterval} [options.distanceLimits]
|
|
40
|
-
* @param {number} [options.movementSpeedScale]
|
|
41
|
-
*/
|
|
42
|
-
rotateSpeed: 1;
|
|
43
|
-
panSpeed: 1;
|
|
44
|
-
zoomStep: 0.9;
|
|
45
|
-
invertWheel: false;
|
|
46
|
-
minPolar: 0.000001;
|
|
47
|
-
maxPolar: number;
|
|
48
|
-
flyToDuration: 0.35;
|
|
49
|
-
maxDt: 0.1;
|
|
50
|
-
}>;
|
|
51
|
-
distanceLimits: NumericInterval;
|
|
52
|
-
movementSpeedScale: number;
|
|
53
|
-
_phi: MomentumAxis;
|
|
54
|
-
_theta: MomentumAxis;
|
|
55
|
-
_tx: MomentumAxis;
|
|
56
|
-
_ty: MomentumAxis;
|
|
57
|
-
_tz: MomentumAxis;
|
|
58
|
-
distance: number;
|
|
59
|
-
_directDirty: boolean;
|
|
60
|
-
_fly: {
|
|
61
|
-
phi0: number;
|
|
62
|
-
theta0: number;
|
|
63
|
-
dist0: number;
|
|
64
|
-
tx0: number;
|
|
65
|
-
ty0: number;
|
|
66
|
-
tz0: number;
|
|
67
|
-
phi1: number;
|
|
68
|
-
theta1: any;
|
|
69
|
-
dist1: number;
|
|
70
|
-
tx1: number;
|
|
71
|
-
ty1: number;
|
|
72
|
-
tz1: number;
|
|
73
|
-
t: number;
|
|
74
|
-
};
|
|
75
|
-
_basisTransform: Transform64;
|
|
76
|
-
_scratchTransform: Transform64;
|
|
77
|
-
_scratchTarget: Vector3;
|
|
78
|
-
/** Begin an orbit drag (pointer down). Cancels any coast/fly and takes direct control. */
|
|
79
|
-
engageRotate(): void;
|
|
80
|
-
/**
|
|
81
|
-
* Apply an orbit delta directly (1:1). `dPhi` pitches (clamped to the polar
|
|
82
|
-
* range), `dTheta` yaws. Radians.
|
|
83
|
-
* @param {number} dPhi
|
|
84
|
-
* @param {number} dTheta
|
|
85
|
-
*/
|
|
86
|
-
rotate(dPhi: number, dTheta: number): void;
|
|
87
|
-
/** End the orbit drag (pointer up): throw with the recent input velocity (or stop dead). */
|
|
88
|
-
disengageRotate(): void;
|
|
89
|
-
/** Begin a pan drag (pointer down, pan button). */
|
|
90
|
-
engagePan(): void;
|
|
91
|
-
/**
|
|
92
|
-
* Screen-space pan: drag the target in the current view plane, directly (1:1).
|
|
93
|
-
* `dx`/`dy` are pointer-pixel deltas (sign: last − current, "grab the world").
|
|
94
|
-
* @param {number} dx pixels
|
|
95
|
-
* @param {number} dy pixels
|
|
96
|
-
* @param {number} viewportHeight pixels
|
|
97
|
-
* @param {number} fov vertical fov, radians
|
|
98
|
-
*/
|
|
99
|
-
panScreen(dx: number, dy: number, viewportHeight: number, fov: number): void;
|
|
100
|
-
/** End the pan drag: throw the target with the recent velocity (or stop dead). */
|
|
101
|
-
disengagePan(): void;
|
|
102
|
-
/** Abort direct control without throwing, retaining the last applied pose. */
|
|
103
|
-
cancelGesture(): void;
|
|
104
|
-
/**
|
|
105
|
-
* Multiplicative zoom, applied directly. `factor < 1` zooms in, `> 1` out.
|
|
106
|
-
* Scale-uniform and clamped to {@link distanceLimits}.
|
|
107
|
-
* @param {number} factor
|
|
108
|
-
*/
|
|
109
|
-
dolly(factor: number): void;
|
|
110
|
-
/** Set the zoom distance directly (world units), clamped. */
|
|
111
|
-
setDistance(distance: any): void;
|
|
112
|
-
/**
|
|
113
|
-
* Keyboard fly: move the target in the camera-local XZ plane (directly).
|
|
114
|
-
* `x` strafe (±1), `z` forward/back (±1); speed scales with
|
|
115
|
-
* {@link movementSpeedScale} and zoom-out, integrated over `dt`.
|
|
116
|
-
* @param {number} x
|
|
117
|
-
* @param {number} z
|
|
118
|
-
* @param {number} dt seconds
|
|
119
|
-
*/
|
|
120
|
-
truckLocal(x: number, z: number, dt: number): void;
|
|
121
|
-
/**
|
|
122
|
-
* Point the camera at `to` from `from`. Instant by default (snap), or an
|
|
123
|
-
* eased glide over `config.flyToDuration` when `animate` is true.
|
|
124
|
-
* @param {Vector3} from eye position
|
|
125
|
-
* @param {Vector3} to look-at target
|
|
126
|
-
* @param {object} [opts]
|
|
127
|
-
* @param {boolean} [opts.animate=false]
|
|
128
|
-
*/
|
|
129
|
-
frameTo(from: Vector3, to: Vector3, { animate }?: {
|
|
130
|
-
animate?: boolean;
|
|
131
|
-
}): void;
|
|
132
|
-
/**
|
|
133
|
-
* Advance one frame. Returns whether the pose changed (so the caller can skip
|
|
134
|
-
* a redundant transform write when the camera is fully at rest).
|
|
135
|
-
* @param {number} dt seconds
|
|
136
|
-
* @returns {boolean}
|
|
137
|
-
*/
|
|
138
|
-
update(dt: number): boolean;
|
|
139
|
-
/**
|
|
140
|
-
* Write the current pose into `out` (position + look rotation), preserving
|
|
141
|
-
* its scale. Returns `out`.
|
|
142
|
-
* @param {Transform} out
|
|
143
|
-
* @returns {Transform}
|
|
144
|
-
*/
|
|
145
|
-
composeTransform(out: Transform): Transform;
|
|
146
|
-
get phi(): number;
|
|
147
|
-
get theta(): number;
|
|
148
|
-
/** True when nothing is engaged, coasting, or flying. */
|
|
149
|
-
get isAtRest(): boolean;
|
|
150
|
-
/**
|
|
151
|
-
* Current target. Writes into `out` if given (no allocation), else a shared
|
|
152
|
-
* scratch vector — copy it if you need to retain it.
|
|
153
|
-
* @param {Vector3} [out]
|
|
154
|
-
* @returns {Vector3}
|
|
155
|
-
*/
|
|
156
|
-
getTarget(out?: Vector3): Vector3;
|
|
157
|
-
_advanceFly(dt: any): boolean;
|
|
158
|
-
_deriveOrbit(from: any, to: any): {
|
|
159
|
-
phi: number;
|
|
160
|
-
theta: number;
|
|
161
|
-
distance: number;
|
|
162
|
-
};
|
|
163
|
-
_currentTarget(): Vector3;
|
|
164
|
-
/** Matrix of the current pose, for deriving the pan/truck view basis. */
|
|
165
|
-
_currentBasisMatrix(): Float64Array;
|
|
166
|
-
_poseToTransform(out: any, phi: any, theta: any, radius: any, target: any): void;
|
|
167
|
-
/** Representative of `target` angle nearest `current` (shortest arc). */
|
|
168
|
-
_shortestAzimuth(target: any, current: any): any;
|
|
169
|
-
}
|
|
170
|
-
import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
|
|
171
|
-
import { MomentumAxis } from "./MomentumAxis.js";
|
|
172
|
-
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
173
|
-
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
174
|
-
import { createOrbitalCameraConfig } from "./OrbitalCameraConfig.js";
|
|
175
|
-
//# sourceMappingURL=OrbitalCameraRig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitalCameraRig.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraRig.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IACI;;;;;OAKG;IACH;QAJkE,MAAM,GAA7D,WAAW,gCAAgC,CAAC;QAClB,cAAc,GAAxC,eAAe;QACE,kBAAkB,GAAnC,MAAM;OA4BhB;IAzBG;;;;kCAPJ;;;;;WAKG;;;;;;;;;OAEqB;IACpB,gCAAsE;IACtE,2BAA4C;IAG5C,mBAAyC;IACzC,qBAAiC;IACjC,kBAA8B;IAC9B,kBAA8B;IAC9B,kBAA8B;IAG9B,iBAAiB;IAIjB,sBAAyB;IAGzB;;;;;;;;;;;;;;MAAgB;IAGhB,6BAAwC;IACxC,+BAA0C;IAC1C,wBAAmC;IAOvC,0FAA0F;IAC1F,qBAIC;IAED;;;;;OAKG;IACH,aAHW,MAAM,UACN,MAAM,QAKhB;IAED,4FAA4F;IAC5F,wBAGC;IAMD,mDAAmD;IACnD,kBAKC;IAED;;;;;;;OAOG;IACH,cALW,MAAM,MACN,MAAM,kBACN,MAAM,OACN,MAAM,QAsBhB;IAED,kFAAkF;IAClF,qBAMC;IAED,8EAA8E;IAC9E,sBAQC;IAMD;;;;OAIG;IACH,cAFW,MAAM,QAQhB;IAED,6DAA6D;IAC7D,iCAGC;IAED;;;;;;;OAOG;IACH,cAJW,MAAM,KACN,MAAM,MACN,MAAM,QAuBhB;IAMD;;;;;;;OAOG;IACH,cALW,OAAO,MACP,OAAO;QAEQ,OAAO,GAAtB,OAAO;aAyBjB;IAMD;;;;;OAKG;IACH,WAHW,MAAM,GACJ,OAAO,CAoCnB;IAED;;;;;OAKG;IACH,4CASC;IAID,kBAAqC;IACrC,oBAAyC;IACzC,yDAAyD;IACzD,wBAQC;IAED;;;;;OAKG;IACH,gBAHW,OAAO,GACL,OAAO,CAMnB;IAMD,8BAiBC;IAED;;;;MAaC;IAED,0BAGC;IAED,yEAAyE;IACzE,oCAOC;IAED,iFAYC;IAED,yEAAyE;IACzE,iDAIC;CACJ;gCAtZ+B,mDAAmD;6BAGtD,mBAAmB;4BADpB,iDAAiD;oBADzD,kCAAkC;0CAGZ,0BAA0B"}
|