@woosh/meep-engine 3.67.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/shade/playground/probe_clipmap/index.html +43 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +29 -0
- package/src/shade/renderer/Renderer.d.ts +7 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +213 -15
- package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
- package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
- package/src/shade/renderer/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/chunk_tonemap_purkinje.d.ts +2 -1
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +6 -2
- package/src/shade/renderer/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/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/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +18 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +30 -27
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
- package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
- package/src/shade/renderer/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/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
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicsEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GraphicsEngine.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphicsEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GraphicsEngine.js"],"names":[],"mappings":"AA0DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;IACI;;;;;OAKG;IACH,gCAEC;IAUD;;;;OAIG;IACH,yBAEC;IAmEG;;;;;;OAMG;IACH,QAFU,kBAAkB,CAEsB;IAElD;QACI;;;;;;;;WAQG;mBADO,MAAM;QAIhB;;;;;WAKG;oBADO,MAAM;QAIhB;;;;WAIG;qBADO,MAAM;QAIhB;;;;;;;WAOG;;QAGH;;;;;WAKG;;MAEN;IAID;;;;;OAKG;IACH,4BAFU,OAAO,CAEyB;IAE1C;;;;;;OAMG;IACH,UAFU,SAAS,CAEY;IAG/B;;OAEG;IACH,YAFU,iBAAiB,GAAC,IAAI,CAEV;IAEtB;;;;;OAKG;IACH,UAFU,OAAO,CAEG;IAEpB;;;;;OAKG;IACH,UAFU,OAAO,CAEG;IAEpB;;OAEG;IACH,YAFU,MAAM,CAEG;IAoBvB;;;;;;;;;;;;OAYG;IACH,mDAEC;IAED;;;;;;;;OAQG;IACH,iBAFW,KAAK,QAgBf;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,6BAFW,YAAY,QAStB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,yBAHW,eAAe,GACb,eAAe,CAa3B;IAED;;;;;;;;;;OAUG;IACH,uBAHW,UAAU,GACR,MAAM,CAclB;IAED;;;;;;OAMG;IACH,4BAHW,eAAe,GACb,OAAO,CAgBnB;IAED;;;;;;;;;;;;;OAaG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAqB7B;IAED;;;;;;OAMG;IACH,8BAFa,MAAM,CAIlB;IAED;;;;;OAKG;IACH,qCAHW,iBAAiB,GACf,OAAO,CAgBnB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBALW,KAAK,GACH,eAAe,GAAC,IAAI,CAehC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,yBARW,KAAK,UACL,MAAM,SACN,MAAM,UACN,MAAM,GACJ,QAAQ,SAAS,CAAC,CAwD9B;IAED;;;;OAIG;IACH,0BAEC;IAED;;;;;;;;;;OAUG;IACH,SAFa,QAAQ,IAAI,CAAC,CAuDzB;IAED;;;;;;;;;;;;;;;OAeG;IACH,qBAFW,iBAAiB,QAc3B;IAED;;;;;OAKG;IACH,aAiBC;IASD;;;;;;;;OAQG;IACH,8BAHW,OAAO,GAAC,OAAO,UACf,OAAO,GAAC,OAAO,QAQzB;IAED;;;;;;;;;;;;;;;OAeG;IACH,yBALW,MAAM,KACN,MAAM,UACN,OAAO,aACP,OAAO,QAIjB;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,mBAyBC;IAED;;;;;;;;;OASG;IACH,4BAPW,MAAM,GAKJ,OAAO,CA2DnB;;CACJ;sBAz4BY,OAAO,4BAA4B,EAAE,OAAO;yBAC5C,OAAO,8CAA8C,EAAE,UAAU;8BACjE,OAAO,mDAAmD,EAAE,eAAe;gCAC3E,OAAO,mEAAmE,EAAE,iBAAiB;8BAC7F,OAAO,+CAA+C,EAAE,eAAe;2BACvE,OAAO,8CAA8C,EAAE,YAAY;qBACnE,OAAO,kCAAkC,EAAE,MAAM;yBAdrC,kCAAkC;mCAKxB,yBAAyB;mBAXzC,oCAAoC;wBAC/B,4BAA4B;sBAQ9B,kCAAkC;yCAJf,kDAAkD;sBAErE,qCAAqC;0BACjC,0CAA0C"}
|
|
@@ -9,7 +9,6 @@ import { Renderer } from "../../shade/renderer/Renderer.js";
|
|
|
9
9
|
import { Scene } from "../../shade/renderer/scene/Scene.js";
|
|
10
10
|
import { Sampler2D } from "../graphics/texture/sampler/Sampler2D.js";
|
|
11
11
|
import EmptyView from "../../view/elements/EmptyView.js";
|
|
12
|
-
import { make_default_environment } from "./make_default_environment.js";
|
|
13
12
|
import { shade_camera_projection_ray } from "./shade_camera_projection_ray.js";
|
|
14
13
|
import { ShadeCameraAdapter } from "./ShadeCameraAdapter.js";
|
|
15
14
|
|
|
@@ -334,16 +333,12 @@ export class GraphicsEngine {
|
|
|
334
333
|
this.#scene = scene;
|
|
335
334
|
|
|
336
335
|
/*
|
|
337
|
-
Shade lights with indirect by default and a scene
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
A scene that arrives with an environment keeps it: the scene owns its lighting and this only
|
|
342
|
-
fills in what is missing. Otherwise handing over a scene would silently discard the
|
|
343
|
-
environment it was built with, and the fix would be to call things in a particular order.
|
|
336
|
+
Shade lights with indirect by default and a scene with neither an authored environment nor
|
|
337
|
+
an active procedural atmosphere renders unlit, so the engine enables Hillaire sky/IBL on
|
|
338
|
+
scenes that arrive without an explicit environment or explicit `atmosphere.enabled = false`.
|
|
344
339
|
*/
|
|
345
340
|
if (scene.lights.environment === undefined) {
|
|
346
|
-
scene.
|
|
341
|
+
scene.atmosphere.enable_by_default();
|
|
347
342
|
}
|
|
348
343
|
}
|
|
349
344
|
|
|
@@ -12,9 +12,9 @@ import { ShadeTexture } from "../../shade/renderer/texture/ShadeTexture.js";
|
|
|
12
12
|
import { ShadeImage } from "../../shade/renderer/texture/source/ShadeImage.js";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Resolution of the octahedral map
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* Resolution of the octahedral map: it is convolved into irradiance and a handful of roughness mips
|
|
16
|
+
* before anything samples it, so what matters is that it is smooth and correctly oriented rather
|
|
17
|
+
* than detailed.
|
|
18
18
|
*
|
|
19
19
|
* @type {number}
|
|
20
20
|
*/
|
|
@@ -66,11 +66,11 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
66
66
|
/**
|
|
67
67
|
* @param {FluidComponent} fluid
|
|
68
68
|
*/
|
|
69
|
-
static "__#
|
|
69
|
+
static "__#500@#refresh_masks"(fluid: FluidComponent): void;
|
|
70
70
|
/**
|
|
71
71
|
* @param {FluidComponent} fluid
|
|
72
72
|
*/
|
|
73
|
-
static "__#
|
|
73
|
+
static "__#500@#clear_field"(fluid: FluidComponent): void;
|
|
74
74
|
/**
|
|
75
75
|
* Mark every cell of `fluid` whose centre lies within `inflation` of the
|
|
76
76
|
* posed shape as solid. Iteration is clipped to the shape's world AABB
|
|
@@ -82,7 +82,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
82
82
|
* @param {number} inflation world-units SDF threshold
|
|
83
83
|
* @param {Float64Array} point length-3 scratch
|
|
84
84
|
*/
|
|
85
|
-
static "__#
|
|
85
|
+
static "__#500@#voxelize"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array): void;
|
|
86
86
|
/**
|
|
87
87
|
* Write the obstacle's translation velocity onto every face of every cell
|
|
88
88
|
* it voxelized — the moving-wall boundary condition. Runs AFTER the mask
|
|
@@ -102,7 +102,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
102
102
|
* @param {number} wvy
|
|
103
103
|
* @param {number} wvz
|
|
104
104
|
*/
|
|
105
|
-
static "__#
|
|
105
|
+
static "__#500@#stamp_wall_velocity"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array, wvx: number, wvy: number, wvz: number): void;
|
|
106
106
|
constructor();
|
|
107
107
|
dependencies: (typeof FluidObstacle)[];
|
|
108
108
|
components_used: (ResourceAccessSpecification<typeof Transform64> | ResourceAccessSpecification<typeof FluidObstacle> | ResourceAccessSpecification<typeof Collider> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof FluidComponent>)[];
|
|
@@ -89,6 +89,7 @@
|
|
|
89
89
|
<span>Indirect light</span>
|
|
90
90
|
<select id="indirect">
|
|
91
91
|
<option value="ProbeClipmap" selected>Probe clipmap</option>
|
|
92
|
+
<option value="ScreenProbes">Screen probes — Lumen's gather over the clipmap's world</option>
|
|
92
93
|
<option value="IBL">IBL</option>
|
|
93
94
|
</select>
|
|
94
95
|
</label>
|
|
@@ -124,6 +125,48 @@
|
|
|
124
125
|
|
|
125
126
|
<hr>
|
|
126
127
|
|
|
128
|
+
<label>
|
|
129
|
+
<span>Screen probes</span>
|
|
130
|
+
<select id="screen_probe_debug_view">
|
|
131
|
+
<option value="None" selected>Debug: none</option>
|
|
132
|
+
<option value="IndirectDiffuse">Indirect diffuse — irradiance / π, before the material</option>
|
|
133
|
+
<option value="ProbePlacement">Probe placement — uniform green, adaptive red, uncovered blue</option>
|
|
134
|
+
<option value="TraceKinds">Trace kinds — screen red, bricks green, world probes blue</option>
|
|
135
|
+
</select>
|
|
136
|
+
</label>
|
|
137
|
+
|
|
138
|
+
<label>
|
|
139
|
+
<span>Downsample</span>
|
|
140
|
+
<select id="screen_probe_downsample">
|
|
141
|
+
<option value="2">1 probe / 2×2 pixels</option>
|
|
142
|
+
<option value="4">1 probe / 4×4 pixels</option>
|
|
143
|
+
<option value="8">1 probe / 8×8 pixels</option>
|
|
144
|
+
<option value="16" selected>1 probe / 16×16 pixels</option>
|
|
145
|
+
<option value="32">1 probe / 32×32 pixels</option>
|
|
146
|
+
</select>
|
|
147
|
+
</label>
|
|
148
|
+
|
|
149
|
+
<label>
|
|
150
|
+
<span>Octahedron</span>
|
|
151
|
+
<select id="screen_probe_octahedron">
|
|
152
|
+
<option value="4">4×4 rays a probe</option>
|
|
153
|
+
<option value="8" selected>8×8 rays a probe</option>
|
|
154
|
+
<option value="16">16×16 rays a probe</option>
|
|
155
|
+
</select>
|
|
156
|
+
</label>
|
|
157
|
+
|
|
158
|
+
<label>
|
|
159
|
+
<input type="checkbox" id="screen_probe_importance" checked>
|
|
160
|
+
<span>Importance sampling <span class="hint">— rays follow the BRDF and last frame's light</span></span>
|
|
161
|
+
</label>
|
|
162
|
+
|
|
163
|
+
<label>
|
|
164
|
+
<input type="checkbox" id="screen_probe_screen_traces" checked>
|
|
165
|
+
<span>Screen traces <span class="hint">— the depth buffer before the SDF bricks</span></span>
|
|
166
|
+
</label>
|
|
167
|
+
|
|
168
|
+
<hr>
|
|
169
|
+
|
|
127
170
|
<label>
|
|
128
171
|
<input type="checkbox" id="sun" checked>
|
|
129
172
|
<span>Sun <span class="hint">— the directional light; L flips it</span></span>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/probe_clipmap/main.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/probe_clipmap/main.js"],"names":[],"mappings":"AA0FA;;;;;GAKG;AACH,yBAFa,QAAQ,IAAI,CAAC,CA0WzB"}
|
|
@@ -12,6 +12,7 @@ import { OrbitalCameraController } from "../../renderer/camera/orbital/OrbitalCa
|
|
|
12
12
|
import { PerspectiveCamera } from "../../renderer/camera/PerspectiveCamera.js";
|
|
13
13
|
import { create_frame_loop } from "../../renderer/create_frame_loop.js";
|
|
14
14
|
import { ProbeClipmapDebugView } from "../../renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js";
|
|
15
|
+
import { ScreenProbeDebugView } from "../../renderer/global_illumination/screen_probe/ScreenProbeDebugView.js";
|
|
15
16
|
import { make_sunlight } from "../../renderer/light/make_sunlight.js";
|
|
16
17
|
import { PointLight } from "../../renderer/light/model/PointLight.js";
|
|
17
18
|
import { place_light } from "../../renderer/light/place_light.js";
|
|
@@ -272,6 +273,34 @@ export async function start() {
|
|
|
272
273
|
renderer.probe_clipmap.debug_view = ProbeClipmapDebugView[event.target.value];
|
|
273
274
|
});
|
|
274
275
|
|
|
276
|
+
element('screen_probe_debug_view').addEventListener('change', event => {
|
|
277
|
+
renderer.screen_probes.debug_view = ScreenProbeDebugView[event.target.value];
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
element('screen_probe_downsample').addEventListener('change', event => {
|
|
281
|
+
renderer.screen_probes.downsample_factor = Number(event.target.value);
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
element('screen_probe_octahedron').addEventListener('change', event => {
|
|
285
|
+
renderer.screen_probes.octahedron_resolution = Number(event.target.value);
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
element('screen_probe_importance').addEventListener('change', event => {
|
|
289
|
+
renderer.screen_probes.importance_sampling = event.target.checked;
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
element('screen_probe_screen_traces').addEventListener('change', event => {
|
|
293
|
+
renderer.screen_probes.screen_traces = event.target.checked;
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
// ?mode=ScreenProbes starts the page in another mode, as the panel's select would set it
|
|
297
|
+
const mode = new URLSearchParams(location.search).get('mode');
|
|
298
|
+
|
|
299
|
+
if (mode !== null && ShadeIndirectLightingMode[mode] !== undefined) {
|
|
300
|
+
renderer.indirect_lighting_mode = ShadeIndirectLightingMode[mode];
|
|
301
|
+
element('indirect').value = mode;
|
|
302
|
+
}
|
|
303
|
+
|
|
275
304
|
const taa_toggle = element('taa');
|
|
276
305
|
const path_tracing_toggle = element('path_tracing');
|
|
277
306
|
|
|
@@ -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":"AA0JA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,wCAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD;;;;;;;OAOG;IACH,mBAFU,gBAAgB,CAEgB;IAE1C;;;;OAIG;IACH,eAFU,oBAAoB,CAEa;IAY3C;;;;OAIG;IACH,eAFU,mBAAmB,CAEa;IAW1C;;;;;;;OAOG;IACH,mBAFU,qBAAqB,CAEkB;IAEjD;;;;OAIG;IACH,aAFU,UAAU,CAER;IAEZ;;;OAGG;IACH,QAFU,cAAc,CAEM;IAE9B;;;;;;;;;OASG;IACH,2BAFU,OAAO,CAEiB;IAElC,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAW1C,oCAIC;IAED,mCAEC;IAYD,oCAIC;IAED,mCAEC;IAED;;;;;;OAMG;IACH,6BAFU,OAAO,CAEmB;IAcpC;;OAEG;IACH,uCAEC;IAyBD,0CAIC;IAED,yCAEC;IAED;;;;;OAKG;IACH,yBAFU,MAAM,CAEY;IAW5B,8CAMC;IAED,6CAEC;IAUD,8CAMC;IAED,6CAEC;IAWD,mDAKC;IAED,kDAEC;IASD,+CAKC;IAED,8CAEC;IAED,+BAA6B;IAC7B,4CAA0C;IAkB1C,qCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;;;OAOG;IACH,oCAOC;IAnBD,mCAEC;IAmBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAYD;;OAEG;IACH,sCAEC;IAOD;;;OAGG;IACH,gCAEC;IAkCD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B;;;;;;;;;;OAUG;IACH,qBAA+B;IAgB/B;;;OAGG;IACH,yCAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAeD;;;OAGG;IACH,6CAIC;IAED;;;;OAIG;IACH,8CAIC;IAkCD;;;OAGG;IACH,+BAcC;IA1BD;;;OAGG;IACH,0BAEC;IAsBD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,iBAAiB,GAAC,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,yBAHW,eAAe,GACb,eAAe,CA8B3B;IAED;;;;;OAKG;IACH,4BAHW,eAAe,GACb,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAUD;;;;;;;;;;;;;;;;;OAiBG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAsB7B;IAED;;;;;OAKG;IACH,qCAHW,iBAAiB,GACf,OAAO,CAYnB;IAED;;OAEG;IACH,8BAFa,MAAM,CAIlB;IAgBD;;;;OAIG;IACH,yBAHW,KAAK,GACJ,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAMC;IAmBD;;;;OAIG;IACH,gCAHW,KAAK,GACH,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,kBAFW,KAAK,QAyBf;IA2XD,oGAAoG;IACpG,kDAA2C;IAO3C;;;;OAIG;IACH,0BAEC;IAiBD;;;;;;OAMG;IACH,qBAHW,eAAe,GACb,iBAAiB,CAW7B;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAkED;;;;;;;;OAQG;IACH;QAJsC,OAAO;QACd,MAAM;QACT,UAAU,GAA3B,MAAM;sBA0NhB;IAED;;;;;;;;;;;;;;OAcG;IACH,0BAFW,eAAe,QAoEzB;IAiCD;;;;;;;;;;;;;;;;;OAiBG;IACH,WAFa,IAAI,CA2ChB;IAkCD,4BAoBC;IAkID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAZW,iBAAiB,SACjB,KAAK,uBACL,MAAM,GAIJ,OAAO,CAuCnB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,yBARW,iBAAiB,SACjB,KAAK,sBACL,MAAM,UACN,iBAAiB,GACf,OAAO,CAiBnB;;CAirCJ;+BA1jHY,OAAO,8CAA8C,EAAE,gBAAgB;gCACvE,OAAO,+CAA+C,EAAE,iBAAiB;gCACzE,OAAO,+BAA+B,EAAE,iBAAiB;8BACzD,OAAO,gCAAgC,EAAE,eAAe;gCACxD,OAAO,gDAAgD,EAAE,iBAAiB;8BAC1E,OAAO,4BAA4B,EAAE,eAAe;oBACpD,OAAO,kBAAkB,EAAE,KAAK;6BAnChB,yBAAyB;0CACZ,gCAAgC;iCACzC,yCAAyC;qCAtDrC,6DAA6D;oCAG9D,2DAA2D;sCAoDzD,4BAA4B;2BA/EvC,kCAAkC;+BAgF9B,6CAA6C;gCAC5C,sCAAsC;2BAhC3C,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAuD7C,uBAAuB;mCAChB,qCAAqC;gCAnExC,sBAAsB;oBA3DlC,4BAA4B;kCA0Hd,gCAAgC;2BAhGvC,2BAA2B;iCA8FrB,0CAA0C;4CA3E/B,+DAA+D;yBAqDlF,yBAAyB;kCAChB,kCAAkC;kCAUlC,wBAAwB;oBAnCtC,0BAA0B;gCA7Dd,uCAAuC;uCAmDhC,sDAAsD"}
|
|
@@ -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({
|
|
@@ -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"}
|