@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
|
@@ -41,7 +41,7 @@ export class GPUFluidPressureSolve {
|
|
|
41
41
|
* @param {*} _resources
|
|
42
42
|
* @param {{encoder: ShadeGPUCommandContext}} context
|
|
43
43
|
*/
|
|
44
|
-
static "__#
|
|
44
|
+
static "__#291@#execute"(data: {
|
|
45
45
|
solve: GPUFluidPressureSolve;
|
|
46
46
|
arm: number;
|
|
47
47
|
count: number;
|
|
@@ -49,7 +49,7 @@ export class GPUFluidQueries {
|
|
|
49
49
|
* @param {import("../../../../engine/graphics/render/frame_graph/FramePassResources.js").FramePassResources} resources
|
|
50
50
|
* @param {{encoder: import("../../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext}} context
|
|
51
51
|
*/
|
|
52
|
-
static "__#
|
|
52
|
+
static "__#296@#execute"(pass: object, resources: import("../../../../engine/graphics/render/frame_graph/FramePassResources.js").FramePassResources, context: {
|
|
53
53
|
encoder: import("../../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext;
|
|
54
54
|
}): void;
|
|
55
55
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
2
|
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
3
3
|
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
4
|
-
import { chunk_sample_environment_color } from "../../../
|
|
4
|
+
import { chunk_sample_environment_color } from "../../../light/environment/chunk_sample_environment_color.js";
|
|
5
5
|
import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
|
|
6
6
|
import { chunk_indirect_sample_texture } from "../../../path_tracer/shader/chunk_indirect_sample_texture.js";
|
|
7
7
|
|
|
@@ -34,7 +34,7 @@ export class GPUProbeClipmapGI {
|
|
|
34
34
|
* @param {ProbeClipmapSettings} settings
|
|
35
35
|
* @returns {boolean} whether it is what the settings' world cache describes, in their frustum's windows
|
|
36
36
|
*/
|
|
37
|
-
static "__#
|
|
37
|
+
static "__#215@#world_cache_built_for"(world_cache: GPUProbeClipmap, settings: ProbeClipmapSettings): boolean;
|
|
38
38
|
/**
|
|
39
39
|
* @param {GraphicsContext} graphics
|
|
40
40
|
*/
|
|
@@ -55,6 +55,24 @@ export class GPUProbeClipmapGI {
|
|
|
55
55
|
* @returns {ProbeClipmapSceneHolds|undefined} undefined while the mode is not running
|
|
56
56
|
*/
|
|
57
57
|
get holds(): ProbeClipmapSceneHolds;
|
|
58
|
+
/**
|
|
59
|
+
* @returns {GPUBrickMaterial|undefined} the bricks' surface material, which a ray's hit reads; undefined while the
|
|
60
|
+
* mode is not running
|
|
61
|
+
*/
|
|
62
|
+
get material(): GPUBrickMaterial;
|
|
63
|
+
/**
|
|
64
|
+
* @returns {number} the graph handle of the brick clipmap's last write in this frame's {@link graph_update}, which a
|
|
65
|
+
* pass tracing the bricks after it reads
|
|
66
|
+
*/
|
|
67
|
+
get bricks(): number;
|
|
68
|
+
/**
|
|
69
|
+
* @returns {{lookup: number, data: number}} graph handles of the world light clusters this frame's
|
|
70
|
+
* {@link graph_update} built over the bricks' cascades, where a ray's hit finds its local lights
|
|
71
|
+
*/
|
|
72
|
+
get clusters(): {
|
|
73
|
+
lookup: number;
|
|
74
|
+
data: number;
|
|
75
|
+
};
|
|
58
76
|
/**
|
|
59
77
|
* Take a frame of the mode: make the clipmaps for `view` and the structure `settings` describe,
|
|
60
78
|
* unless they already are, hold the scene's geometry caches and record their bake. Allocates nothing
|
|
@@ -201,4 +219,5 @@ export type BrickProvider = import("./brick/GPUBrickClipmap.js").BrickProvider;
|
|
|
201
219
|
import { GPUBrickClipmap } from "./brick/GPUBrickClipmap.js";
|
|
202
220
|
import { GPUProbeClipmap } from "./probe/GPUProbeClipmap.js";
|
|
203
221
|
import { ProbeClipmapSceneHolds } from "./ProbeClipmapSceneHolds.js";
|
|
222
|
+
import { GPUBrickMaterial } from "./material/GPUBrickMaterial.js";
|
|
204
223
|
//# sourceMappingURL=GPUProbeClipmapGI.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUProbeClipmapGI.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;
|
|
1
|
+
{"version":3,"file":"GPUProbeClipmapGI.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAmWI;;;;OAIG;IACH,oDAJW,eAAe,YACf,oBAAoB,GAClB,OAAO,CAUnB;IAzQD;;OAEG;IACH,sBAFW,eAAe,EAMzB;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,mCAEC;IAED;;OAEG;IACH,oCAEC;IAED;;;OAGG;IACH,iCAEC;IAED;;;OAGG;IACH,qBAEC;IAED;;;OAGG;IACH;gBAHsB,MAAM;cAAQ,MAAM;MAKzC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH;QAZ+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACJ,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QACK,IAAI;QACE,MAAM,GAAvB,MAAM;QAEU,QAAQ,EAAxB,MAAM;aA2IhB;IAqDD;;;OAGG;IACH,0BAEC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH;QAT+B,KAAK,EAAzB,UAAU;QACM,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QAEW,cAAc,GAA/B,MAAM;QACY,SAAS,GAA3B,OAAO;QACY,MAAM;QACE,UAAU,EAArC,UAAU,MAAM,CAAC;aAmC3B;IAED;;;;;;;;;;;;;;OAcG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACwD,KAAK,EAAvE,OAAO,gCAAgC,EAAE,eAAe;QACxC,MAAM,EAAtB,MAAM;QACU,kBAAkB,EAAlC,MAAM;QACU,wBAAwB,EAAxC,MAAM;aAiBhB;IAED;;;;;;;;;OASG;IACH,4CAUC;IAwDD;;;;;;;;;;;;;;;;OAgBG;IACH;QAR+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACF,UAAU,EAA5B,MAAM,EAAE;QACQ,QAAQ;QACtB,MAAM,CA8ClB;IAED;;;;;OAKG;IACH,uBAFW,aAAa,QASvB;IAED;;;OAGG;IACH,0BAHW,aAAa,GACX,OAAO,CAanB;IAqED;;;OAGG;IACH,gBA2BC;IAED,gBAcC;;CACJ;yBA3wBY,OAAO,8DAA8D,EAAE,UAAU;8BACjF,OAAO,0BAA0B,EAAE,eAAe;6BAClD,OAAO,8BAA8B,EAAE,cAAc;mCACrD,OAAO,2BAA2B,EAAE,oBAAoB;4BACxD,OAAO,4BAA4B,EAAE,aAAa;gCA3B/B,4BAA4B;gCAa5B,4BAA4B;uCAMrB,6BAA6B;iCACnC,gCAAgC"}
|
|
@@ -160,6 +160,9 @@ export class GPUProbeClipmapGI {
|
|
|
160
160
|
*/
|
|
161
161
|
#material_writers = [];
|
|
162
162
|
|
|
163
|
+
/** The graph handle of the brick clipmap's last write this frame, as {@link graph_update} left it. */
|
|
164
|
+
#bricks = -1;
|
|
165
|
+
|
|
163
166
|
/**
|
|
164
167
|
* @param {GraphicsContext} graphics
|
|
165
168
|
*/
|
|
@@ -197,6 +200,30 @@ export class GPUProbeClipmapGI {
|
|
|
197
200
|
return this.#holds;
|
|
198
201
|
}
|
|
199
202
|
|
|
203
|
+
/**
|
|
204
|
+
* @returns {GPUBrickMaterial|undefined} the bricks' surface material, which a ray's hit reads; undefined while the
|
|
205
|
+
* mode is not running
|
|
206
|
+
*/
|
|
207
|
+
get material() {
|
|
208
|
+
return this.#material;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @returns {number} the graph handle of the brick clipmap's last write in this frame's {@link graph_update}, which a
|
|
213
|
+
* pass tracing the bricks after it reads
|
|
214
|
+
*/
|
|
215
|
+
get bricks() {
|
|
216
|
+
return this.#bricks;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @returns {{lookup: number, data: number}} graph handles of the world light clusters this frame's
|
|
221
|
+
* {@link graph_update} built over the bricks' cascades, where a ray's hit finds its local lights
|
|
222
|
+
*/
|
|
223
|
+
get clusters() {
|
|
224
|
+
return this.#clusters;
|
|
225
|
+
}
|
|
226
|
+
|
|
200
227
|
/**
|
|
201
228
|
* Take a frame of the mode: make the clipmaps for `view` and the structure `settings` describe,
|
|
202
229
|
* unless they already are, hold the scene's geometry caches and record their bake. Allocates nothing
|
|
@@ -290,6 +317,8 @@ export class GPUProbeClipmapGI {
|
|
|
290
317
|
movers,
|
|
291
318
|
});
|
|
292
319
|
|
|
320
|
+
this.#bricks = bricks;
|
|
321
|
+
|
|
293
322
|
const material = this.#material;
|
|
294
323
|
|
|
295
324
|
const clusters = this.#graph_clusters(graph, scene);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The irradiance a front-face hit in the brick clipmap takes from the directional lights
|
|
3
|
+
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7), shadowed by rays traced through the bricks:
|
|
4
|
+
*
|
|
5
|
+
* ```wgsl
|
|
6
|
+
* fn probe_clipmap_sun_irradiance(position: vec3<f32>, normal: vec3<f32>, cascade: u32, seed: vec2<u32>, t_max: f32, cascade_count: u32, atlas_shift: u32) -> vec3<f32>
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* E_dir = Σ colour·max(0, n·l)·visibility over the directional lights. The visibility is a shadow ray toward
|
|
10
|
+
* each of the first {@link PROBE_SHADOWED_SUNS} lights that cast shadows, in the table's order; lights past them
|
|
11
|
+
* are unshadowed. It starts a voxel of the hit's cascade off the surface along `normal`, outside the field's
|
|
12
|
+
* half-voxel expand, and heads for a point of the light's disk drawn as the path tracer draws it
|
|
13
|
+
* (`cone_sample_direction`), from `seed` and the light's place among the shadowed: a caller that integrates
|
|
14
|
+
* many hits over a seed that differs between them integrates the penumbra. The light is seen whole if the ray
|
|
15
|
+
* misses within `t_max`, and not at all if it hits or spends its steps. A surface turned from a light traces no
|
|
16
|
+
* ray toward it; the light keeps its place among the shadowed all the same.
|
|
17
|
+
*
|
|
18
|
+
* @type {CodeChunk}
|
|
19
|
+
*/
|
|
20
|
+
export const chunk_probe_clipmap_sun_irradiance: CodeChunk;
|
|
21
|
+
/**
|
|
22
|
+
* The irradiance a front-face hit in brick cascade `cascade` takes from the local lights, E_loc
|
|
23
|
+
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7):
|
|
24
|
+
*
|
|
25
|
+
* ```wgsl
|
|
26
|
+
* fn probe_clipmap_local_irradiance(cascade: u32, position: vec3<f32>, normal: vec3<f32>, random: vec4<f32>, cascade_count: u32, atlas_shift: u32) -> vec3<f32>
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* - One of the point and spot lights of the hit's cell of the world light clusters, built over the bricks'
|
|
30
|
+
* cascades so that every hit has one, at most `IRRADIANCE_CLIPMAP_LIGHT_BUDGET` of each; past them lights are
|
|
31
|
+
* dropped. Each light's unshadowed irradiance is the irradiance clipmap's, at the footprint of a voxel of the
|
|
32
|
+
* hit's cascade, by its cosine at the hit's normal.
|
|
33
|
+
* - One is picked by weighted reservoir sampling over the cell's lights by `random.x`, its weight the luminance
|
|
34
|
+
* of that irradiance, with the number stretched over the candidates as `sample_discrete_wrs` does; it lights
|
|
35
|
+
* the hit by its irradiance over the chance of its pick, w/W. A caller blending many hits averages the picks
|
|
36
|
+
* to the cell's sum.
|
|
37
|
+
* - The picked light's shadow is a ray traced through the brick clipmap: from a voxel off the surface, past the
|
|
38
|
+
* field's half-voxel expand, toward the point of the light's sphere `random.yzw` draws, as the path tracer
|
|
39
|
+
* draws it, stopping short of that point by the light's near clip or a voxel, whichever is more. It sees the
|
|
40
|
+
* light if it misses; a hit, or a march that spends its steps, is no light. A light that casts no shadow
|
|
41
|
+
* traces none.
|
|
42
|
+
*
|
|
43
|
+
* @type {CodeChunk}
|
|
44
|
+
*/
|
|
45
|
+
export const chunk_probe_clipmap_local_irradiance: CodeChunk;
|
|
46
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
47
|
+
//# sourceMappingURL=chunk_probe_clipmap_hit_light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_probe_clipmap_hit_light.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAFU,SAAS,CAkDZ;AAKP;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,mDAFU,SAAS,CAsHZ;0BAhOmB,uCAAuC"}
|
package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { MESH_SDF_BRICK_VOXELS } from "../../../geometry/sdf/MESH_SDF.js";
|
|
2
|
+
import { chunk_light_cluster_counts } from "../../../light/cluster/chunk_light_cluster_counts.js";
|
|
3
|
+
import { LIGHT_DATA_RESOURCE } from "../../../light/LIGHT_DATA_RESOURCE.js";
|
|
4
|
+
import { LIGHT_DATABASE_SPEC } from "../../../light/LIGHT_DATABASE_SPEC.js";
|
|
5
|
+
import { LIGHT_FLAGS } from "../../../light/model/io/LIGHT_FLAGS.js";
|
|
6
|
+
import {
|
|
7
|
+
chunk_world_light_cluster_lookup_at,
|
|
8
|
+
WORLD_CLUSTER_DATA_RESOURCE
|
|
9
|
+
} from "../../../light/world_cluster/chunk_world_light_cluster_lookup.js";
|
|
10
|
+
import { chunk_rgb_to_luminance } from "../../../shader/chunk/color/chunk_rgb_to_luminance.js";
|
|
11
|
+
import { chunk_cone_sample_direction } from "../../../shader/chunk/geometry/cone/chunk_cone_sample_direction.js";
|
|
12
|
+
import { chunk_sphere_sample_volume } from "../../../shader/chunk/geometry/sphere/chunk_sphere_sample_volume.js";
|
|
13
|
+
import {
|
|
14
|
+
chunk_directional_lights_iteration_mask
|
|
15
|
+
} from "../../../shader/chunk/light/io/chunk_directional_lights_iteration_mask.js";
|
|
16
|
+
import { chunk_hash_to_float01 } from "../../../shader/chunk/random/chunk_hash_to_float01.js";
|
|
17
|
+
import { chunk_pcg3d } from "../../../shader/chunk/random/pcg/chunk_pcg3d.js";
|
|
18
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
19
|
+
import {
|
|
20
|
+
chunk_irradiance_clipmap_local_light
|
|
21
|
+
} from "../../../volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js";
|
|
22
|
+
import { IRRADIANCE_CLIPMAP_LIGHT_BUDGET } from "../../../volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js";
|
|
23
|
+
import { BRICK_LEVELS_RESOURCE, chunk_brick_clipmap_trace } from "../brick/chunk_brick_clipmap_trace.js";
|
|
24
|
+
import { PROBE_SHADOWED_SUNS } from "./PROBE_CLIPMAP.js";
|
|
25
|
+
|
|
26
|
+
const DIRECTIONAL = LIGHT_DATABASE_SPEC.get('light_directional');
|
|
27
|
+
const POINT = LIGHT_DATABASE_SPEC.get('light_point');
|
|
28
|
+
const SPOT = LIGHT_DATABASE_SPEC.get('light_spot');
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The irradiance a front-face hit in the brick clipmap takes from the directional lights
|
|
32
|
+
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7), shadowed by rays traced through the bricks:
|
|
33
|
+
*
|
|
34
|
+
* ```wgsl
|
|
35
|
+
* fn probe_clipmap_sun_irradiance(position: vec3<f32>, normal: vec3<f32>, cascade: u32, seed: vec2<u32>, t_max: f32, cascade_count: u32, atlas_shift: u32) -> vec3<f32>
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* E_dir = Σ colour·max(0, n·l)·visibility over the directional lights. The visibility is a shadow ray toward
|
|
39
|
+
* each of the first {@link PROBE_SHADOWED_SUNS} lights that cast shadows, in the table's order; lights past them
|
|
40
|
+
* are unshadowed. It starts a voxel of the hit's cascade off the surface along `normal`, outside the field's
|
|
41
|
+
* half-voxel expand, and heads for a point of the light's disk drawn as the path tracer draws it
|
|
42
|
+
* (`cone_sample_direction`), from `seed` and the light's place among the shadowed: a caller that integrates
|
|
43
|
+
* many hits over a seed that differs between them integrates the penumbra. The light is seen whole if the ray
|
|
44
|
+
* misses within `t_max`, and not at all if it hits or spends its steps. A surface turned from a light traces no
|
|
45
|
+
* ray toward it; the light keeps its place among the shadowed all the same.
|
|
46
|
+
*
|
|
47
|
+
* @type {CodeChunk}
|
|
48
|
+
*/
|
|
49
|
+
export const chunk_probe_clipmap_sun_irradiance = CodeChunk.from(
|
|
50
|
+
//language=WGSL
|
|
51
|
+
`
|
|
52
|
+
fn probe_clipmap_sun_irradiance(position: vec3<f32>, normal: vec3<f32>, cascade: u32, seed: vec2<u32>, t_max: f32, cascade_count: u32, atlas_shift: u32) -> vec3<f32> {
|
|
53
|
+
let voxel = brick_levels[cascade].cell_size / ${MESH_SDF_BRICK_VOXELS}.0;
|
|
54
|
+
let lifted = position + voxel * normal;
|
|
55
|
+
|
|
56
|
+
var direct = vec3<f32>(0.0);
|
|
57
|
+
var bits = directional_lights_iteration_mask(&light_data);
|
|
58
|
+
var shadowed = 0u;
|
|
59
|
+
|
|
60
|
+
while (bits != 0u) {
|
|
61
|
+
let index = countTrailingZeros(bits);
|
|
62
|
+
|
|
63
|
+
bits &= ~(1u << index);
|
|
64
|
+
|
|
65
|
+
let light = ${DIRECTIONAL.marshalling_method_read}(&light_data, index);
|
|
66
|
+
let n_dot_l = dot(normal, -light.direction);
|
|
67
|
+
|
|
68
|
+
var visible = 1.0;
|
|
69
|
+
|
|
70
|
+
if ((light.flags & ${LIGHT_FLAGS.CASTS_SHADOW_BIT}u) != 0u && shadowed < ${PROBE_SHADOWED_SUNS}u) {
|
|
71
|
+
// a surface turned from the light takes none of it whatever the shadow, so it traces none;
|
|
72
|
+
// the light keeps its place among the shadowed all the same
|
|
73
|
+
if (n_dot_l > 0.0) {
|
|
74
|
+
// a point of the disk of its own for each light, apart from the caller's other draws
|
|
75
|
+
let hash = pcg3d(vec3<u32>(seed.x, seed.y, 0x3C6EF372u + shadowed));
|
|
76
|
+
let toward = cone_sample_direction(-light.direction, light.disk_radius, vec2<f32>(hash_to_float01(hash.x), hash_to_float01(hash.y)));
|
|
77
|
+
let shadow = brick_clipmap_trace(lifted, toward, 0.0, t_max, cascade_count, atlas_shift);
|
|
78
|
+
|
|
79
|
+
visible = select(0.0, 1.0, shadow.kind == BRICK_TRACE_MISS);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
shadowed++;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
direct += light.color * max(n_dot_l, 0.0) * visible;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return direct;
|
|
89
|
+
}
|
|
90
|
+
`, [
|
|
91
|
+
chunk_brick_clipmap_trace,
|
|
92
|
+
chunk_cone_sample_direction,
|
|
93
|
+
chunk_pcg3d,
|
|
94
|
+
chunk_hash_to_float01,
|
|
95
|
+
chunk_directional_lights_iteration_mask,
|
|
96
|
+
DIRECTIONAL.chunk_read,
|
|
97
|
+
]);
|
|
98
|
+
|
|
99
|
+
chunk_probe_clipmap_sun_irradiance.requireResource(LIGHT_DATA_RESOURCE);
|
|
100
|
+
chunk_probe_clipmap_sun_irradiance.requireResource(BRICK_LEVELS_RESOURCE);
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* The irradiance a front-face hit in brick cascade `cascade` takes from the local lights, E_loc
|
|
104
|
+
* (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7):
|
|
105
|
+
*
|
|
106
|
+
* ```wgsl
|
|
107
|
+
* fn probe_clipmap_local_irradiance(cascade: u32, position: vec3<f32>, normal: vec3<f32>, random: vec4<f32>, cascade_count: u32, atlas_shift: u32) -> vec3<f32>
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* - One of the point and spot lights of the hit's cell of the world light clusters, built over the bricks'
|
|
111
|
+
* cascades so that every hit has one, at most `IRRADIANCE_CLIPMAP_LIGHT_BUDGET` of each; past them lights are
|
|
112
|
+
* dropped. Each light's unshadowed irradiance is the irradiance clipmap's, at the footprint of a voxel of the
|
|
113
|
+
* hit's cascade, by its cosine at the hit's normal.
|
|
114
|
+
* - One is picked by weighted reservoir sampling over the cell's lights by `random.x`, its weight the luminance
|
|
115
|
+
* of that irradiance, with the number stretched over the candidates as `sample_discrete_wrs` does; it lights
|
|
116
|
+
* the hit by its irradiance over the chance of its pick, w/W. A caller blending many hits averages the picks
|
|
117
|
+
* to the cell's sum.
|
|
118
|
+
* - The picked light's shadow is a ray traced through the brick clipmap: from a voxel off the surface, past the
|
|
119
|
+
* field's half-voxel expand, toward the point of the light's sphere `random.yzw` draws, as the path tracer
|
|
120
|
+
* draws it, stopping short of that point by the light's near clip or a voxel, whichever is more. It sees the
|
|
121
|
+
* light if it misses; a hit, or a march that spends its steps, is no light. A light that casts no shadow
|
|
122
|
+
* traces none.
|
|
123
|
+
*
|
|
124
|
+
* @type {CodeChunk}
|
|
125
|
+
*/
|
|
126
|
+
export const chunk_probe_clipmap_local_irradiance = CodeChunk.from(
|
|
127
|
+
//language=WGSL
|
|
128
|
+
`
|
|
129
|
+
fn probe_clipmap_local_irradiance(cascade: u32, position: vec3<f32>, normal: vec3<f32>, random: vec4<f32>, cascade_count: u32, atlas_shift: u32) -> vec3<f32> {
|
|
130
|
+
let level = brick_levels[cascade];
|
|
131
|
+
let voxel = level.cell_size / ${MESH_SDF_BRICK_VOXELS}.0;
|
|
132
|
+
let cell = world_light_cluster_metadata_at(cascade, level, 0.0, position);
|
|
133
|
+
let point_count = min(light_cluster_count_point(cell.counts), ${IRRADIANCE_CLIPMAP_LIGHT_BUDGET}u);
|
|
134
|
+
let spot_count = min(light_cluster_count_spot(cell.counts), ${IRRADIANCE_CLIPMAP_LIGHT_BUDGET}u);
|
|
135
|
+
|
|
136
|
+
// the cell's spot lights follow its point lights
|
|
137
|
+
let spots = cell.offset + light_cluster_count_point(cell.counts);
|
|
138
|
+
|
|
139
|
+
// the reservoir: the weights so far, and the light it holds
|
|
140
|
+
var u = random.x;
|
|
141
|
+
var total = 0.0;
|
|
142
|
+
var picked = vec3<f32>(0.0);
|
|
143
|
+
var picked_weight = 0.0;
|
|
144
|
+
var picked_index = 0u;
|
|
145
|
+
var picked_spot = false;
|
|
146
|
+
|
|
147
|
+
for (var j = 0u; j < point_count + spot_count; j++) {
|
|
148
|
+
let spot = j >= point_count;
|
|
149
|
+
let index = world_cluster_data[select(cell.offset + j, spots + (j - point_count), spot)];
|
|
150
|
+
|
|
151
|
+
var irradiance: vec3<f32>;
|
|
152
|
+
|
|
153
|
+
if (spot) {
|
|
154
|
+
let light = irradiance_clipmap_get_spot_light_info_by_index(&light_data, index, position, voxel);
|
|
155
|
+
|
|
156
|
+
irradiance = light.color * max(dot(normal, light.direction), 0.0);
|
|
157
|
+
} else {
|
|
158
|
+
let light = irradiance_clipmap_get_point_light_info_by_index(&light_data, index, position, voxel);
|
|
159
|
+
|
|
160
|
+
irradiance = light.color * max(dot(normal, light.direction), 0.0);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
let weight = rgb_to_luminance(irradiance);
|
|
164
|
+
|
|
165
|
+
if (weight <= 0.0) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// the light takes the reservoir by its share of the weights so far, and the number is stretched back
|
|
170
|
+
// over [0, 1) from whichever side of the share it fell
|
|
171
|
+
total += weight;
|
|
172
|
+
|
|
173
|
+
let share = weight / total;
|
|
174
|
+
|
|
175
|
+
if (u < share) {
|
|
176
|
+
u = u / share;
|
|
177
|
+
picked = irradiance;
|
|
178
|
+
picked_weight = weight;
|
|
179
|
+
picked_index = index;
|
|
180
|
+
picked_spot = spot;
|
|
181
|
+
} else {
|
|
182
|
+
u = (u - share) / (1.0 - share);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (total <= 0.0) {
|
|
187
|
+
return vec3<f32>(0.0);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// the pick's light over the chance of the pick, w / W
|
|
191
|
+
let estimate = picked * (total / picked_weight);
|
|
192
|
+
|
|
193
|
+
var source: vec3<f32>;
|
|
194
|
+
var radius: f32;
|
|
195
|
+
var near_clip: f32;
|
|
196
|
+
var flags: u32;
|
|
197
|
+
|
|
198
|
+
if (picked_spot) {
|
|
199
|
+
let light = ${SPOT.marshalling_method_read}(&light_data, picked_index);
|
|
200
|
+
|
|
201
|
+
source = light.position;
|
|
202
|
+
radius = light.radius;
|
|
203
|
+
near_clip = light.near_clip_distance;
|
|
204
|
+
flags = light.flags;
|
|
205
|
+
} else {
|
|
206
|
+
let light = ${POINT.marshalling_method_read}(&light_data, picked_index);
|
|
207
|
+
|
|
208
|
+
source = light.position.xyz;
|
|
209
|
+
radius = light.radius;
|
|
210
|
+
near_clip = light.near_clip_distance;
|
|
211
|
+
flags = light.flags;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if ((flags & ${LIGHT_FLAGS.CASTS_SHADOW_BIT}u) == 0u) {
|
|
215
|
+
return estimate;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// from a voxel off the surface, past the half voxel the field's surface may sit off it, to a point of the
|
|
219
|
+
// light, short of it by the light's near clip or by a voxel for the expand at that end
|
|
220
|
+
let lifted = position + normal * voxel;
|
|
221
|
+
let to_light = source + radius * sphere_sample_volume(random.yzw) - lifted;
|
|
222
|
+
let span = length(to_light);
|
|
223
|
+
let reach = span - max(near_clip, voxel);
|
|
224
|
+
|
|
225
|
+
if (reach <= 0.0) {
|
|
226
|
+
return estimate;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
let shadow = brick_clipmap_trace(lifted, to_light / span, 0.0, reach, cascade_count, atlas_shift);
|
|
230
|
+
|
|
231
|
+
return select(vec3<f32>(0.0), estimate, shadow.kind == BRICK_TRACE_MISS);
|
|
232
|
+
}
|
|
233
|
+
`, [
|
|
234
|
+
chunk_world_light_cluster_lookup_at,
|
|
235
|
+
chunk_light_cluster_counts,
|
|
236
|
+
chunk_irradiance_clipmap_local_light,
|
|
237
|
+
chunk_rgb_to_luminance,
|
|
238
|
+
chunk_brick_clipmap_trace,
|
|
239
|
+
chunk_sphere_sample_volume,
|
|
240
|
+
POINT.chunk_read,
|
|
241
|
+
SPOT.chunk_read,
|
|
242
|
+
]);
|
|
243
|
+
|
|
244
|
+
chunk_probe_clipmap_local_irradiance.requireResource(LIGHT_DATA_RESOURCE);
|
|
245
|
+
chunk_probe_clipmap_local_irradiance.requireResource(BRICK_LEVELS_RESOURCE);
|
|
246
|
+
chunk_probe_clipmap_local_irradiance.requireResource(WORLD_CLUSTER_DATA_RESOURCE);
|
package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts
CHANGED
|
@@ -4,21 +4,10 @@
|
|
|
4
4
|
* into its flags. It adds ρ_d·E_loc/π to the radiance shade left, ρ_d being the albedo shade left in the
|
|
5
5
|
* ray's \`albedo\`; the next bounce, E_ind, is the bounce pass's, after it (`shader_probe_clipmap_bounce`).
|
|
6
6
|
*
|
|
7
|
-
* - **E_loc, the local lights**: one of the
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
10
|
-
*
|
|
11
|
-
* cosine at the hit's normal.
|
|
12
|
-
* - One is picked by weighted reservoir sampling over the cell's lights, its weight the luminance of
|
|
13
|
-
* that irradiance, with one number stretched over the candidates as `sample_discrete_wrs` does; it
|
|
14
|
-
* lights the hit by its irradiance over the chance of its pick, w/W. The probe's blend of its rays
|
|
15
|
-
* averages the picks to the cell's sum.
|
|
16
|
-
* - The picked light's shadow is a ray traced through the brick clipmap, as the hit's own ray was:
|
|
17
|
-
* from a voxel off the surface, past the field's half-voxel expand, toward a point of the light's
|
|
18
|
-
* sphere drawn as the path tracer draws it, stopping short of that point by the light's near clip or
|
|
19
|
-
* a voxel, whichever is more, for the expand at that end. It sees the light if it misses; a hit, or a
|
|
20
|
-
* march that spends its steps, is no light. A light that casts no shadow traces none.
|
|
21
|
-
* - The pick and the point are drawn from the ray's slot and direction, fresh every update.
|
|
7
|
+
* - **E_loc, the local lights**: one of the hit's world light cluster cell's point and spot lights, picked by
|
|
8
|
+
* weighted reservoir sampling and shadowed by a ray traced through the brick clipmap
|
|
9
|
+
* (`probe_clipmap_local_irradiance`). The probe's blend of its rays averages the picks to the cell's sum.
|
|
10
|
+
* - The pick and the point are drawn from the ray's slot and direction, fresh every update.
|
|
22
11
|
*
|
|
23
12
|
* Its own pass because shade binds nine of a stage's ten storage buffers; apart from the bounce because the
|
|
24
13
|
* two together would bind twelve storage buffers, and a shadow march is another cost than probe taps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_probe_clipmap_light.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_probe_clipmap_light.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js"],"names":[],"mappings":"AAuDA;;;;;;;;;;;;;;;;GAgBG;AACH,yCAFU,aAAa,CAuDpB;8BA9G2B,kCAAkC"}
|