@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.
Files changed (350) 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/format/lut/cube/CubeLut.d.ts +38 -0
  7. package/src/format/lut/cube/CubeLut.d.ts.map +1 -0
  8. package/src/format/lut/cube/CubeLut.js +23 -0
  9. package/src/format/lut/cube/cube_read.d.ts +23 -0
  10. package/src/format/lut/cube/cube_read.d.ts.map +1 -0
  11. package/src/format/lut/cube/cube_read.js +199 -0
  12. package/src/format/lut/cube/cube_write.d.ts +15 -0
  13. package/src/format/lut/cube/cube_write.d.ts.map +1 -0
  14. package/src/format/lut/cube/cube_write.js +90 -0
  15. package/src/shade/playground/probe_clipmap/README.md +1 -0
  16. package/src/shade/playground/probe_clipmap/index.html +48 -0
  17. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  18. package/src/shade/playground/probe_clipmap/main.js +36 -0
  19. package/src/shade/renderer/Renderer.d.ts +7 -0
  20. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  21. package/src/shade/renderer/Renderer.js +225 -27
  22. package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
  23. package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
  24. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +22 -0
  25. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +1 -0
  26. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js +160 -0
  27. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts +45 -0
  28. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts.map +1 -0
  29. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js +57 -0
  30. package/src/shade/renderer/atmosphere/GPUSky.d.ts +23 -8
  31. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  32. package/src/shade/renderer/atmosphere/GPUSky.js +91 -34
  33. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +17 -0
  34. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -1
  35. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +55 -25
  36. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts +164 -0
  37. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts.map +1 -0
  38. package/src/shade/renderer/atmosphere/SceneAtmosphere.js +308 -0
  39. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +3 -12
  40. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
  41. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +52 -89
  42. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts +14 -0
  43. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts.map +1 -0
  44. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js +103 -0
  45. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +10 -4
  46. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
  47. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +95 -57
  48. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +10 -14
  49. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
  50. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +97 -69
  51. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts +17 -0
  52. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts.map +1 -1
  53. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.js +117 -48
  54. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +8 -0
  55. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
  56. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +65 -35
  57. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +2 -1
  58. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts.map +1 -1
  59. package/src/shade/renderer/atmosphere/compute_mie_absorption.js +6 -6
  60. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts +41 -0
  61. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts.map +1 -0
  62. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.js +123 -0
  63. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  64. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +21 -64
  65. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -2
  66. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  67. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +55 -179
  68. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts +7 -0
  69. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts.map +1 -0
  70. package/src/shade/renderer/atmosphere/shader_sky_view_lut.js +111 -0
  71. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts +0 -1
  72. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
  73. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +68 -79
  74. package/src/shade/renderer/deferred/shader_background.js +1 -1
  75. package/src/shade/renderer/deferred/shader_background_sky.d.ts +5 -0
  76. package/src/shade/renderer/deferred/shader_background_sky.d.ts.map +1 -0
  77. package/src/shade/renderer/deferred/shader_background_sky.js +130 -0
  78. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts +73 -4
  79. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
  80. package/src/shade/renderer/deferred/tonemap/ColorGrade.js +113 -7
  81. package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts +12 -0
  82. package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.d.ts.map +1 -0
  83. package/src/shade/renderer/deferred/tonemap/TONEMAP_PURKINJE_SHIFT.js +12 -0
  84. package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +15 -1
  85. package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -1
  86. package/src/shade/renderer/deferred/tonemap/ToneMapper.js +31 -3
  87. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +26 -0
  88. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -0
  89. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +55 -0
  90. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +2 -2
  91. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -1
  92. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.js +6 -3
  93. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +3 -2
  94. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -1
  95. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.js +7 -3
  96. package/src/shade/renderer/extension/ViewTextures.d.ts +3 -2
  97. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  98. package/src/shade/renderer/extension/ViewTextures.js +3 -2
  99. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  100. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  101. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  102. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  103. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  104. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +1 -1
  105. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -1
  106. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  107. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +29 -0
  108. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts +47 -0
  109. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts.map +1 -0
  110. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js +246 -0
  111. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +4 -15
  112. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
  113. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +8 -148
  114. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +4 -9
  115. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  116. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +9 -58
  117. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts +142 -0
  118. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts.map +1 -0
  119. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.js +938 -0
  120. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts +192 -0
  121. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts.map +1 -0
  122. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.js +231 -0
  123. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts +11 -0
  124. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts.map +1 -0
  125. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.js +25 -0
  126. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts +110 -0
  127. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts.map +1 -0
  128. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.js +197 -0
  129. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts +150 -0
  130. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts.map +1 -0
  131. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.js +408 -0
  132. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts +23 -0
  133. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts.map +1 -0
  134. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.js +63 -0
  135. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts +24 -0
  136. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts.map +1 -0
  137. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.js +61 -0
  138. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts +39 -0
  139. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts.map +1 -0
  140. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.js +126 -0
  141. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts +21 -0
  142. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts.map +1 -0
  143. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.js +74 -0
  144. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts +20 -0
  145. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts.map +1 -0
  146. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.js +26 -0
  147. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts +24 -0
  148. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts.map +1 -0
  149. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.js +57 -0
  150. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts +22 -0
  151. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts.map +1 -0
  152. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.js +53 -0
  153. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts +62 -0
  154. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts.map +1 -0
  155. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.js +156 -0
  156. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts +18 -0
  157. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts.map +1 -0
  158. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js +50 -0
  159. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts +21 -0
  160. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map +1 -0
  161. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js +54 -0
  162. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts +67 -0
  163. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map +1 -0
  164. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js +509 -0
  165. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts +20 -0
  166. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts.map +1 -0
  167. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.js +128 -0
  168. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts +62 -0
  169. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts.map +1 -0
  170. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.js +478 -0
  171. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts +69 -0
  172. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts.map +1 -0
  173. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.js +457 -0
  174. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts +27 -0
  175. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts.map +1 -0
  176. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js +219 -0
  177. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts +22 -0
  178. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts.map +1 -0
  179. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.js +151 -0
  180. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts +66 -0
  181. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts.map +1 -0
  182. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.js +301 -0
  183. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts +59 -0
  184. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map +1 -0
  185. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js +364 -0
  186. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts +40 -0
  187. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts.map +1 -0
  188. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.js +275 -0
  189. package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -1
  190. package/src/shade/renderer/grass/blade/GPUGrassBlades.js +17 -2
  191. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +18 -8
  192. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -1
  193. package/src/shade/renderer/grass/blade/grass_blade_resolve.js +114 -32
  194. package/src/shade/renderer/light/GPULightCollection.d.ts +1 -1
  195. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  196. package/src/shade/renderer/light/GPULightCollection.js +213 -80
  197. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.d.ts +1 -2
  198. package/src/shade/renderer/light/environment/chunk_sample_environment_color.d.ts.map +1 -0
  199. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.js +3 -4
  200. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  201. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
  202. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +1 -1
  203. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +35 -9
  204. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  205. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +81 -11
  206. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  207. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +4 -1
  208. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +1 -1
  209. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +1 -1
  210. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.d.ts +1 -1
  211. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.js +1 -1
  212. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +1 -1
  213. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  214. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +2 -0
  215. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +2 -0
  216. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts +6 -0
  217. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
  218. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +9 -1
  219. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
  220. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +4 -3
  221. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts +17 -0
  222. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts.map +1 -0
  223. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.js +16 -0
  224. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts +21 -0
  225. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts.map +1 -0
  226. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.js +30 -0
  227. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -5
  228. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  229. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +19 -17
  230. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +2 -0
  231. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  232. package/src/shade/renderer/scene/GPUSceneContext.js +2 -1
  233. package/src/shade/renderer/scene/Scene.d.ts +9 -2
  234. package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
  235. package/src/shade/renderer/scene/Scene.js +10 -2
  236. package/src/shade/renderer/shader/ImageShader.d.ts +24 -12
  237. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  238. package/src/shade/renderer/shader/ImageShader.js +11 -8
  239. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts +3 -1
  240. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts.map +1 -1
  241. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js +11 -3
  242. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +2 -11
  243. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -1
  244. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +23 -32
  245. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts +6 -0
  246. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts.map +1 -1
  247. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.js +14 -2
  248. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.d.ts.map +1 -1
  249. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.js +4 -2
  250. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.d.ts.map +1 -1
  251. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.js +11 -3
  252. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -1
  253. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +68 -69
  254. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts +4 -1
  255. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts.map +1 -1
  256. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.js +46 -39
  257. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.d.ts.map +1 -1
  258. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js +5 -3
  259. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts +6 -0
  260. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -1
  261. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +7 -0
  262. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +4 -4
  263. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -1
  264. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +86 -5
  265. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +73 -0
  266. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -0
  267. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +139 -0
  268. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
  269. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
  270. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
  271. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
  272. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
  273. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
  274. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
  275. package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
  276. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
  277. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
  278. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +3 -1
  279. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  280. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -2
  281. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  282. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +743 -739
  283. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +2 -0
  284. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  285. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +19 -17
  286. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
  287. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +5 -3
  288. package/src/shade/renderer/water/chunk_water_gi.js +2 -0
  289. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  290. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  291. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts +0 -2
  292. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +0 -1
  293. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +0 -45
  294. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts +0 -2
  295. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +0 -1
  296. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js +0 -17
  297. package/src/engine/graphics/sh3/sky/hosek/README.md +0 -4
  298. package/src/engine/graphics/sh3/sky/hosek/data.d.ts +0 -17
  299. package/src/engine/graphics/sh3/sky/hosek/data.d.ts.map +0 -1
  300. package/src/engine/graphics/sh3/sky/hosek/data.js +0 -3744
  301. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts +0 -2
  302. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts.map +0 -1
  303. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +0 -71
  304. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts +0 -26
  305. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts.map +0 -1
  306. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js +0 -70
  307. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +0 -22
  308. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +0 -1
  309. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +0 -388
  310. package/src/engine/graphics3/make_default_environment.d.ts +0 -15
  311. package/src/engine/graphics3/make_default_environment.d.ts.map +0 -1
  312. package/src/engine/graphics3/make_default_environment.js +0 -111
  313. package/src/shade/renderer/atmosphere/MIE_G.d.ts +0 -6
  314. package/src/shade/renderer/atmosphere/MIE_G.d.ts.map +0 -1
  315. package/src/shade/renderer/atmosphere/MIE_G.js +0 -5
  316. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +0 -1
  317. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts +0 -4
  318. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts.map +0 -1
  319. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +0 -44
  320. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +0 -2
  321. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +0 -1
  322. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +0 -43
  323. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts +0 -3
  324. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts.map +0 -1
  325. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.js +0 -6
  326. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts +0 -3
  327. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts.map +0 -1
  328. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.js +0 -18
  329. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts +0 -14
  330. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts.map +0 -1
  331. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.js +0 -86
  332. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts +0 -8
  333. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts.map +0 -1
  334. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.js +0 -125
  335. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts +0 -3
  336. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts.map +0 -1
  337. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.js +0 -17
  338. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts +0 -3
  339. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts.map +0 -1
  340. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.js +0 -38
  341. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +0 -16
  342. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts.map +0 -1
  343. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +0 -28
  344. package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts +0 -11
  345. package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.d.ts.map +0 -1
  346. package/src/shade/renderer/shader/chunk/color/tonemap/purkinjie/chunk_apply_purkinjie_shift.js +0 -56
  347. package/src/shade/renderer/shader/chunk/light/sky/chunk_sample_sky_color.d.ts.map +0 -1
  348. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +0 -26
  349. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +0 -1
  350. 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
