@woosh/meep-engine 3.65.0 → 3.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +4 -9
- package/src/engine/graphics3/load_cube_environment.js +3 -3
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/format/lut/cube/CubeLut.d.ts +38 -0
- package/src/format/lut/cube/CubeLut.d.ts.map +1 -0
- package/src/format/lut/cube/CubeLut.js +23 -0
- package/src/format/lut/cube/cube_read.d.ts +23 -0
- package/src/format/lut/cube/cube_read.d.ts.map +1 -0
- package/src/format/lut/cube/cube_read.js +199 -0
- package/src/format/lut/cube/cube_write.d.ts +15 -0
- package/src/format/lut/cube/cube_write.d.ts.map +1 -0
- package/src/format/lut/cube/cube_write.js +90 -0
- package/src/shade/playground/probe_clipmap/README.md +1 -0
- package/src/shade/playground/probe_clipmap/index.html +48 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +36 -0
- package/src/shade/renderer/Renderer.d.ts +7 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +225 -27
- package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
- package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +22 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js +160 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts +45 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js +57 -0
- package/src/shade/renderer/atmosphere/GPUSky.d.ts +23 -8
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +91 -34
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +17 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +55 -25
- package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts +164 -0
- package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SceneAtmosphere.js +308 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +3 -12
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +52 -89
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts +14 -0
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js +103 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +10 -4
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +95 -57
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +10 -14
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +97 -69
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.js +117 -48
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +8 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +65 -35
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +2 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.js +6 -6
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts +41 -0
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.js +123 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +21 -64
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -2
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +55 -179
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts +7 -0
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/shader_sky_view_lut.js +111 -0
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts +0 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +68 -79
- package/src/shade/renderer/deferred/shader_background.js +1 -1
- package/src/shade/renderer/deferred/shader_background_sky.d.ts +5 -0
- package/src/shade/renderer/deferred/shader_background_sky.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_background_sky.js +130 -0
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts +73 -4
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +113 -7
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts +12 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.js +12 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +15 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ToneMapper.js +31 -3
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +26 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +55 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +2 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.js +6 -3
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +3 -2
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.js +7 -3
- package/src/shade/renderer/extension/ViewTextures.d.ts +3 -2
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +3 -2
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts +47 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js +246 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +4 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +8 -148
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +4 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +9 -58
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts +142 -0
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.js +938 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts +192 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.js +231 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts +11 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.js +25 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts +110 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.js +197 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts +150 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.js +408 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts +23 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.js +63 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts +24 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.js +61 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts +39 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.js +126 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts +21 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.js +74 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts +20 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.js +26 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts +24 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.js +57 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts +22 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.js +53 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts +62 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.js +156 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts +18 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js +50 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts +21 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js +54 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts +67 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js +509 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts +20 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.js +128 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts +62 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.js +478 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts +69 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.js +457 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts +27 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js +219 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts +22 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.js +151 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts +66 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.js +301 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts +59 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js +364 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts +40 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.js +275 -0
- package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -1
- package/src/shade/renderer/grass/blade/GPUGrassBlades.js +17 -2
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +18 -8
- package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -1
- package/src/shade/renderer/grass/blade/grass_blade_resolve.js +114 -32
- package/src/shade/renderer/light/GPULightCollection.d.ts +1 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +213 -80
- package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.d.ts +1 -2
- package/src/shade/renderer/light/environment/chunk_sample_environment_color.d.ts.map +1 -0
- package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.js +3 -4
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +35 -9
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +81 -11
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +4 -1
- package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +1 -1
- package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +1 -1
- package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.d.ts +1 -1
- package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.js +1 -1
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +2 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +2 -0
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts +6 -0
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +9 -1
- package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +4 -3
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts +17 -0
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.js +16 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts +21 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.js +30 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -5
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +19 -17
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +2 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +2 -1
- package/src/shade/renderer/scene/Scene.d.ts +9 -2
- package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/Scene.js +10 -2
- package/src/shade/renderer/shader/ImageShader.d.ts +24 -12
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +11 -8
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts +3 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js +11 -3
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +2 -11
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +23 -32
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.js +14 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.js +4 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.js +11 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +68 -69
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts +4 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.js +46 -39
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js +5 -3
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +7 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +4 -4
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +86 -5
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +73 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +139 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
- package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +3 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +743 -739
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +2 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +19 -17
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +5 -3
- package/src/shade/renderer/water/chunk_water_gi.js +2 -0
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts +0 -2
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +0 -45
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts +0 -2
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js +0 -17
- package/src/engine/graphics/sh3/sky/hosek/README.md +0 -4
- package/src/engine/graphics/sh3/sky/hosek/data.d.ts +0 -17
- package/src/engine/graphics/sh3/sky/hosek/data.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/data.js +0 -3744
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts +0 -2
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +0 -71
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts +0 -26
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js +0 -70
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +0 -22
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +0 -1
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +0 -388
- package/src/engine/graphics3/make_default_environment.d.ts +0 -15
- package/src/engine/graphics3/make_default_environment.d.ts.map +0 -1
- package/src/engine/graphics3/make_default_environment.js +0 -111
- package/src/shade/renderer/atmosphere/MIE_G.d.ts +0 -6
- package/src/shade/renderer/atmosphere/MIE_G.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/MIE_G.js +0 -5
- package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts +0 -4
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +0 -44
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +0 -2
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +0 -43
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.js +0 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.js +0 -18
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts +0 -14
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.js +0 -86
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.js +0 -125
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.js +0 -17
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.js +0 -38
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +0 -16
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +0 -28
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts +0 -11
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.js +0 -56
- package/src/shade/renderer/shader/chunk/light/sky/chunk_sample_sky_color.d.ts.map +0 -1
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts +0 -26
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +0 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +0 -170
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Length of one GPU-side atmosphere spatial unit in world-space metres ($1\text{ km} = 10^3\text{ m}$),
|
|
3
|
+
* matching Hillaire (2020). Keeping GPU atmosphere geometry and extinction in kilometres and
|
|
4
|
+
* $\text{km}^{-1}$ keeps planetary squares inside 32-bit integer range, radii and sea-level
|
|
5
|
+
* scattering coefficients inside normal `f16`, and upper-atmosphere extinction three orders of
|
|
6
|
+
* magnitude further above division-by-zero epsilon floors while `SceneAtmosphere` remains authored
|
|
7
|
+
* in world-space metres and $\text{m}^{-1}$ on the CPU.
|
|
8
|
+
*
|
|
9
|
+
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const ATMOSPHERE_UNIT_METERS: number;
|
|
13
|
+
/**
|
|
14
|
+
* Multiplicative factor converting world-space lengths and positions ($\text{m}$) into GPU
|
|
15
|
+
* atmosphere units ($\text{km}$): `x_atm = x_meters * METERS_TO_ATMOSPHERE_UNITS`.
|
|
16
|
+
*
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
export const METERS_TO_ATMOSPHERE_UNITS: number;
|
|
20
|
+
/**
|
|
21
|
+
* Multiplicative factor converting world-space scattering/extinction/absorption coefficients
|
|
22
|
+
* ($\text{m}^{-1}$) into inverse GPU atmosphere units ($\text{km}^{-1}$):
|
|
23
|
+
* `sigma_atm = sigma_per_meter * INVERSE_METERS_TO_ATMOSPHERE_UNITS`, preserving dimensionless
|
|
24
|
+
* optical depth $\sigma_{\text{atm}} \cdot d_{\text{atm}} = \sigma_m \cdot d_m$.
|
|
25
|
+
*
|
|
26
|
+
* @type {number}
|
|
27
|
+
*/
|
|
28
|
+
export const INVERSE_METERS_TO_ATMOSPHERE_UNITS: number;
|
|
29
|
+
/**
|
|
30
|
+
* Positive lower bound (`1 mm` expressed in GPU atmosphere units) applied to radii and scale
|
|
31
|
+
* heights so zero or negative inputs cannot divide by zero.
|
|
32
|
+
*
|
|
33
|
+
* @type {number}
|
|
34
|
+
*/
|
|
35
|
+
export const MIN_ATMOSPHERE_LENGTH_UNITS: number;
|
|
36
|
+
/**
|
|
37
|
+
* WGSL compile-time constants mirroring {@link ATMOSPHERE_UNIT_METERS},
|
|
38
|
+
* {@link METERS_TO_ATMOSPHERE_UNITS}, {@link INVERSE_METERS_TO_ATMOSPHERE_UNITS}, and
|
|
39
|
+
* {@link MIN_ATMOSPHERE_LENGTH_UNITS}.
|
|
40
|
+
*
|
|
41
|
+
* @type {CodeChunk}
|
|
42
|
+
*/
|
|
43
|
+
export const ATMOSPHERE_UNIT_SCALE_DECLARATION: CodeChunk;
|
|
44
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
45
|
+
//# sourceMappingURL=ATMOSPHERE_UNIT_SCALE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ATMOSPHERE_UNIT_SCALE.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,qCAFU,MAAM,CAE4B;AAE5C;;;;;GAKG;AACH,yCAFU,MAAM,CAEqD;AAErE;;;;;;;GAOG;AACH,iDAFU,MAAM,CAEyD;AAEzE;;;;;GAKG;AACH,0CAFU,MAAM,CAE6D;AAE7E;;;;;;GAMG;AACH,gDAFU,SAAS,CAUjB;0BAxDwB,iCAAiC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Length of one GPU-side atmosphere spatial unit in world-space metres ($1\text{ km} = 10^3\text{ m}$),
|
|
5
|
+
* matching Hillaire (2020). Keeping GPU atmosphere geometry and extinction in kilometres and
|
|
6
|
+
* $\text{km}^{-1}$ keeps planetary squares inside 32-bit integer range, radii and sea-level
|
|
7
|
+
* scattering coefficients inside normal `f16`, and upper-atmosphere extinction three orders of
|
|
8
|
+
* magnitude further above division-by-zero epsilon floors while `SceneAtmosphere` remains authored
|
|
9
|
+
* in world-space metres and $\text{m}^{-1}$ on the CPU.
|
|
10
|
+
*
|
|
11
|
+
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const ATMOSPHERE_UNIT_METERS = 1_000;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Multiplicative factor converting world-space lengths and positions ($\text{m}$) into GPU
|
|
18
|
+
* atmosphere units ($\text{km}$): `x_atm = x_meters * METERS_TO_ATMOSPHERE_UNITS`.
|
|
19
|
+
*
|
|
20
|
+
* @type {number}
|
|
21
|
+
*/
|
|
22
|
+
export const METERS_TO_ATMOSPHERE_UNITS = 1 / ATMOSPHERE_UNIT_METERS;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Multiplicative factor converting world-space scattering/extinction/absorption coefficients
|
|
26
|
+
* ($\text{m}^{-1}$) into inverse GPU atmosphere units ($\text{km}^{-1}$):
|
|
27
|
+
* `sigma_atm = sigma_per_meter * INVERSE_METERS_TO_ATMOSPHERE_UNITS`, preserving dimensionless
|
|
28
|
+
* optical depth $\sigma_{\text{atm}} \cdot d_{\text{atm}} = \sigma_m \cdot d_m$.
|
|
29
|
+
*
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
export const INVERSE_METERS_TO_ATMOSPHERE_UNITS = ATMOSPHERE_UNIT_METERS;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Positive lower bound (`1 mm` expressed in GPU atmosphere units) applied to radii and scale
|
|
36
|
+
* heights so zero or negative inputs cannot divide by zero.
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
export const MIN_ATMOSPHERE_LENGTH_UNITS = 1e-3 * METERS_TO_ATMOSPHERE_UNITS;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* WGSL compile-time constants mirroring {@link ATMOSPHERE_UNIT_METERS},
|
|
44
|
+
* {@link METERS_TO_ATMOSPHERE_UNITS}, {@link INVERSE_METERS_TO_ATMOSPHERE_UNITS}, and
|
|
45
|
+
* {@link MIN_ATMOSPHERE_LENGTH_UNITS}.
|
|
46
|
+
*
|
|
47
|
+
* @type {CodeChunk}
|
|
48
|
+
*/
|
|
49
|
+
export const ATMOSPHERE_UNIT_SCALE_DECLARATION = CodeChunk.from(
|
|
50
|
+
//language=WGSL
|
|
51
|
+
`
|
|
52
|
+
const ATMOSPHERE_UNIT_METERS: f32 = ${ATMOSPHERE_UNIT_METERS.toFixed(1)};
|
|
53
|
+
const METERS_TO_ATMOSPHERE_UNITS: f32 = 1.0 / ATMOSPHERE_UNIT_METERS;
|
|
54
|
+
const INVERSE_METERS_TO_ATMOSPHERE_UNITS: f32 = ATMOSPHERE_UNIT_METERS;
|
|
55
|
+
const MIN_ATMOSPHERE_LENGTH_UNITS: f32 = 1e-3 * METERS_TO_ATMOSPHERE_UNITS;
|
|
56
|
+
`
|
|
57
|
+
);
|
|
@@ -1,26 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @typedef {import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
|
|
2
3
|
* @typedef {import("../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
3
4
|
*/
|
|
4
5
|
export class GPUSky {
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* @param {PipelineEnquiry} enquiry
|
|
8
|
+
*/
|
|
9
|
+
static enquirePipelines(enquiry: PipelineEnquiry): void;
|
|
10
|
+
/**
|
|
7
11
|
* @param {GraphicsContext} graphics
|
|
12
|
+
* @param {SceneAtmosphere} [atmosphere]
|
|
8
13
|
*/
|
|
9
|
-
constructor(graphics: GraphicsContext);
|
|
14
|
+
constructor(graphics: GraphicsContext, atmosphere?: SceneAtmosphere);
|
|
10
15
|
/**
|
|
11
|
-
*
|
|
12
16
|
* @returns {GPUTextureContext}
|
|
13
17
|
*/
|
|
14
18
|
get lut_transmittance(): GPUTextureContext;
|
|
15
19
|
/**
|
|
16
|
-
*
|
|
17
20
|
* @returns {GPUTextureContext}
|
|
18
21
|
*/
|
|
19
22
|
get lut_multiple_scattering(): GPUTextureContext;
|
|
20
23
|
/**
|
|
21
|
-
*
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
* @returns {SceneAtmosphere}
|
|
25
|
+
*/
|
|
26
|
+
get atmosphere(): SceneAtmosphere;
|
|
27
|
+
/**
|
|
28
|
+
* GPU uniform buffer holding {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
29
|
+
* @returns {GPUTypedBuffer}
|
|
30
|
+
*/
|
|
31
|
+
get parameters_buffer(): GPUTypedBuffer;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the LUTs have not yet been built or {@link SceneAtmosphere#version} has advanced
|
|
34
|
+
* since the last {@link update}.
|
|
24
35
|
*
|
|
25
36
|
* @returns {boolean}
|
|
26
37
|
*/
|
|
@@ -28,11 +39,15 @@ export class GPUSky {
|
|
|
28
39
|
destroy(): void;
|
|
29
40
|
debug(): void;
|
|
30
41
|
/**
|
|
31
|
-
*
|
|
42
|
+
* Uploads any changed {@link SceneAtmosphere} parameters and rebuilds the transmittance and
|
|
43
|
+
* multiple-scattering LUTs when {@link needs_update} is true; a no-op on steady frames.
|
|
32
44
|
*/
|
|
33
45
|
update(): void;
|
|
34
46
|
#private;
|
|
35
47
|
}
|
|
48
|
+
export type PipelineEnquiry = import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
36
49
|
export type GraphicsContext = import("../GraphicsContext.js").GraphicsContext;
|
|
37
50
|
import { GPUTextureContext } from "../texture/GPUTextureContext.js";
|
|
51
|
+
import { SceneAtmosphere } from "./SceneAtmosphere.js";
|
|
52
|
+
import { GPUTypedBuffer } from "../buffer/GPUTypedBuffer.js";
|
|
38
53
|
//# sourceMappingURL=GPUSky.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUSky.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/GPUSky.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUSky.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/GPUSky.js"],"names":[],"mappings":"AAcA;;;GAGG;AAEH;IAEI;;OAEG;IACH,iCAFW,eAAe,QAKzB;IA+ED;;;OAGG;IACH,sBAHW,eAAe,eACf,eAAe,EAgCzB;IA9ED;;OAEG;IACH,2CAEC;IAOD;;OAEG;IACH,iDAEC;IAED;;OAEG;IACH,kCAEC;IAED;;;OAGG;IACH,wCAEC;IAED;;;;;OAKG;IACH,4BAEC;IAsCD,gBAIC;IAED,cAOC;IAED;;;OAGG;IACH,eAwDC;;CAEJ;8BA5MY,OAAO,0CAA0C,EAAE,eAAe;8BAClE,OAAO,uBAAuB,EAAE,eAAe;kCAR1B,iCAAiC;gCAEnC,sBAAsB;+BANvB,6BAA6B"}
|
|
@@ -1,31 +1,66 @@
|
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
1
2
|
import { FrameGraph } from "../../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
2
3
|
import { TextureResourceDescriptor } from "../../device/graph/TextureResourceDescriptor.js";
|
|
3
4
|
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
5
|
+
import { GPUTypedBuffer } from "../buffer/GPUTypedBuffer.js";
|
|
4
6
|
import { graph_compute_pass } from "../shader/graph/compute/graph_compute_pass.js";
|
|
5
7
|
import { graph_image_pass } from "../shader/graph/graph_image_pass.js";
|
|
6
8
|
import { debug_draw_texture } from "../texture/debug_draw_texture.js";
|
|
7
9
|
import { GPUTextureContext } from "../texture/GPUTextureContext.js";
|
|
10
|
+
import { ATMOSPHERE_PARAMETERS_STRUCT } from "./ATMOSPHERE_PARAMETERS_STRUCT.js";
|
|
11
|
+
import { SceneAtmosphere } from "./SceneAtmosphere.js";
|
|
8
12
|
import { shader_multiscatter_lut } from "./shader_multiscatter_lut.js";
|
|
9
13
|
import { shader_transmittance_lut } from "./shader_transmittance_lut.js";
|
|
10
14
|
|
|
11
15
|
/**
|
|
16
|
+
* @typedef {import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
|
|
12
17
|
* @typedef {import("../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
13
18
|
*/
|
|
14
19
|
|
|
15
20
|
export class GPUSky {
|
|
16
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @param {PipelineEnquiry} enquiry
|
|
24
|
+
*/
|
|
25
|
+
static enquirePipelines(enquiry) {
|
|
26
|
+
enquiry.render.push(shader_transmittance_lut.pipeline);
|
|
27
|
+
enquiry.compute.push(shader_multiscatter_lut.pipeline);
|
|
28
|
+
}
|
|
29
|
+
|
|
17
30
|
/**
|
|
18
31
|
* @type {GraphicsContext}
|
|
19
32
|
*/
|
|
20
33
|
#graphics;
|
|
21
34
|
|
|
35
|
+
/**
|
|
36
|
+
* @type {SceneAtmosphere}
|
|
37
|
+
*/
|
|
38
|
+
#atmosphere;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @type {GPUTypedBuffer}
|
|
42
|
+
*/
|
|
43
|
+
#parameters_buffer;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Reusable POJO target for {@link SceneAtmosphere#write_uniform}.
|
|
47
|
+
* @type {Record<string, any>}
|
|
48
|
+
*/
|
|
49
|
+
#uniform_scratch = {};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Last {@link SceneAtmosphere#version} committed into the LUTs and uniform buffer, or `-1`
|
|
53
|
+
* before the first {@link update}.
|
|
54
|
+
* @type {number}
|
|
55
|
+
*/
|
|
56
|
+
#committed_version = -1;
|
|
57
|
+
|
|
22
58
|
/**
|
|
23
59
|
* @type {GPUTextureContext}
|
|
24
60
|
*/
|
|
25
61
|
#lut_transmittance;
|
|
26
62
|
|
|
27
63
|
/**
|
|
28
|
-
*
|
|
29
64
|
* @returns {GPUTextureContext}
|
|
30
65
|
*/
|
|
31
66
|
get lut_transmittance() {
|
|
@@ -38,7 +73,6 @@ export class GPUSky {
|
|
|
38
73
|
#lut_multiple_scattering;
|
|
39
74
|
|
|
40
75
|
/**
|
|
41
|
-
*
|
|
42
76
|
* @returns {GPUTextureContext}
|
|
43
77
|
*/
|
|
44
78
|
get lut_multiple_scattering() {
|
|
@@ -46,31 +80,52 @@ export class GPUSky {
|
|
|
46
80
|
}
|
|
47
81
|
|
|
48
82
|
/**
|
|
49
|
-
*
|
|
50
|
-
|
|
83
|
+
* @returns {SceneAtmosphere}
|
|
84
|
+
*/
|
|
85
|
+
get atmosphere() {
|
|
86
|
+
return this.#atmosphere;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* GPU uniform buffer holding {@link ATMOSPHERE_PARAMETERS_STRUCT}.
|
|
91
|
+
* @returns {GPUTypedBuffer}
|
|
51
92
|
*/
|
|
52
|
-
|
|
93
|
+
get parameters_buffer() {
|
|
94
|
+
return this.#parameters_buffer;
|
|
95
|
+
}
|
|
53
96
|
|
|
54
97
|
/**
|
|
55
|
-
* Whether the LUTs
|
|
56
|
-
*
|
|
57
|
-
* as a texture nobody wrote reads as zero rather than failing.
|
|
98
|
+
* Whether the LUTs have not yet been built or {@link SceneAtmosphere#version} has advanced
|
|
99
|
+
* since the last {@link update}.
|
|
58
100
|
*
|
|
59
101
|
* @returns {boolean}
|
|
60
102
|
*/
|
|
61
103
|
get needs_update() {
|
|
62
|
-
return this.#
|
|
104
|
+
return this.#committed_version !== this.#atmosphere.version;
|
|
63
105
|
}
|
|
64
106
|
|
|
65
107
|
/**
|
|
66
|
-
*
|
|
67
108
|
* @param {GraphicsContext} graphics
|
|
109
|
+
* @param {SceneAtmosphere} [atmosphere]
|
|
68
110
|
*/
|
|
69
|
-
constructor(graphics) {
|
|
111
|
+
constructor(graphics, atmosphere = new SceneAtmosphere()) {
|
|
112
|
+
assert.defined(graphics, "graphics");
|
|
113
|
+
assert.defined(atmosphere, "atmosphere");
|
|
114
|
+
assert.equal(atmosphere.isSceneAtmosphere, true, "atmosphere.isSceneAtmosphere !== true");
|
|
115
|
+
|
|
70
116
|
this.#graphics = graphics;
|
|
117
|
+
this.#atmosphere = atmosphere;
|
|
71
118
|
|
|
72
119
|
const device = graphics.device;
|
|
73
120
|
|
|
121
|
+
this.#parameters_buffer = GPUTypedBuffer.create({
|
|
122
|
+
label: "Sky / Atmosphere Parameters",
|
|
123
|
+
device,
|
|
124
|
+
type: ATMOSPHERE_PARAMETERS_STRUCT,
|
|
125
|
+
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
126
|
+
initial_value: atmosphere.write_uniform(this.#uniform_scratch),
|
|
127
|
+
});
|
|
128
|
+
|
|
74
129
|
this.#lut_transmittance = new GPUTextureContext(device);
|
|
75
130
|
this.#lut_transmittance.descriptor.label = "Sky / Transmittance LUT";
|
|
76
131
|
this.#lut_transmittance.descriptor.format = "rgba16float";
|
|
@@ -83,37 +138,37 @@ export class GPUSky {
|
|
|
83
138
|
// written by a compute shader, so STORAGE_BINDING rather than RENDER_ATTACHMENT
|
|
84
139
|
this.#lut_multiple_scattering.descriptor.usage = GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC;
|
|
85
140
|
this.#lut_multiple_scattering.resize(32, 32);
|
|
86
|
-
|
|
87
|
-
|
|
88
141
|
}
|
|
89
142
|
|
|
90
143
|
destroy() {
|
|
144
|
+
this.#parameters_buffer.destroy();
|
|
91
145
|
this.#lut_transmittance.destroy();
|
|
92
146
|
this.#lut_multiple_scattering.destroy();
|
|
93
147
|
}
|
|
94
148
|
|
|
95
149
|
debug() {
|
|
96
|
-
|
|
97
|
-
|
|
98
150
|
let y = 50;
|
|
99
|
-
debug_draw_texture({ texture: this.#lut_transmittance, x: 50, y
|
|
151
|
+
debug_draw_texture({ texture: this.#lut_transmittance, x: 50, y });
|
|
100
152
|
|
|
101
153
|
y += this.#lut_transmittance.size[1] + 50;
|
|
102
154
|
|
|
103
|
-
debug_draw_texture({ texture: this.#lut_multiple_scattering, x: 50, y
|
|
104
|
-
|
|
105
|
-
y += this.#lut_multiple_scattering.size[1] + 50;
|
|
106
|
-
|
|
155
|
+
debug_draw_texture({ texture: this.#lut_multiple_scattering, x: 50, y });
|
|
107
156
|
}
|
|
108
157
|
|
|
109
158
|
/**
|
|
110
|
-
*
|
|
159
|
+
* Uploads any changed {@link SceneAtmosphere} parameters and rebuilds the transmittance and
|
|
160
|
+
* multiple-scattering LUTs when {@link needs_update} is true; a no-op on steady frames.
|
|
111
161
|
*/
|
|
112
162
|
update() {
|
|
113
|
-
if (!this
|
|
163
|
+
if (!this.needs_update) {
|
|
114
164
|
return;
|
|
115
165
|
}
|
|
116
166
|
|
|
167
|
+
this.#parameters_buffer.upload(
|
|
168
|
+
this.#atmosphere.write_uniform(this.#uniform_scratch),
|
|
169
|
+
this.#graphics.device.queue
|
|
170
|
+
);
|
|
171
|
+
|
|
117
172
|
const graph = new FrameGraph("sky update");
|
|
118
173
|
|
|
119
174
|
const command_ctx = ShadeGPUCommandContext.create(
|
|
@@ -121,43 +176,45 @@ export class GPUSky {
|
|
|
121
176
|
"Renderer/main"
|
|
122
177
|
);
|
|
123
178
|
|
|
124
|
-
const gr_transmittance = graph.import_resource(
|
|
125
|
-
|
|
179
|
+
const gr_transmittance = graph.import_resource(
|
|
180
|
+
"transmittance",
|
|
181
|
+
TextureResourceDescriptor.fromTexture(this.#lut_transmittance.gpu_texture),
|
|
182
|
+
this.#lut_transmittance
|
|
183
|
+
);
|
|
184
|
+
const gr_multiscatter = graph.import_resource(
|
|
185
|
+
"multiscatter",
|
|
186
|
+
TextureResourceDescriptor.fromTexture(this.#lut_multiple_scattering.gpu_texture),
|
|
187
|
+
this.#lut_multiple_scattering
|
|
188
|
+
);
|
|
126
189
|
|
|
127
|
-
// the handle the write produced, not the one imported: binding the pre-write version below
|
|
128
|
-
// is a superseded read, which is exactly what `validate()` rejects
|
|
129
190
|
const [gr_transmittance_written] = graph_image_pass({
|
|
130
191
|
graph,
|
|
131
192
|
shader: shader_transmittance_lut,
|
|
132
193
|
inputs: {
|
|
194
|
+
atmosphere: this.#parameters_buffer.buffer,
|
|
133
195
|
settings: {
|
|
134
196
|
steps: 40,
|
|
135
|
-
// read off the texture rather than restated, so the two cannot disagree
|
|
136
197
|
resolution: [this.#lut_transmittance.width, this.#lut_transmittance.height],
|
|
137
198
|
}
|
|
138
199
|
},
|
|
139
200
|
output: [gr_transmittance]
|
|
140
201
|
});
|
|
141
202
|
|
|
142
|
-
|
|
143
203
|
graph_compute_pass({
|
|
144
204
|
graph,
|
|
145
205
|
shader: shader_multiscatter_lut,
|
|
146
|
-
// one workgroup per LUT texel, counted off the texture being written so the
|
|
147
|
-
// dispatch cannot cover a different area than the shader stores into
|
|
148
206
|
group_count: [this.#lut_multiple_scattering.width, this.#lut_multiple_scattering.height, 1],
|
|
149
207
|
bindings: {
|
|
208
|
+
atmosphere: this.#parameters_buffer.buffer,
|
|
150
209
|
tSkyLutTransmittance: gr_transmittance_written,
|
|
151
210
|
tSkyLutMultiscatterOut: gr_multiscatter
|
|
152
211
|
}
|
|
153
212
|
});
|
|
154
213
|
|
|
155
214
|
command_ctx.encodeGraph(graph);
|
|
156
|
-
|
|
157
215
|
command_ctx.finish();
|
|
158
216
|
|
|
159
|
-
|
|
160
|
-
this.#needs_update = false;
|
|
217
|
+
this.#committed_version = this.#atmosphere.version;
|
|
161
218
|
}
|
|
162
219
|
|
|
163
|
-
}
|
|
220
|
+
}
|
|
@@ -16,5 +16,22 @@
|
|
|
16
16
|
* @type {Readonly<SamplerDescriptor>}
|
|
17
17
|
*/
|
|
18
18
|
export const SAMPLER_SKY_LUT: Readonly<SamplerDescriptor>;
|
|
19
|
+
/**
|
|
20
|
+
* Resource declaration for `sSkyLut`, paired with {@link SKY_LUT_TRANSMITTANCE_RESOURCE} and
|
|
21
|
+
* {@link SKY_LUT_MULTISCATTER_RESOURCE}.
|
|
22
|
+
* @type {ShaderResourceDescriptor}
|
|
23
|
+
*/
|
|
24
|
+
export const SKY_LUT_SAMPLER_RESOURCE: ShaderResourceDescriptor;
|
|
25
|
+
/**
|
|
26
|
+
* Resource declaration for `tSkyLutTransmittance`.
|
|
27
|
+
* @type {ShaderResourceDescriptor}
|
|
28
|
+
*/
|
|
29
|
+
export const SKY_LUT_TRANSMITTANCE_RESOURCE: ShaderResourceDescriptor;
|
|
30
|
+
/**
|
|
31
|
+
* Resource declaration for `tSkyLutMultiscatter`.
|
|
32
|
+
* @type {ShaderResourceDescriptor}
|
|
33
|
+
*/
|
|
34
|
+
export const SKY_LUT_MULTISCATTER_RESOURCE: ShaderResourceDescriptor;
|
|
19
35
|
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
36
|
+
import { ShaderResourceDescriptor } from "../shader/resource/ShaderResourceDescriptor.js";
|
|
20
37
|
//# sourceMappingURL=SAMPLER_SKY_LUT.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SAMPLER_SKY_LUT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SAMPLER_SKY_LUT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,8BAFU,SAAS,iBAAiB,CAAC,CAOjC;AAEJ;;;;GAIG;AACH,uCAFU,wBAAwB,CAMhC;AAEF;;;GAGG;AACH,6CAFU,wBAAwB,CAKhC;AAEF;;;GAGG;AACH,4CAFU,wBAAwB,CAKhC;kCAtDgC,+CAA+C;yCACxC,gDAAgD"}
|
|
@@ -1,25 +1,55 @@
|
|
|
1
|
-
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
+
import { ShaderResourceDescriptor } from "../shader/resource/ShaderResourceDescriptor.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Filtering sampler for the sky LUTs (transmittance, multiple-scattering).
|
|
6
|
+
*
|
|
7
|
+
* Both LUTs are `rgba16float`, which is filterable in core WebGPU — only the 32-bit float
|
|
8
|
+
* formats need the `float32-filterable` feature — so these can go through the texture unit
|
|
9
|
+
* instead of the 4-tap manual bilinear in `texture_sample_bilinear_uv`.
|
|
10
|
+
*
|
|
11
|
+
* `min` and `mag` are both set: the LUTs are single-mip and sampled with an explicit LOD of
|
|
12
|
+
* 0, which selects the magnification filter, but relying on that alone would silently fall
|
|
13
|
+
* back to point sampling if either LUT ever grew mips.
|
|
14
|
+
*
|
|
15
|
+
* Clamp-to-edge reproduces the manual filter's per-corner clamping exactly: `uv` is
|
|
16
|
+
* saturated by `sky_lut_uv`, and at the edges both bilinear taps collapse onto the edge
|
|
17
|
+
* texel.
|
|
18
|
+
*
|
|
19
|
+
* @type {Readonly<SamplerDescriptor>}
|
|
20
|
+
*/
|
|
21
|
+
export const SAMPLER_SKY_LUT = Object.freeze(SamplerDescriptor.from({
|
|
22
|
+
magFilter: "linear",
|
|
23
|
+
minFilter: "linear",
|
|
24
|
+
addressModeU: "clamp-to-edge",
|
|
25
|
+
addressModeV: "clamp-to-edge",
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Resource declaration for `sSkyLut`, paired with {@link SKY_LUT_TRANSMITTANCE_RESOURCE} and
|
|
30
|
+
* {@link SKY_LUT_MULTISCATTER_RESOURCE}.
|
|
31
|
+
* @type {ShaderResourceDescriptor}
|
|
32
|
+
*/
|
|
33
|
+
export const SKY_LUT_SAMPLER_RESOURCE = ShaderResourceDescriptor.sampler(
|
|
34
|
+
"sSkyLut",
|
|
35
|
+
"filtering",
|
|
36
|
+
SAMPLER_SKY_LUT
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Resource declaration for `tSkyLutTransmittance`.
|
|
41
|
+
* @type {ShaderResourceDescriptor}
|
|
42
|
+
*/
|
|
43
|
+
export const SKY_LUT_TRANSMITTANCE_RESOURCE = ShaderResourceDescriptor.texture(
|
|
44
|
+
"tSkyLutTransmittance",
|
|
45
|
+
"float"
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Resource declaration for `tSkyLutMultiscatter`.
|
|
50
|
+
* @type {ShaderResourceDescriptor}
|
|
51
|
+
*/
|
|
52
|
+
export const SKY_LUT_MULTISCATTER_RESOURCE = ShaderResourceDescriptor.texture(
|
|
53
|
+
"tSkyLutMultiscatter",
|
|
54
|
+
"float"
|
|
55
|
+
);
|