@woosh/meep-engine 3.65.0 → 3.68.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/package.json +1 -1
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +4 -9
- package/src/engine/graphics3/load_cube_environment.js +3 -3
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/format/lut/cube/CubeLut.d.ts +38 -0
- package/src/format/lut/cube/CubeLut.d.ts.map +1 -0
- package/src/format/lut/cube/CubeLut.js +23 -0
- package/src/format/lut/cube/cube_read.d.ts +23 -0
- package/src/format/lut/cube/cube_read.d.ts.map +1 -0
- package/src/format/lut/cube/cube_read.js +199 -0
- package/src/format/lut/cube/cube_write.d.ts +15 -0
- package/src/format/lut/cube/cube_write.d.ts.map +1 -0
- package/src/format/lut/cube/cube_write.js +90 -0
- package/src/shade/playground/probe_clipmap/README.md +1 -0
- package/src/shade/playground/probe_clipmap/index.html +48 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +36 -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 +225 -27
- package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
- package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -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 +73 -4
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +113 -7
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts +12 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.js +12 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +15 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.js +31 -3
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +26 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +55 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +2 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.js +6 -3
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +3 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.js +7 -3
- package/src/shade/renderer/extension/ViewTextures.d.ts +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/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/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/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/eye/GPUCameraExposureManager.d.ts +35 -9
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +81 -11
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +4 -1
- package/src/shade/renderer/postprocess/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/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/conversion/chunk_CRM_REC709_AP1.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +7 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +4 -4
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +86 -5
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +73 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +139 -0
- 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/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/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/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/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/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts +0 -11
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.js +0 -56
- 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
|
@@ -44,6 +44,12 @@ export class Renderer {
|
|
|
44
44
|
* @type {ProbeClipmapSettings}
|
|
45
45
|
*/
|
|
46
46
|
probe_clipmap: ProbeClipmapSettings;
|
|
47
|
+
/**
|
|
48
|
+
* Settings of {@link ShadeIndirectLightingMode.ScreenProbes}, read every frame it runs; its world, the bricks and
|
|
49
|
+
* the world-space probes, is set by {@link probe_clipmap}. See {@link ScreenProbeSettings}.
|
|
50
|
+
* @type {ScreenProbeSettings}
|
|
51
|
+
*/
|
|
52
|
+
screen_probes: ScreenProbeSettings;
|
|
47
53
|
/**
|
|
48
54
|
* Which order-independent transparency technique draws the transparent buckets. Both modes
|
|
49
55
|
* are wired at the single transparency call site and take the same inputs, so this is safe to
|
|
@@ -577,6 +583,7 @@ import { SceneManager } from "./scene/SceneManager.js";
|
|
|
577
583
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
578
584
|
import { MaterialDispatch } from "./material/dispatch/MaterialDispatch.js";
|
|
579
585
|
import { ProbeClipmapSettings } from "./global_illumination/probe_clipmap/ProbeClipmapSettings.js";
|
|
586
|
+
import { ScreenProbeSettings } from "./global_illumination/screen_probe/ScreenProbeSettings.js";
|
|
580
587
|
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
581
588
|
import { ToneMapper } from "./deferred/tonemap/ToneMapper.js";
|
|
582
589
|
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,11 @@ import { shade_device_floor_unmet } from "../device/shade_device_floor_unmet.js"
|
|
|
16
16
|
import { ShadeDeviceFailure } from "../device/ShadeDeviceFailure.js";
|
|
17
17
|
import { PipelineEnquiry } from "../device/pipeline/PipelineEnquiry.js";
|
|
18
18
|
import { ShadeGPUCommandContext } from "../device/ShadeGPUCommandContext.js";
|
|
19
|
+
import { create_atmosphere_sun_state, resolve_atmosphere_sun } from "./atmosphere/resolve_atmosphere_sun.js";
|
|
20
|
+
import { SKY_VIEW_LUT_HEIGHT, SKY_VIEW_LUT_WIDTH, shader_sky_view_lut } from "./atmosphere/shader_sky_view_lut.js";
|
|
19
21
|
import { CameraManager } from "./camera/CameraManager.js";
|
|
20
22
|
import { shader_background } from "./deferred/shader_background.js";
|
|
23
|
+
import { shader_background_sky } from "./deferred/shader_background_sky.js";
|
|
21
24
|
import { shader_composite_volumetrics } from "./deferred/shader_composite_volumetrics.js";
|
|
22
25
|
import { shader_deferred_main } from "./deferred/shader_deferred_main.js";
|
|
23
26
|
import { LOCAL_LIGHT_SHADING } from "./deferred/LOCAL_LIGHT_SHADING.js";
|
|
@@ -48,6 +51,14 @@ import { shader_diffuse_LPV } from "./global_illumination/lpv/shader_diffuse_LPV
|
|
|
48
51
|
import { GPUProbeClipmapGI } from "./global_illumination/probe_clipmap/GPUProbeClipmapGI.js";
|
|
49
52
|
import { ProbeClipmapSettings } from "./global_illumination/probe_clipmap/ProbeClipmapSettings.js";
|
|
50
53
|
import { ProbeClipmapDebugView } from "./global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js";
|
|
54
|
+
import { GPUScreenProbeGI } from "./global_illumination/screen_probe/GPUScreenProbeGI.js";
|
|
55
|
+
import { ScreenProbeSettings } from "./global_illumination/screen_probe/ScreenProbeSettings.js";
|
|
56
|
+
import { ScreenProbeDebugView } from "./global_illumination/screen_probe/ScreenProbeDebugView.js";
|
|
57
|
+
import { graph_screen_probe_debug_view } from "./global_illumination/screen_probe/graph_screen_probe_debug_view.js";
|
|
58
|
+
import {
|
|
59
|
+
shader_screen_probe_diffuse,
|
|
60
|
+
shader_screen_probe_indirect_lighting
|
|
61
|
+
} from "./global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js";
|
|
51
62
|
import { shader_resolve_indirect_lighting } from "./global_illumination/shader_resolve_indirect_lighting.js";
|
|
52
63
|
import { GraphicsContext } from "./GraphicsContext.js";
|
|
53
64
|
import {
|
|
@@ -137,6 +148,8 @@ METRICS.create({ name: 'frame_time' });
|
|
|
137
148
|
*/
|
|
138
149
|
const INTERNAL_RESOLUTION_MIN = 1;
|
|
139
150
|
|
|
151
|
+
const SKY_VIEW_LUT_RESOLUTION = Object.freeze([SKY_VIEW_LUT_WIDTH, SKY_VIEW_LUT_HEIGHT]);
|
|
152
|
+
|
|
140
153
|
MetricCollectionConsoleMonitor.from(METRICS);
|
|
141
154
|
|
|
142
155
|
export class Renderer {
|
|
@@ -243,6 +256,22 @@ export class Renderer {
|
|
|
243
256
|
*/
|
|
244
257
|
#probe_clipmap_gi;
|
|
245
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Settings of {@link ShadeIndirectLightingMode.ScreenProbes}, read every frame it runs; its world, the bricks and
|
|
261
|
+
* the world-space probes, is set by {@link probe_clipmap}. See {@link ScreenProbeSettings}.
|
|
262
|
+
* @type {ScreenProbeSettings}
|
|
263
|
+
*/
|
|
264
|
+
screen_probes = new ScreenProbeSettings();
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* The main view's screen probes under {@link ShadeIndirectLightingMode.ScreenProbes}, over the world
|
|
268
|
+
* {@link #probe_clipmap_gi} holds: made on the first frame in the mode, given back on the first frame out of it.
|
|
269
|
+
*
|
|
270
|
+
* Constructed in {@link initialize}.
|
|
271
|
+
* @type {GPUScreenProbeGI | undefined}
|
|
272
|
+
*/
|
|
273
|
+
#screen_probe_gi;
|
|
274
|
+
|
|
246
275
|
/**
|
|
247
276
|
* Which order-independent transparency technique draws the transparent buckets. Both modes
|
|
248
277
|
* are wired at the single transparency call site and take the same inputs, so this is safe to
|
|
@@ -713,6 +742,26 @@ export class Renderer {
|
|
|
713
742
|
*/
|
|
714
743
|
#extensions = new RenderExtensionRegistry();
|
|
715
744
|
|
|
745
|
+
/**
|
|
746
|
+
* Reusable per-frame sun state and immediate uniform payloads for Hillaire Sky-View LUT and
|
|
747
|
+
* background solar-disc composition.
|
|
748
|
+
*/
|
|
749
|
+
#sky_sun_state = create_atmosphere_sun_state();
|
|
750
|
+
|
|
751
|
+
#sky_view_lut_settings = {
|
|
752
|
+
sun_direction: this.#sky_sun_state.sun_direction,
|
|
753
|
+
resolution_x: SKY_VIEW_LUT_WIDTH,
|
|
754
|
+
sun_irradiance: this.#sky_sun_state.sun_irradiance,
|
|
755
|
+
resolution_y: SKY_VIEW_LUT_HEIGHT,
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
#sky_background_settings = {
|
|
759
|
+
sun_direction: this.#sky_sun_state.sun_direction,
|
|
760
|
+
sun_disk_radius: 0,
|
|
761
|
+
sun_irradiance: this.#sky_sun_state.sun_irradiance,
|
|
762
|
+
sun_has_disc: 0,
|
|
763
|
+
};
|
|
764
|
+
|
|
716
765
|
/**
|
|
717
766
|
* Raised when there is no usable device — the browser has no WebGPU, the hardware is below the
|
|
718
767
|
* floor, or a working device was lost while running. Carries a {@link ShadeDeviceFailure}.
|
|
@@ -1150,6 +1199,8 @@ export class Renderer {
|
|
|
1150
1199
|
}
|
|
1151
1200
|
|
|
1152
1201
|
this.#volumetrics?.reset_history();
|
|
1202
|
+
|
|
1203
|
+
this.#screen_probe_gi?.reset_history();
|
|
1153
1204
|
}
|
|
1154
1205
|
|
|
1155
1206
|
/**
|
|
@@ -1252,6 +1303,7 @@ export class Renderer {
|
|
|
1252
1303
|
* @param {number} params.gr_occlusion_clip
|
|
1253
1304
|
* @param {number} params.gr_buffer_camera_current
|
|
1254
1305
|
* @param {number} params.gr_buffer_camera_previous
|
|
1306
|
+
* @param {number} params.gr_exposure_multiplier - graph resource ID of the exposure the last frame was shown at
|
|
1255
1307
|
* @param {Vector2} params.resolution
|
|
1256
1308
|
* @returns {number} Updated scene-color graph resource ID
|
|
1257
1309
|
*/
|
|
@@ -1273,6 +1325,7 @@ export class Renderer {
|
|
|
1273
1325
|
gr_occlusion_clip,
|
|
1274
1326
|
gr_buffer_camera_current,
|
|
1275
1327
|
gr_buffer_camera_previous,
|
|
1328
|
+
gr_exposure_multiplier,
|
|
1276
1329
|
resolution,
|
|
1277
1330
|
}) {
|
|
1278
1331
|
|
|
@@ -1354,6 +1407,65 @@ export class Renderer {
|
|
|
1354
1407
|
}
|
|
1355
1408
|
break;
|
|
1356
1409
|
|
|
1410
|
+
case ShadeIndirectLightingMode.ScreenProbes: {
|
|
1411
|
+
// the diffuse is the screen probes', resolved once the bent normals exist; the specular the world-space
|
|
1412
|
+
// probes', as under the probe clipmap
|
|
1413
|
+
const diffuse = this.#screen_probe_gi.graph_resolve({
|
|
1414
|
+
graph,
|
|
1415
|
+
depth: gr_texture_depth_current,
|
|
1416
|
+
depth_previous: gr_texture_depth_previous,
|
|
1417
|
+
pbr: gr_texture_pbr,
|
|
1418
|
+
velocity: gr_velocity,
|
|
1419
|
+
bent_normals,
|
|
1420
|
+
exposure: gr_exposure_multiplier,
|
|
1421
|
+
});
|
|
1422
|
+
|
|
1423
|
+
if (prefer_fused && !this.feature_ssr_enabled) {
|
|
1424
|
+
[current_color_out] = graph_image_pass({
|
|
1425
|
+
graph,
|
|
1426
|
+
shader: shader_screen_probe_indirect_lighting,
|
|
1427
|
+
output: [current_color_out],
|
|
1428
|
+
input_depth: gr_texture_depth_current,
|
|
1429
|
+
load_op: "load",
|
|
1430
|
+
inputs: this.#probe_clipmap_gi.write_sampling_bindings({
|
|
1431
|
+
...this.#probe_clipmap_indirect_inputs({
|
|
1432
|
+
view_ctx,
|
|
1433
|
+
depth: gr_texture_depth_current,
|
|
1434
|
+
normal: gr_texture_normal,
|
|
1435
|
+
bent_normal: bent_normals,
|
|
1436
|
+
albedo_ao: gr_texture_material_albedo_ao,
|
|
1437
|
+
pbr: gr_texture_pbr,
|
|
1438
|
+
environment: gr_texture_environment,
|
|
1439
|
+
camera: gr_buffer_camera_current,
|
|
1440
|
+
}),
|
|
1441
|
+
tScreenProbeDiffuse: diffuse,
|
|
1442
|
+
}),
|
|
1443
|
+
});
|
|
1444
|
+
|
|
1445
|
+
return current_color_out;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
diffuse_pass = {
|
|
1449
|
+
shader: shader_screen_probe_diffuse,
|
|
1450
|
+
inputs: {
|
|
1451
|
+
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
1452
|
+
tScreenProbeDiffuse: diffuse,
|
|
1453
|
+
},
|
|
1454
|
+
};
|
|
1455
|
+
specular_pass = {
|
|
1456
|
+
shader: shader_specular_IBL,
|
|
1457
|
+
inputs: {
|
|
1458
|
+
tBentNormals: bent_normals,
|
|
1459
|
+
tNormals: gr_texture_normal,
|
|
1460
|
+
tDepth: gr_texture_depth_current,
|
|
1461
|
+
tPBR: gr_texture_pbr,
|
|
1462
|
+
tEnvironment: gr_texture_environment,
|
|
1463
|
+
camera: gr_buffer_camera_current,
|
|
1464
|
+
},
|
|
1465
|
+
};
|
|
1466
|
+
break;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1357
1469
|
case ShadeIndirectLightingMode.Brick4:
|
|
1358
1470
|
// SSR needs its own specular resolve and denoising passes.
|
|
1359
1471
|
if (prefer_fused && !this.feature_ssr_enabled) {
|
|
@@ -1469,7 +1581,7 @@ export class Renderer {
|
|
|
1469
1581
|
input_environment: gr_texture_environment,
|
|
1470
1582
|
brick4: ssr_brick4,
|
|
1471
1583
|
lpv: ssr_lpv,
|
|
1472
|
-
input_indirect_diffuse: mode === ShadeIndirectLightingMode.ProbeClipmap ? indirect_diffuse : undefined,
|
|
1584
|
+
input_indirect_diffuse: mode === ShadeIndirectLightingMode.ProbeClipmap || mode === ShadeIndirectLightingMode.ScreenProbes ? indirect_diffuse : undefined,
|
|
1473
1585
|
// in every mode: a clipmap of no cascade while it has no probes
|
|
1474
1586
|
probes: this.#probe_clipmap_gi,
|
|
1475
1587
|
shader_switches: this.#shader_switches,
|
|
@@ -1843,6 +1955,7 @@ export class Renderer {
|
|
|
1843
1955
|
this.#views = new ViewManager(graphics, this.#cameras, this.#scenes);
|
|
1844
1956
|
this.#volumetrics = new GPUViewVolumetrics(this.device);
|
|
1845
1957
|
this.#probe_clipmap_gi = new GPUProbeClipmapGI(graphics);
|
|
1958
|
+
this.#screen_probe_gi = new GPUScreenProbeGI(this.device);
|
|
1846
1959
|
|
|
1847
1960
|
const resolution_internal = this.#internal_resolution.asArray();
|
|
1848
1961
|
|
|
@@ -1954,6 +2067,8 @@ export class Renderer {
|
|
|
1954
2067
|
}
|
|
1955
2068
|
|
|
1956
2069
|
enquiry.render.push(shader_background.pipeline_for(color_formats));
|
|
2070
|
+
enquiry.render.push(shader_sky_view_lut.pipeline);
|
|
2071
|
+
enquiry.render.push(shader_background_sky.pipeline_for(color_formats));
|
|
1957
2072
|
|
|
1958
2073
|
if (this.indirect_lighting_mode === ShadeIndirectLightingMode.IBL) {
|
|
1959
2074
|
if (!this.feature_ssr_enabled) {
|
|
@@ -2067,6 +2182,7 @@ export class Renderer {
|
|
|
2067
2182
|
this.#nss?.destroy();
|
|
2068
2183
|
this.#volumetrics?.destroy();
|
|
2069
2184
|
this.#probe_clipmap_gi?.destroy();
|
|
2185
|
+
this.#screen_probe_gi?.destroy();
|
|
2070
2186
|
|
|
2071
2187
|
this.#views?.destroy();
|
|
2072
2188
|
this.#scenes?.destroy();
|
|
@@ -2964,7 +3080,11 @@ export class Renderer {
|
|
|
2964
3080
|
// (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §5); its hits trace their own shadow rays, so it reads no
|
|
2965
3081
|
// shadow map. Made for this view and these settings on the first frame in the mode, and given back
|
|
2966
3082
|
// on the first frame out of it.
|
|
2967
|
-
|
|
3083
|
+
// The screen probes trace the probe clipmap's world and read its world-space probes past their reach, so that
|
|
3084
|
+
// world runs under both modes; the screen probes follow it in the same frame.
|
|
3085
|
+
const screen_probes = this.indirect_lighting_mode === ShadeIndirectLightingMode.ScreenProbes;
|
|
3086
|
+
|
|
3087
|
+
if (this.indirect_lighting_mode === ShadeIndirectLightingMode.ProbeClipmap || screen_probes) {
|
|
2968
3088
|
this.#probe_clipmap_gi.graph_update({
|
|
2969
3089
|
graph,
|
|
2970
3090
|
view: view_ctx,
|
|
@@ -2979,6 +3099,25 @@ export class Renderer {
|
|
|
2979
3099
|
this.#probe_clipmap_gi.release();
|
|
2980
3100
|
}
|
|
2981
3101
|
|
|
3102
|
+
if (screen_probes) {
|
|
3103
|
+
this.#screen_probe_gi.graph_update({
|
|
3104
|
+
graph,
|
|
3105
|
+
view: view_ctx,
|
|
3106
|
+
settings: this.screen_probes,
|
|
3107
|
+
world: this.#probe_clipmap_gi,
|
|
3108
|
+
stbn: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
3109
|
+
depth: gr_texture_depth_current,
|
|
3110
|
+
normal: gr_texture_normal,
|
|
3111
|
+
pbr: gr_texture_pbr,
|
|
3112
|
+
velocity: gr_velocity,
|
|
3113
|
+
occlusion: gr_occlusion_clip,
|
|
3114
|
+
hzb: gr_texture_hzb,
|
|
3115
|
+
exposure: gr_exposure_multiplier,
|
|
3116
|
+
});
|
|
3117
|
+
} else {
|
|
3118
|
+
this.#screen_probe_gi.release();
|
|
3119
|
+
}
|
|
3120
|
+
|
|
2982
3121
|
const volumetrics = this.#volumetrics.graph_update({
|
|
2983
3122
|
graph,
|
|
2984
3123
|
view: view_ctx,
|
|
@@ -3098,18 +3237,60 @@ export class Renderer {
|
|
|
3098
3237
|
|
|
3099
3238
|
|
|
3100
3239
|
// Shade background
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3240
|
+
if (scene_ctx.scene.lights.environment === undefined && scene_ctx.scene.atmosphere.enabled) {
|
|
3241
|
+
const sky = scene_ctx.sky;
|
|
3242
|
+
sky.update();
|
|
3243
|
+
|
|
3244
|
+
const gr_sky_transmittance = volumetrics.lut_transmittance
|
|
3245
|
+
?? graph_import_texture(graph, sky.lut_transmittance, "sky/transmittance");
|
|
3246
|
+
const gr_sky_multiscatter = volumetrics.lut_multiple_scattering
|
|
3247
|
+
?? graph_import_texture(graph, sky.lut_multiple_scattering, "sky/multiscatter");
|
|
3248
|
+
|
|
3249
|
+
const sun = resolve_atmosphere_sun(scene_ctx.scene, this.#sky_sun_state);
|
|
3250
|
+
this.#sky_background_settings.sun_disk_radius = sun.sun_disk_radius;
|
|
3251
|
+
this.#sky_background_settings.sun_has_disc = sun.sun_has_disc;
|
|
3252
|
+
|
|
3253
|
+
const [gr_sky_view_lut] = graph_image_pass({
|
|
3254
|
+
graph,
|
|
3255
|
+
shader: shader_sky_view_lut,
|
|
3256
|
+
output_resolution: SKY_VIEW_LUT_RESOLUTION,
|
|
3257
|
+
inputs: {
|
|
3258
|
+
settings: this.#sky_view_lut_settings,
|
|
3259
|
+
camera: view_ctx.camera.buffer,
|
|
3260
|
+
atmosphere: sky.parameters_buffer.buffer,
|
|
3261
|
+
tSkyLutTransmittance: gr_sky_transmittance,
|
|
3262
|
+
tSkyLutMultiscatter: gr_sky_multiscatter,
|
|
3263
|
+
},
|
|
3264
|
+
});
|
|
3265
|
+
|
|
3266
|
+
[current_color_out] = graph_image_pass({
|
|
3267
|
+
graph,
|
|
3268
|
+
shader: shader_background_sky,
|
|
3269
|
+
inputs: {
|
|
3270
|
+
settings: this.#sky_background_settings,
|
|
3271
|
+
camera: view_ctx.camera.buffer,
|
|
3272
|
+
atmosphere: sky.parameters_buffer.buffer,
|
|
3273
|
+
tSkyViewLut: gr_sky_view_lut,
|
|
3274
|
+
tSkyLutTransmittance: gr_sky_transmittance,
|
|
3275
|
+
},
|
|
3276
|
+
input_depth: gr_texture_depth_current,
|
|
3277
|
+
load_op: "load",
|
|
3278
|
+
output: [current_color_out],
|
|
3279
|
+
});
|
|
3280
|
+
} else {
|
|
3281
|
+
[current_color_out] = graph_image_pass({
|
|
3282
|
+
graph,
|
|
3283
|
+
shader: shader_background,
|
|
3284
|
+
inputs: {
|
|
3285
|
+
camera: view_ctx.camera.buffer,
|
|
3286
|
+
view: view_ctx.uniform_buffer.buffer,
|
|
3287
|
+
tEnvironment: gr_texture_environment,
|
|
3288
|
+
},
|
|
3289
|
+
input_depth: gr_texture_depth_current,
|
|
3290
|
+
load_op: "load",
|
|
3291
|
+
output: [current_color_out],
|
|
3292
|
+
});
|
|
3293
|
+
}
|
|
3113
3294
|
|
|
3114
3295
|
current_color_out = this.#graph_indirect_lighting({
|
|
3115
3296
|
graph,
|
|
@@ -3129,9 +3310,15 @@ export class Renderer {
|
|
|
3129
3310
|
gr_occlusion_clip,
|
|
3130
3311
|
gr_buffer_camera_current,
|
|
3131
3312
|
gr_buffer_camera_previous,
|
|
3313
|
+
gr_exposure_multiplier,
|
|
3132
3314
|
resolution,
|
|
3133
3315
|
});
|
|
3134
3316
|
|
|
3317
|
+
// the opaque surfaces' lit colour, the screen probes' hits' radiance next frame: before fog and transparencies
|
|
3318
|
+
if (screen_probes) {
|
|
3319
|
+
this.#screen_probe_gi.graph_capture({ graph, color: current_color_out });
|
|
3320
|
+
}
|
|
3321
|
+
|
|
3135
3322
|
// Composite volumetric fog over the finalized opaque + background + indirect colour.
|
|
3136
3323
|
// A dedicated pass (not inline in the shading shaders) because indirect lighting is added
|
|
3137
3324
|
// in a separate additively-blended pass, so the full surface radiance only exists here.
|
|
@@ -3299,7 +3486,18 @@ export class Renderer {
|
|
|
3299
3486
|
|
|
3300
3487
|
// the probe clipmap mode's debug views replace the colour the same way
|
|
3301
3488
|
if (
|
|
3302
|
-
|
|
3489
|
+
screen_probes
|
|
3490
|
+
&& this.screen_probes.debug_view !== ScreenProbeDebugView.None
|
|
3491
|
+
) {
|
|
3492
|
+
current_color_out = graph_screen_probe_debug_view({
|
|
3493
|
+
graph,
|
|
3494
|
+
gi: this.#screen_probe_gi,
|
|
3495
|
+
view_mode: this.screen_probes.debug_view,
|
|
3496
|
+
depth: gr_texture_depth_current,
|
|
3497
|
+
resolution: resolution_internal.asArray(),
|
|
3498
|
+
});
|
|
3499
|
+
} else if (
|
|
3500
|
+
(this.indirect_lighting_mode === ShadeIndirectLightingMode.ProbeClipmap || screen_probes)
|
|
3303
3501
|
&& this.probe_clipmap.debug_view !== ProbeClipmapDebugView.None
|
|
3304
3502
|
) {
|
|
3305
3503
|
current_color_out = this.#probe_clipmap_gi.graph_debug_view({
|
|
@@ -3404,8 +3602,6 @@ export class Renderer {
|
|
|
3404
3602
|
});
|
|
3405
3603
|
}
|
|
3406
3604
|
|
|
3407
|
-
let exposure = -1;
|
|
3408
|
-
|
|
3409
3605
|
/*
|
|
3410
3606
|
The scene as it stands before bloom composites over it: what the metering reads, and what
|
|
3411
3607
|
bloom reads too.
|
|
@@ -3437,21 +3633,22 @@ export class Renderer {
|
|
|
3437
3633
|
current_color_out = bloom.composited;
|
|
3438
3634
|
}
|
|
3439
3635
|
|
|
3440
|
-
|
|
3441
|
-
// TODO force time_delta_second to a very high value on view transition
|
|
3636
|
+
const gr_exposure_adaptation = graph_import_buffer(graph, this.#autoexposure.adaptation, "exposure adaptation");
|
|
3442
3637
|
|
|
3443
|
-
|
|
3638
|
+
// TODO force time_delta_second to a very high value on view transition
|
|
3639
|
+
const exposure = this.feature_automatic_exposure_enabled
|
|
3640
|
+
? this.#autoexposure.update({
|
|
3444
3641
|
graph,
|
|
3445
3642
|
input_color: metered_color,
|
|
3446
3643
|
multiplier: gr_exposure_multiplier,
|
|
3644
|
+
adaptation: gr_exposure_adaptation,
|
|
3447
3645
|
time_delta_seconds,
|
|
3646
|
+
})
|
|
3647
|
+
: this.#autoexposure.unadapted({
|
|
3648
|
+
graph,
|
|
3649
|
+
multiplier: gr_exposure_multiplier,
|
|
3650
|
+
adaptation: gr_exposure_adaptation,
|
|
3448
3651
|
});
|
|
3449
|
-
}
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
if (this.feature_automatic_exposure_enabled === false) {
|
|
3453
|
-
exposure = this.#autoexposure.unadapted({ graph, multiplier: gr_exposure_multiplier });
|
|
3454
|
-
}
|
|
3455
3652
|
|
|
3456
3653
|
|
|
3457
3654
|
// current_color_out = graph_draw_texture_as_rgba({
|
|
@@ -3477,7 +3674,8 @@ export class Renderer {
|
|
|
3477
3674
|
current_color_out = this.tone_mapper.render({
|
|
3478
3675
|
graph,
|
|
3479
3676
|
input_color: current_color_out,
|
|
3480
|
-
exposure,
|
|
3677
|
+
exposure: exposure.multiplier,
|
|
3678
|
+
adaptation: exposure.adaptation,
|
|
3481
3679
|
hdr: this.#hdr_supported,
|
|
3482
3680
|
target: gr_texture_canvas,
|
|
3483
3681
|
});
|
|
@@ -17,4 +17,13 @@ export const ShadeIndirectLightingMode = {
|
|
|
17
17
|
* `Renderer.probe_clipmap`. Lit as {@link IBL} until its probes are traced (that proposal's §13, S4).
|
|
18
18
|
*/
|
|
19
19
|
ProbeClipmap: 3,
|
|
20
|
+
/**
|
|
21
|
+
* Lumen's screen probe gather over the {@link ProbeClipmap}'s world: probes placed on the G-buffer every few
|
|
22
|
+
* pixels, more densely where interpolation between them would cross an edge, traced through the screen and
|
|
23
|
+
* then the SDF bricks, the world-space probes standing in for what lies past a probe's own reach, and
|
|
24
|
+
* reprojected from frame to frame (`global_illumination/screen_probe/GPUScreenProbeGI.js`). The opaque surfaces'
|
|
25
|
+
* diffuse light is the screen probes'; everything else reads the world-space probes as under
|
|
26
|
+
* {@link ProbeClipmap}. Settings are `Renderer.screen_probes`, and `Renderer.probe_clipmap` for the world.
|
|
27
|
+
*/
|
|
28
|
+
ScreenProbes: 4,
|
|
20
29
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packed GPU uniform representation of {@link SceneAtmosphere} in GPU atmosphere units
|
|
3
|
+
* ($\text{km}$ and $\text{km}^{-1}$, scaled via `ATMOSPHERE_UNIT_METERS`).
|
|
4
|
+
*
|
|
5
|
+
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
6
|
+
* @type {WebGPUStruct}
|
|
7
|
+
*/
|
|
8
|
+
export const ATMOSPHERE_PARAMETERS_STRUCT: WebGPUStruct;
|
|
9
|
+
/**
|
|
10
|
+
* Deeply frozen default Earth uniform payload matching {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
11
|
+
*/
|
|
12
|
+
export const ATMOSPHERE_EARTH_UNIFORM: Readonly<Record<string, any>>;
|
|
13
|
+
/**
|
|
14
|
+
* Parameterised Hillaire (2020) atmosphere medium, geometry, and LUT coordinate helpers operating
|
|
15
|
+
* on {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
16
|
+
*
|
|
17
|
+
* @type {CodeChunk}
|
|
18
|
+
*/
|
|
19
|
+
export const chunk_atmosphere_parameters: CodeChunk;
|
|
20
|
+
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
21
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
22
|
+
//# sourceMappingURL=ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ATMOSPHERE_PARAMETERS_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,2CAFU,YAAY,CAmBK;AAE3B;;GAEG;AACH,qEAQK;AAEL;;;;;GAKG;AACH,0CAFU,SAAS,CA4GjB;6BA5J2B,gCAAgC;0BAFnC,iCAAiC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { chunk_atmosphere_ray_bounds } from "../shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js";
|
|
2
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
3
|
+
import { f32, vec3f } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
4
|
+
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
5
|
+
import { ATMOSPHERE_ALTITUDE_CUTOFF } from "./ATMOSPHERE_ALTITUDE_CUTOFF.js";
|
|
6
|
+
import { ATMOSPHERE_UNIT_SCALE_DECLARATION } from "./ATMOSPHERE_UNIT_SCALE.js";
|
|
7
|
+
import { SceneAtmosphere } from "./SceneAtmosphere.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Packed GPU uniform representation of {@link SceneAtmosphere} in GPU atmosphere units
|
|
11
|
+
* ($\text{km}$ and $\text{km}^{-1}$, scaled via `ATMOSPHERE_UNIT_METERS`).
|
|
12
|
+
*
|
|
13
|
+
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
14
|
+
* @type {WebGPUStruct}
|
|
15
|
+
*/
|
|
16
|
+
export const ATMOSPHERE_PARAMETERS_STRUCT = WebGPUStruct.from({
|
|
17
|
+
planet_radius: f32,
|
|
18
|
+
atmosphere_height: f32,
|
|
19
|
+
rayleigh_scale_height: f32,
|
|
20
|
+
mie_scale_height: f32,
|
|
21
|
+
|
|
22
|
+
rayleigh_scattering: vec3f,
|
|
23
|
+
mie_phase_g: f32,
|
|
24
|
+
|
|
25
|
+
mie_scattering: vec3f,
|
|
26
|
+
ozone_center_height: f32,
|
|
27
|
+
|
|
28
|
+
mie_absorption: vec3f,
|
|
29
|
+
ozone_half_width: f32,
|
|
30
|
+
|
|
31
|
+
ozone_absorption: vec3f,
|
|
32
|
+
ground_albedo: vec3f,
|
|
33
|
+
}, "AtmosphereParameters");
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Deeply frozen default Earth uniform payload matching {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
37
|
+
*/
|
|
38
|
+
export const ATMOSPHERE_EARTH_UNIFORM = (() => {
|
|
39
|
+
const raw = new SceneAtmosphere().write_uniform();
|
|
40
|
+
raw.rayleigh_scattering = Object.freeze([...raw.rayleigh_scattering]);
|
|
41
|
+
raw.mie_scattering = Object.freeze([...raw.mie_scattering]);
|
|
42
|
+
raw.mie_absorption = Object.freeze([...raw.mie_absorption]);
|
|
43
|
+
raw.ozone_absorption = Object.freeze([...raw.ozone_absorption]);
|
|
44
|
+
raw.ground_albedo = Object.freeze([...raw.ground_albedo]);
|
|
45
|
+
return Object.freeze(raw);
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Parameterised Hillaire (2020) atmosphere medium, geometry, and LUT coordinate helpers operating
|
|
50
|
+
* on {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
51
|
+
*
|
|
52
|
+
* @type {CodeChunk}
|
|
53
|
+
*/
|
|
54
|
+
export const chunk_atmosphere_parameters = CodeChunk.from(
|
|
55
|
+
//language=WGSL
|
|
56
|
+
`
|
|
57
|
+
fn atmosphere_earth_parameters() -> ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref} {
|
|
58
|
+
var atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref};
|
|
59
|
+
atm.planet_radius = 6378000.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
60
|
+
atm.atmosphere_height = 100000.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
61
|
+
atm.rayleigh_scale_height = 8000.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
62
|
+
atm.mie_scale_height = 1200.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
63
|
+
atm.rayleigh_scattering = vec3<f32>(5.802e-6, 13.558e-6, 33.100e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
|
|
64
|
+
atm.mie_phase_g = 0.8;
|
|
65
|
+
atm.mie_scattering = vec3<f32>(3.996e-6, 3.996e-6, 3.996e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
|
|
66
|
+
atm.ozone_center_height = 25000.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
67
|
+
atm.mie_absorption = vec3<f32>(0.444e-6, 0.444e-6, 0.444e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
|
|
68
|
+
atm.ozone_half_width = 15000.0 * METERS_TO_ATMOSPHERE_UNITS;
|
|
69
|
+
atm.ozone_absorption = vec3<f32>(0.650e-6, 1.881e-6, 0.085e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
|
|
70
|
+
atm.ground_albedo = vec3<f32>(0.3, 0.3, 0.3);
|
|
71
|
+
return atm;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
fn atmosphere_planet_center_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}) -> vec3<f32> {
|
|
75
|
+
return vec3<f32>(0.0, -atm.planet_radius, 0.0);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Converts a world-space position (in metres) into planet-centre-relative GPU atmosphere units (km).
|
|
79
|
+
fn atmosphere_position_relative_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, pos_ws: vec3<f32>) -> vec3<f32> {
|
|
80
|
+
return pos_ws * METERS_TO_ATMOSPHERE_UNITS - atmosphere_planet_center_for(atm);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Planet-centre-relative observer position (in km) clamped away from the ground and top-of-atmosphere boundaries.
|
|
84
|
+
fn atmosphere_clamped_observer_relative(
|
|
85
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
86
|
+
world_pos: vec3<f32>
|
|
87
|
+
) -> vec3<f32> {
|
|
88
|
+
let rel = atmosphere_position_relative_for(atm, world_pos);
|
|
89
|
+
let r_raw = length(rel);
|
|
90
|
+
let up = select(vec3<f32>(0.0, 1.0, 0.0), rel / r_raw, r_raw > 0.0);
|
|
91
|
+
let cutoff = ${ATMOSPHERE_ALTITUDE_CUTOFF.toFixed(1)} * METERS_TO_ATMOSPHERE_UNITS;
|
|
92
|
+
let min_r = atm.planet_radius + cutoff;
|
|
93
|
+
let max_r = max(min_r, atm.planet_radius + atm.atmosphere_height - cutoff);
|
|
94
|
+
return up * clamp(r_raw, min_r, max_r);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
fn atmosphere_density_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, h: f32) -> vec3<f32> {
|
|
98
|
+
let clamped_h = max(h, 0.0);
|
|
99
|
+
let rayleigh = exp(-clamped_h / max(atm.rayleigh_scale_height, MIN_ATMOSPHERE_LENGTH_UNITS));
|
|
100
|
+
let mie = exp(-clamped_h / max(atm.mie_scale_height, MIN_ATMOSPHERE_LENGTH_UNITS));
|
|
101
|
+
let ozone = max(0.0, 1.0 - abs(h - atm.ozone_center_height) / max(atm.ozone_half_width, MIN_ATMOSPHERE_LENGTH_UNITS));
|
|
102
|
+
return vec3<f32>(rayleigh, mie, ozone);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
fn atmosphere_extinction_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, density: vec3<f32>) -> vec3<f32> {
|
|
106
|
+
let rayleigh = density.x * atm.rayleigh_scattering;
|
|
107
|
+
let mie = density.y * (atm.mie_scattering + atm.mie_absorption);
|
|
108
|
+
let ozone = density.z * atm.ozone_absorption;
|
|
109
|
+
return rayleigh + mie + ozone;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
fn atmosphere_ray_bounds_for(
|
|
113
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
114
|
+
origin_rel: vec3<f32>,
|
|
115
|
+
ray_direction: vec3<f32>
|
|
116
|
+
) -> AtmosphereRayBounds {
|
|
117
|
+
let b = dot(origin_rel, ray_direction);
|
|
118
|
+
let r = length(origin_rel);
|
|
119
|
+
let b2 = b * b;
|
|
120
|
+
|
|
121
|
+
let ground_r = atm.planet_radius;
|
|
122
|
+
let top_r = atm.planet_radius + atm.atmosphere_height;
|
|
123
|
+
|
|
124
|
+
// Difference-of-squares factoring (r - R)(r + R) avoids catastrophic f32 cancellation when
|
|
125
|
+
// altitude (r - ground_r) is metres above a 6,378 km planet radius.
|
|
126
|
+
let atmosphere_distance = -b + sqrt(max(b2 - (r - top_r) * (r + top_r), 0.0));
|
|
127
|
+
|
|
128
|
+
let ground_discriminant = b2 - (r - ground_r) * (r + ground_r);
|
|
129
|
+
let hits_ground = (b < 0.0) && (ground_discriminant >= 0.0);
|
|
130
|
+
let ground_distance = select(
|
|
131
|
+
-1.0,
|
|
132
|
+
max(-b - sqrt(max(ground_discriminant, 0.0)), 0.0),
|
|
133
|
+
hits_ground
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
var result: AtmosphereRayBounds;
|
|
137
|
+
result.t_max = select(atmosphere_distance, ground_distance, hits_ground);
|
|
138
|
+
result.ground_distance = ground_distance;
|
|
139
|
+
result.hits_ground = hits_ground;
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
fn sky_lut_uv_for(
|
|
144
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
145
|
+
height: f32,
|
|
146
|
+
sun_cos_zenith_angle: f32,
|
|
147
|
+
resolution: vec2<f32>
|
|
148
|
+
) -> vec2<f32> {
|
|
149
|
+
let unit = vec2<f32>(
|
|
150
|
+
saturate(0.5 + 0.5 * sun_cos_zenith_angle),
|
|
151
|
+
saturate(height / max(atm.atmosphere_height, MIN_ATMOSPHERE_LENGTH_UNITS))
|
|
152
|
+
);
|
|
153
|
+
return (unit * (resolution - 1.0) + 0.5) / resolution;
|
|
154
|
+
}
|
|
155
|
+
`, [
|
|
156
|
+
ATMOSPHERE_UNIT_SCALE_DECLARATION,
|
|
157
|
+
ATMOSPHERE_PARAMETERS_STRUCT.declaration_chunk,
|
|
158
|
+
chunk_atmosphere_ray_bounds,
|
|
159
|
+
]
|
|
160
|
+
);
|