@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
|
@@ -1,119 +1,78 @@
|
|
|
1
|
-
import { ATMOSPHERE_RADII_DECLARATION } from "../shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js";
|
|
2
|
-
import {
|
|
3
|
-
C_MIE_ABSORPTION_DECLARATION,
|
|
4
|
-
C_MIE_SCATTERING_DECLARATION
|
|
5
|
-
} from "../shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js";
|
|
6
|
-
import { C_OZONE_DECLARATION } from "../shader/chunk/atmosphere/C_OZONE_DECLARATION.js";
|
|
7
|
-
import { C_RAYLEIGH_DECLARATION } from "../shader/chunk/atmosphere/C_RAYLEIGH_DECLARATION.js";
|
|
8
|
-
import { chunk_atmosphere_density } from "../shader/chunk/atmosphere/chunk_atmosphere_density.js";
|
|
9
|
-
import { chunk_atmosphere_ray_bounds } from "../shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js";
|
|
10
|
-
import {
|
|
11
|
-
chunk_position_relative_to_planet_center
|
|
12
|
-
} from "../shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js";
|
|
13
1
|
import {
|
|
14
2
|
chunk_phase_mie_cornette_shanks
|
|
15
3
|
} from "../shader/chunk/atmosphere/phase/chunk_phase_mie_cornette_shanks.js";
|
|
16
4
|
import { chunk_phase_rayleigh } from "../shader/chunk/atmosphere/phase/chunk_phase_rayleigh.js";
|
|
17
5
|
import { PI_DECLARATION } from "../shader/chunk/math/PI_DECLARATION.js";
|
|
18
6
|
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
19
|
-
import {
|
|
20
|
-
|
|
7
|
+
import {
|
|
8
|
+
ATMOSPHERE_PARAMETERS_STRUCT,
|
|
9
|
+
chunk_atmosphere_parameters
|
|
10
|
+
} from "./ATMOSPHERE_PARAMETERS_STRUCT.js";
|
|
11
|
+
import { chunk_sample_transmittance_lut_params_for } from "./chunk_sample_transmittance_lut.js";
|
|
21
12
|
import { MULTISCATTER_LUT_STEPS } from "./MULTISCATTER_LUT_CONFIG.js";
|
|
22
13
|
|
|
23
|
-
|
|
24
14
|
/**
|
|
25
|
-
* One direction's contribution to Equations (5) and (7) from
|
|
26
|
-
* second-order in-scattered luminance along `rayDir`, `out_fms` the luminance that would
|
|
27
|
-
*
|
|
28
|
-
* over the direction set -- see {@link chunk_multiscatter_sample_direction} -- by taking the
|
|
29
|
-
* mean, which is what the paper's uniform phase p_u = 1/(4*PI) reduces to.
|
|
30
|
-
*
|
|
31
|
-
* Splitting one direction out of the loop is what lets `shader_multiscatter_lut` put a
|
|
32
|
-
* thread on each of the 64 directions.
|
|
33
|
-
*
|
|
34
|
-
* `pos` is assumed to be inside the atmosphere and at or above the surface, which is what
|
|
35
|
-
* makes the far root of the outer sphere the atmosphere exit.
|
|
15
|
+
* One direction's contribution to Equations (5) and (7) from Hillaire (2020): `out_lum` is the
|
|
16
|
+
* second-order in-scattered luminance along `rayDir`, `out_fms` the luminance that would come back
|
|
17
|
+
* if the medium scattered one unit of light isotropically.
|
|
36
18
|
*
|
|
37
19
|
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
38
|
-
* @see https://www.shadertoy.com/view/slSXRW
|
|
39
20
|
* @type {CodeChunk}
|
|
40
21
|
*/
|
|
41
22
|
export const chunk_get_multiscatter_values = CodeChunk.from(
|
|
42
23
|
//language=WGSL
|
|
43
24
|
`
|
|
44
|
-
const MULTISCATTER_GROUND_ALBEDO = vec3(0.3);
|
|
45
25
|
const MULTISCATTER_STEPS = ${MULTISCATTER_LUT_STEPS}u;
|
|
46
26
|
const MULTISCATTER_STEPS_F = f32(MULTISCATTER_STEPS);
|
|
47
27
|
|
|
48
|
-
fn
|
|
49
|
-
|
|
28
|
+
fn get_multiscatter_values_rel_for(
|
|
29
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
30
|
+
rel: vec3<f32>,
|
|
50
31
|
sunDir: vec3<f32>,
|
|
51
32
|
rayDir: vec3<f32>,
|
|
52
|
-
out_lum: ptr<function,vec3<f32>>,
|
|
53
|
-
out_fms: ptr<function,vec3<f32>>,
|
|
33
|
+
out_lum: ptr<function, vec3<f32>>,
|
|
34
|
+
out_fms: ptr<function, vec3<f32>>,
|
|
54
35
|
) {
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
// one quadratic setup for both spheres; in case we're looking down, the ground is as far
|
|
58
|
-
// as the march goes
|
|
59
|
-
let bounds = atmosphere_ray_bounds(rel, rayDir);
|
|
60
|
-
|
|
36
|
+
let bounds = atmosphere_ray_bounds_for(atm, rel, rayDir);
|
|
61
37
|
let tMax = bounds.t_max;
|
|
62
38
|
|
|
63
39
|
let cosTheta = dot(rayDir, sunDir);
|
|
40
|
+
let miePhaseValue = phase_mie(cosTheta, atm.mie_phase_g);
|
|
41
|
+
let rayleighPhaseValue = phase_rayleigh(cosTheta);
|
|
64
42
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var lum = vec3(0.0);
|
|
69
|
-
var lumFactor = vec3(0.0);
|
|
70
|
-
var transmittance = vec3(1.0);
|
|
43
|
+
var lum = vec3<f32>(0.0);
|
|
44
|
+
var lumFactor = vec3<f32>(0.0);
|
|
45
|
+
var transmittance = vec3<f32>(1.0);
|
|
71
46
|
|
|
72
47
|
var t = 0.0;
|
|
73
48
|
for (var stepI = 0u; stepI < MULTISCATTER_STEPS; stepI++) {
|
|
74
|
-
let newT = (
|
|
49
|
+
let newT = ((f32(stepI) + 0.3) / MULTISCATTER_STEPS_F) * tMax;
|
|
75
50
|
let dt = newT - t;
|
|
76
51
|
t = newT;
|
|
77
52
|
|
|
78
|
-
// Stepping the planet-relative position directly: building the world position only
|
|
79
|
-
// to have the LUT lookup subtract the planet centre back off it was the second of
|
|
80
|
-
// two square roots per step.
|
|
81
53
|
let step_rel = rel + t * rayDir;
|
|
82
54
|
let step_radius = length(step_rel);
|
|
83
55
|
let up = step_rel / step_radius;
|
|
84
56
|
|
|
85
|
-
let local_height = step_radius -
|
|
86
|
-
let local_density =
|
|
87
|
-
|
|
88
|
-
let ozone_density = local_density.z;
|
|
89
|
-
let ozone_absorption = ozone_density * C_OZONE;
|
|
90
|
-
|
|
91
|
-
let mie_density = local_density.y;
|
|
92
|
-
let mie_absorption = mie_density * C_MIE_ABSORPTION;
|
|
93
|
-
let mie_scattering = mie_density * C_MIE_SCATTERING;
|
|
94
|
-
|
|
95
|
-
let rayleigh_absorption = 0.0;
|
|
96
|
-
let rayleigh_scattering = local_density.x * C_RAYLEIGH;
|
|
97
|
-
|
|
98
|
-
let extinction = rayleigh_scattering + rayleigh_absorption + mie_scattering + mie_absorption + ozone_absorption;
|
|
57
|
+
let local_height = step_radius - atm.planet_radius;
|
|
58
|
+
let local_density = atmosphere_density_for(atm, local_height);
|
|
99
59
|
|
|
60
|
+
let rayleigh_scattering = local_density.x * atm.rayleigh_scattering;
|
|
61
|
+
let mie_scattering = local_density.y * atm.mie_scattering;
|
|
62
|
+
let extinction = max(atmosphere_extinction_for(atm, local_density), vec3<f32>(1e-12));
|
|
100
63
|
|
|
101
64
|
let sample_transmittance = exp(-dt * extinction);
|
|
102
65
|
|
|
103
|
-
// Integrate within each segment.
|
|
104
66
|
let scatteringNoPhase = rayleigh_scattering + mie_scattering;
|
|
105
67
|
let scatteringF = (scatteringNoPhase - scatteringNoPhase * sample_transmittance) / extinction;
|
|
106
68
|
lumFactor += transmittance * scatteringF;
|
|
107
69
|
|
|
108
|
-
|
|
109
|
-
// In equation (6), I think S(x,w_s) should be S(x-tv,w_s).
|
|
110
|
-
let sun_transmittance = sample_transmittance_lut_params(local_height, dot(sunDir, up));
|
|
70
|
+
let sun_transmittance = sample_transmittance_lut_params_for(atm, local_height, dot(sunDir, up));
|
|
111
71
|
|
|
112
72
|
let rayleighInScattering = rayleigh_scattering * rayleighPhaseValue;
|
|
113
73
|
let mieInScattering = mie_scattering * miePhaseValue;
|
|
114
74
|
let inScattering = (rayleighInScattering + mieInScattering) * sun_transmittance;
|
|
115
75
|
|
|
116
|
-
// Integrated scattering within path segment.
|
|
117
76
|
let scatteringIntegral = (inScattering - inScattering * sample_transmittance) / extinction;
|
|
118
77
|
|
|
119
78
|
lum += scatteringIntegral * transmittance;
|
|
@@ -121,42 +80,46 @@ fn get_multiscatter_values(
|
|
|
121
80
|
}
|
|
122
81
|
|
|
123
82
|
if (bounds.hits_ground) {
|
|
124
|
-
|
|
125
|
-
// Light bounced off the planet. Hillaire reaches this through
|
|
126
|
-
// IntegrateScatteredLuminance:
|
|
127
|
-
// L += ... * throughput * NdotL * Atmosphere.GroundAlbedo / PI
|
|
128
|
-
// The surface is Lambertian, hence albedo/PI, and the cosine belongs to the hit
|
|
129
|
-
// point rather than to \`pos\`: along a shallow ray the two are hundreds of
|
|
130
|
-
// kilometres apart and can sit on opposite sides of the terminator.
|
|
131
83
|
let hit_up = normalize(rel + bounds.ground_distance * rayDir);
|
|
132
|
-
|
|
133
84
|
let sun_cos_zenith_angle = dot(hit_up, sunDir);
|
|
134
|
-
|
|
135
|
-
// the hit lies on the surface by construction, so its LUT altitude is exactly zero
|
|
136
|
-
let sun_transmittance = sample_transmittance_lut_params(0.0, sun_cos_zenith_angle);
|
|
85
|
+
let sun_transmittance = sample_transmittance_lut_params_for(atm, 0.0, sun_cos_zenith_angle);
|
|
137
86
|
|
|
138
87
|
lum += transmittance
|
|
139
88
|
* saturate(sun_cos_zenith_angle)
|
|
140
|
-
* (
|
|
89
|
+
* (atm.ground_albedo / PI)
|
|
141
90
|
* sun_transmittance;
|
|
142
91
|
}
|
|
143
92
|
|
|
144
93
|
*out_fms = lumFactor;
|
|
145
94
|
*out_lum = lum;
|
|
95
|
+
}
|
|
146
96
|
|
|
97
|
+
fn get_multiscatter_values_for(
|
|
98
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
99
|
+
pos_ws: vec3<f32>,
|
|
100
|
+
sunDir: vec3<f32>,
|
|
101
|
+
rayDir: vec3<f32>,
|
|
102
|
+
out_lum: ptr<function, vec3<f32>>,
|
|
103
|
+
out_fms: ptr<function, vec3<f32>>,
|
|
104
|
+
) {
|
|
105
|
+
let rel = atmosphere_position_relative_for(atm, pos_ws);
|
|
106
|
+
get_multiscatter_values_rel_for(atm, rel, sunDir, rayDir, out_lum, out_fms);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
fn get_multiscatter_values(
|
|
110
|
+
pos_ws: vec3<f32>,
|
|
111
|
+
sunDir: vec3<f32>,
|
|
112
|
+
rayDir: vec3<f32>,
|
|
113
|
+
out_lum: ptr<function, vec3<f32>>,
|
|
114
|
+
out_fms: ptr<function, vec3<f32>>,
|
|
115
|
+
) {
|
|
116
|
+
get_multiscatter_values_for(atmosphere_earth_parameters(), pos_ws, sunDir, rayDir, out_lum, out_fms);
|
|
147
117
|
}
|
|
148
118
|
`, [
|
|
149
119
|
PI_DECLARATION,
|
|
150
|
-
|
|
151
|
-
C_OZONE_DECLARATION,
|
|
152
|
-
C_MIE_SCATTERING_DECLARATION,
|
|
153
|
-
C_MIE_ABSORPTION_DECLARATION,
|
|
154
|
-
C_RAYLEIGH_DECLARATION,
|
|
155
|
-
chunk_atmosphere_density,
|
|
156
|
-
chunk_atmosphere_ray_bounds,
|
|
120
|
+
chunk_atmosphere_parameters,
|
|
157
121
|
chunk_phase_mie_cornette_shanks,
|
|
158
122
|
chunk_phase_rayleigh,
|
|
159
|
-
|
|
160
|
-
chunk_sample_transmittance_lut_params,
|
|
123
|
+
chunk_sample_transmittance_lut_params_for,
|
|
161
124
|
]
|
|
162
|
-
)
|
|
125
|
+
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const SKY_SCATTERING_RAYMARCH_STEPS: 32;
|
|
2
|
+
/**
|
|
3
|
+
* Shared 32-step Hillaire (2020) sky radiance integrator (single scattering + isotropic
|
|
4
|
+
* multiple-scattering LUT $\Psi_{\text{ms}}$ + Lambertian planet ground bounce), returning radiance
|
|
5
|
+
* per unit extraterrestrial solar irradiance.
|
|
6
|
+
*
|
|
7
|
+
* Used by both {@link shader_sky_irradiance_lut} (scene-cached octahedral sky IBL) and
|
|
8
|
+
* {@link shader_sky_view_lut} (per-view $192 \times 108$ horizon-warped Sky-View LUT).
|
|
9
|
+
*
|
|
10
|
+
* @type {CodeChunk}
|
|
11
|
+
*/
|
|
12
|
+
export const chunk_raymarch_sky_scattering: CodeChunk;
|
|
13
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
14
|
+
//# sourceMappingURL=chunk_raymarch_sky_scattering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_raymarch_sky_scattering.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js"],"names":[],"mappings":"AAaA,+CAAgD;AAEhD;;;;;;;;;GASG;AACH,4CAFU,SAAS,CA+EjB;0BAjGwB,iCAAiC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import {
|
|
2
|
+
chunk_phase_mie_cornette_shanks
|
|
3
|
+
} from "../shader/chunk/atmosphere/phase/chunk_phase_mie_cornette_shanks.js";
|
|
4
|
+
import { chunk_phase_rayleigh } from "../shader/chunk/atmosphere/phase/chunk_phase_rayleigh.js";
|
|
5
|
+
import { PI_DECLARATION } from "../shader/chunk/math/PI_DECLARATION.js";
|
|
6
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
7
|
+
import {
|
|
8
|
+
ATMOSPHERE_PARAMETERS_STRUCT,
|
|
9
|
+
chunk_atmosphere_parameters
|
|
10
|
+
} from "./ATMOSPHERE_PARAMETERS_STRUCT.js";
|
|
11
|
+
import { chunk_sample_multiscatter_lut_params_for } from "./chunk_sample_multiscatter_lut.js";
|
|
12
|
+
import { chunk_sample_transmittance_lut_params_for } from "./chunk_sample_transmittance_lut.js";
|
|
13
|
+
|
|
14
|
+
export const SKY_SCATTERING_RAYMARCH_STEPS = 32;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Shared 32-step Hillaire (2020) sky radiance integrator (single scattering + isotropic
|
|
18
|
+
* multiple-scattering LUT $\Psi_{\text{ms}}$ + Lambertian planet ground bounce), returning radiance
|
|
19
|
+
* per unit extraterrestrial solar irradiance.
|
|
20
|
+
*
|
|
21
|
+
* Used by both {@link shader_sky_irradiance_lut} (scene-cached octahedral sky IBL) and
|
|
22
|
+
* {@link shader_sky_view_lut} (per-view $192 \times 108$ horizon-warped Sky-View LUT).
|
|
23
|
+
*
|
|
24
|
+
* @type {CodeChunk}
|
|
25
|
+
*/
|
|
26
|
+
export const chunk_raymarch_sky_scattering = CodeChunk.from(
|
|
27
|
+
//language=WGSL
|
|
28
|
+
`
|
|
29
|
+
const SKY_SCATTERING_STEPS = ${SKY_SCATTERING_RAYMARCH_STEPS}u;
|
|
30
|
+
const SKY_SCATTERING_STEPS_F = f32(SKY_SCATTERING_STEPS);
|
|
31
|
+
|
|
32
|
+
fn raymarch_sky_scattering(
|
|
33
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
34
|
+
origin_rel: vec3<f32>,
|
|
35
|
+
ray_dir: vec3<f32>,
|
|
36
|
+
sun_dir: vec3<f32>,
|
|
37
|
+
t_max: f32,
|
|
38
|
+
hits_ground: bool
|
|
39
|
+
) -> vec3<f32> {
|
|
40
|
+
let cosTheta = dot(ray_dir, sun_dir);
|
|
41
|
+
|
|
42
|
+
let miePhaseValue = phase_mie(cosTheta, atm.mie_phase_g);
|
|
43
|
+
let rayleighPhaseValue = phase_rayleigh(cosTheta);
|
|
44
|
+
|
|
45
|
+
var lum = vec3<f32>(0.0);
|
|
46
|
+
var transmittance = vec3<f32>(1.0);
|
|
47
|
+
|
|
48
|
+
var t = 0.0;
|
|
49
|
+
for (var step_i = 0u; step_i < SKY_SCATTERING_STEPS; step_i++) {
|
|
50
|
+
let newT = ((f32(step_i) + 0.3) / SKY_SCATTERING_STEPS_F) * t_max;
|
|
51
|
+
let dt = newT - t;
|
|
52
|
+
t = newT;
|
|
53
|
+
|
|
54
|
+
let step_rel = origin_rel + t * ray_dir;
|
|
55
|
+
let step_radius = length(step_rel);
|
|
56
|
+
let up = step_rel / step_radius;
|
|
57
|
+
|
|
58
|
+
let local_height = step_radius - atm.planet_radius;
|
|
59
|
+
let sun_cos_zenith_angle = dot(sun_dir, up);
|
|
60
|
+
|
|
61
|
+
let local_density = atmosphere_density_for(atm, local_height);
|
|
62
|
+
|
|
63
|
+
let rayleigh_scattering = local_density.x * atm.rayleigh_scattering;
|
|
64
|
+
let mie_scattering = local_density.y * atm.mie_scattering;
|
|
65
|
+
let extinction = max(atmosphere_extinction_for(atm, local_density), vec3<f32>(1e-12));
|
|
66
|
+
|
|
67
|
+
let sample_transmittance = exp(-dt * extinction);
|
|
68
|
+
|
|
69
|
+
let sun_transmittance = sample_transmittance_lut_params_for(atm, local_height, sun_cos_zenith_angle);
|
|
70
|
+
let psiMS = sample_multiscatter_lut_params_for(atm, local_height, sun_cos_zenith_angle);
|
|
71
|
+
|
|
72
|
+
let rayleigh_in_scattering = rayleigh_scattering * (rayleighPhaseValue * sun_transmittance + psiMS);
|
|
73
|
+
let mie_in_scattering = mie_scattering * (miePhaseValue * sun_transmittance + psiMS);
|
|
74
|
+
let in_scattering = rayleigh_in_scattering + mie_in_scattering;
|
|
75
|
+
|
|
76
|
+
let scattering_integral = (in_scattering - in_scattering * sample_transmittance) / extinction;
|
|
77
|
+
|
|
78
|
+
lum += scattering_integral * transmittance;
|
|
79
|
+
transmittance *= sample_transmittance;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (hits_ground) {
|
|
83
|
+
let hit_up = normalize(origin_rel + t_max * ray_dir);
|
|
84
|
+
let sun_cos_zenith_angle = dot(hit_up, sun_dir);
|
|
85
|
+
let sun_transmittance = sample_transmittance_lut_params_for(atm, 0.0, sun_cos_zenith_angle);
|
|
86
|
+
let psi_ground = sample_multiscatter_lut_params_for(atm, 0.0, sun_cos_zenith_angle);
|
|
87
|
+
|
|
88
|
+
let direct_bounce = saturate(sun_cos_zenith_angle) * sun_transmittance * (1.0 / PI);
|
|
89
|
+
let diffuse_bounce = psi_ground;
|
|
90
|
+
lum += transmittance * atm.ground_albedo * (direct_bounce + diffuse_bounce);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return max(lum, vec3<f32>(0.0));
|
|
94
|
+
}
|
|
95
|
+
`, [
|
|
96
|
+
PI_DECLARATION,
|
|
97
|
+
chunk_atmosphere_parameters,
|
|
98
|
+
chunk_phase_mie_cornette_shanks,
|
|
99
|
+
chunk_phase_rayleigh,
|
|
100
|
+
chunk_sample_transmittance_lut_params_for,
|
|
101
|
+
chunk_sample_multiscatter_lut_params_for,
|
|
102
|
+
]
|
|
103
|
+
);
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Parameterised multiple-scattering LUT lookup using `atm.atmosphere_height`.
|
|
3
|
+
*
|
|
4
|
+
* Assumes in shader scope:
|
|
5
|
+
* tSkyLutMultiscatter: texture_2d<f32> (sample type "float", filterable)
|
|
4
6
|
* sSkyLut: sampler (see {@link SAMPLER_SKY_LUT})
|
|
5
7
|
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_sample_multiscatter_lut_params_for: CodeChunk;
|
|
11
|
+
/**
|
|
12
|
+
* Earth-default multiple-scattering LUT lookup by `(height, sun_cos_zenith_angle)`.
|
|
13
|
+
*
|
|
8
14
|
* @type {CodeChunk}
|
|
9
15
|
*/
|
|
10
16
|
export const chunk_sample_multiscatter_lut_params: CodeChunk;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sample_multiscatter_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_sample_multiscatter_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,uDAFU,SAAS,CAsBjB;AAKF;;;;GAIG;AACH,mDAFU,SAAS,CAsBjB;AAKF;;;GAGG;AACH,4CAFU,SAAS,CAmBjB;0BA9FwB,iCAAiC"}
|
|
@@ -1,57 +1,95 @@
|
|
|
1
|
-
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
2
|
+
import {
|
|
3
|
+
ATMOSPHERE_PARAMETERS_STRUCT,
|
|
4
|
+
chunk_atmosphere_parameters
|
|
5
|
+
} from "./ATMOSPHERE_PARAMETERS_STRUCT.js";
|
|
6
|
+
import { chunk_sky_lut_params } from "./chunk_sky_lut_params.js";
|
|
7
|
+
import { chunk_sky_lut_uv } from "./chunk_sky_lut_uv.js";
|
|
8
|
+
import { SKY_LUT_MULTISCATTER_RESOURCE, SKY_LUT_SAMPLER_RESOURCE } from "./SAMPLER_SKY_LUT.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Parameterised multiple-scattering LUT lookup using `atm.atmosphere_height`.
|
|
12
|
+
*
|
|
13
|
+
* Assumes in shader scope:
|
|
14
|
+
* tSkyLutMultiscatter: texture_2d<f32> (sample type "float", filterable)
|
|
15
|
+
* sSkyLut: sampler (see {@link SAMPLER_SKY_LUT})
|
|
16
|
+
*
|
|
17
|
+
* @type {CodeChunk}
|
|
18
|
+
*/
|
|
19
|
+
export const chunk_sample_multiscatter_lut_params_for = CodeChunk.from(
|
|
20
|
+
//language=WGSL
|
|
21
|
+
`
|
|
22
|
+
fn sample_multiscatter_lut_params_for(
|
|
23
|
+
atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
|
|
24
|
+
height: f32,
|
|
25
|
+
sun_cos_zenith_angle: f32
|
|
26
|
+
) -> vec3<f32> {
|
|
27
|
+
let uv = sky_lut_uv_for(
|
|
28
|
+
atm,
|
|
29
|
+
height,
|
|
30
|
+
sun_cos_zenith_angle,
|
|
31
|
+
vec2<f32>(textureDimensions(tSkyLutMultiscatter))
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return textureSampleLevel(tSkyLutMultiscatter, sSkyLut, uv, 0.0).rgb;
|
|
35
|
+
}
|
|
36
|
+
`, [
|
|
37
|
+
chunk_atmosphere_parameters,
|
|
38
|
+
]
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
chunk_sample_multiscatter_lut_params_for.requireResource(SKY_LUT_MULTISCATTER_RESOURCE);
|
|
42
|
+
chunk_sample_multiscatter_lut_params_for.requireResource(SKY_LUT_SAMPLER_RESOURCE);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Earth-default multiple-scattering LUT lookup by `(height, sun_cos_zenith_angle)`.
|
|
46
|
+
*
|
|
47
|
+
* @type {CodeChunk}
|
|
48
|
+
*/
|
|
49
|
+
export const chunk_sample_multiscatter_lut_params = CodeChunk.from(
|
|
50
|
+
//language=WGSL
|
|
51
|
+
`
|
|
52
|
+
fn sample_multiscatter_lut_params(
|
|
53
|
+
height: f32,
|
|
54
|
+
sun_cos_zenith_angle: f32
|
|
55
|
+
) -> vec3<f32>{
|
|
56
|
+
|
|
57
|
+
let uv = sky_lut_uv(
|
|
58
|
+
height,
|
|
59
|
+
sun_cos_zenith_angle,
|
|
60
|
+
vec2<f32>(textureDimensions(tSkyLutMultiscatter))
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
return textureSampleLevel(tSkyLutMultiscatter, sSkyLut, uv, 0.0).rgb;
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
`, [
|
|
67
|
+
chunk_sky_lut_uv,
|
|
68
|
+
]
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
chunk_sample_multiscatter_lut_params.requireResource(SKY_LUT_MULTISCATTER_RESOURCE);
|
|
72
|
+
chunk_sample_multiscatter_lut_params.requireResource(SKY_LUT_SAMPLER_RESOURCE);
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* {@link chunk_sample_multiscatter_lut_params} from a world-space position.
|
|
76
|
+
* @type {CodeChunk}
|
|
77
|
+
*/
|
|
78
|
+
export const chunk_sample_multiscatter_lut = CodeChunk.from(
|
|
79
|
+
//language=WGSL
|
|
80
|
+
`
|
|
81
|
+
fn sample_multiscatter_lut(
|
|
82
|
+
pos:vec3<f32>,
|
|
83
|
+
sunDir:vec3<f32>
|
|
84
|
+
) -> vec3<f32>{
|
|
85
|
+
|
|
86
|
+
let params = sky_lut_params(pos, sunDir);
|
|
87
|
+
|
|
88
|
+
return sample_multiscatter_lut_params(params.x, params.y);
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
`, [
|
|
92
|
+
chunk_sample_multiscatter_lut_params,
|
|
93
|
+
chunk_sky_lut_params,
|
|
94
|
+
]
|
|
95
|
+
);
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* tSkyLutTransmittance: texture_2d<f32> (sample type "float", i.e. filterable)
|
|
4
|
-
* sSkyLut: sampler (see {@link SAMPLER_SKY_LUT})
|
|
2
|
+
* Parameterised transmittance LUT lookup using `atm.atmosphere_height`.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* reproduces that function's per-corner clamping.
|
|
4
|
+
* Assumes in shader scope:
|
|
5
|
+
* tSkyLutTransmittance: texture_2d<f32> (sample type "float", filterable)
|
|
6
|
+
* sSkyLut: sampler (see {@link SAMPLER_SKY_LUT})
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_sample_transmittance_lut_params_for: CodeChunk;
|
|
11
|
+
/**
|
|
12
|
+
* Earth-default transmittance LUT lookup by `(height, sun_cos_zenith_angle)`.
|
|
14
13
|
*
|
|
15
|
-
* see {@link shader_transmittance_lut}
|
|
16
14
|
* @type {CodeChunk}
|
|
17
15
|
*/
|
|
18
16
|
export const chunk_sample_transmittance_lut_params: CodeChunk;
|
|
19
17
|
/**
|
|
20
|
-
* {@link chunk_sample_transmittance_lut_params} from a world-space position.
|
|
21
|
-
* already knows the altitude and the local up vector should build the pair itself and call
|
|
22
|
-
* the primitive, rather than have this recover them with another square root.
|
|
18
|
+
* {@link chunk_sample_transmittance_lut_params} from a world-space position.
|
|
23
19
|
*
|
|
24
20
|
* @type {CodeChunk}
|
|
25
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sample_transmittance_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_sample_transmittance_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,wDAFU,SAAS,CAsBjB;AAKF;;;;GAIG;AACH,oDAFU,SAAS,CAsBjB;AAKF;;;;GAIG;AACH,6CAFU,SAAS,CAoBjB;0BAhGwB,iCAAiC"}
|