@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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
|
|
2
|
+
import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chunk_project_position_from_depth.js";
|
|
3
|
+
import { chunk_get_device_depth } from "../../shader/chunk/depth/chunk_get_device_depth.js";
|
|
4
|
+
import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
5
|
+
import { chunk_is_background } from "../../shader/chunk/depth/chunk_is_background.js";
|
|
6
|
+
import {
|
|
7
|
+
chunk_uv_octahedral_unit_encode
|
|
8
|
+
} from "../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_encode.js";
|
|
9
|
+
import {
|
|
10
|
+
chunk_decode_g_buffer_face_normal
|
|
11
|
+
} from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
|
|
12
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
13
|
+
import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
|
|
14
|
+
import { chunk_screen_probe } from "./chunk_screen_probe.js";
|
|
15
|
+
|
|
16
|
+
/** The view's camera this frame. @type {ShaderResourceDescriptor} */
|
|
17
|
+
export const SCREEN_PROBE_CAMERA_RESOURCE = ShaderResourceDescriptor.uniform("camera", CAMERA_UNIFORM_STRUCT);
|
|
18
|
+
|
|
19
|
+
/** The view's camera last frame. @type {ShaderResourceDescriptor} */
|
|
20
|
+
export const SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE = ShaderResourceDescriptor.uniform("camera_previous", CAMERA_UNIFORM_STRUCT);
|
|
21
|
+
|
|
22
|
+
/** The frame's reverse-Z depth. @type {ShaderResourceDescriptor} */
|
|
23
|
+
export const SCREEN_PROBE_DEPTH_RESOURCE = ShaderResourceDescriptor.texture("tDepth");
|
|
24
|
+
|
|
25
|
+
/** The G-buffer's PBR target, for the face normal it holds. @type {ShaderResourceDescriptor} */
|
|
26
|
+
export const SCREEN_PROBE_PBR_RESOURCE = ShaderResourceDescriptor.texture("tPBR");
|
|
27
|
+
|
|
28
|
+
/** The frame's motion, `VELOCITY_FORMAT`: internal pixels from last frame's place to this one's, and the view depth moved through. @type {ShaderResourceDescriptor} */
|
|
29
|
+
export const SCREEN_PROBE_VELOCITY_RESOURCE = ShaderResourceDescriptor.texture("tVelocity");
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Where a pixel's surface point stood last frame, by the velocity buffer:
|
|
33
|
+
*
|
|
34
|
+
* ```wgsl
|
|
35
|
+
* struct ScreenProbePointBefore { place: vec2<f32>, depth: f32, position: vec3<f32> }
|
|
36
|
+
* fn screen_probe_point_before(pixel: vec2<u32>, depth: f32) -> ScreenProbePointBefore // depth: its view depth now
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* - `place`: its place on last frame's screen, internal pixels: the pixel's centre less its motion across the view;
|
|
40
|
+
* - `depth`: its view depth then, its depth now less the depth it moved through;
|
|
41
|
+
* - `position`: the world point those show through last frame's camera, where the point stood.
|
|
42
|
+
*
|
|
43
|
+
* The camera's motion and the surface's own together, as the velocity buffer holds them; up to the jitter between
|
|
44
|
+
* the two frames' projections. Off last frame's screen, or with no depth then, `position` means nothing.
|
|
45
|
+
*
|
|
46
|
+
* @type {CodeChunk}
|
|
47
|
+
*/
|
|
48
|
+
export const chunk_screen_probe_point_before = CodeChunk.from(
|
|
49
|
+
//language=WGSL
|
|
50
|
+
`
|
|
51
|
+
struct ScreenProbePointBefore {
|
|
52
|
+
place: vec2<f32>,
|
|
53
|
+
depth: f32,
|
|
54
|
+
position: vec3<f32>,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
fn screen_probe_point_before(pixel: vec2<u32>, depth: f32) -> ScreenProbePointBefore {
|
|
58
|
+
let motion = textureLoad(tVelocity, pixel, 0).xyz;
|
|
59
|
+
|
|
60
|
+
var before: ScreenProbePointBefore;
|
|
61
|
+
|
|
62
|
+
before.place = vec2<f32>(pixel) + 0.5 - motion.xy;
|
|
63
|
+
before.depth = depth - motion.z;
|
|
64
|
+
before.position = project_position_from_depth(
|
|
65
|
+
before.place / vec2<f32>(screen_probe_frame.view_size),
|
|
66
|
+
get_device_depth(before.depth, camera_previous),
|
|
67
|
+
camera_previous.view_projection_matrix_inverse,
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return before;
|
|
71
|
+
}
|
|
72
|
+
`, [
|
|
73
|
+
chunk_screen_probe,
|
|
74
|
+
chunk_project_position_from_depth,
|
|
75
|
+
chunk_get_device_depth,
|
|
76
|
+
]);
|
|
77
|
+
|
|
78
|
+
chunk_screen_probe_point_before.requireResource(SCREEN_PROBE_VELOCITY_RESOURCE);
|
|
79
|
+
chunk_screen_probe_point_before.requireResource(SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE);
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* How fast a pixel's surface point moves of itself, apart from the camera (Lumen's probe and hit world velocity, as a
|
|
83
|
+
* length):
|
|
84
|
+
*
|
|
85
|
+
* ```wgsl
|
|
86
|
+
* fn screen_probe_object_speed(pixel: vec2<u32>, position: vec3<f32>, depth: f32) -> f32 // metres a frame
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* The velocity buffer holds a pixel's motion since last frame, the camera's and the surface's own together: the
|
|
90
|
+
* point's place on last frame's screen and its view depth then. Last frame's camera takes those back to the world,
|
|
91
|
+
* where the point stood a frame ago; how far that is from where it stands now is its own motion, across the view and
|
|
92
|
+
* along it. A still surface reads zero under any camera motion, up to the jitter between the two frames' projections.
|
|
93
|
+
*
|
|
94
|
+
* @type {CodeChunk}
|
|
95
|
+
*/
|
|
96
|
+
export const chunk_screen_probe_object_speed = CodeChunk.from(
|
|
97
|
+
//language=WGSL
|
|
98
|
+
`
|
|
99
|
+
fn screen_probe_object_speed(pixel: vec2<u32>, position: vec3<f32>, depth: f32) -> f32 {
|
|
100
|
+
return distance(position, screen_probe_point_before(pixel, depth).position);
|
|
101
|
+
}
|
|
102
|
+
`, [
|
|
103
|
+
chunk_screen_probe_point_before,
|
|
104
|
+
]);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The record of a probe standing on a pixel of the G-buffer (Lumen's `GetScreenProbeMaterial` and
|
|
108
|
+
* `WriteDownsampledProbeMaterial`):
|
|
109
|
+
*
|
|
110
|
+
* ```wgsl
|
|
111
|
+
* fn screen_probe_surface_at(pixel: vec2<u32>) -> ScreenProbe
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* The pixel's surface point from its depth at its centre, its view depth, the face normal of the triangle it shows
|
|
115
|
+
* (the plane, where the shading normal would carry the normal map), and its own speed
|
|
116
|
+
* (`screen_probe_object_speed`). A pixel of the sky gives a record of depth zero: no probe.
|
|
117
|
+
*
|
|
118
|
+
* @type {CodeChunk}
|
|
119
|
+
*/
|
|
120
|
+
export const chunk_screen_probe_surface = CodeChunk.from(
|
|
121
|
+
//language=WGSL
|
|
122
|
+
`
|
|
123
|
+
fn screen_probe_surface_at(pixel: vec2<u32>) -> ScreenProbe {
|
|
124
|
+
var record: ScreenProbe;
|
|
125
|
+
|
|
126
|
+
record.pixel = screen_probe_pixel_encode(pixel);
|
|
127
|
+
|
|
128
|
+
let device_depth = textureLoad(tDepth, pixel, 0).r;
|
|
129
|
+
|
|
130
|
+
if (is_background(device_depth)) {
|
|
131
|
+
return record;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
let uv = (vec2<f32>(pixel) + 0.5) / vec2<f32>(screen_probe_frame.view_size);
|
|
135
|
+
let depth = get_view_space_depth(device_depth, camera);
|
|
136
|
+
|
|
137
|
+
record.position = project_position_from_depth(uv, device_depth, camera.view_projection_matrix_inverse);
|
|
138
|
+
record.depth = depth;
|
|
139
|
+
record.normal = pack2x16unorm(uv_octahedral_unit_encode(decode_g_buffer_face_normal(textureLoad(tPBR, pixel, 0))));
|
|
140
|
+
record.speed = screen_probe_object_speed(pixel, record.position, depth);
|
|
141
|
+
|
|
142
|
+
return record;
|
|
143
|
+
}
|
|
144
|
+
`, [
|
|
145
|
+
chunk_screen_probe,
|
|
146
|
+
chunk_screen_probe_object_speed,
|
|
147
|
+
chunk_is_background,
|
|
148
|
+
chunk_get_view_space_depth,
|
|
149
|
+
chunk_project_position_from_depth,
|
|
150
|
+
chunk_decode_g_buffer_face_normal,
|
|
151
|
+
chunk_uv_octahedral_unit_encode,
|
|
152
|
+
]);
|
|
153
|
+
|
|
154
|
+
chunk_screen_probe_surface.requireResource(SCREEN_PROBE_DEPTH_RESOURCE);
|
|
155
|
+
chunk_screen_probe_surface.requireResource(SCREEN_PROBE_PBR_RESOURCE);
|
|
156
|
+
chunk_screen_probe_surface.requireResource(SCREEN_PROBE_CAMERA_RESOURCE);
|
package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sum of a `vec4<f32>` over the lanes of a one-dimensional workgroup of `SCREEN_PROBE_THREAD_WORKGROUP_SIZE`,
|
|
3
|
+
* handed to every lane:
|
|
4
|
+
*
|
|
5
|
+
* ```wgsl
|
|
6
|
+
* fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32>
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* Each subgroup adds its lanes' values (`subgroupAdd`); its first lane leaves the subgroup's sum in workgroup memory
|
|
10
|
+
* at the subgroup's place, `(lane − subgroup_lane) / subgroup_size`, which a one-dimensional workgroup's subgroups
|
|
11
|
+
* follow; then every lane adds the subgroups' sums. Every lane of the workgroup calls it from uniform control flow:
|
|
12
|
+
* it holds two barriers.
|
|
13
|
+
*
|
|
14
|
+
* @type {CodeChunk}
|
|
15
|
+
*/
|
|
16
|
+
export const chunk_screen_probe_workgroup_sum: CodeChunk;
|
|
17
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
18
|
+
//# sourceMappingURL=chunk_screen_probe_workgroup_sum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_screen_probe_workgroup_sum.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,+CAFU,SAAS,CA8BhB;0BA9CuB,oCAAoC"}
|
package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { WebGPUExtensionType } from "../../../descriptor/WebGPUExtensionType.js";
|
|
2
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
3
|
+
import { SCREEN_PROBE_THREAD_WORKGROUP_SIZE } from "./SCREEN_PROBE.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The sum of a `vec4<f32>` over the lanes of a one-dimensional workgroup of `SCREEN_PROBE_THREAD_WORKGROUP_SIZE`,
|
|
7
|
+
* handed to every lane:
|
|
8
|
+
*
|
|
9
|
+
* ```wgsl
|
|
10
|
+
* fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Each subgroup adds its lanes' values (`subgroupAdd`); its first lane leaves the subgroup's sum in workgroup memory
|
|
14
|
+
* at the subgroup's place, `(lane − subgroup_lane) / subgroup_size`, which a one-dimensional workgroup's subgroups
|
|
15
|
+
* follow; then every lane adds the subgroups' sums. Every lane of the workgroup calls it from uniform control flow:
|
|
16
|
+
* it holds two barriers.
|
|
17
|
+
*
|
|
18
|
+
* @type {CodeChunk}
|
|
19
|
+
*/
|
|
20
|
+
export const chunk_screen_probe_workgroup_sum = CodeChunk.from(
|
|
21
|
+
//language=WGSL
|
|
22
|
+
`
|
|
23
|
+
var<workgroup> screen_probe_partial_sums: array<vec4<f32>, ${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}>;
|
|
24
|
+
|
|
25
|
+
fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32> {
|
|
26
|
+
let partial = subgroupAdd(value);
|
|
27
|
+
|
|
28
|
+
if (subgroup_lane == 0u) {
|
|
29
|
+
screen_probe_partial_sums[(lane - subgroup_lane) / subgroup_size] = partial;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
workgroupBarrier();
|
|
33
|
+
|
|
34
|
+
// a subgroup wider than the workgroup holds all its lanes
|
|
35
|
+
let subgroups = (${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}u + subgroup_size - 1u) / subgroup_size;
|
|
36
|
+
|
|
37
|
+
var total = vec4<f32>(0.0);
|
|
38
|
+
|
|
39
|
+
for (var i = 0u; i < subgroups; i++) {
|
|
40
|
+
total += screen_probe_partial_sums[i];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// before the next call writes over the sums
|
|
44
|
+
workgroupBarrier();
|
|
45
|
+
|
|
46
|
+
return total;
|
|
47
|
+
}
|
|
48
|
+
`);
|
|
49
|
+
|
|
50
|
+
chunk_screen_probe_workgroup_sum.addExtension(WebGPUExtensionType.Subgroups);
|
package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record a screen probe debug view in place of the frame's colour (`ScreenProbeDebugView`), after this frame's
|
|
3
|
+
* `GPUScreenProbeGI#graph_resolve`.
|
|
4
|
+
*
|
|
5
|
+
* @param {Object} options
|
|
6
|
+
* @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
|
|
7
|
+
* @param {import("./GPUScreenProbeGI.js").GPUScreenProbeGI} options.gi
|
|
8
|
+
* @param {ScreenProbeDebugView} options.view_mode
|
|
9
|
+
* @param {number} options.depth graph handle of the view's depth
|
|
10
|
+
* @param {number[]} options.resolution the view's pixels
|
|
11
|
+
* @returns {number} graph handle of the image, `rgba16float`
|
|
12
|
+
*/
|
|
13
|
+
export function graph_screen_probe_debug_view({ graph, gi, view_mode, depth, resolution }: {
|
|
14
|
+
graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
15
|
+
gi: import("./GPUScreenProbeGI.js").GPUScreenProbeGI;
|
|
16
|
+
view_mode: ScreenProbeDebugView;
|
|
17
|
+
depth: number;
|
|
18
|
+
resolution: number[];
|
|
19
|
+
}): number;
|
|
20
|
+
import { ScreenProbeDebugView } from "./ScreenProbeDebugView.js";
|
|
21
|
+
//# sourceMappingURL=graph_screen_probe_debug_view.d.ts.map
|
package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_screen_probe_debug_view.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH;IAPsG,KAAK,EAAhG,OAAO,8DAA8D,EAAE,UAAU;IACvB,EAAE,EAA5D,OAAO,uBAAuB,EAAE,gBAAgB;IAClB,SAAS,EAAvC,oBAAoB;IACJ,KAAK,EAArB,MAAM;IACY,UAAU,EAA5B,MAAM,EAAE;IACN,MAAM,CAkClB;qCAnDoC,2BAA2B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { TextureResourceDescriptor } from "../../../device/graph/TextureResourceDescriptor.js";
|
|
3
|
+
import { ScreenProbeDebugView } from "./ScreenProbeDebugView.js";
|
|
4
|
+
import { SCREEN_PROBE_TILE_WORKGROUP_SIZE } from "./SCREEN_PROBE.js";
|
|
5
|
+
import { shader_screen_probe_debug } from "./shader_screen_probe_debug.js";
|
|
6
|
+
|
|
7
|
+
const settings = { view: 0 };
|
|
8
|
+
const bindings = {};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Record a screen probe debug view in place of the frame's colour (`ScreenProbeDebugView`), after this frame's
|
|
12
|
+
* `GPUScreenProbeGI#graph_resolve`.
|
|
13
|
+
*
|
|
14
|
+
* @param {Object} options
|
|
15
|
+
* @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
|
|
16
|
+
* @param {import("./GPUScreenProbeGI.js").GPUScreenProbeGI} options.gi
|
|
17
|
+
* @param {ScreenProbeDebugView} options.view_mode
|
|
18
|
+
* @param {number} options.depth graph handle of the view's depth
|
|
19
|
+
* @param {number[]} options.resolution the view's pixels
|
|
20
|
+
* @returns {number} graph handle of the image, `rgba16float`
|
|
21
|
+
*/
|
|
22
|
+
export function graph_screen_probe_debug_view({ graph, gi, view_mode, depth, resolution }) {
|
|
23
|
+
assert.enum(view_mode, ScreenProbeDebugView, 'view_mode');
|
|
24
|
+
assert.notEqual(view_mode, ScreenProbeDebugView.None, 'view_mode');
|
|
25
|
+
|
|
26
|
+
const data = {};
|
|
27
|
+
const pass = graph.add("Screen Probe Debug", data, (data, resources, context) => {
|
|
28
|
+
settings.view = view_mode;
|
|
29
|
+
|
|
30
|
+
gi.write_debug_bindings(bindings);
|
|
31
|
+
|
|
32
|
+
bindings.settings = settings;
|
|
33
|
+
bindings.tDepth = resources.get(data.depth);
|
|
34
|
+
bindings.screen_probe_debug_diffuse = resources.get(data.diffuse);
|
|
35
|
+
bindings.screen_probe_debug_out = resources.get(data.output);
|
|
36
|
+
|
|
37
|
+
shader_screen_probe_debug.dispatch({
|
|
38
|
+
encoder: context.encoder,
|
|
39
|
+
bindings,
|
|
40
|
+
group_count_x: Math.ceil(resolution[0] / SCREEN_PROBE_TILE_WORKGROUP_SIZE),
|
|
41
|
+
group_count_y: Math.ceil(resolution[1] / SCREEN_PROBE_TILE_WORKGROUP_SIZE),
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
data.depth = pass.read(depth);
|
|
46
|
+
data.diffuse = pass.read(gi.diffuse_handle);
|
|
47
|
+
data.output = pass.create("screen_probe_debug", TextureResourceDescriptor.from({
|
|
48
|
+
format: "rgba16float",
|
|
49
|
+
resolution,
|
|
50
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
return data.output;
|
|
54
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bricks' trace of the rays the screen left (Lumen's mesh and global SDF traces): a thread a ray of their list,
|
|
3
|
+
* through its command.
|
|
4
|
+
*
|
|
5
|
+
* - From the probe's origin (`ScreenProbePick#origin`) to the probe's reach (`brick_clipmap_trace`), starting a
|
|
6
|
+
* voxel short of where the screen showed the ray clear. The screen's ray left the surface point, so that distance
|
|
7
|
+
* moves by the origin's offset along this ray, as Lumen's world traces start twice their bias short of the screen's
|
|
8
|
+
* distance, the most their biases move the start along the ray.
|
|
9
|
+
* - **A front-face hit** takes E_dir from the directional lights, shadowed by rays through the bricks
|
|
10
|
+
* (`probe_clipmap_sun_irradiance`), each light's point of its disk drawn from the ray's id and direction.
|
|
11
|
+
* - **A back face** is a hit whose field's gradient runs along the ray: the ray started inside a solid.
|
|
12
|
+
* - **No hit within the reach**, or out of the world: the world-space probes the probe picked answer past it (FAR),
|
|
13
|
+
* or the environment where it picked none (SKY).
|
|
14
|
+
* - **A march that spends its steps** is unresolved: no light.
|
|
15
|
+
*
|
|
16
|
+
* @type {ComputeShader}
|
|
17
|
+
*/
|
|
18
|
+
export const shader_screen_probe_brick_trace: ComputeShader;
|
|
19
|
+
/**
|
|
20
|
+
* What each ray left to the bricks brings back (as the probe clipmap's shade): a thread a ray of the list.
|
|
21
|
+
*
|
|
22
|
+
* - **A front-face hit**: `emissive + ρ_d·E_dir/π`, its surface one texel of the brick material at the hit drawn from
|
|
23
|
+
* the ray's id and direction (`probe_clipmap_hit_material_pick`); its diffuse albedo goes into the ray for the light
|
|
24
|
+
* and bounce passes.
|
|
25
|
+
* - **FAR**: the world-space probes the probe picked, each share's radiance along the ray (`probe_clipmap_radiance`):
|
|
26
|
+
* what lies past the reach, as each of them sees it.
|
|
27
|
+
* - **SKY**: the prefiltered environment along the ray, at the roughness whose lobe covers a texel of the probe's
|
|
28
|
+
* octahedron, 1/√n (as the probe clipmap's misses take it for theirs).
|
|
29
|
+
* - A back face and an unresolved march bring nothing.
|
|
30
|
+
*
|
|
31
|
+
* @type {ComputeShader}
|
|
32
|
+
*/
|
|
33
|
+
export const shader_screen_probe_brick_shade: ComputeShader;
|
|
34
|
+
/**
|
|
35
|
+
* The local lights a front-face hit takes (as the probe clipmap's light pass): a thread a ray of the list, adding
|
|
36
|
+
* `ρ_d·E_loc/π`, one light of the hit's world light cluster cell picked by its light and shadowed by a ray through the
|
|
37
|
+
* bricks (`probe_clipmap_local_irradiance`), drawn from the ray's id and direction.
|
|
38
|
+
*
|
|
39
|
+
* @type {ComputeShader}
|
|
40
|
+
*/
|
|
41
|
+
export const shader_screen_probe_brick_light: ComputeShader;
|
|
42
|
+
/**
|
|
43
|
+
* The next bounce a front-face hit takes, and every ray's result into the probes' trace textures (as the probe
|
|
44
|
+
* clipmap's bounce): a thread a ray of the list, after the light pass.
|
|
45
|
+
*
|
|
46
|
+
* - **The bounce**, E_ind: the frustum's world-space probes picked at the hit along its normal, the view back along the
|
|
47
|
+
* ray (`probe_clipmap_pick_in`), with the ray's own noise; where they weigh nothing, the world cache's. Where neither
|
|
48
|
+
* has a probe, no bounce: the next frame's hit wants ask the world cache for them. A hit the frustum's probes served
|
|
49
|
+
* has its albedo cleared, so it wants nothing (`shader_screen_probe_brick_want`). `ρ_d·E_ind/π` is added.
|
|
50
|
+
* - **The result**: the ray's radiance, pre-exposed (`screen_probe_exposure`), and its kind and distance to its texel of
|
|
51
|
+
* `screen_probe_trace_radiance` and `screen_probe_trace_hit`, where the composite reads every ray, the screen's and
|
|
52
|
+
* the bricks' alike.
|
|
53
|
+
*
|
|
54
|
+
* @type {ComputeShader}
|
|
55
|
+
*/
|
|
56
|
+
export const shader_screen_probe_brick_bounce: ComputeShader;
|
|
57
|
+
/**
|
|
58
|
+
* The hits' wants (as the probe clipmap's hit wants): a thread a ray of the list, after the bounce. A front-face hit
|
|
59
|
+
* whose albedo the bounce left, which the frustum's world-space probes did not serve, wants the cages its pick reads in
|
|
60
|
+
* the world cache's late set, which the cache's next lifetime takes. Every lane calls `probe_clipmap_want`, wanting or
|
|
61
|
+
* not, from uniform control flow.
|
|
62
|
+
*
|
|
63
|
+
* @type {ComputeShader}
|
|
64
|
+
*/
|
|
65
|
+
export const shader_screen_probe_brick_want: ComputeShader;
|
|
66
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
67
|
+
//# sourceMappingURL=shader_screen_probe_brick.d.ts.map
|
package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_screen_probe_brick.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js"],"names":[],"mappings":"AAkGA;;;;;;;;;;;;;;;;GAgBG;AACH,8CAFU,aAAa,CA+DpB;AAYH;;;;;;;;;;;;;GAaG;AACH,8CAFU,aAAa,CAiEpB;AAUH;;;;;;GAMG;AACH,8CAFU,aAAa,CAwDpB;AA4BH;;;;;;;;;;;;;GAaG;AACH,+CAFU,aAAa,CAwEpB;AAWH;;;;;;;GAOG;AACH,6CAFU,aAAa,CA2CpB;8BAne2B,+BAA+B"}
|