@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,301 @@
|
|
|
1
|
+
import { chunk_folded_dispatch } from "../../gpu_primitive/indirect/chunk_folded_dispatch.js";
|
|
2
|
+
import {
|
|
3
|
+
chunk_uv_octahedral_unit_decode
|
|
4
|
+
} from "../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js";
|
|
5
|
+
import { chunk_divide_round_up_u32 } from "../../shader/chunk/math/chunk_divide_round_up_u32.js";
|
|
6
|
+
import {
|
|
7
|
+
chunk_subgroup_append_slot,
|
|
8
|
+
SUBGROUP_APPEND_NONE
|
|
9
|
+
} from "../../shader/chunk/subgroup/chunk_subgroup_append_slot.js";
|
|
10
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
11
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
12
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
13
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
14
|
+
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
15
|
+
import {
|
|
16
|
+
chunk_screen_probe,
|
|
17
|
+
SCREEN_PROBE_COUNTERS_READ_RESOURCE,
|
|
18
|
+
SCREEN_PROBE_COUNTERS_RESOURCE,
|
|
19
|
+
SCREEN_PROBE_DISPATCH_WRITE_RESOURCE,
|
|
20
|
+
SCREEN_PROBE_FRAME_RESOURCE,
|
|
21
|
+
SCREEN_PROBE_TILE_COUNTS_WRITE_RESOURCE,
|
|
22
|
+
SCREEN_PROBE_TILE_PROBES_WRITE_RESOURCE,
|
|
23
|
+
SCREEN_PROBES_WRITE_RESOURCE
|
|
24
|
+
} from "./chunk_screen_probe.js";
|
|
25
|
+
import { chunk_screen_probe_interpolate } from "./chunk_screen_probe_interpolate.js";
|
|
26
|
+
import {
|
|
27
|
+
chunk_screen_probe_surface,
|
|
28
|
+
SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE,
|
|
29
|
+
SCREEN_PROBE_CAMERA_RESOURCE,
|
|
30
|
+
SCREEN_PROBE_DEPTH_RESOURCE,
|
|
31
|
+
SCREEN_PROBE_PBR_RESOURCE,
|
|
32
|
+
SCREEN_PROBE_VELOCITY_RESOURCE
|
|
33
|
+
} from "./chunk_screen_probe_surface.js";
|
|
34
|
+
import {
|
|
35
|
+
SCREEN_PROBE_COUNTER_ADAPTIVE,
|
|
36
|
+
SCREEN_PROBE_COUNTER_BRICK_RAYS,
|
|
37
|
+
SCREEN_PROBE_DISPATCH_BRICK_RAY_COUNT,
|
|
38
|
+
SCREEN_PROBE_DISPATCH_BRICK_RAYS,
|
|
39
|
+
SCREEN_PROBE_DISPATCH_PROBE_COUNT,
|
|
40
|
+
SCREEN_PROBE_DISPATCH_PROBES,
|
|
41
|
+
SCREEN_PROBE_DISPATCH_RAYS,
|
|
42
|
+
SCREEN_PROBE_DISPATCH_THREADS,
|
|
43
|
+
SCREEN_PROBE_THREAD_WORKGROUP_SIZE,
|
|
44
|
+
SCREEN_PROBE_TILE_WORKGROUP_SIZE,
|
|
45
|
+
SCREEN_PROBE_WEIGHT_EPSILON
|
|
46
|
+
} from "./SCREEN_PROBE.js";
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Whether a point's interpolation weights cover it, Lumen's rule: the weights normalised by their sum held to
|
|
50
|
+
* `SCREEN_PROBE_WEIGHT_EPSILON` from below sum to at least 1 − ε, that is the raw sum is at least ε·(1 − ε). Adaptive
|
|
51
|
+
* placement puts a probe where they do not; integration gives no light there.
|
|
52
|
+
*
|
|
53
|
+
* ```wgsl
|
|
54
|
+
* fn screen_probe_covers(weights: vec4<f32>) -> bool
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @type {CodeChunk}
|
|
58
|
+
*/
|
|
59
|
+
export const chunk_screen_probe_covers = CodeChunk.from(
|
|
60
|
+
//language=WGSL
|
|
61
|
+
`
|
|
62
|
+
fn screen_probe_covers(weights: vec4<f32>) -> bool {
|
|
63
|
+
return dot(weights, vec4<f32>(1.0)) >= ${SCREEN_PROBE_WEIGHT_EPSILON * (1 - SCREEN_PROBE_WEIGHT_EPSILON)};
|
|
64
|
+
}
|
|
65
|
+
`);
|
|
66
|
+
|
|
67
|
+
const surface_group = (resources) => resources.createGroup()
|
|
68
|
+
.add(SCREEN_PROBE_FRAME_RESOURCE)
|
|
69
|
+
.add(SCREEN_PROBE_CAMERA_RESOURCE)
|
|
70
|
+
.add(SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE)
|
|
71
|
+
.add(SCREEN_PROBE_DEPTH_RESOURCE)
|
|
72
|
+
.add(SCREEN_PROBE_PBR_RESOURCE)
|
|
73
|
+
.add(SCREEN_PROBE_VELOCITY_RESOURCE);
|
|
74
|
+
|
|
75
|
+
const uniform_resources = new ShaderResourceSetDescriptor();
|
|
76
|
+
|
|
77
|
+
surface_group(uniform_resources);
|
|
78
|
+
|
|
79
|
+
uniform_resources.createGroup()
|
|
80
|
+
.add(SCREEN_PROBES_WRITE_RESOURCE)
|
|
81
|
+
.add(SCREEN_PROBE_TILE_COUNTS_WRITE_RESOURCE);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Uniform placement (Lumen's `ScreenProbeDownsampleDepthUniformCS`): a thread a tile of D × D pixels, the probe on the
|
|
85
|
+
* pixel at the frame's jitter in it, held inside the view (`screen_probe_surface_at`), written to its tile's place in
|
|
86
|
+
* the atlas. A tile over the sky gets a record of depth zero. Each tile's count of adaptive probes starts at zero.
|
|
87
|
+
*
|
|
88
|
+
* @type {ComputeShader}
|
|
89
|
+
*/
|
|
90
|
+
export const shader_screen_probe_place_uniform = ComputeShader.from({
|
|
91
|
+
label: "Screen Probe Place Uniform",
|
|
92
|
+
resources: uniform_resources,
|
|
93
|
+
body: CodeChunk.from(
|
|
94
|
+
//language=WGSL
|
|
95
|
+
`
|
|
96
|
+
@compute @workgroup_size(${SCREEN_PROBE_TILE_WORKGROUP_SIZE}, ${SCREEN_PROBE_TILE_WORKGROUP_SIZE}, 1)
|
|
97
|
+
fn main(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
98
|
+
let frame = screen_probe_frame;
|
|
99
|
+
|
|
100
|
+
if (any(id.xy >= frame.tile_count)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let probe = id.y * frame.tile_count.x + id.x;
|
|
105
|
+
let pixel = min((id.xy << vec2<u32>(frame.downsample_shift)) + frame.jitter, frame.view_size - 1u);
|
|
106
|
+
|
|
107
|
+
screen_probes[probe] = screen_probe_surface_at(pixel);
|
|
108
|
+
|
|
109
|
+
atomicStore(&screen_probe_tile_counts[probe], 0u);
|
|
110
|
+
}
|
|
111
|
+
`, [
|
|
112
|
+
chunk_screen_probe,
|
|
113
|
+
chunk_screen_probe_surface,
|
|
114
|
+
]),
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Settings of one level of adaptive placement.
|
|
119
|
+
* @type {WebGPUStruct}
|
|
120
|
+
*/
|
|
121
|
+
export const SCREEN_PROBE_ADAPTIVE_SETTINGS = WebGPUStruct.from({
|
|
122
|
+
/** the level, 1 for half the downsample factor, 2 for a quarter, … */
|
|
123
|
+
level: u32,
|
|
124
|
+
}, "ScreenProbeAdaptiveSettings");
|
|
125
|
+
|
|
126
|
+
const adaptive_resources = new ShaderResourceSetDescriptor();
|
|
127
|
+
|
|
128
|
+
adaptive_resources.setImmediate("settings", SCREEN_PROBE_ADAPTIVE_SETTINGS);
|
|
129
|
+
|
|
130
|
+
surface_group(adaptive_resources);
|
|
131
|
+
|
|
132
|
+
adaptive_resources.createGroup()
|
|
133
|
+
.add(SCREEN_PROBES_WRITE_RESOURCE)
|
|
134
|
+
.add(SCREEN_PROBE_TILE_COUNTS_WRITE_RESOURCE)
|
|
135
|
+
.add(SCREEN_PROBE_TILE_PROBES_WRITE_RESOURCE)
|
|
136
|
+
.add(SCREEN_PROBE_COUNTERS_RESOURCE);
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Adaptive placement, one level (Lumen's `ScreenProbeAdaptivePlacementCS`): a thread a point of the grid at the
|
|
140
|
+
* level's spacing, D >> level, with the frame's jitter. A point that a coarser level's grid already holds, both its
|
|
141
|
+
* indices even, is skipped. A point on a surface that the probes placed so far do not cover (`screen_probe_interpolate`,
|
|
142
|
+
* `screen_probe_covers`), the uniform ones and the coarser levels' adaptive ones, gets a probe:
|
|
143
|
+
*
|
|
144
|
+
* - its slot from the frame's count of adaptive probes, one atomic a subgroup; past `adaptive_capacity` no probe is
|
|
145
|
+
* placed, so where the view wants more than the slots hold, the coarser levels, placed first, keep theirs;
|
|
146
|
+
* - its record at probe `uniform_count + slot`, and its slot on its tile's list, whose count of
|
|
147
|
+
* `adaptive_tile_capacity` it cannot pass, since the tile holds that many of the grids' points.
|
|
148
|
+
*
|
|
149
|
+
* The levels run one dispatch each, coarsest first, so a level sees every coarser one's probes; within a level,
|
|
150
|
+
* another workgroup's placement may not be seen yet, as in Lumen.
|
|
151
|
+
*
|
|
152
|
+
* @type {ComputeShader}
|
|
153
|
+
*/
|
|
154
|
+
export const shader_screen_probe_place_adaptive = ComputeShader.from({
|
|
155
|
+
label: "Screen Probe Place Adaptive",
|
|
156
|
+
resources: adaptive_resources,
|
|
157
|
+
body: CodeChunk.from(
|
|
158
|
+
//language=WGSL
|
|
159
|
+
`
|
|
160
|
+
fn screen_probe_tile_adaptive_count(tile: u32) -> u32 {
|
|
161
|
+
return atomicLoad(&screen_probe_tile_counts[tile]);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@compute @workgroup_size(${SCREEN_PROBE_TILE_WORKGROUP_SIZE}, ${SCREEN_PROBE_TILE_WORKGROUP_SIZE}, 1)
|
|
165
|
+
fn main(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
166
|
+
let frame = screen_probe_frame;
|
|
167
|
+
let level = settings.level;
|
|
168
|
+
let pixel = (id.xy << vec2<u32>(frame.downsample_shift - level)) + frame.jitter;
|
|
169
|
+
|
|
170
|
+
var wants = false;
|
|
171
|
+
var record: ScreenProbe;
|
|
172
|
+
|
|
173
|
+
// a point a coarser grid holds has both indices even
|
|
174
|
+
if (all(pixel < frame.view_size) && any((id.xy & vec2<u32>(1u)) != vec2<u32>(0u))) {
|
|
175
|
+
record = screen_probe_surface_at(pixel);
|
|
176
|
+
|
|
177
|
+
if (record.depth > 0.0) {
|
|
178
|
+
let normal = uv_octahedral_unit_decode(unpack2x16unorm(record.normal));
|
|
179
|
+
let sample = screen_probe_interpolate(pixel, vec2<f32>(0.0), record.position, record.depth, normal);
|
|
180
|
+
|
|
181
|
+
wants = !screen_probe_covers(sample.weights);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// every lane, wanting or not, for the subgroup's one atomic
|
|
186
|
+
let slot = subgroup_append_slot(&screen_probe_counters[${SCREEN_PROBE_COUNTER_ADAPTIVE}u], wants, frame.adaptive_capacity);
|
|
187
|
+
|
|
188
|
+
if (slot == ${SUBGROUP_APPEND_NONE}u) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
screen_probes[frame.uniform_count + slot] = record;
|
|
193
|
+
|
|
194
|
+
// the tile of a point of this level's grid: its index over the level's subdivision of a tile
|
|
195
|
+
let tile = id.xy >> vec2<u32>(level);
|
|
196
|
+
let tile_index = tile.y * frame.tile_count.x + tile.x;
|
|
197
|
+
let place = atomicAdd(&screen_probe_tile_counts[tile_index], 1u);
|
|
198
|
+
|
|
199
|
+
screen_probe_tile_probes[tile_index * frame.adaptive_tile_capacity + place] = slot;
|
|
200
|
+
}
|
|
201
|
+
`, [
|
|
202
|
+
chunk_screen_probe,
|
|
203
|
+
chunk_screen_probe_surface,
|
|
204
|
+
chunk_screen_probe_interpolate,
|
|
205
|
+
chunk_screen_probe_covers,
|
|
206
|
+
chunk_subgroup_append_slot,
|
|
207
|
+
chunk_uv_octahedral_unit_decode,
|
|
208
|
+
]),
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
const command_resources = new ShaderResourceSetDescriptor();
|
|
212
|
+
|
|
213
|
+
command_resources.createGroup()
|
|
214
|
+
.add(SCREEN_PROBE_FRAME_RESOURCE)
|
|
215
|
+
.add(SCREEN_PROBE_COUNTERS_READ_RESOURCE)
|
|
216
|
+
.add(SCREEN_PROBE_DISPATCH_WRITE_RESOURCE);
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* The commands of the frame's passes over its probes, one thread after placement: the frame's probes, the uniform ones
|
|
220
|
+
* and the adaptive ones placed, held to their slots; a workgroup a probe, a thread a probe and a thread a ray, folded
|
|
221
|
+
* (`folded_dispatch`), and the count.
|
|
222
|
+
*
|
|
223
|
+
* @type {ComputeShader}
|
|
224
|
+
*/
|
|
225
|
+
export const shader_screen_probe_command = ComputeShader.from({
|
|
226
|
+
label: "Screen Probe Command",
|
|
227
|
+
resources: command_resources,
|
|
228
|
+
body: CodeChunk.from(
|
|
229
|
+
//language=WGSL
|
|
230
|
+
`
|
|
231
|
+
fn screen_probe_command_write(at: u32, groups: u32) {
|
|
232
|
+
let folded = folded_dispatch(groups);
|
|
233
|
+
|
|
234
|
+
screen_probe_dispatch[at] = folded.x;
|
|
235
|
+
screen_probe_dispatch[at + 1u] = folded.y;
|
|
236
|
+
screen_probe_dispatch[at + 2u] = folded.z;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@compute @workgroup_size(1, 1, 1)
|
|
240
|
+
fn main() {
|
|
241
|
+
let frame = screen_probe_frame;
|
|
242
|
+
let count = frame.uniform_count + min(screen_probe_counters[${SCREEN_PROBE_COUNTER_ADAPTIVE}u], frame.adaptive_capacity);
|
|
243
|
+
let rays = count << (2u * frame.octahedron_shift);
|
|
244
|
+
|
|
245
|
+
screen_probe_command_write(${SCREEN_PROBE_DISPATCH_PROBES}u, count);
|
|
246
|
+
screen_probe_command_write(${SCREEN_PROBE_DISPATCH_THREADS}u, divide_round_up_u32(count, ${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}u));
|
|
247
|
+
screen_probe_command_write(${SCREEN_PROBE_DISPATCH_RAYS}u, divide_round_up_u32(rays, ${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}u));
|
|
248
|
+
|
|
249
|
+
screen_probe_dispatch[${SCREEN_PROBE_DISPATCH_PROBE_COUNT}u] = count;
|
|
250
|
+
}
|
|
251
|
+
`, [
|
|
252
|
+
chunk_screen_probe,
|
|
253
|
+
chunk_folded_dispatch,
|
|
254
|
+
chunk_divide_round_up_u32,
|
|
255
|
+
]),
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Settings of the bricks' command.
|
|
260
|
+
* @type {WebGPUStruct}
|
|
261
|
+
*/
|
|
262
|
+
export const SCREEN_PROBE_BRICK_COMMAND_SETTINGS = WebGPUStruct.from({
|
|
263
|
+
/** slots of the list of rays left to the bricks */
|
|
264
|
+
capacity: u32,
|
|
265
|
+
}, "ScreenProbeBrickCommandSettings");
|
|
266
|
+
|
|
267
|
+
const brick_command_resources = new ShaderResourceSetDescriptor();
|
|
268
|
+
|
|
269
|
+
brick_command_resources.setImmediate("settings", SCREEN_PROBE_BRICK_COMMAND_SETTINGS);
|
|
270
|
+
|
|
271
|
+
brick_command_resources.createGroup()
|
|
272
|
+
.add(SCREEN_PROBE_COUNTERS_READ_RESOURCE)
|
|
273
|
+
.add(SCREEN_PROBE_DISPATCH_WRITE_RESOURCE);
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* The command of the passes over the rays the screen left to the bricks, one thread after the screen trace: the count,
|
|
277
|
+
* held to the list's slots, and a thread a ray, folded.
|
|
278
|
+
*
|
|
279
|
+
* @type {ComputeShader}
|
|
280
|
+
*/
|
|
281
|
+
export const shader_screen_probe_brick_command = ComputeShader.from({
|
|
282
|
+
label: "Screen Probe Brick Command",
|
|
283
|
+
resources: brick_command_resources,
|
|
284
|
+
body: CodeChunk.from(
|
|
285
|
+
//language=WGSL
|
|
286
|
+
`
|
|
287
|
+
@compute @workgroup_size(1, 1, 1)
|
|
288
|
+
fn main() {
|
|
289
|
+
let count = min(screen_probe_counters[${SCREEN_PROBE_COUNTER_BRICK_RAYS}u], settings.capacity);
|
|
290
|
+
let folded = folded_dispatch(divide_round_up_u32(count, ${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}u));
|
|
291
|
+
|
|
292
|
+
screen_probe_dispatch[${SCREEN_PROBE_DISPATCH_BRICK_RAYS}u] = folded.x;
|
|
293
|
+
screen_probe_dispatch[${SCREEN_PROBE_DISPATCH_BRICK_RAYS}u + 1u] = folded.y;
|
|
294
|
+
screen_probe_dispatch[${SCREEN_PROBE_DISPATCH_BRICK_RAYS}u + 2u] = folded.z;
|
|
295
|
+
screen_probe_dispatch[${SCREEN_PROBE_DISPATCH_BRICK_RAY_COUNT}u] = count;
|
|
296
|
+
}
|
|
297
|
+
`, [
|
|
298
|
+
chunk_folded_dispatch,
|
|
299
|
+
chunk_divide_round_up_u32,
|
|
300
|
+
]),
|
|
301
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** The G-buffer's bent normals, as GTAO left them (the shading normals where it is off). @type {ShaderResourceDescriptor} */
|
|
2
|
+
export const SCREEN_PROBE_BENT_NORMAL_RESOURCE: ShaderResourceDescriptor;
|
|
3
|
+
/** The integration's output, `rgba16float`: E at the bent normal, and in alpha the moving share, negative where no probe covered the pixel. @type {ShaderResourceDescriptor} */
|
|
4
|
+
export const SCREEN_PROBE_INTEGRATED_READ_RESOURCE: ShaderResourceDescriptor;
|
|
5
|
+
/** @type {ShaderResourceDescriptor} */
|
|
6
|
+
export const SCREEN_PROBE_INTEGRATED_WRITE_RESOURCE: ShaderResourceDescriptor;
|
|
7
|
+
/** Last frame's filtered diffuse, `rgba16float`. @type {ShaderResourceDescriptor} */
|
|
8
|
+
export const SCREEN_PROBE_DIFFUSE_HISTORY_RESOURCE: ShaderResourceDescriptor;
|
|
9
|
+
/** This frame's, the temporal filter's output. @type {ShaderResourceDescriptor} */
|
|
10
|
+
export const SCREEN_PROBE_DIFFUSE_WRITE_RESOURCE: ShaderResourceDescriptor;
|
|
11
|
+
/** Last frame's frames and fast update a pixel, two unorm16 in `r32uint`. @type {ShaderResourceDescriptor} */
|
|
12
|
+
export const SCREEN_PROBE_FRAMES_HISTORY_RESOURCE: ShaderResourceDescriptor;
|
|
13
|
+
/** @type {ShaderResourceDescriptor} */
|
|
14
|
+
export const SCREEN_PROBE_FRAMES_WRITE_RESOURCE: ShaderResourceDescriptor;
|
|
15
|
+
/** Last frame's reverse-Z depth. @type {ShaderResourceDescriptor} */
|
|
16
|
+
export const SCREEN_PROBE_DEPTH_PREVIOUS_RESOURCE: ShaderResourceDescriptor;
|
|
17
|
+
/**
|
|
18
|
+
* Each pixel's diffuse light from the probes (Lumen's `ScreenProbeIntegrateCS`, its SH3 diffuse): a thread a pixel.
|
|
19
|
+
*
|
|
20
|
+
* - **The lookup's jitter**: by the frame's blue noise at the pixel, up to a tile's width each way, Lumen's
|
|
21
|
+
* `FullResolutionJitterWidth` of one, kept only where the pixel it lands on is coplanar with this one (plane weight at
|
|
22
|
+
* `SCREEN_PROBE_JITTER_PLANE_WEIGHT_SCALE` past 0.01), so the probes' grid dissolves into noise the temporal filter
|
|
23
|
+
* averages without crossing an edge.
|
|
24
|
+
* - **The probes**: `screen_probe_interpolate` from the pixel's surface point, view depth and face normal; the weights
|
|
25
|
+
* normalised by their sum, held to `SCREEN_PROBE_WEIGHT_EPSILON` from below.
|
|
26
|
+
* - **The light**: the probes' SH3 blended by the weights (each probe by name), E at the pixel's bent normal
|
|
27
|
+
* (`sh3_color_get_irradiance_at`), as the probe clipmap's diffuse resolves at it, over the exposure the SH was
|
|
28
|
+
* pre-exposed by: the scene's units, which the temporal filter and the deferred passes take.
|
|
29
|
+
* - **Alpha**: the probes' moving shares by the same weights, held to 0.001 from below; negative where the weights do
|
|
30
|
+
* not cover the pixel (`screen_probe_covers`), whose light is then zero and the temporal filter's to fill.
|
|
31
|
+
* - A pixel of the sky is zero.
|
|
32
|
+
*
|
|
33
|
+
* @type {ComputeShader}
|
|
34
|
+
*/
|
|
35
|
+
export const shader_screen_probe_integrate: ComputeShader;
|
|
36
|
+
/**
|
|
37
|
+
* The temporal filter (Lumen's `ScreenProbeTemporalReprojectionCS`): a thread a pixel, blending its integrated light
|
|
38
|
+
* into its history.
|
|
39
|
+
*
|
|
40
|
+
* - **Reprojection**: the pixel's place last frame by its velocity; its four bilinear neighbours there, each kept
|
|
41
|
+
* where last frame's depth at it is the depth this pixel's point had then by its velocity (Lumen's history depth),
|
|
42
|
+
* within `SCREEN_PROBE_TEMPORAL_DISTANCE` of it, the threshold dithered over ×½ to ×1½ (a blue-noise draw half the
|
|
43
|
+
* noise's period from the integration's jitter, so the two do not move together) and divided by the cosine between
|
|
44
|
+
* the face normal and the view (held to 0.1), the depth a grazing surface spans between jittered frames; and on the
|
|
45
|
+
* screen. Each texel's history by its bilinear weight among those kept.
|
|
46
|
+
* - **Frames**: each kept neighbour's count plus one, held to `temporal_frames`, by the same weights.
|
|
47
|
+
* - **Fast update**: the pixel's moving share over `SCREEN_PROBE_FAST_UPDATE_MOVING`, less 0.2 over 0.8, held to
|
|
48
|
+
* `SCREEN_PROBE_FAST_UPDATE_LIMIT`, and no less than the history's: the frames are held to (1 − it) of the most.
|
|
49
|
+
* The history keeps this frame's own share.
|
|
50
|
+
* - **A pixel the probes did not cover** takes the mean of its covered neighbours in a 3 × 3 this frame; with none,
|
|
51
|
+
* its history alone.
|
|
52
|
+
* - The blend is 1 / (1 + frames); a pixel with no history to keep takes its new light whole.
|
|
53
|
+
*
|
|
54
|
+
* @type {ComputeShader}
|
|
55
|
+
*/
|
|
56
|
+
export const shader_screen_probe_temporal: ComputeShader;
|
|
57
|
+
import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
|
|
58
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
59
|
+
//# sourceMappingURL=shader_screen_probe_resolve.d.ts.map
|
package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_screen_probe_resolve.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js"],"names":[],"mappings":"AA+CA,6HAA6H;AAC7H,gDADiG,wBAAwB,CACf;AAE1G,gLAAgL;AAChL,oDADoJ,wBAAwB,CACrC;AACvI,uCAAuC;AACvC,qDADW,wBAAwB,CACyH;AAE5J,qFAAqF;AACrF,oDADyD,wBAAwB,CAC2D;AAC5I,mFAAmF;AACnF,kDADuD,wBAAwB,CACuE;AAEtJ,8GAA8G;AAC9G,mDADkF,wBAAwB,CACkB;AAC5H,uCAAuC;AACvC,iDADW,wBAAwB,CAC6G;AAEhJ,qEAAqE;AACrE,mDADyC,wBAAwB,CACsC;AAmBvG;;;;;;;;;;;;;;;;;GAiBG;AACH,4CAFU,aAAa,CA2FpB;AAmBH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,2CAFU,aAAa,CAsIpB;yCA5VsC,mDAAmD;8BAD9D,+BAA+B"}
|