@woosh/meep-engine 3.67.0 → 3.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +2 -17
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +3 -18
- package/package.json +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +33 -65
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +37 -245
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +0 -4
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +4 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts +13 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +28 -37
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts +10 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.js +27 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts +62 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts.map +1 -0
- package/src/engine/graphics/trail/TrailKnots.js +137 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +1 -1
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +1 -1
- package/src/engine/graphics3/EntityRowHold.d.ts +48 -0
- package/src/engine/graphics3/EntityRowHold.d.ts.map +1 -0
- package/src/engine/graphics3/EntityRowHold.js +128 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -2
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +11 -44
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +4 -9
- package/src/engine/graphics3/Trail3DSystem.d.ts +69 -35
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +380 -81
- package/src/engine/graphics3/load_cube_environment.js +3 -3
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +17 -0
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacle.js +22 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -5
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +14 -3
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +9 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +11 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +5 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +2 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +4 -3
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +11 -3
- package/src/shade/playground/probe_clipmap/index.html +43 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +29 -0
- package/src/shade/playground/trails/index.html +50 -0
- package/src/shade/playground/trails/main.d.ts +2 -0
- package/src/shade/playground/trails/main.d.ts.map +1 -0
- package/src/shade/playground/trails/main.js +258 -0
- package/src/shade/renderer/Renderer.d.ts +7 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +213 -15
- package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
- package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts +18 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts.map +1 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.js +34 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +22 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js +160 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts +45 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js +57 -0
- package/src/shade/renderer/atmosphere/GPUSky.d.ts +23 -8
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +91 -34
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +17 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +55 -25
- package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts +164 -0
- package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SceneAtmosphere.js +308 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +3 -12
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +52 -89
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts +14 -0
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js +103 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +10 -4
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +95 -57
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +10 -14
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +97 -69
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.js +117 -48
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +8 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +65 -35
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +2 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.js +6 -6
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts +41 -0
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.js +123 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +21 -64
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -2
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +55 -179
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts +7 -0
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.js +111 -0
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts +0 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +68 -79
- package/src/shade/renderer/deferred/shader_background.js +1 -1
- package/src/shade/renderer/deferred/shader_background_sky.d.ts +5 -0
- package/src/shade/renderer/deferred/shader_background_sky.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_background_sky.js +130 -0
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +13 -36
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +2 -1
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +6 -2
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +2 -2
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -13
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +6 -21
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +17 -6
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +38 -178
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +7 -9
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +17 -106
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +7 -17
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +18 -118
- package/src/shade/renderer/extension/ViewTextures.d.ts +3 -2
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +3 -2
- 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/FLUID_FORCING.d.ts +14 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +18 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +3 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +4 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +15 -6
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +20 -4
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +11 -2
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +59 -2
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +4 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +367 -341
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts +6 -2
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +339 -282
- 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/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts +47 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js +246 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +4 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +8 -148
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +4 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +9 -58
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts +142 -0
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.js +938 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts +192 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.js +231 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts +11 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.js +25 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts +110 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.js +197 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts +150 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.js +408 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts +23 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.js +63 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts +24 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.js +61 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts +39 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.js +126 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts +21 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.js +74 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts +20 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.js +26 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts +24 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.js +57 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts +22 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.js +53 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts +62 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.js +156 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts +18 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js +50 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts +21 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js +54 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts +67 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js +509 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts +20 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.js +128 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts +62 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.js +478 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts +69 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.js +457 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts +27 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js +219 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts +22 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.js +151 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts +66 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.js +301 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts +59 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js +364 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts +40 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.js +275 -0
- package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -1
- package/src/shade/renderer/grass/blade/GPUGrassBlades.js +17 -2
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +18 -8
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -1
- package/src/shade/renderer/grass/blade/grass_blade_resolve.js +114 -32
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts +3 -2
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -1
- package/src/shade/renderer/grass/press/shader_grass_press_mark.js +5 -3
- package/src/shade/renderer/light/GPULightCollection.d.ts +1 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +213 -80
- package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.d.ts +1 -2
- package/src/shade/renderer/light/environment/chunk_sample_environment_color.d.ts.map +1 -0
- package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.js +3 -4
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +1 -1
- package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +1 -1
- package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +1 -1
- package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.d.ts +1 -1
- package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.js +1 -1
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +2 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +2 -0
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts +6 -0
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +9 -1
- package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +4 -3
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts +17 -0
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.js +16 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts +21 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.js +30 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -5
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +19 -17
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +2 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts +49 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.js +144 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts +71 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.js +152 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.js +30 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts +101 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.js +306 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +11 -4
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +2 -1
- package/src/shade/renderer/scene/Scene.d.ts +9 -2
- package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/Scene.js +10 -2
- package/src/shade/renderer/shader/ImageShader.d.ts +24 -12
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +11 -8
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts +3 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js +11 -3
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +2 -11
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +23 -32
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.js +14 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.js +4 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.js +11 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +68 -69
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts +4 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.js +46 -39
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js +5 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +18 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +30 -27
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
- package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts +69 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.js +129 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts +164 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailSystem.js +725 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts +14 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.js +38 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts +66 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.js +154 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts +19 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.js +68 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts +18 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.js +43 -0
- package/src/shade/renderer/trails/graph_trails.d.ts +58 -0
- package/src/shade/renderer/trails/graph_trails.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails.js +155 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts +126 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails_avboit.js +300 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts +56 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.js +220 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts +49 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.js +162 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts +52 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.js +126 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.js +57 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.js +40 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.js +64 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.js +51 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts +48 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.js +197 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts +34 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.js +111 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts +24 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js +130 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts +29 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.js +79 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts +20 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.js +101 -0
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +3 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +743 -739
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +2 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +19 -17
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +5 -3
- package/src/shade/renderer/water/chunk_water_gi.js +2 -0
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts +0 -18
- package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/advance_trail.js +0 -42
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts +0 -14
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +0 -75
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts +0 -17
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/trail_head_position.js +0 -19
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts +0 -2
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +0 -45
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts +0 -2
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js +0 -17
- package/src/engine/graphics/sh3/sky/hosek/README.md +0 -4
- package/src/engine/graphics/sh3/sky/hosek/data.d.ts +0 -17
- package/src/engine/graphics/sh3/sky/hosek/data.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/data.js +0 -3744
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts +0 -2
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +0 -71
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts +0 -26
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js +0 -70
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +0 -22
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +0 -388
- package/src/engine/graphics/trail/tube/TubeX.d.ts +0 -186
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/TubeX.js +0 -575
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +0 -16
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +0 -34
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +0 -27
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +0 -70
- package/src/engine/graphics3/make_default_environment.d.ts +0 -15
- package/src/engine/graphics3/make_default_environment.d.ts.map +0 -1
- package/src/engine/graphics3/make_default_environment.js +0 -111
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +0 -38
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +0 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +0 -119
- package/src/shade/renderer/atmosphere/MIE_G.d.ts +0 -6
- package/src/shade/renderer/atmosphere/MIE_G.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/MIE_G.js +0 -5
- package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts +0 -4
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +0 -44
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +0 -2
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +0 -43
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.js +0 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.js +0 -18
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts +0 -14
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.js +0 -86
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.js +0 -125
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.js +0 -17
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.js +0 -38
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +0 -16
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +0 -28
- package/src/shade/renderer/shader/chunk/light/sky/chunk_sample_sky_color.d.ts.map +0 -1
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts +0 -26
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +0 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +0 -170
|
@@ -1,575 +0,0 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { RowFirstTable } from "../../../../core/collection/table/RowFirstTable.js";
|
|
3
|
-
import { aabb3_array_set } from "../../../../core/geom/3d/aabb/aabb3_array_set.js";
|
|
4
|
-
import { v3_orthonormal_matrix_from_normal } from "../../../../core/geom/vec3/v3_orthonormal_matrix_from_normal.js";
|
|
5
|
-
import { max2 } from "../../../../core/math/max2.js";
|
|
6
|
-
import { min2 } from "../../../../core/math/min2.js";
|
|
7
|
-
import {
|
|
8
|
-
TUBE_ATTRIBUTE_ADDRESS_ALPHA,
|
|
9
|
-
TUBE_ATTRIBUTE_ADDRESS_BINORMAL,
|
|
10
|
-
TUBE_ATTRIBUTE_ADDRESS_COLOR,
|
|
11
|
-
TUBE_ATTRIBUTE_ADDRESS_NORMAL,
|
|
12
|
-
TUBE_ATTRIBUTE_ADDRESS_OFF,
|
|
13
|
-
TUBE_ATTRIBUTE_ADDRESS_POSITION,
|
|
14
|
-
TUBE_ATTRIBUTE_ADDRESS_THICKNESS,
|
|
15
|
-
tube_attributes_spec
|
|
16
|
-
} from "./tube_attributes_spec.js";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Default number of radial subdivisions around the tube. Overridable per-tube
|
|
20
|
-
* via {@link TubeX#setCount}; never hard-coded into the geometry.
|
|
21
|
-
* @type {number}
|
|
22
|
-
*/
|
|
23
|
-
const DEFAULT_RADIAL_SEGMENTS = 8;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Scratch for the arbitrary default frame written at build time; module-static so
|
|
27
|
-
* setCount stays allocation-free on the data path.
|
|
28
|
-
* @type {Float64Array}
|
|
29
|
-
*/
|
|
30
|
-
const m3_default_frame = new Float64Array(9);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Dynamic, non-allocating 3D tube geometry — the volumetric analogue of
|
|
34
|
-
* {@link RibbonX}.
|
|
35
|
-
*
|
|
36
|
-
* A tube is a ring buffer of `count` KNOTS along a centre-line. Each knot owns a
|
|
37
|
-
* ring of `radial + 1` vertices: the extra vertex duplicates vertex 0 so the UV
|
|
38
|
-
* seam (u = 0 meeting u = 1) closes cleanly when the texture wraps the tube.
|
|
39
|
-
* Vertices are extruded in the vertex shader from the knot's stored tangent
|
|
40
|
-
* frame, so the CPU only ever writes per-knot data (centre, frame, colour, …) —
|
|
41
|
-
* never per-triangle.
|
|
42
|
-
*
|
|
43
|
-
* Like {@link RibbonX} the geometry is a fixed-capacity ring: {@link rotate}
|
|
44
|
-
* recycles the oldest knot as the new head and rewrites a single segment's worth
|
|
45
|
-
* of indices, so steady-state updates allocate nothing.
|
|
46
|
-
*
|
|
47
|
-
* **The knots are the tube; a drawable is what a renderer makes of them.** Nothing
|
|
48
|
-
* here belongs to a renderer: {@link TubeXGeometry} wraps this data in three
|
|
49
|
-
* attribute views for the legacy path, and the Shade path extrudes the same rows
|
|
50
|
-
* into dynamic-mesh vertices. The three versions below are what tells either one
|
|
51
|
-
* that its copy is stale.
|
|
52
|
-
*/
|
|
53
|
-
export class TubeX {
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @type {RowFirstTable}
|
|
57
|
-
*/
|
|
58
|
-
#data = new RowFirstTable(tube_attributes_spec);
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @type {Uint32Array}
|
|
62
|
-
*/
|
|
63
|
-
#indices = new Uint32Array(0);
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Bumped by every write to knot data. A consumer that has copied or uploaded the
|
|
67
|
-
* rows compares its own against this to know whether it still holds the truth.
|
|
68
|
-
*
|
|
69
|
-
* @type {number}
|
|
70
|
-
*/
|
|
71
|
-
#data_version = 0;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Bumped by every write to the index array, which after the build is
|
|
75
|
-
* {@link rotate} and nothing else.
|
|
76
|
-
*
|
|
77
|
-
* @type {number}
|
|
78
|
-
*/
|
|
79
|
-
#index_version = 0;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Bumped by {@link setCount}, which is the only thing that moves the buffers
|
|
83
|
-
* themselves rather than their contents — a consumer holding views over them
|
|
84
|
-
* has to build new ones.
|
|
85
|
-
*
|
|
86
|
-
* @type {number}
|
|
87
|
-
*/
|
|
88
|
-
#layout_version = 0;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Knot index at the END (oldest) of the tube.
|
|
92
|
-
* @type {number}
|
|
93
|
-
*/
|
|
94
|
-
#tail_index = 0;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Knot index at the START (newest) of the tube.
|
|
98
|
-
* @type {number}
|
|
99
|
-
*/
|
|
100
|
-
#head_index = 0;
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Index of the segment (knot-to-knot span of `radial` quads) currently at the
|
|
104
|
-
* tail; recycled by {@link rotate}.
|
|
105
|
-
* @type {number}
|
|
106
|
-
*/
|
|
107
|
-
#tail_segment_index = 0;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Number of knots.
|
|
111
|
-
* @type {number}
|
|
112
|
-
*/
|
|
113
|
-
#count = 0;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Number of radial subdivisions. Ring vertex count per knot = radial + 1.
|
|
117
|
-
* @type {number}
|
|
118
|
-
*/
|
|
119
|
-
#radial = DEFAULT_RADIAL_SEGMENTS;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* The knot rows, interleaved per {@link tube_attributes_spec} — `vertex_count`
|
|
123
|
-
* records of `bytes_per_vertex` bytes, one per ring vertex.
|
|
124
|
-
*
|
|
125
|
-
* @returns {RowFirstTable}
|
|
126
|
-
*/
|
|
127
|
-
get table() {
|
|
128
|
-
return this.#data;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Triangle indices over the ring vertices, sized by {@link setCount} and
|
|
133
|
-
* rewritten one segment at a time by {@link rotate}.
|
|
134
|
-
*
|
|
135
|
-
* @returns {Uint32Array}
|
|
136
|
-
*/
|
|
137
|
-
get indices() {
|
|
138
|
-
return this.#indices;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* @returns {number} bytes one ring vertex occupies in {@link table}
|
|
143
|
-
*/
|
|
144
|
-
get bytes_per_vertex() {
|
|
145
|
-
return this.#data.spec.bytesPerRecord;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* @returns {number} ring vertices across the whole tube — `count * (radial + 1)`
|
|
150
|
-
*/
|
|
151
|
-
get vertex_count() {
|
|
152
|
-
return this.#count * this.#ring_vertex_count;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* @returns {number}
|
|
157
|
-
*/
|
|
158
|
-
get data_version() {
|
|
159
|
-
return this.#data_version;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* @returns {number}
|
|
164
|
-
*/
|
|
165
|
-
get index_version() {
|
|
166
|
-
return this.#index_version;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* @returns {number}
|
|
171
|
-
*/
|
|
172
|
-
get layout_version() {
|
|
173
|
-
return this.#layout_version;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* @returns {number} number of knots
|
|
178
|
-
*/
|
|
179
|
-
getCount() {
|
|
180
|
-
return this.#count;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* @returns {number} radial subdivisions
|
|
185
|
-
*/
|
|
186
|
-
getRadialSegments() {
|
|
187
|
-
return this.#radial;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
getHeadIndex() {
|
|
191
|
-
return this.#head_index;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
getTailIndex() {
|
|
195
|
-
return this.#tail_index;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Number of vertices in a single knot ring (includes the duplicated seam vertex).
|
|
200
|
-
* @returns {number}
|
|
201
|
-
*/
|
|
202
|
-
get #ring_vertex_count() {
|
|
203
|
-
return this.#radial + 1;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Write the static angular `off` coordinate (uv.x) for every ring vertex. The
|
|
208
|
-
* value goes 0 → 1 across the `radial + 1` vertices; vertex `radial` lands on
|
|
209
|
-
* 1.0 so its shader angle is 2π — co-incident with vertex 0's angle 0, closing
|
|
210
|
-
* the seam without a wrap-around index.
|
|
211
|
-
*/
|
|
212
|
-
#initialize_off() {
|
|
213
|
-
const data = this.#data;
|
|
214
|
-
const count = this.#count;
|
|
215
|
-
const radial = this.#radial;
|
|
216
|
-
const v = this.#ring_vertex_count;
|
|
217
|
-
|
|
218
|
-
for (let k = 0; k < count; k++) {
|
|
219
|
-
const base = k * v;
|
|
220
|
-
for (let j = 0; j <= radial; j++) {
|
|
221
|
-
data.writeCellValue(base + j, TUBE_ATTRIBUTE_ADDRESS_OFF, j / radial);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Seed every knot with a valid (arbitrary) orthonormal frame so the geometry is
|
|
228
|
-
* well-formed from the moment it is built, before any head movement supplies a
|
|
229
|
-
* real tangent. Without this the frames would be zero-initialised and the
|
|
230
|
-
* transport's degeneracy fallback would have to cover the fresh-tube case; a
|
|
231
|
-
* concrete default keeps the invariant "every knot frame is unit + orthonormal"
|
|
232
|
-
* unconditionally true (read e.g. by getKnotNormal during transport).
|
|
233
|
-
*/
|
|
234
|
-
#initialize_frame() {
|
|
235
|
-
v3_orthonormal_matrix_from_normal(m3_default_frame, 0, 0, 1, 0);
|
|
236
|
-
|
|
237
|
-
const nx = m3_default_frame[0], ny = m3_default_frame[1], nz = m3_default_frame[2];
|
|
238
|
-
const bx = m3_default_frame[3], by = m3_default_frame[4], bz = m3_default_frame[5];
|
|
239
|
-
|
|
240
|
-
const count = this.#count;
|
|
241
|
-
|
|
242
|
-
for (let k = 0; k < count; k++) {
|
|
243
|
-
this.setKnotFrame(k, nx, ny, nz, bx, by, bz);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Write the `radial` quads (2 triangles each) bridging the ring of knot `lo`
|
|
249
|
-
* to the ring of knot `hi`, starting at `address` in the index array.
|
|
250
|
-
* Winding matches the engine's static tube mesher (make_ring_faces).
|
|
251
|
-
* @param {number} address index-array offset (in index entries)
|
|
252
|
-
* @param {number} lo knot index whose ring is the "left" edge
|
|
253
|
-
* @param {number} hi knot index whose ring is the "right" edge
|
|
254
|
-
*/
|
|
255
|
-
#write_segment_indices(address, lo, hi) {
|
|
256
|
-
const indices = this.#indices;
|
|
257
|
-
const radial = this.#radial;
|
|
258
|
-
const v = this.#ring_vertex_count;
|
|
259
|
-
|
|
260
|
-
const lo_base = lo * v;
|
|
261
|
-
const hi_base = hi * v;
|
|
262
|
-
|
|
263
|
-
for (let r = 0; r < radial; r++) {
|
|
264
|
-
const a = lo_base + r;
|
|
265
|
-
const b = hi_base + r;
|
|
266
|
-
const c = hi_base + r + 1;
|
|
267
|
-
const d = lo_base + r + 1;
|
|
268
|
-
|
|
269
|
-
const ci = address + r * 6;
|
|
270
|
-
|
|
271
|
-
indices[ci] = a;
|
|
272
|
-
indices[ci + 1] = b;
|
|
273
|
-
indices[ci + 2] = d;
|
|
274
|
-
|
|
275
|
-
indices[ci + 3] = b;
|
|
276
|
-
indices[ci + 4] = c;
|
|
277
|
-
indices[ci + 5] = d;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Build the index buffer as a linear strip of `count - 1` segments.
|
|
283
|
-
*/
|
|
284
|
-
#initialize_index() {
|
|
285
|
-
const segment_count = this.#count - 1;
|
|
286
|
-
const indices_per_segment = this.#radial * 6;
|
|
287
|
-
|
|
288
|
-
for (let s = 0; s < segment_count; s++) {
|
|
289
|
-
this.#write_segment_indices(s * indices_per_segment, s, s + 1);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* @param {number[]|Float32Array|Float64Array} result
|
|
295
|
-
* @param {number} knot_index
|
|
296
|
-
*/
|
|
297
|
-
getKnotPosition(result, knot_index) {
|
|
298
|
-
const row = knot_index * this.#ring_vertex_count;
|
|
299
|
-
const data = this.#data;
|
|
300
|
-
|
|
301
|
-
result[0] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION);
|
|
302
|
-
result[1] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION + 1);
|
|
303
|
-
result[2] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION + 2);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Read the stored ring normal of a knot. Used by the head to parallel-transport
|
|
308
|
-
* its frame from the previous knot.
|
|
309
|
-
* @param {number[]|Float32Array|Float64Array} result
|
|
310
|
-
* @param {number} knot_index
|
|
311
|
-
*/
|
|
312
|
-
getKnotNormal(result, knot_index) {
|
|
313
|
-
const row = knot_index * this.#ring_vertex_count;
|
|
314
|
-
const data = this.#data;
|
|
315
|
-
|
|
316
|
-
result[0] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_NORMAL);
|
|
317
|
-
result[1] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_NORMAL + 1);
|
|
318
|
-
result[2] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_NORMAL + 2);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Read the stored ring binormal of a knot.
|
|
323
|
-
* @param {number[]|Float32Array|Float64Array} result
|
|
324
|
-
* @param {number} knot_index
|
|
325
|
-
*/
|
|
326
|
-
getKnotBinormal(result, knot_index) {
|
|
327
|
-
const row = knot_index * this.#ring_vertex_count;
|
|
328
|
-
const data = this.#data;
|
|
329
|
-
|
|
330
|
-
result[0] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_BINORMAL);
|
|
331
|
-
result[1] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_BINORMAL + 1);
|
|
332
|
-
result[2] = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_BINORMAL + 2);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Read a scalar attribute of a knot. Every vertex of the ring carries the same
|
|
337
|
-
* value, so the first one answers for the knot.
|
|
338
|
-
*
|
|
339
|
-
* @param {number} knot_index
|
|
340
|
-
* @param {number} attribute_index
|
|
341
|
-
* @returns {number}
|
|
342
|
-
*/
|
|
343
|
-
getKnotAttribute_Scalar(knot_index, attribute_index) {
|
|
344
|
-
return this.#data.readCellValue(knot_index * this.#ring_vertex_count, attribute_index);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Write a vec3 attribute to all ring vertices of a knot.
|
|
349
|
-
* @param {number} knot_index
|
|
350
|
-
* @param {number} attribute_index
|
|
351
|
-
* @param {number} x
|
|
352
|
-
* @param {number} y
|
|
353
|
-
* @param {number} z
|
|
354
|
-
*/
|
|
355
|
-
setKnotAttribute_Vector3(knot_index, attribute_index, x, y, z) {
|
|
356
|
-
const data = this.#data;
|
|
357
|
-
const v = this.#ring_vertex_count;
|
|
358
|
-
const base = knot_index * v;
|
|
359
|
-
|
|
360
|
-
for (let j = 0; j < v; j++) {
|
|
361
|
-
const row = base + j;
|
|
362
|
-
data.writeCellValue(row, attribute_index, x);
|
|
363
|
-
data.writeCellValue(row, attribute_index + 1, y);
|
|
364
|
-
data.writeCellValue(row, attribute_index + 2, z);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
this.#data_version++;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
/**
|
|
371
|
-
* Write a scalar attribute to all ring vertices of a knot.
|
|
372
|
-
* @param {number} knot_index
|
|
373
|
-
* @param {number} attribute_index
|
|
374
|
-
* @param {number} value
|
|
375
|
-
*/
|
|
376
|
-
setKnotAttribute_Scalar(knot_index, attribute_index, value) {
|
|
377
|
-
const data = this.#data;
|
|
378
|
-
const v = this.#ring_vertex_count;
|
|
379
|
-
const base = knot_index * v;
|
|
380
|
-
|
|
381
|
-
for (let j = 0; j < v; j++) {
|
|
382
|
-
data.writeCellValue(base + j, attribute_index, value);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
this.#data_version++;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Add `delta` to a scalar attribute on every ring vertex of a knot.
|
|
390
|
-
* @param {number} knot_index
|
|
391
|
-
* @param {number} attribute_index
|
|
392
|
-
* @param {number} delta
|
|
393
|
-
* @returns {number} incremented value
|
|
394
|
-
*/
|
|
395
|
-
incrementKnotAttribute_Scalar(knot_index, attribute_index, delta) {
|
|
396
|
-
const data = this.#data;
|
|
397
|
-
const v = this.#ring_vertex_count;
|
|
398
|
-
const base = knot_index * v;
|
|
399
|
-
|
|
400
|
-
const value = data.readCellValue(base, attribute_index) + delta;
|
|
401
|
-
|
|
402
|
-
for (let j = 0; j < v; j++) {
|
|
403
|
-
data.writeCellValue(base + j, attribute_index, value);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
this.#data_version++;
|
|
407
|
-
|
|
408
|
-
return value;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
/**
|
|
412
|
-
* @param {number} knot_index
|
|
413
|
-
* @param {number} x
|
|
414
|
-
* @param {number} y
|
|
415
|
-
* @param {number} z
|
|
416
|
-
*/
|
|
417
|
-
setKnotPosition(knot_index, x, y, z) {
|
|
418
|
-
assert.isNonNegativeInteger(knot_index, 'knot_index');
|
|
419
|
-
|
|
420
|
-
this.setKnotAttribute_Vector3(knot_index, TUBE_ATTRIBUTE_ADDRESS_POSITION, x, y, z);
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
/**
|
|
424
|
-
* Set the orienting tangent frame of a knot. `nx,ny,nz` and `bx,by,bz` must be
|
|
425
|
-
* unit vectors, mutually orthogonal and perpendicular to the local tangent.
|
|
426
|
-
* @param {number} knot_index
|
|
427
|
-
* @param {number} nx
|
|
428
|
-
* @param {number} ny
|
|
429
|
-
* @param {number} nz
|
|
430
|
-
* @param {number} bx
|
|
431
|
-
* @param {number} by
|
|
432
|
-
* @param {number} bz
|
|
433
|
-
*/
|
|
434
|
-
setKnotFrame(knot_index, nx, ny, nz, bx, by, bz) {
|
|
435
|
-
this.setKnotAttribute_Vector3(knot_index, TUBE_ATTRIBUTE_ADDRESS_NORMAL, nx, ny, nz);
|
|
436
|
-
this.setKnotAttribute_Vector3(knot_index, TUBE_ATTRIBUTE_ADDRESS_BINORMAL, bx, by, bz);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Linear colour, stored at half precision. Not limited to 0..1: values above 1 are HDR.
|
|
441
|
-
*
|
|
442
|
-
* @param {number} knot_index
|
|
443
|
-
* @param {number} r
|
|
444
|
-
* @param {number} g
|
|
445
|
-
* @param {number} b
|
|
446
|
-
*/
|
|
447
|
-
setKnotColor(knot_index, r, g, b) {
|
|
448
|
-
assert.isNonNegativeInteger(knot_index, 'knot_index');
|
|
449
|
-
|
|
450
|
-
this.setKnotAttribute_Vector3(knot_index, TUBE_ATTRIBUTE_ADDRESS_COLOR, r, g, b);
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* @param {number} knot_index
|
|
455
|
-
* @param {number} value
|
|
456
|
-
*/
|
|
457
|
-
setKnotAlpha(knot_index, value) {
|
|
458
|
-
this.setKnotAttribute_Scalar(knot_index, TUBE_ATTRIBUTE_ADDRESS_ALPHA, value);
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* @param {number} knot_index
|
|
463
|
-
* @param {number} value tube diameter
|
|
464
|
-
*/
|
|
465
|
-
setKnotThickness(knot_index, value) {
|
|
466
|
-
this.setKnotAttribute_Scalar(knot_index, TUBE_ATTRIBUTE_ADDRESS_THICKNESS, value);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* @param {number} count number of knots (>= 2)
|
|
471
|
-
* @param {number} [radial] radial subdivisions (>= 3)
|
|
472
|
-
*/
|
|
473
|
-
setCount(count, radial = DEFAULT_RADIAL_SEGMENTS) {
|
|
474
|
-
assert.greaterThanOrEqual(count, 2, 'a tube needs at least 2 knots (one segment)');
|
|
475
|
-
assert.isNonNegativeInteger(count, 'count');
|
|
476
|
-
assert.greaterThanOrEqual(radial, 3, 'a tube ring needs at least 3 radial segments');
|
|
477
|
-
assert.isNonNegativeInteger(radial, 'radial');
|
|
478
|
-
|
|
479
|
-
this.#radial = radial;
|
|
480
|
-
|
|
481
|
-
const v = radial + 1;
|
|
482
|
-
const vertex_count = count * v;
|
|
483
|
-
|
|
484
|
-
if (this.#data.length > vertex_count) {
|
|
485
|
-
this.#data.removeRows(vertex_count, this.#data.length - vertex_count);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
this.#data.setCapacity(vertex_count);
|
|
489
|
-
this.#data.length = vertex_count;
|
|
490
|
-
|
|
491
|
-
const segment_count = count - 1;
|
|
492
|
-
const triangle_count = segment_count * radial * 2;
|
|
493
|
-
|
|
494
|
-
// Uint32 (not Uint16): vertex count = count * (radial + 1) easily exceeds 65535 for a long
|
|
495
|
-
// tube with high radial resolution.
|
|
496
|
-
this.#indices = new Uint32Array(triangle_count * 3);
|
|
497
|
-
|
|
498
|
-
this.#head_index = 0;
|
|
499
|
-
this.#tail_index = count - 1;
|
|
500
|
-
this.#tail_segment_index = segment_count - 1;
|
|
501
|
-
|
|
502
|
-
this.#count = count;
|
|
503
|
-
|
|
504
|
-
this.#initialize_off();
|
|
505
|
-
this.#initialize_frame();
|
|
506
|
-
this.#initialize_index();
|
|
507
|
-
|
|
508
|
-
this.#layout_version++;
|
|
509
|
-
this.#index_version++;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
/**
|
|
513
|
-
* NOTE: takes tube thickness into account.
|
|
514
|
-
* @param {AABB3|ArrayLike<number>} result
|
|
515
|
-
*/
|
|
516
|
-
computeBoundingBox(result) {
|
|
517
|
-
const count = this.#count;
|
|
518
|
-
const v = this.#ring_vertex_count;
|
|
519
|
-
const data = this.#data;
|
|
520
|
-
|
|
521
|
-
let _x0 = Infinity, _y0 = Infinity, _z0 = Infinity;
|
|
522
|
-
let _x1 = -Infinity, _y1 = -Infinity, _z1 = -Infinity;
|
|
523
|
-
|
|
524
|
-
for (let k = 0; k < count; k++) {
|
|
525
|
-
const row = k * v;
|
|
526
|
-
|
|
527
|
-
const half_thickness = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_THICKNESS) * 0.5;
|
|
528
|
-
|
|
529
|
-
const x = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION);
|
|
530
|
-
const y = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION + 1);
|
|
531
|
-
const z = data.readCellValue(row, TUBE_ATTRIBUTE_ADDRESS_POSITION + 2);
|
|
532
|
-
|
|
533
|
-
_x0 = min2(_x0, x - half_thickness);
|
|
534
|
-
_y0 = min2(_y0, y - half_thickness);
|
|
535
|
-
_z0 = min2(_z0, z - half_thickness);
|
|
536
|
-
_x1 = max2(_x1, x + half_thickness);
|
|
537
|
-
_y1 = max2(_y1, y + half_thickness);
|
|
538
|
-
_z1 = max2(_z1, z + half_thickness);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
aabb3_array_set(result, 0, _x0, _y0, _z0, _x1, _y1, _z1);
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
/**
|
|
545
|
-
* Recycle the oldest knot as the new head, in O(radial). Mirrors
|
|
546
|
-
* {@link RibbonX#rotate}: the head/tail pointers decrement together (preserving
|
|
547
|
-
* `head === (tail + 1) mod count`), and the single tail segment's indices are
|
|
548
|
-
* rewritten to bridge the previous head's ring to the recycled (new head) ring.
|
|
549
|
-
*/
|
|
550
|
-
rotate() {
|
|
551
|
-
const old_tail = this.#tail_index;
|
|
552
|
-
const old_head = this.#head_index;
|
|
553
|
-
|
|
554
|
-
const max_index = this.#count - 1;
|
|
555
|
-
|
|
556
|
-
// The recycled slot (old tail) becomes the new head: head and tail step
|
|
557
|
-
// back in lockstep so head stays exactly one slot ahead of tail.
|
|
558
|
-
this.#tail_index = old_tail <= 0 ? max_index : old_tail - 1;
|
|
559
|
-
this.#head_index = old_head <= 0 ? max_index : old_head - 1;
|
|
560
|
-
|
|
561
|
-
const old_segment = this.#tail_segment_index;
|
|
562
|
-
const address = old_segment * this.#radial * 6;
|
|
563
|
-
|
|
564
|
-
this.#tail_segment_index = old_segment > 0 ? old_segment - 1 : this.#count - 2;
|
|
565
|
-
|
|
566
|
-
// Bridge old head -> new head (== old tail slot) with a fresh segment. The new head (old_tail slot)
|
|
567
|
-
// is the more head-ward knot, so it takes the `lo` position to match #initialize_index's winding
|
|
568
|
-
// convention (lo = more head-ward); swapping the two would invert this segment's triangle winding.
|
|
569
|
-
this.#write_segment_indices(address, old_tail, old_head);
|
|
570
|
-
|
|
571
|
-
this.#index_version++;
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
TubeX.DEFAULT_RADIAL_SEGMENTS = DEFAULT_RADIAL_SEGMENTS;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fixed-function simulation for {@link TubeX} tubes — the 3D analogue of
|
|
3
|
-
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, sets its alpha to `alpha` times the `fade`
|
|
4
|
-
* curve at its age relative to `max_age`, and flows the along-tube UV coordinate with age.
|
|
5
|
-
*/
|
|
6
|
-
export class TubeXFixedPhysicsSimulator {
|
|
7
|
-
/**
|
|
8
|
-
* @param {TubeX} tube
|
|
9
|
-
* @param {number} max_age
|
|
10
|
-
* @param {number} timeDelta
|
|
11
|
-
* @param {number} alpha base alpha of a knot; the fade scales it
|
|
12
|
-
* @param {AnimationCurve} fade opacity over the knot's age relative to `max_age`, `0..1`
|
|
13
|
-
*/
|
|
14
|
-
update(tube: TubeX, max_age: number, timeDelta: number, alpha: number, fade: AnimationCurve): void;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=TubeXFixedPhysicsSimulator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TubeXFixedPhysicsSimulator.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH;IAEI;;;;;;OAMG;IACH,6BALW,MAAM,aACN,MAAM,SACN,MAAM,8BAkBhB;CACJ"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { clamp01 } from "../../../../../core/math/clamp01.js";
|
|
2
|
-
import { TUBE_ATTRIBUTE_ADDRESS_AGE, TUBE_ATTRIBUTE_ADDRESS_UV_V } from "../tube_attributes_spec.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Fixed-function simulation for {@link TubeX} tubes — the 3D analogue of
|
|
6
|
-
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, sets its alpha to `alpha` times the `fade`
|
|
7
|
-
* curve at its age relative to `max_age`, and flows the along-tube UV coordinate with age.
|
|
8
|
-
*/
|
|
9
|
-
export class TubeXFixedPhysicsSimulator {
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @param {TubeX} tube
|
|
13
|
-
* @param {number} max_age
|
|
14
|
-
* @param {number} timeDelta
|
|
15
|
-
* @param {number} alpha base alpha of a knot; the fade scales it
|
|
16
|
-
* @param {AnimationCurve} fade opacity over the knot's age relative to `max_age`, `0..1`
|
|
17
|
-
*/
|
|
18
|
-
update(tube, max_age, timeDelta, alpha, fade) {
|
|
19
|
-
|
|
20
|
-
const n = tube.getCount();
|
|
21
|
-
|
|
22
|
-
for (let i = 0; i < n; i++) {
|
|
23
|
-
const age = tube.incrementKnotAttribute_Scalar(i, TUBE_ATTRIBUTE_ADDRESS_AGE, timeDelta);
|
|
24
|
-
|
|
25
|
-
const relative_age = clamp01(age / max_age);
|
|
26
|
-
|
|
27
|
-
// fade out with age
|
|
28
|
-
tube.setKnotAlpha(i, fade.evaluate(relative_age) * alpha);
|
|
29
|
-
|
|
30
|
-
// flow the along-tube UV with age
|
|
31
|
-
tube.setKnotAttribute_Scalar(i, TUBE_ATTRIBUTE_ADDRESS_UV_V, relative_age);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-vertex attribute layout for a {@link TubeX}.
|
|
3
|
-
*
|
|
4
|
-
* Unlike {@link RibbonX} (which extrudes in screen space and therefore stores
|
|
5
|
-
* the neighbouring positions to derive a 2D normal), the tube extrudes in WORLD
|
|
6
|
-
* space inside the vertex shader using a per-knot tangent frame. Every vertex of
|
|
7
|
-
* a knot's ring shares the same centre/frame/colour/etc and differs only by `off`
|
|
8
|
-
* (its angular position around the ring), so the heavy per-frame work is just
|
|
9
|
-
* writing the knot centre + frame to the ring's `radial+1` rows.
|
|
10
|
-
*
|
|
11
|
-
* Layout is floats-first then a float16 colour triple, padded to a 4-byte multiple
|
|
12
|
-
* so the interleaved Float32 view (stride = bytesPerRecord >> 2) stays aligned —
|
|
13
|
-
* the same trick {@link ribbon_attributes_spec} relies on. The colour is linear and
|
|
14
|
-
* not limited to 0..1, so a trail can be brighter than white.
|
|
15
|
-
*/
|
|
16
|
-
export const tube_attributes_spec: RowFirstTableSpec;
|
|
17
|
-
export const TUBE_ATTRIBUTE_ADDRESS_AGE: 0;
|
|
18
|
-
export const TUBE_ATTRIBUTE_ADDRESS_POSITION: 1;
|
|
19
|
-
export const TUBE_ATTRIBUTE_ADDRESS_NORMAL: 4;
|
|
20
|
-
export const TUBE_ATTRIBUTE_ADDRESS_BINORMAL: 7;
|
|
21
|
-
export const TUBE_ATTRIBUTE_ADDRESS_OFF: 10;
|
|
22
|
-
export const TUBE_ATTRIBUTE_ADDRESS_UV_V: 11;
|
|
23
|
-
export const TUBE_ATTRIBUTE_ADDRESS_ALPHA: 12;
|
|
24
|
-
export const TUBE_ATTRIBUTE_ADDRESS_THICKNESS: 13;
|
|
25
|
-
export const TUBE_ATTRIBUTE_ADDRESS_COLOR: 14;
|
|
26
|
-
import { RowFirstTableSpec } from "../../../../core/collection/table/RowFirstTableSpec.js";
|
|
27
|
-
//# sourceMappingURL=tube_attributes_spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tube_attributes_spec.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/trail/tube/tube_attributes_spec.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,qDAuC4B;AAG5B,2CAA4C;AAC5C,gDAAiD;AACjD,8CAA+C;AAC/C,gDAAiD;AACjD,4CAA6C;AAC7C,6CAA8C;AAC9C,8CAA+C;AAC/C,kDAAmD;AACnD,8CAA+C;kCAnEb,wDAAwD"}
|