@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.
Files changed (311) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  3. package/src/engine/graphics3/GraphicsEngine.js +4 -9
  4. package/src/engine/graphics3/load_cube_environment.js +3 -3
  5. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  6. package/src/shade/playground/probe_clipmap/index.html +43 -0
  7. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  8. package/src/shade/playground/probe_clipmap/main.js +29 -0
  9. package/src/shade/renderer/Renderer.d.ts +7 -0
  10. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  11. package/src/shade/renderer/Renderer.js +213 -15
  12. package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
  13. package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
  14. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +22 -0
  15. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +1 -0
  16. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js +160 -0
  17. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts +45 -0
  18. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts.map +1 -0
  19. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js +57 -0
  20. package/src/shade/renderer/atmosphere/GPUSky.d.ts +23 -8
  21. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  22. package/src/shade/renderer/atmosphere/GPUSky.js +91 -34
  23. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +17 -0
  24. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -1
  25. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +55 -25
  26. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts +164 -0
  27. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts.map +1 -0
  28. package/src/shade/renderer/atmosphere/SceneAtmosphere.js +308 -0
  29. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +3 -12
  30. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
  31. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +52 -89
  32. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts +14 -0
  33. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts.map +1 -0
  34. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js +103 -0
  35. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +10 -4
  36. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
  37. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +95 -57
  38. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +10 -14
  39. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
  40. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +97 -69
  41. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts +17 -0
  42. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts.map +1 -1
  43. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.js +117 -48
  44. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +8 -0
  45. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
  46. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +65 -35
  47. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +2 -1
  48. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts.map +1 -1
  49. package/src/shade/renderer/atmosphere/compute_mie_absorption.js +6 -6
  50. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts +41 -0
  51. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts.map +1 -0
  52. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.js +123 -0
  53. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  54. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +21 -64
  55. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -2
  56. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  57. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +55 -179
  58. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts +7 -0
  59. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts.map +1 -0
  60. package/src/shade/renderer/atmosphere/shader_sky_view_lut.js +111 -0
  61. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts +0 -1
  62. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
  63. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +68 -79
  64. package/src/shade/renderer/deferred/shader_background.js +1 -1
  65. package/src/shade/renderer/deferred/shader_background_sky.d.ts +5 -0
  66. package/src/shade/renderer/deferred/shader_background_sky.d.ts.map +1 -0
  67. package/src/shade/renderer/deferred/shader_background_sky.js +130 -0
  68. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +2 -1
  69. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -1
  70. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +6 -2
  71. package/src/shade/renderer/extension/ViewTextures.d.ts +3 -2
  72. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  73. package/src/shade/renderer/extension/ViewTextures.js +3 -2
  74. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  75. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  76. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  77. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  78. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  79. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +1 -1
  80. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -1
  81. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  82. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +29 -0
  83. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts +47 -0
  84. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts.map +1 -0
  85. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js +246 -0
  86. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +4 -15
  87. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
  88. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +8 -148
  89. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +4 -9
  90. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  91. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +9 -58
  92. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts +142 -0
  93. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts.map +1 -0
  94. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.js +938 -0
  95. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts +192 -0
  96. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts.map +1 -0
  97. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.js +231 -0
  98. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts +11 -0
  99. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts.map +1 -0
  100. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.js +25 -0
  101. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts +110 -0
  102. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts.map +1 -0
  103. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.js +197 -0
  104. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts +150 -0
  105. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts.map +1 -0
  106. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.js +408 -0
  107. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts +23 -0
  108. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts.map +1 -0
  109. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.js +63 -0
  110. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts +24 -0
  111. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts.map +1 -0
  112. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.js +61 -0
  113. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts +39 -0
  114. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts.map +1 -0
  115. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.js +126 -0
  116. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts +21 -0
  117. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts.map +1 -0
  118. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.js +74 -0
  119. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts +20 -0
  120. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts.map +1 -0
  121. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.js +26 -0
  122. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts +24 -0
  123. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts.map +1 -0
  124. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.js +57 -0
  125. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts +22 -0
  126. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts.map +1 -0
  127. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.js +53 -0
  128. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts +62 -0
  129. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts.map +1 -0
  130. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.js +156 -0
  131. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts +18 -0
  132. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts.map +1 -0
  133. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js +50 -0
  134. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts +21 -0
  135. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map +1 -0
  136. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js +54 -0
  137. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts +67 -0
  138. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map +1 -0
  139. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js +509 -0
  140. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts +20 -0
  141. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts.map +1 -0
  142. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.js +128 -0
  143. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts +62 -0
  144. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts.map +1 -0
  145. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.js +478 -0
  146. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts +69 -0
  147. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts.map +1 -0
  148. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.js +457 -0
  149. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts +27 -0
  150. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts.map +1 -0
  151. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js +219 -0
  152. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts +22 -0
  153. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts.map +1 -0
  154. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.js +151 -0
  155. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts +66 -0
  156. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts.map +1 -0
  157. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.js +301 -0
  158. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts +59 -0
  159. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map +1 -0
  160. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js +364 -0
  161. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts +40 -0
  162. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts.map +1 -0
  163. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.js +275 -0
  164. package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -1
  165. package/src/shade/renderer/grass/blade/GPUGrassBlades.js +17 -2
  166. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +18 -8
  167. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -1
  168. package/src/shade/renderer/grass/blade/grass_blade_resolve.js +114 -32
  169. package/src/shade/renderer/light/GPULightCollection.d.ts +1 -1
  170. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  171. package/src/shade/renderer/light/GPULightCollection.js +213 -80
  172. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.d.ts +1 -2
  173. package/src/shade/renderer/light/environment/chunk_sample_environment_color.d.ts.map +1 -0
  174. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.js +3 -4
  175. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  176. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
  177. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +1 -1
  178. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +1 -1
  179. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +1 -1
  180. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.d.ts +1 -1
  181. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.js +1 -1
  182. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +1 -1
  183. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  184. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +2 -0
  185. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +2 -0
  186. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts +6 -0
  187. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
  188. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +9 -1
  189. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
  190. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +4 -3
  191. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts +17 -0
  192. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts.map +1 -0
  193. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.js +16 -0
  194. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts +21 -0
  195. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts.map +1 -0
  196. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.js +30 -0
  197. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -5
  198. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  199. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +19 -17
  200. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +2 -0
  201. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  202. package/src/shade/renderer/scene/GPUSceneContext.js +2 -1
  203. package/src/shade/renderer/scene/Scene.d.ts +9 -2
  204. package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
  205. package/src/shade/renderer/scene/Scene.js +10 -2
  206. package/src/shade/renderer/shader/ImageShader.d.ts +24 -12
  207. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  208. package/src/shade/renderer/shader/ImageShader.js +11 -8
  209. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts +3 -1
  210. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts.map +1 -1
  211. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js +11 -3
  212. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +2 -11
  213. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -1
  214. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +23 -32
  215. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts +6 -0
  216. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts.map +1 -1
  217. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.js +14 -2
  218. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.d.ts.map +1 -1
  219. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.js +4 -2
  220. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.d.ts.map +1 -1
  221. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.js +11 -3
  222. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -1
  223. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +68 -69
  224. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts +4 -1
  225. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts.map +1 -1
  226. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.js +46 -39
  227. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.d.ts.map +1 -1
  228. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js +5 -3
  229. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +18 -10
  230. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -1
  231. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +30 -27
  232. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
  233. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
  234. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
  235. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
  236. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
  237. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
  238. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
  239. package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
  240. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
  241. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
  242. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +3 -1
  243. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  244. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -2
  245. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  246. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +743 -739
  247. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +2 -0
  248. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  249. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +19 -17
  250. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
  251. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +5 -3
  252. package/src/shade/renderer/water/chunk_water_gi.js +2 -0
  253. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  254. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  255. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts +0 -2
  256. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +0 -1
  257. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +0 -45
  258. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts +0 -2
  259. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +0 -1
  260. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js +0 -17
  261. package/src/engine/graphics/sh3/sky/hosek/README.md +0 -4
  262. package/src/engine/graphics/sh3/sky/hosek/data.d.ts +0 -17
  263. package/src/engine/graphics/sh3/sky/hosek/data.d.ts.map +0 -1
  264. package/src/engine/graphics/sh3/sky/hosek/data.js +0 -3744
  265. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts +0 -2
  266. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts.map +0 -1
  267. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +0 -71
  268. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts +0 -26
  269. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts.map +0 -1
  270. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js +0 -70
  271. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +0 -22
  272. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +0 -1
  273. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +0 -388
  274. package/src/engine/graphics3/make_default_environment.d.ts +0 -15
  275. package/src/engine/graphics3/make_default_environment.d.ts.map +0 -1
  276. package/src/engine/graphics3/make_default_environment.js +0 -111
  277. package/src/shade/renderer/atmosphere/MIE_G.d.ts +0 -6
  278. package/src/shade/renderer/atmosphere/MIE_G.d.ts.map +0 -1
  279. package/src/shade/renderer/atmosphere/MIE_G.js +0 -5
  280. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +0 -1
  281. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts +0 -4
  282. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts.map +0 -1
  283. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +0 -44
  284. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +0 -2
  285. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +0 -1
  286. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +0 -43
  287. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts +0 -3
  288. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts.map +0 -1
  289. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.js +0 -6
  290. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts +0 -3
  291. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts.map +0 -1
  292. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.js +0 -18
  293. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts +0 -14
  294. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts.map +0 -1
  295. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.js +0 -86
  296. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts +0 -8
  297. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts.map +0 -1
  298. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.js +0 -125
  299. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts +0 -3
  300. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts.map +0 -1
  301. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.js +0 -17
  302. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts +0 -3
  303. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts.map +0 -1
  304. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.js +0 -38
  305. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +0 -16
  306. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts.map +0 -1
  307. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +0 -28
  308. package/src/shade/renderer/shader/chunk/light/sky/chunk_sample_sky_color.d.ts.map +0 -1
  309. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +0 -26
  310. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +0 -1
  311. package/src/shade/renderer/view/GPUViewSkyContext.js +0 -170