- * Whether the LUTs still hold nothing a reader could use: true until the first {@link update}.
22
- * What reads {@link lut_transmittance} or {@link lut_multiple_scattering} has to see this false,
23
- * as a texture nobody wrote reads as zero rather than failing.
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":"AAUA;;GAEG;AAEH;IAkDI;;;OAGG;IACH,sBAFW,eAAe,EAqBzB;IA7DD;;;OAGG;IACH,2CAEC;IAOD;;;OAGG;IACH,iDAEC;IAQD;;;;;;OAMG;IACH,4BAEC;IA2BD,gBAGC;IAED,cAYC;IAED;;OAEG;IACH,eAiDC;;CAEJ;8BAvJY,OAAO,uBAAuB,EAAE,eAAe;kCAL1B,iCAAiC"}
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
- * @type {boolean}
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
- #needs_update = true;
93
+ get parameters_buffer() {
94
+ return this.#parameters_buffer;
95
+ }
53
96
 
54
97
  /**
55
- * Whether the LUTs still hold nothing a reader could use: true until the first {@link update}.
56
- * What reads {@link lut_transmittance} or {@link lut_multiple_scattering} has to see this false,
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.#needs_update;
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: 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: 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.#needs_update) {
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("transmittance", TextureResourceDescriptor.fromTexture(this.#lut_transmittance.gpu_texture), this.#lut_transmittance);
125
- const gr_multiscatter = graph.import_resource("multiscatter", TextureResourceDescriptor.fromTexture(this.#lut_multiple_scattering.gpu_texture), this.#lut_multiple_scattering);
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":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,8BAFU,SAAS,iBAAiB,CAAC,CAOjC;kCAxB8B,+CAA+C"}
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
- * Filtering sampler for the sky LUTs (transmittance, multiple-scattering).
5
- *
6
- * Both LUTs are `rgba16float`, which is filterable in core WebGPU — only the 32-bit float
7
- * formats need the `float32-filterable` feature — so these can go through the texture unit
8
- * instead of the 4-tap manual bilinear in `texture_sample_bilinear_uv`.
9
- *
10
- * `min` and `mag` are both set: the LUTs are single-mip and sampled with an explicit LOD of
11
- * 0, which selects the magnification filter, but relying on that alone would silently fall
12
- * back to point sampling if either LUT ever grew mips.
13
- *
14
- * Clamp-to-edge reproduces the manual filter's per-corner clamping exactly: `uv` is
15
- * saturated by `sky_lut_uv`, and at the edges both bilinear taps collapse onto the edge
16
- * texel.
17
- *
18
- * @type {Readonly<SamplerDescriptor>}
19
- */
20
- export const SAMPLER_SKY_LUT = Object.freeze(SamplerDescriptor.from({
21
- magFilter: "linear",
22
- minFilter: "linear",
23
- addressModeU: "clamp-to-edge",
24
- addressModeV: "clamp-to-edge",
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
+ );