@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,164 +1,164 @@
|
|
|
1
|
-
import { WebGPUExtensionType } from "../../descriptor/WebGPUExtensionType.js";
|
|
2
|
-
import { ATMOSPHERE_HEIGHT_DECLARATION } from "../shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js";
|
|
3
|
-
import { chunk_safe_acos } from "../shader/chunk/math/chunk_safe_acos.js";
|
|
4
|
-
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
5
|
-
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
6
|
-
import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
-
import { chunk_get_multiscatter_values } from "./chunk_get_multiscatter_values.js";
|
|
8
|
-
import { chunk_multiscatter_sample_direction } from "./chunk_multiscatter_sample_direction.js";
|
|
9
|
-
import { chunk_sky_lut_texel_to_unit } from "./chunk_sky_lut_texel_to_unit.js";
|
|
10
|
-
import {
|
|
11
|
-
MULTISCATTER_LUT_DIRECTION_COUNT,
|
|
12
|
-
MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS
|
|
13
|
-
} from "./MULTISCATTER_LUT_CONFIG.js";
|
|
14
|
-
import { SAMPLER_SKY_LUT } from "./SAMPLER_SKY_LUT.js";
|
|
15
|
-
|
|
16
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
17
|
-
resources.createGroup()
|
|
18
|
-
// "float" rather than the default "unfilterable-float": rgba16float is filterable in
|
|
19
|
-
// core WebGPU, so the LUT goes through the texture unit instead of a 4-tap manual
|
|
20
|
-
// bilinear.
|
|
21
|
-
.addTexture("tSkyLutTransmittance", "float")
|
|
22
|
-
.addSampler("sSkyLut", "filtering", SAMPLER_SKY_LUT)
|
|
23
|
-
.addStorageTexture("tSkyLutMultiscatterOut", "rgba16float")
|
|
24
|
-
;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* the multiple-scattering LUT. Each pixel coordinate corresponds to a height and sun zenith angle, and
|
|
29
|
-
* the value is the multiple scattering approximation (Psi_ms from the paper, Eq. 10).
|
|
30
|
-
*
|
|
31
|
-
* One workgroup per LUT texel, one thread per direction
|
|
32
|
-
*
|
|
33
|
-
* inside a fragment shader, which left the whole pass with 32*32 = 1024 threads of
|
|
34
|
-
* parallelism -- a few dozen waves, one per scheduler at best, with nothing to hide the
|
|
35
|
-
* latency of the transmittance fetches. Per-thread it is now a single direction's 20-step
|
|
36
|
-
* march.
|
|
37
|
-
*
|
|
38
|
-
* The per-direction results are summed with `subgroupAdd` and then across subgroups through
|
|
39
|
-
* workgroup memory
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
43
|
-
* @see https://www.shadertoy.com/view/slSXRW
|
|
44
|
-
* @type {CodeChunk}
|
|
45
|
-
*/
|
|
46
|
-
const body = CodeChunk.from(
|
|
47
|
-
//language=WGSL
|
|
48
|
-
`
|
|
49
|
-
const MULTISCATTER_DIRECTION_COUNT = ${MULTISCATTER_LUT_DIRECTION_COUNT}u;
|
|
50
|
-
const MULTISCATTER_MAX_SUBGROUP_PARTIALS = ${MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS}u;
|
|
51
|
-
|
|
52
|
-
var<workgroup> wg_partial_count: atomic<u32>;
|
|
53
|
-
var<workgroup> wg_lum: array<vec3<f32>, MULTISCATTER_MAX_SUBGROUP_PARTIALS>;
|
|
54
|
-
var<workgroup> wg_fms: array<vec3<f32>, MULTISCATTER_MAX_SUBGROUP_PARTIALS>;
|
|
55
|
-
|
|
56
|
-
@compute @workgroup_size(${MULTISCATTER_LUT_DIRECTION_COUNT}, 1, 1)
|
|
57
|
-
fn main(
|
|
58
|
-
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
59
|
-
@builtin(local_invocation_index) thread_index: u32,
|
|
60
|
-
) {
|
|
61
|
-
|
|
62
|
-
if (thread_index == 0u) {
|
|
63
|
-
atomicStore(&wg_partial_count, 0u);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Every thread is here together anyway, so the counter's initialisation costs nothing
|
|
67
|
-
// beyond the barrier itself. WGSL does not promise workgroup variables start zeroed.
|
|
68
|
-
workgroupBarrier();
|
|
69
|
-
|
|
70
|
-
// one workgroup per texel; the dispatch is sized from the texture, so this is in range
|
|
71
|
-
let texel = workgroup_id.xy;
|
|
72
|
-
|
|
73
|
-
let lut_size = vec2<f32>(textureDimensions(tSkyLutMultiscatterOut));
|
|
74
|
-
|
|
75
|
-
// The point of each range this texel stands for: texel 0 carries the bottom and the last
|
|
76
|
-
// texel the top, which is what lets a lookup at either end read a value computed there
|
|
77
|
-
// rather than one from half a texel inside. sky_lut_uv is the other half of this.
|
|
78
|
-
let unit = sky_lut_texel_to_unit(vec2<f32>(texel), lut_size);
|
|
79
|
-
|
|
80
|
-
let sunCosTheta = 2.0*unit.x - 1.0;
|
|
81
|
-
let sunTheta = safe_acos(sunCosTheta);
|
|
82
|
-
|
|
83
|
-
let height = ATMOSPHERE_HEIGHT*unit.y;
|
|
84
|
-
|
|
85
|
-
let pos = vec3(0.0, height, 0.0);
|
|
86
|
-
let sunDir = normalize(vec3(0.0, sunCosTheta, -sin(sunTheta)));
|
|
87
|
-
|
|
88
|
-
// pos on the +y axis and sunDir with a zero x component are exactly the preconditions
|
|
89
|
-
// multiscatter_sample_direction's half-azimuth sample set needs
|
|
90
|
-
let rayDir = multiscatter_sample_direction(thread_index);
|
|
91
|
-
|
|
92
|
-
var lum:vec3<f32>;
|
|
93
|
-
var f_ms:vec3<f32>;
|
|
94
|
-
|
|
95
|
-
get_multiscatter_values(pos, sunDir, rayDir, &lum, &f_ms);
|
|
96
|
-
|
|
97
|
-
// Uniform control flow up to here, so every one of the workgroup's threads is an active
|
|
98
|
-
// lane and the subgroup sum covers all of them.
|
|
99
|
-
let lum_subgroup = subgroupAdd(lum);
|
|
100
|
-
let fms_subgroup = subgroupAdd(f_ms);
|
|
101
|
-
|
|
102
|
-
// subgroupElect picks exactly one active invocation per subgroup, and the slot it claims
|
|
103
|
-
// is whichever the counter hands out. Deriving the slot from local_invocation_index /
|
|
104
|
-
// subgroup_size instead would assume invocations are packed into subgroups in contiguous
|
|
105
|
-
// index order, which WGSL leaves unspecified: a mapping that is not contiguous blocks
|
|
106
|
-
// would collide two subgroups onto one slot and silently drop a partial sum. Which slot
|
|
107
|
-
// a subgroup lands in does not matter, only that it gets its own.
|
|
108
|
-
//
|
|
109
|
-
// Every lane holds the same subgroup sum, so letting them all store it would be a data
|
|
110
|
-
// race on one address even though the values agree.
|
|
111
|
-
if (subgroupElect()) {
|
|
112
|
-
let slot = atomicAdd(&wg_partial_count, 1u);
|
|
113
|
-
|
|
114
|
-
wg_lum[slot] = lum_subgroup;
|
|
115
|
-
wg_fms[slot] = fms_subgroup;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
workgroupBarrier();
|
|
119
|
-
|
|
120
|
-
if (thread_index != 0u) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// WGSL pins the subgroup size to a power of two in [4, 128], so the workgroup cannot hold
|
|
125
|
-
// more subgroups than the partials array has room for. The clamp keeps a driver that
|
|
126
|
-
// broke that promise reading initialised slots rather than garbage.
|
|
127
|
-
let partial_count = min(atomicLoad(&wg_partial_count), MULTISCATTER_MAX_SUBGROUP_PARTIALS);
|
|
128
|
-
|
|
129
|
-
var lum_total = vec3(0.0);
|
|
130
|
-
var fms_total = vec3(0.0);
|
|
131
|
-
|
|
132
|
-
for (var i = 0u; i < partial_count; i++) {
|
|
133
|
-
lum_total += wg_lum[i];
|
|
134
|
-
fms_total += wg_fms[i];
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// The directions carry equal solid angle, so the mean over them is the spherical average
|
|
138
|
-
// the paper's uniform phase reduces to.
|
|
139
|
-
let inv_samples = 1.0 / f32(MULTISCATTER_DIRECTION_COUNT);
|
|
140
|
-
|
|
141
|
-
lum_total *= inv_samples;
|
|
142
|
-
fms_total *= inv_samples;
|
|
143
|
-
|
|
144
|
-
// Equation 10 from the paper.
|
|
145
|
-
let psi = lum_total / (1.0 - fms_total);
|
|
146
|
-
|
|
147
|
-
textureStore(tSkyLutMultiscatterOut, texel, vec4(psi, 1.0));
|
|
148
|
-
}
|
|
149
|
-
`, [
|
|
150
|
-
chunk_safe_acos,
|
|
151
|
-
ATMOSPHERE_HEIGHT_DECLARATION,
|
|
152
|
-
chunk_multiscatter_sample_direction,
|
|
153
|
-
chunk_sky_lut_texel_to_unit,
|
|
154
|
-
chunk_get_multiscatter_values,
|
|
155
|
-
]
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
body.addExtension(WebGPUExtensionType.Subgroups);
|
|
159
|
-
|
|
160
|
-
export const shader_multiscatter_lut = ComputeShader.from({
|
|
161
|
-
label: "Sky / multi-scatter LUT",
|
|
162
|
-
body,
|
|
163
|
-
resources,
|
|
164
|
-
});
|
|
1
|
+
import { WebGPUExtensionType } from "../../descriptor/WebGPUExtensionType.js";
|
|
2
|
+
import { ATMOSPHERE_HEIGHT_DECLARATION } from "../shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js";
|
|
3
|
+
import { chunk_safe_acos } from "../shader/chunk/math/chunk_safe_acos.js";
|
|
4
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
6
|
+
import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
+
import { chunk_get_multiscatter_values } from "./chunk_get_multiscatter_values.js";
|
|
8
|
+
import { chunk_multiscatter_sample_direction } from "./chunk_multiscatter_sample_direction.js";
|
|
9
|
+
import { chunk_sky_lut_texel_to_unit } from "./chunk_sky_lut_texel_to_unit.js";
|
|
10
|
+
import {
|
|
11
|
+
MULTISCATTER_LUT_DIRECTION_COUNT,
|
|
12
|
+
MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS
|
|
13
|
+
} from "./MULTISCATTER_LUT_CONFIG.js";
|
|
14
|
+
import { SAMPLER_SKY_LUT } from "./SAMPLER_SKY_LUT.js";
|
|
15
|
+
|
|
16
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
17
|
+
resources.createGroup()
|
|
18
|
+
// "float" rather than the default "unfilterable-float": rgba16float is filterable in
|
|
19
|
+
// core WebGPU, so the LUT goes through the texture unit instead of a 4-tap manual
|
|
20
|
+
// bilinear.
|
|
21
|
+
.addTexture("tSkyLutTransmittance", "float")
|
|
22
|
+
.addSampler("sSkyLut", "filtering", SAMPLER_SKY_LUT)
|
|
23
|
+
.addStorageTexture("tSkyLutMultiscatterOut", "rgba16float")
|
|
24
|
+
;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* the multiple-scattering LUT. Each pixel coordinate corresponds to a height and sun zenith angle, and
|
|
29
|
+
* the value is the multiple scattering approximation (Psi_ms from the paper, Eq. 10).
|
|
30
|
+
*
|
|
31
|
+
* One workgroup per LUT texel, one thread per direction (64 threads per workgroup).
|
|
32
|
+
* The 64 directions used to be a serial loop
|
|
33
|
+
* inside a fragment shader, which left the whole pass with 32*32 = 1024 threads of
|
|
34
|
+
* parallelism -- a few dozen waves, one per scheduler at best, with nothing to hide the
|
|
35
|
+
* latency of the transmittance fetches. Per-thread it is now a single direction's 20-step
|
|
36
|
+
* march.
|
|
37
|
+
*
|
|
38
|
+
* The per-direction results are summed with `subgroupAdd` and then across subgroups through
|
|
39
|
+
* workgroup memory, collapsing a six-step groupshared log-reduction into one subgroup
|
|
40
|
+
* instruction plus a handful of partials.
|
|
41
|
+
*
|
|
42
|
+
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
43
|
+
* @see https://www.shadertoy.com/view/slSXRW
|
|
44
|
+
* @type {CodeChunk}
|
|
45
|
+
*/
|
|
46
|
+
const body = CodeChunk.from(
|
|
47
|
+
//language=WGSL
|
|
48
|
+
`
|
|
49
|
+
const MULTISCATTER_DIRECTION_COUNT = ${MULTISCATTER_LUT_DIRECTION_COUNT}u;
|
|
50
|
+
const MULTISCATTER_MAX_SUBGROUP_PARTIALS = ${MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS}u;
|
|
51
|
+
|
|
52
|
+
var<workgroup> wg_partial_count: atomic<u32>;
|
|
53
|
+
var<workgroup> wg_lum: array<vec3<f32>, MULTISCATTER_MAX_SUBGROUP_PARTIALS>;
|
|
54
|
+
var<workgroup> wg_fms: array<vec3<f32>, MULTISCATTER_MAX_SUBGROUP_PARTIALS>;
|
|
55
|
+
|
|
56
|
+
@compute @workgroup_size(${MULTISCATTER_LUT_DIRECTION_COUNT}, 1, 1)
|
|
57
|
+
fn main(
|
|
58
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
59
|
+
@builtin(local_invocation_index) thread_index: u32,
|
|
60
|
+
) {
|
|
61
|
+
|
|
62
|
+
if (thread_index == 0u) {
|
|
63
|
+
atomicStore(&wg_partial_count, 0u);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Every thread is here together anyway, so the counter's initialisation costs nothing
|
|
67
|
+
// beyond the barrier itself. WGSL does not promise workgroup variables start zeroed.
|
|
68
|
+
workgroupBarrier();
|
|
69
|
+
|
|
70
|
+
// one workgroup per texel; the dispatch is sized from the texture, so this is in range
|
|
71
|
+
let texel = workgroup_id.xy;
|
|
72
|
+
|
|
73
|
+
let lut_size = vec2<f32>(textureDimensions(tSkyLutMultiscatterOut));
|
|
74
|
+
|
|
75
|
+
// The point of each range this texel stands for: texel 0 carries the bottom and the last
|
|
76
|
+
// texel the top, which is what lets a lookup at either end read a value computed there
|
|
77
|
+
// rather than one from half a texel inside. sky_lut_uv is the other half of this.
|
|
78
|
+
let unit = sky_lut_texel_to_unit(vec2<f32>(texel), lut_size);
|
|
79
|
+
|
|
80
|
+
let sunCosTheta = 2.0*unit.x - 1.0;
|
|
81
|
+
let sunTheta = safe_acos(sunCosTheta);
|
|
82
|
+
|
|
83
|
+
let height = ATMOSPHERE_HEIGHT*unit.y;
|
|
84
|
+
|
|
85
|
+
let pos = vec3(0.0, height, 0.0);
|
|
86
|
+
let sunDir = normalize(vec3(0.0, sunCosTheta, -sin(sunTheta)));
|
|
87
|
+
|
|
88
|
+
// pos on the +y axis and sunDir with a zero x component are exactly the preconditions
|
|
89
|
+
// multiscatter_sample_direction's half-azimuth sample set needs
|
|
90
|
+
let rayDir = multiscatter_sample_direction(thread_index);
|
|
91
|
+
|
|
92
|
+
var lum:vec3<f32>;
|
|
93
|
+
var f_ms:vec3<f32>;
|
|
94
|
+
|
|
95
|
+
get_multiscatter_values(pos, sunDir, rayDir, &lum, &f_ms);
|
|
96
|
+
|
|
97
|
+
// Uniform control flow up to here, so every one of the workgroup's threads is an active
|
|
98
|
+
// lane and the subgroup sum covers all of them.
|
|
99
|
+
let lum_subgroup = subgroupAdd(lum);
|
|
100
|
+
let fms_subgroup = subgroupAdd(f_ms);
|
|
101
|
+
|
|
102
|
+
// subgroupElect picks exactly one active invocation per subgroup, and the slot it claims
|
|
103
|
+
// is whichever the counter hands out. Deriving the slot from local_invocation_index /
|
|
104
|
+
// subgroup_size instead would assume invocations are packed into subgroups in contiguous
|
|
105
|
+
// index order, which WGSL leaves unspecified: a mapping that is not contiguous blocks
|
|
106
|
+
// would collide two subgroups onto one slot and silently drop a partial sum. Which slot
|
|
107
|
+
// a subgroup lands in does not matter, only that it gets its own.
|
|
108
|
+
//
|
|
109
|
+
// Every lane holds the same subgroup sum, so letting them all store it would be a data
|
|
110
|
+
// race on one address even though the values agree.
|
|
111
|
+
if (subgroupElect()) {
|
|
112
|
+
let slot = atomicAdd(&wg_partial_count, 1u);
|
|
113
|
+
|
|
114
|
+
wg_lum[slot] = lum_subgroup;
|
|
115
|
+
wg_fms[slot] = fms_subgroup;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
workgroupBarrier();
|
|
119
|
+
|
|
120
|
+
if (thread_index != 0u) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// WGSL pins the subgroup size to a power of two in [4, 128], so the workgroup cannot hold
|
|
125
|
+
// more subgroups than the partials array has room for. The clamp keeps a driver that
|
|
126
|
+
// broke that promise reading initialised slots rather than garbage.
|
|
127
|
+
let partial_count = min(atomicLoad(&wg_partial_count), MULTISCATTER_MAX_SUBGROUP_PARTIALS);
|
|
128
|
+
|
|
129
|
+
var lum_total = vec3(0.0);
|
|
130
|
+
var fms_total = vec3(0.0);
|
|
131
|
+
|
|
132
|
+
for (var i = 0u; i < partial_count; i++) {
|
|
133
|
+
lum_total += wg_lum[i];
|
|
134
|
+
fms_total += wg_fms[i];
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// The directions carry equal solid angle, so the mean over them is the spherical average
|
|
138
|
+
// the paper's uniform phase reduces to.
|
|
139
|
+
let inv_samples = 1.0 / f32(MULTISCATTER_DIRECTION_COUNT);
|
|
140
|
+
|
|
141
|
+
lum_total *= inv_samples;
|
|
142
|
+
fms_total *= inv_samples;
|
|
143
|
+
|
|
144
|
+
// Equation 10 from the paper.
|
|
145
|
+
let psi = lum_total / (1.0 - fms_total);
|
|
146
|
+
|
|
147
|
+
textureStore(tSkyLutMultiscatterOut, texel, vec4(psi, 1.0));
|
|
148
|
+
}
|
|
149
|
+
`, [
|
|
150
|
+
chunk_safe_acos,
|
|
151
|
+
ATMOSPHERE_HEIGHT_DECLARATION,
|
|
152
|
+
chunk_multiscatter_sample_direction,
|
|
153
|
+
chunk_sky_lut_texel_to_unit,
|
|
154
|
+
chunk_get_multiscatter_values,
|
|
155
|
+
]
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
body.addExtension(WebGPUExtensionType.Subgroups);
|
|
159
|
+
|
|
160
|
+
export const shader_multiscatter_lut = ComputeShader.from({
|
|
161
|
+
label: "Sky / multi-scatter LUT",
|
|
162
|
+
body,
|
|
163
|
+
resources,
|
|
164
|
+
});
|
|
@@ -116,7 +116,7 @@ fn raymarch_scattering(
|
|
|
116
116
|
let mie_absorption = mie_density * C_MIE_ABSORPTION;
|
|
117
117
|
let mie_scattering = mie_density * C_MIE_SCATTERING;
|
|
118
118
|
|
|
119
|
-
//
|
|
119
|
+
// Rayleigh does not absorb
|
|
120
120
|
let rayleigh_absorption = 0.0;
|
|
121
121
|
let rayleigh_scattering = local_density.x * C_RAYLEIGH;
|
|
122
122
|
|
|
@@ -1,117 +1,77 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* via meep's critically-damped springs.
|
|
2
|
+
* Orbital camera for a Shade {@link PerspectiveCamera} outside the ECS: drag to orbit, right-drag to
|
|
3
|
+
* pan, wheel to zoom, W/A/S/D to fly the target along the view.
|
|
5
4
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* The pose is a {@link TopDownCameraController} of its own, the same one an ECS camera carries, and
|
|
6
|
+
* an {@link OrbitalCameraRig} moves it with the feel every orbital camera in the engine shares. Each
|
|
7
|
+
* {@link update} writes the pose onto the camera's transform, and a transform moved by anyone else
|
|
8
|
+
* since is adopted as the new pose instead.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* lifecycle, the frame `dt`, writing the result onto the camera's transform, and
|
|
12
|
-
* the "camera moved outside our control" detection contract. The public surface
|
|
13
|
-
* ({@link look}, {@link from_transform}, {@link pan}, {@link update},
|
|
14
|
-
* `distanceLimits`, `movement_speed_scale`, `camera`) matches the legacy
|
|
15
|
-
* controller so switching is a single import change.
|
|
16
|
-
*
|
|
17
|
-
* @author Alex Goldring (orbital rework)
|
|
10
|
+
* @author Alex Goldring
|
|
18
11
|
* @copyright Company Named Limited (c) 2026
|
|
19
12
|
*/
|
|
20
13
|
export class OrbitalCameraController {
|
|
21
14
|
/**
|
|
22
15
|
* @param {import("../PerspectiveCamera.js").PerspectiveCamera} camera
|
|
23
16
|
* @param {HTMLElement} domElement
|
|
24
|
-
* @param {Partial<import("./OrbitalCameraConfig.js").ORBITAL_CAMERA_FEEL_DEFAULTS>} [configOverrides]
|
|
25
17
|
*/
|
|
26
|
-
constructor(camera: import("../PerspectiveCamera.js").PerspectiveCamera, domElement: HTMLElement
|
|
18
|
+
constructor(camera: import("../PerspectiveCamera.js").PerspectiveCamera, domElement: HTMLElement);
|
|
19
|
+
/**
|
|
20
|
+
* Zoom range, world units. Mutate `.min`/`.max` or `set()`; it applies from the next
|
|
21
|
+
* {@link look} or {@link update}.
|
|
22
|
+
* @type {NumericInterval}
|
|
23
|
+
*/
|
|
24
|
+
distanceLimits: NumericInterval;
|
|
25
|
+
/**
|
|
26
|
+
* W/A/S/D speed, world units a second with the camera at the near end of {@link distanceLimits},
|
|
27
|
+
* rising to twice that at the far end.
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
movement_speed_scale: number;
|
|
31
|
+
/**
|
|
32
|
+
* @type {TopDownCameraController}
|
|
33
|
+
*/
|
|
34
|
+
pose: TopDownCameraController;
|
|
27
35
|
camera: import("../PerspectiveCamera.js").PerspectiveCamera;
|
|
28
36
|
domElement: HTMLElement;
|
|
29
|
-
|
|
30
|
-
momentumEnabled: true;
|
|
31
|
-
momentumDecayHalfLife: 0.1;
|
|
32
|
-
velocityWindow: 0.1;
|
|
33
|
-
momentumStopSpeed: 0.012;
|
|
34
|
-
rotateSpeed: 1;
|
|
35
|
-
panSpeed: 1;
|
|
36
|
-
zoomStep: 0.9;
|
|
37
|
-
invertWheel: false;
|
|
38
|
-
minPolar: 0.000001;
|
|
39
|
-
maxPolar: number;
|
|
40
|
-
flyToDuration: 0.35;
|
|
41
|
-
maxDt: 0.1;
|
|
42
|
-
}>;
|
|
37
|
+
rig: OrbitalCameraRig;
|
|
43
38
|
pointer: PointerDevice;
|
|
44
39
|
keyboard: KeyboardDevice;
|
|
45
|
-
|
|
46
|
-
input: OrbitalCameraInput;
|
|
47
|
-
_lastRecorded: Transform64;
|
|
48
|
-
_lastUpdateTime: number;
|
|
49
|
-
_scratchEye: Vector3;
|
|
50
|
-
_scratchTarget: Vector3;
|
|
51
|
-
/** Zoom range, in world units (NumericInterval). Mutate `.min/.max` or `.set()`. */
|
|
52
|
-
get distanceLimits(): import("../../../../core/math/interval/NumericInterval.js").NumericInterval;
|
|
53
|
-
set movement_speed_scale(value: number);
|
|
54
|
-
/** Scene-relative WASD/keyboard move speed. */
|
|
55
|
-
get movement_speed_scale(): number;
|
|
56
|
-
/** Current smoothed orbit distance (radius). */
|
|
40
|
+
/** Orbit distance, world units. */
|
|
57
41
|
get distance(): number;
|
|
58
|
-
/**
|
|
42
|
+
/** Orbit target, live: copy it to keep it. */
|
|
59
43
|
get target(): Vector3;
|
|
60
44
|
/**
|
|
61
|
-
* Point the camera at `to` from `from`,
|
|
45
|
+
* Point the camera at `to` from `from`, at once, stopping any throw.
|
|
62
46
|
* @param {Vector3} from
|
|
63
47
|
* @param {Vector3} to
|
|
64
48
|
*/
|
|
65
49
|
look(from: Vector3, to: Vector3): void;
|
|
66
50
|
/**
|
|
67
|
-
*
|
|
68
|
-
* instead of snapping. The normal update() loop animates it.
|
|
69
|
-
* @param {Vector3} from
|
|
70
|
-
* @param {Vector3} to
|
|
71
|
-
*/
|
|
72
|
-
flyTo(from: Vector3, to: Vector3): void;
|
|
73
|
-
/**
|
|
74
|
-
* Adopt an external camera transform as the new orbit pose (target is placed
|
|
75
|
-
* `distance` ahead along its forward).
|
|
51
|
+
* Adopt a camera transform as the pose, the target the current orbit distance ahead of it.
|
|
76
52
|
*
|
|
77
|
-
* Read component
|
|
78
|
-
*
|
|
79
|
-
* `Float64Array`s — no `.x`, and a `copy` of one silently sets three
|
|
80
|
-
* undefineds. Those two arrays are also freshly allocated per access, so
|
|
81
|
-
* each is read once into a scratch that outlives the call.
|
|
53
|
+
* Read by component, because a {@link Transform64} answers `forward` with a raw `Float64Array`,
|
|
54
|
+
* allocated on each access.
|
|
82
55
|
*
|
|
83
56
|
* @param {Transform64} transform
|
|
84
57
|
*/
|
|
85
58
|
from_transform(transform: Transform64): void;
|
|
86
59
|
/**
|
|
87
|
-
*
|
|
88
|
-
* @param {number} delta_x
|
|
89
|
-
* @param {number} delta_y
|
|
90
|
-
*/
|
|
91
|
-
pan(delta_x: number, delta_y: number): void;
|
|
92
|
-
/**
|
|
93
|
-
* Advance one frame and write the result onto the camera transform.
|
|
60
|
+
* Advance one frame and write the pose onto the camera transform.
|
|
94
61
|
*
|
|
95
|
-
* @param {number} [dt] frame time in seconds
|
|
96
|
-
*
|
|
97
|
-
* to an internal clock (clamped, so no first-frame teleport).
|
|
62
|
+
* @param {number} [dt] frame time in seconds; `create_frame_loop` hands it to its callback. Omit
|
|
63
|
+
* it to measure the time since the last call instead.
|
|
98
64
|
*/
|
|
99
65
|
update(dt?: number): void;
|
|
100
|
-
/** Detach input
|
|
66
|
+
/** Detach input and stop the devices. */
|
|
101
67
|
dispose(): void;
|
|
102
|
-
|
|
103
|
-
* Resolve and sanitize the frame dt. Prefers the supplied value; otherwise
|
|
104
|
-
* derives it from an internal clock. Always clamped to [0, maxDt] so a tab
|
|
105
|
-
* refocus / GC hitch can't make the springs jump.
|
|
106
|
-
* @param {number} [dt]
|
|
107
|
-
* @returns {number}
|
|
108
|
-
*/
|
|
109
|
-
_resolveDt(dt?: number): number;
|
|
68
|
+
#private;
|
|
110
69
|
}
|
|
70
|
+
import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
|
|
71
|
+
import TopDownCameraController from "../../../../engine/graphics/ecs/camera/topdown/TopDownCameraController.js";
|
|
72
|
+
import { OrbitalCameraRig } from "../../../../engine/graphics/camera/orbital/OrbitalCameraRig.js";
|
|
111
73
|
import { PointerDevice } from "../../../../engine/input/devices/PointerDevice.js";
|
|
112
74
|
import KeyboardDevice from "../../../../engine/input/devices/KeyboardDevice.js";
|
|
113
|
-
import { OrbitalCameraRig } from "./OrbitalCameraRig.js";
|
|
114
|
-
import { OrbitalCameraInput } from "./OrbitalCameraInput.js";
|
|
115
|
-
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
116
75
|
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
76
|
+
import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
|
|
117
77
|
//# sourceMappingURL=OrbitalCameraController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitalCameraController.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraController.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OrbitalCameraController.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraController.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;GAWG;AACH;IAwCI;;;OAGG;IACH,oBAHW,OAAO,yBAAyB,EAAE,iBAAiB,cACnD,WAAW,EA4BrB;IArED;;;;OAIG;IACH,gBAFU,eAAe,CAEuB;IAEhD;;;;OAIG;IACH,sBAFU,MAAM,CAES;IAEzB;;OAEG;IACH,MAFU,uBAAuB,CAEI;IA2BjC,4DAAoB;IACpB,wBAA4B;IAK5B,sBAME;IAEF,uBAA4C;IAO5C,yBAA8C;IAMlD,mCAAmC;IACnC,uBAEC;IAED,8CAA8C;IAC9C,sBAEC;IAED;;;;OAIG;IACH,WAHW,OAAO,MACP,OAAO,QAiBjB;IAED;;;;;;;OAOG;IACH,0BAFW,WAAW,QAoBrB;IAED;;;;;OAKG;IACH,YAHW,MAAM,QAsBhB;IAED,yCAAyC;IACzC,gBAQC;;CAgFJ;gCA5R+B,mDAAmD;oCAW5E,2EAA2E;iCAJjD,gEAAgE;8BAOnE,mDAAmD;2BAFtD,oDAAoD;oBAb3D,kCAAkC;4BAO1B,iDAAiD"}
|