@@ -0,0 +1,156 @@
1
+ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
2
+ import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chunk_project_position_from_depth.js";
3
+ import { chunk_get_device_depth } from "../../shader/chunk/depth/chunk_get_device_depth.js";
4
+ import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
5
+ import { chunk_is_background } from "../../shader/chunk/depth/chunk_is_background.js";
6
+ import {
7
+ chunk_uv_octahedral_unit_encode
8
+ } from "../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_encode.js";
9
+ import {
10
+ chunk_decode_g_buffer_face_normal
11
+ } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
12
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
13
+ import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
14
+ import { chunk_screen_probe } from "./chunk_screen_probe.js";
15
+
16
+ /** The view's camera this frame. @type {ShaderResourceDescriptor} */
17
+ export const SCREEN_PROBE_CAMERA_RESOURCE = ShaderResourceDescriptor.uniform("camera", CAMERA_UNIFORM_STRUCT);
18
+
19
+ /** The view's camera last frame. @type {ShaderResourceDescriptor} */
20
+ export const SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE = ShaderResourceDescriptor.uniform("camera_previous", CAMERA_UNIFORM_STRUCT);
21
+
22
+ /** The frame's reverse-Z depth. @type {ShaderResourceDescriptor} */
23
+ export const SCREEN_PROBE_DEPTH_RESOURCE = ShaderResourceDescriptor.texture("tDepth");
24
+
25
+ /** The G-buffer's PBR target, for the face normal it holds. @type {ShaderResourceDescriptor} */
26
+ export const SCREEN_PROBE_PBR_RESOURCE = ShaderResourceDescriptor.texture("tPBR");
27
+
28
+ /** The frame's motion, `VELOCITY_FORMAT`: internal pixels from last frame's place to this one's, and the view depth moved through. @type {ShaderResourceDescriptor} */
29
+ export const SCREEN_PROBE_VELOCITY_RESOURCE = ShaderResourceDescriptor.texture("tVelocity");
30
+
31
+ /**
32
+ * Where a pixel's surface point stood last frame, by the velocity buffer:
33
+ *
34
+ * ```wgsl
35
+ * struct ScreenProbePointBefore { place: vec2<f32>, depth: f32, position: vec3<f32> }
36
+ * fn screen_probe_point_before(pixel: vec2<u32>, depth: f32) -> ScreenProbePointBefore // depth: its view depth now
37
+ * ```
38
+ *
39
+ * - `place`: its place on last frame's screen, internal pixels: the pixel's centre less its motion across the view;
40
+ * - `depth`: its view depth then, its depth now less the depth it moved through;
41
+ * - `position`: the world point those show through last frame's camera, where the point stood.
42
+ *
43
+ * The camera's motion and the surface's own together, as the velocity buffer holds them; up to the jitter between
44
+ * the two frames' projections. Off last frame's screen, or with no depth then, `position` means nothing.
45
+ *
46
+ * @type {CodeChunk}
47
+ */
48
+ export const chunk_screen_probe_point_before = CodeChunk.from(
49
+ //language=WGSL
50
+ `
51
+ struct ScreenProbePointBefore {
52
+ place: vec2<f32>,
53
+ depth: f32,
54
+ position: vec3<f32>,
55
+ }
56
+
57
+ fn screen_probe_point_before(pixel: vec2<u32>, depth: f32) -> ScreenProbePointBefore {
58
+ let motion = textureLoad(tVelocity, pixel, 0).xyz;
59
+
60
+ var before: ScreenProbePointBefore;
61
+
62
+ before.place = vec2<f32>(pixel) + 0.5 - motion.xy;
63
+ before.depth = depth - motion.z;
64
+ before.position = project_position_from_depth(
65
+ before.place / vec2<f32>(screen_probe_frame.view_size),
66
+ get_device_depth(before.depth, camera_previous),
67
+ camera_previous.view_projection_matrix_inverse,
68
+ );
69
+
70
+ return before;
71
+ }
72
+ `, [
73
+ chunk_screen_probe,
74
+ chunk_project_position_from_depth,
75
+ chunk_get_device_depth,
76
+ ]);
77
+
78
+ chunk_screen_probe_point_before.requireResource(SCREEN_PROBE_VELOCITY_RESOURCE);
79
+ chunk_screen_probe_point_before.requireResource(SCREEN_PROBE_CAMERA_PREVIOUS_RESOURCE);
80
+
81
+ /**
82
+ * How fast a pixel's surface point moves of itself, apart from the camera (Lumen's probe and hit world velocity, as a
83
+ * length):
84
+ *
85
+ * ```wgsl
86
+ * fn screen_probe_object_speed(pixel: vec2<u32>, position: vec3<f32>, depth: f32) -> f32 // metres a frame
87
+ * ```
88
+ *
89
+ * The velocity buffer holds a pixel's motion since last frame, the camera's and the surface's own together: the
90
+ * point's place on last frame's screen and its view depth then. Last frame's camera takes those back to the world,
91
+ * where the point stood a frame ago; how far that is from where it stands now is its own motion, across the view and
92
+ * along it. A still surface reads zero under any camera motion, up to the jitter between the two frames' projections.
93
+ *
94
+ * @type {CodeChunk}
95
+ */
96
+ export const chunk_screen_probe_object_speed = CodeChunk.from(
97
+ //language=WGSL
98
+ `
99
+ fn screen_probe_object_speed(pixel: vec2<u32>, position: vec3<f32>, depth: f32) -> f32 {
100
+ return distance(position, screen_probe_point_before(pixel, depth).position);
101
+ }
102
+ `, [
103
+ chunk_screen_probe_point_before,
104
+ ]);
105
+
106
+ /**
107
+ * The record of a probe standing on a pixel of the G-buffer (Lumen's `GetScreenProbeMaterial` and
108
+ * `WriteDownsampledProbeMaterial`):
109
+ *
110
+ * ```wgsl
111
+ * fn screen_probe_surface_at(pixel: vec2<u32>) -> ScreenProbe
112
+ * ```
113
+ *
114
+ * The pixel's surface point from its depth at its centre, its view depth, the face normal of the triangle it shows
115
+ * (the plane, where the shading normal would carry the normal map), and its own speed
116
+ * (`screen_probe_object_speed`). A pixel of the sky gives a record of depth zero: no probe.
117
+ *
118
+ * @type {CodeChunk}
119
+ */
120
+ export const chunk_screen_probe_surface = CodeChunk.from(
121
+ //language=WGSL
122
+ `
123
+ fn screen_probe_surface_at(pixel: vec2<u32>) -> ScreenProbe {
124
+ var record: ScreenProbe;
125
+
126
+ record.pixel = screen_probe_pixel_encode(pixel);
127
+
128
+ let device_depth = textureLoad(tDepth, pixel, 0).r;
129
+
130
+ if (is_background(device_depth)) {
131
+ return record;
132
+ }
133
+
134
+ let uv = (vec2<f32>(pixel) + 0.5) / vec2<f32>(screen_probe_frame.view_size);
135
+ let depth = get_view_space_depth(device_depth, camera);
136
+
137
+ record.position = project_position_from_depth(uv, device_depth, camera.view_projection_matrix_inverse);
138
+ record.depth = depth;
139
+ record.normal = pack2x16unorm(uv_octahedral_unit_encode(decode_g_buffer_face_normal(textureLoad(tPBR, pixel, 0))));
140
+ record.speed = screen_probe_object_speed(pixel, record.position, depth);
141
+
142
+ return record;
143
+ }
144
+ `, [
145
+ chunk_screen_probe,
146
+ chunk_screen_probe_object_speed,
147
+ chunk_is_background,
148
+ chunk_get_view_space_depth,
149
+ chunk_project_position_from_depth,
150
+ chunk_decode_g_buffer_face_normal,
151
+ chunk_uv_octahedral_unit_encode,
152
+ ]);
153
+
154
+ chunk_screen_probe_surface.requireResource(SCREEN_PROBE_DEPTH_RESOURCE);
155
+ chunk_screen_probe_surface.requireResource(SCREEN_PROBE_PBR_RESOURCE);
156
+ chunk_screen_probe_surface.requireResource(SCREEN_PROBE_CAMERA_RESOURCE);
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The sum of a `vec4<f32>` over the lanes of a one-dimensional workgroup of `SCREEN_PROBE_THREAD_WORKGROUP_SIZE`,
3
+ * handed to every lane:
4
+ *
5
+ * ```wgsl
6
+ * fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32>
7
+ * ```
8
+ *
9
+ * Each subgroup adds its lanes' values (`subgroupAdd`); its first lane leaves the subgroup's sum in workgroup memory
10
+ * at the subgroup's place, `(lane − subgroup_lane) / subgroup_size`, which a one-dimensional workgroup's subgroups
11
+ * follow; then every lane adds the subgroups' sums. Every lane of the workgroup calls it from uniform control flow:
12
+ * it holds two barriers.
13
+ *
14
+ * @type {CodeChunk}
15
+ */
16
+ export const chunk_screen_probe_workgroup_sum: CodeChunk;
17
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
18
+ //# sourceMappingURL=chunk_screen_probe_workgroup_sum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_screen_probe_workgroup_sum.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,+CAFU,SAAS,CA8BhB;0BA9CuB,oCAAoC"}
@@ -0,0 +1,50 @@
1
+ import { WebGPUExtensionType } from "../../../descriptor/WebGPUExtensionType.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import { SCREEN_PROBE_THREAD_WORKGROUP_SIZE } from "./SCREEN_PROBE.js";
4
+
5
+ /**
6
+ * The sum of a `vec4<f32>` over the lanes of a one-dimensional workgroup of `SCREEN_PROBE_THREAD_WORKGROUP_SIZE`,
7
+ * handed to every lane:
8
+ *
9
+ * ```wgsl
10
+ * fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32>
11
+ * ```
12
+ *
13
+ * Each subgroup adds its lanes' values (`subgroupAdd`); its first lane leaves the subgroup's sum in workgroup memory
14
+ * at the subgroup's place, `(lane − subgroup_lane) / subgroup_size`, which a one-dimensional workgroup's subgroups
15
+ * follow; then every lane adds the subgroups' sums. Every lane of the workgroup calls it from uniform control flow:
16
+ * it holds two barriers.
17
+ *
18
+ * @type {CodeChunk}
19
+ */
20
+ export const chunk_screen_probe_workgroup_sum = CodeChunk.from(
21
+ //language=WGSL
22
+ `
23
+ var<workgroup> screen_probe_partial_sums: array<vec4<f32>, ${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}>;
24
+
25
+ fn screen_probe_workgroup_sum(value: vec4<f32>, lane: u32, subgroup_lane: u32, subgroup_size: u32) -> vec4<f32> {
26
+ let partial = subgroupAdd(value);
27
+
28
+ if (subgroup_lane == 0u) {
29
+ screen_probe_partial_sums[(lane - subgroup_lane) / subgroup_size] = partial;
30
+ }
31
+
32
+ workgroupBarrier();
33
+
34
+ // a subgroup wider than the workgroup holds all its lanes
35
+ let subgroups = (${SCREEN_PROBE_THREAD_WORKGROUP_SIZE}u + subgroup_size - 1u) / subgroup_size;
36
+
37
+ var total = vec4<f32>(0.0);
38
+
39
+ for (var i = 0u; i < subgroups; i++) {
40
+ total += screen_probe_partial_sums[i];
41
+ }
42
+
43
+ // before the next call writes over the sums
44
+ workgroupBarrier();
45
+
46
+ return total;
47
+ }
48
+ `);
49
+
50
+ chunk_screen_probe_workgroup_sum.addExtension(WebGPUExtensionType.Subgroups);
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Record a screen probe debug view in place of the frame's colour (`ScreenProbeDebugView`), after this frame's
3
+ * `GPUScreenProbeGI#graph_resolve`.
4
+ *
5
+ * @param {Object} options
6
+ * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
7
+ * @param {import("./GPUScreenProbeGI.js").GPUScreenProbeGI} options.gi
8
+ * @param {ScreenProbeDebugView} options.view_mode
9
+ * @param {number} options.depth graph handle of the view's depth
10
+ * @param {number[]} options.resolution the view's pixels
11
+ * @returns {number} graph handle of the image, `rgba16float`
12
+ */
13
+ export function graph_screen_probe_debug_view({ graph, gi, view_mode, depth, resolution }: {
14
+ graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
15
+ gi: import("./GPUScreenProbeGI.js").GPUScreenProbeGI;
16
+ view_mode: ScreenProbeDebugView;
17
+ depth: number;
18
+ resolution: number[];
19
+ }): number;
20
+ import { ScreenProbeDebugView } from "./ScreenProbeDebugView.js";
21
+ //# sourceMappingURL=graph_screen_probe_debug_view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_screen_probe_debug_view.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH;IAPsG,KAAK,EAAhG,OAAO,8DAA8D,EAAE,UAAU;IACvB,EAAE,EAA5D,OAAO,uBAAuB,EAAE,gBAAgB;IAClB,SAAS,EAAvC,oBAAoB;IACJ,KAAK,EAArB,MAAM;IACY,UAAU,EAA5B,MAAM,EAAE;IACN,MAAM,CAkClB;qCAnDoC,2BAA2B"}
@@ -0,0 +1,54 @@
1
+ import { assert } from "../../../../core/assert.js";
2
+ import { TextureResourceDescriptor } from "../../../device/graph/TextureResourceDescriptor.js";
3
+ import { ScreenProbeDebugView } from "./ScreenProbeDebugView.js";
4
+ import { SCREEN_PROBE_TILE_WORKGROUP_SIZE } from "./SCREEN_PROBE.js";
5
+ import { shader_screen_probe_debug } from "./shader_screen_probe_debug.js";
6
+
7
+ const settings = { view: 0 };
8
+ const bindings = {};
9
+
10
+ /**
11
+ * Record a screen probe debug view in place of the frame's colour (`ScreenProbeDebugView`), after this frame's
12
+ * `GPUScreenProbeGI#graph_resolve`.
13
+ *
14
+ * @param {Object} options
15
+ * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
16
+ * @param {import("./GPUScreenProbeGI.js").GPUScreenProbeGI} options.gi
17
+ * @param {ScreenProbeDebugView} options.view_mode
18
+ * @param {number} options.depth graph handle of the view's depth
19
+ * @param {number[]} options.resolution the view's pixels
20
+ * @returns {number} graph handle of the image, `rgba16float`
21
+ */
22
+ export function graph_screen_probe_debug_view({ graph, gi, view_mode, depth, resolution }) {
23
+ assert.enum(view_mode, ScreenProbeDebugView, 'view_mode');
24
+ assert.notEqual(view_mode, ScreenProbeDebugView.None, 'view_mode');
25
+
26
+ const data = {};
27
+ const pass = graph.add("Screen Probe Debug", data, (data, resources, context) => {
28
+ settings.view = view_mode;
29
+
30
+ gi.write_debug_bindings(bindings);
31
+
32
+ bindings.settings = settings;
33
+ bindings.tDepth = resources.get(data.depth);
34
+ bindings.screen_probe_debug_diffuse = resources.get(data.diffuse);
35
+ bindings.screen_probe_debug_out = resources.get(data.output);
36
+
37
+ shader_screen_probe_debug.dispatch({
38
+ encoder: context.encoder,
39
+ bindings,
40
+ group_count_x: Math.ceil(resolution[0] / SCREEN_PROBE_TILE_WORKGROUP_SIZE),
41
+ group_count_y: Math.ceil(resolution[1] / SCREEN_PROBE_TILE_WORKGROUP_SIZE),
42
+ });
43
+ });
44
+
45
+ data.depth = pass.read(depth);
46
+ data.diffuse = pass.read(gi.diffuse_handle);
47
+ data.output = pass.create("screen_probe_debug", TextureResourceDescriptor.from({
48
+ format: "rgba16float",
49
+ resolution,
50
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT,
51
+ }));
52
+
53
+ return data.output;
54
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * The bricks' trace of the rays the screen left (Lumen's mesh and global SDF traces): a thread a ray of their list,
3
+ * through its command.
4
+ *
5
+ * - From the probe's origin (`ScreenProbePick#origin`) to the probe's reach (`brick_clipmap_trace`), starting a
6
+ * voxel short of where the screen showed the ray clear. The screen's ray left the surface point, so that distance
7
+ * moves by the origin's offset along this ray, as Lumen's world traces start twice their bias short of the screen's
8
+ * distance, the most their biases move the start along the ray.
9
+ * - **A front-face hit** takes E_dir from the directional lights, shadowed by rays through the bricks
10
+ * (`probe_clipmap_sun_irradiance`), each light's point of its disk drawn from the ray's id and direction.
11
+ * - **A back face** is a hit whose field's gradient runs along the ray: the ray started inside a solid.
12
+ * - **No hit within the reach**, or out of the world: the world-space probes the probe picked answer past it (FAR),
13
+ * or the environment where it picked none (SKY).
14
+ * - **A march that spends its steps** is unresolved: no light.
15
+ *
16
+ * @type {ComputeShader}
17
+ */
18
+ export const shader_screen_probe_brick_trace: ComputeShader;
19
+ /**
20
+ * What each ray left to the bricks brings back (as the probe clipmap's shade): a thread a ray of the list.
21
+ *
22
+ * - **A front-face hit**: `emissive + ρ_d·E_dir/π`, its surface one texel of the brick material at the hit drawn from
23
+ * the ray's id and direction (`probe_clipmap_hit_material_pick`); its diffuse albedo goes into the ray for the light
24
+ * and bounce passes.
25
+ * - **FAR**: the world-space probes the probe picked, each share's radiance along the ray (`probe_clipmap_radiance`):
26
+ * what lies past the reach, as each of them sees it.
27
+ * - **SKY**: the prefiltered environment along the ray, at the roughness whose lobe covers a texel of the probe's
28
+ * octahedron, 1/√n (as the probe clipmap's misses take it for theirs).
29
+ * - A back face and an unresolved march bring nothing.
30
+ *
31
+ * @type {ComputeShader}
32
+ */
33
+ export const shader_screen_probe_brick_shade: ComputeShader;
34
+ /**
35
+ * The local lights a front-face hit takes (as the probe clipmap's light pass): a thread a ray of the list, adding
36
+ * `ρ_d·E_loc/π`, one light of the hit's world light cluster cell picked by its light and shadowed by a ray through the
37
+ * bricks (`probe_clipmap_local_irradiance`), drawn from the ray's id and direction.
38
+ *
39
+ * @type {ComputeShader}
40
+ */
41
+ export const shader_screen_probe_brick_light: ComputeShader;
42
+ /**
43
+ * The next bounce a front-face hit takes, and every ray's result into the probes' trace textures (as the probe
44
+ * clipmap's bounce): a thread a ray of the list, after the light pass.
45
+ *
46
+ * - **The bounce**, E_ind: the frustum's world-space probes picked at the hit along its normal, the view back along the
47
+ * ray (`probe_clipmap_pick_in`), with the ray's own noise; where they weigh nothing, the world cache's. Where neither
48
+ * has a probe, no bounce: the next frame's hit wants ask the world cache for them. A hit the frustum's probes served
49
+ * has its albedo cleared, so it wants nothing (`shader_screen_probe_brick_want`). `ρ_d·E_ind/π` is added.
50
+ * - **The result**: the ray's radiance, pre-exposed (`screen_probe_exposure`), and its kind and distance to its texel of
51
+ * `screen_probe_trace_radiance` and `screen_probe_trace_hit`, where the composite reads every ray, the screen's and
52
+ * the bricks' alike.
53
+ *
54
+ * @type {ComputeShader}
55
+ */
56
+ export const shader_screen_probe_brick_bounce: ComputeShader;
57
+ /**
58
+ * The hits' wants (as the probe clipmap's hit wants): a thread a ray of the list, after the bounce. A front-face hit
59
+ * whose albedo the bounce left, which the frustum's world-space probes did not serve, wants the cages its pick reads in
60
+ * the world cache's late set, which the cache's next lifetime takes. Every lane calls `probe_clipmap_want`, wanting or
61
+ * not, from uniform control flow.
62
+ *
63
+ * @type {ComputeShader}
64
+ */
65
+ export const shader_screen_probe_brick_want: ComputeShader;
66
+ import { ComputeShader } from "../../shader/ComputeShader.js";
67
+ //# sourceMappingURL=shader_screen_probe_brick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_screen_probe_brick.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js"],"names":[],"mappings":"AAkGA;;;;;;;;;;;;;;;;GAgBG;AACH,8CAFU,aAAa,CA+DpB;AAYH;;;;;;;;;;;;;GAaG;AACH,8CAFU,aAAa,CAiEpB;AAUH;;;;;;GAMG;AACH,8CAFU,aAAa,CAwDpB;AA4BH;;;;;;;;;;;;;GAaG;AACH,+CAFU,aAAa,CAwEpB;AAWH;;;;;;;GAOG;AACH,6CAFU,aAAa,CA2CpB;8BAne2B,+BAA+B"}