@woosh/meep-engine 3.67.0 → 3.69.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 (498) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +2 -17
  3. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
  4. package/editor/ecs/component/editors/ecs/Trail3DEditor.js +3 -18
  5. package/package.json +1 -1
  6. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +33 -65
  7. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
  8. package/src/engine/graphics/ecs/trail3d/Trail3D.js +37 -245
  9. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +0 -4
  10. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +4 -10
  11. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts +13 -10
  12. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts.map +1 -1
  13. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +28 -37
  14. package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts +10 -0
  15. package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts.map +1 -0
  16. package/src/engine/graphics/ecs/trail3d/trail_knot_count.js +27 -0
  17. package/src/engine/graphics/trail/TrailKnots.d.ts +62 -0
  18. package/src/engine/graphics/trail/TrailKnots.d.ts.map +1 -0
  19. package/src/engine/graphics/trail/TrailKnots.js +137 -0
  20. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +1 -1
  21. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +1 -1
  22. package/src/engine/graphics3/EntityRowHold.d.ts +48 -0
  23. package/src/engine/graphics3/EntityRowHold.d.ts.map +1 -0
  24. package/src/engine/graphics3/EntityRowHold.js +128 -0
  25. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -2
  26. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  27. package/src/engine/graphics3/GPUParticleEmitterSystem.js +11 -44
  28. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  29. package/src/engine/graphics3/GraphicsEngine.js +4 -9
  30. package/src/engine/graphics3/Trail3DSystem.d.ts +69 -35
  31. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  32. package/src/engine/graphics3/Trail3DSystem.js +380 -81
  33. package/src/engine/graphics3/load_cube_environment.js +3 -3
  34. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +17 -0
  35. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -1
  36. package/src/engine/physics/fluid/ecs/FluidObstacle.js +22 -2
  37. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -5
  38. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  39. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +14 -3
  40. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +9 -1
  41. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -1
  42. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +11 -1
  43. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +5 -0
  44. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -1
  45. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +2 -0
  46. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +4 -3
  47. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -1
  48. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +11 -3
  49. package/src/shade/playground/probe_clipmap/index.html +43 -0
  50. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  51. package/src/shade/playground/probe_clipmap/main.js +29 -0
  52. package/src/shade/playground/trails/index.html +50 -0
  53. package/src/shade/playground/trails/main.d.ts +2 -0
  54. package/src/shade/playground/trails/main.d.ts.map +1 -0
  55. package/src/shade/playground/trails/main.js +258 -0
  56. package/src/shade/renderer/Renderer.d.ts +7 -0
  57. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  58. package/src/shade/renderer/Renderer.js +213 -15
  59. package/src/shade/renderer/ShadeIndirectLightingMode.d.ts +1 -0
  60. package/src/shade/renderer/ShadeIndirectLightingMode.js +9 -0
  61. package/src/shade/renderer/animation/animation_curve_write_keys.d.ts +18 -0
  62. package/src/shade/renderer/animation/animation_curve_write_keys.d.ts.map +1 -0
  63. package/src/shade/renderer/animation/animation_curve_write_keys.js +34 -0
  64. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +22 -0
  65. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +1 -0
  66. package/src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js +160 -0
  67. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts +45 -0
  68. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.d.ts.map +1 -0
  69. package/src/shade/renderer/atmosphere/ATMOSPHERE_UNIT_SCALE.js +57 -0
  70. package/src/shade/renderer/atmosphere/GPUSky.d.ts +23 -8
  71. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  72. package/src/shade/renderer/atmosphere/GPUSky.js +91 -34
  73. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +17 -0
  74. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -1
  75. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +55 -25
  76. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts +164 -0
  77. package/src/shade/renderer/atmosphere/SceneAtmosphere.d.ts.map +1 -0
  78. package/src/shade/renderer/atmosphere/SceneAtmosphere.js +308 -0
  79. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +3 -12
  80. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
  81. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +52 -89
  82. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts +14 -0
  83. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.d.ts.map +1 -0
  84. package/src/shade/renderer/atmosphere/chunk_raymarch_sky_scattering.js +103 -0
  85. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +10 -4
  86. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
  87. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +95 -57
  88. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +10 -14
  89. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
  90. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +97 -69
  91. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts +17 -0
  92. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.d.ts.map +1 -1
  93. package/src/shade/renderer/atmosphere/chunk_sky_irradiance_lut_encode_uv.js +117 -48
  94. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +8 -0
  95. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
  96. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +65 -35
  97. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +2 -1
  98. package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts.map +1 -1
  99. package/src/shade/renderer/atmosphere/compute_mie_absorption.js +6 -6
  100. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts +41 -0
  101. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.d.ts.map +1 -0
  102. package/src/shade/renderer/atmosphere/resolve_atmosphere_sun.js +123 -0
  103. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  104. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +21 -64
  105. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -2
  106. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  107. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +55 -179
  108. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts +7 -0
  109. package/src/shade/renderer/atmosphere/shader_sky_view_lut.d.ts.map +1 -0
  110. package/src/shade/renderer/atmosphere/shader_sky_view_lut.js +111 -0
  111. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts +0 -1
  112. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
  113. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +68 -79
  114. package/src/shade/renderer/deferred/shader_background.js +1 -1
  115. package/src/shade/renderer/deferred/shader_background_sky.d.ts +5 -0
  116. package/src/shade/renderer/deferred/shader_background_sky.d.ts.map +1 -0
  117. package/src/shade/renderer/deferred/shader_background_sky.js +130 -0
  118. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
  119. package/src/shade/renderer/deferred/tonemap/ColorGrade.js +13 -36
  120. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts +2 -1
  121. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.d.ts.map +1 -1
  122. package/src/shade/renderer/deferred/tonemap/chunk_tonemap_purkinje.js +6 -2
  123. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +2 -2
  124. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -13
  125. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
  126. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +6 -21
  127. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +17 -6
  128. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
  129. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +38 -178
  130. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +7 -9
  131. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
  132. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +17 -106
  133. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +7 -17
  134. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
  135. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +18 -118
  136. package/src/shade/renderer/extension/ViewTextures.d.ts +3 -2
  137. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  138. package/src/shade/renderer/extension/ViewTextures.js +3 -2
  139. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  140. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  141. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts +14 -0
  142. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -1
  143. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +18 -0
  144. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +3 -1
  145. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -1
  146. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +4 -1
  147. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +15 -6
  148. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
  149. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +20 -4
  150. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +11 -2
  151. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -1
  152. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +59 -2
  153. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +4 -1
  154. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -1
  155. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +367 -341
  156. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts +6 -2
  157. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -1
  158. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +339 -282
  159. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  160. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  161. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +1 -1
  162. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -1
  163. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  164. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +29 -0
  165. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts +47 -0
  166. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.d.ts.map +1 -0
  167. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_light.js +246 -0
  168. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +4 -15
  169. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
  170. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +8 -148
  171. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +4 -9
  172. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  173. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +9 -58
  174. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts +142 -0
  175. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.d.ts.map +1 -0
  176. package/src/shade/renderer/global_illumination/screen_probe/GPUScreenProbeGI.js +938 -0
  177. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts +192 -0
  178. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.d.ts.map +1 -0
  179. package/src/shade/renderer/global_illumination/screen_probe/SCREEN_PROBE.js +231 -0
  180. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts +11 -0
  181. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.d.ts.map +1 -0
  182. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeDebugView.js +25 -0
  183. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts +110 -0
  184. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.d.ts.map +1 -0
  185. package/src/shade/renderer/global_illumination/screen_probe/ScreenProbeSettings.js +197 -0
  186. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts +150 -0
  187. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.d.ts.map +1 -0
  188. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe.js +408 -0
  189. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts +23 -0
  190. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.d.ts.map +1 -0
  191. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brdf_density.js +63 -0
  192. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts +24 -0
  193. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.d.ts.map +1 -0
  194. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_brick_origin.js +61 -0
  195. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts +39 -0
  196. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.d.ts.map +1 -0
  197. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_interpolate.js +126 -0
  198. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts +21 -0
  199. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.d.ts.map +1 -0
  200. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_lighting_history.js +74 -0
  201. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts +20 -0
  202. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.d.ts.map +1 -0
  203. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_march_distance.js +26 -0
  204. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts +24 -0
  205. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.d.ts.map +1 -0
  206. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_ray_sort.js +57 -0
  207. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts +22 -0
  208. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.d.ts.map +1 -0
  209. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_screen_march.js +53 -0
  210. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts +62 -0
  211. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.d.ts.map +1 -0
  212. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_surface.js +156 -0
  213. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts +18 -0
  214. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.d.ts.map +1 -0
  215. package/src/shade/renderer/global_illumination/screen_probe/chunk_screen_probe_workgroup_sum.js +50 -0
  216. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts +21 -0
  217. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.d.ts.map +1 -0
  218. package/src/shade/renderer/global_illumination/screen_probe/graph_screen_probe_debug_view.js +54 -0
  219. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts +67 -0
  220. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.d.ts.map +1 -0
  221. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_brick.js +509 -0
  222. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts +20 -0
  223. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.d.ts.map +1 -0
  224. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_debug.js +128 -0
  225. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts +62 -0
  226. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.d.ts.map +1 -0
  227. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_gather.js +478 -0
  228. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts +69 -0
  229. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.d.ts.map +1 -0
  230. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_importance.js +457 -0
  231. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts +27 -0
  232. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.d.ts.map +1 -0
  233. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_indirect_lighting.js +219 -0
  234. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts +22 -0
  235. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.d.ts.map +1 -0
  236. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_pick.js +151 -0
  237. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts +66 -0
  238. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.d.ts.map +1 -0
  239. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_place.js +301 -0
  240. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts +59 -0
  241. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.d.ts.map +1 -0
  242. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_resolve.js +364 -0
  243. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts +40 -0
  244. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.d.ts.map +1 -0
  245. package/src/shade/renderer/global_illumination/screen_probe/shader_screen_probe_trace_screen.js +275 -0
  246. package/src/shade/renderer/grass/blade/GPUGrassBlades.d.ts.map +1 -1
  247. package/src/shade/renderer/grass/blade/GPUGrassBlades.js +17 -2
  248. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts +18 -8
  249. package/src/shade/renderer/grass/blade/grass_blade_resolve.d.ts.map +1 -1
  250. package/src/shade/renderer/grass/blade/grass_blade_resolve.js +114 -32
  251. package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts +3 -2
  252. package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -1
  253. package/src/shade/renderer/grass/press/shader_grass_press_mark.js +5 -3
  254. package/src/shade/renderer/light/GPULightCollection.d.ts +1 -1
  255. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  256. package/src/shade/renderer/light/GPULightCollection.js +213 -80
  257. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.d.ts +1 -2
  258. package/src/shade/renderer/light/environment/chunk_sample_environment_color.d.ts.map +1 -0
  259. package/src/shade/renderer/{atmosphere → light/environment}/chunk_sample_environment_color.js +3 -4
  260. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  261. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
  262. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +1 -1
  263. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +1 -1
  264. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +1 -1
  265. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.d.ts +1 -1
  266. package/src/shade/renderer/postprocess/motion_blur/graph_postprocess_motion_blur.js +1 -1
  267. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +1 -1
  268. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  269. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +2 -0
  270. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +2 -0
  271. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts +6 -0
  272. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
  273. package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +9 -1
  274. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
  275. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +4 -3
  276. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts +17 -0
  277. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.d.ts.map +1 -0
  278. package/src/shade/renderer/postprocess/velocity/VELOCITY_BUFFER.js +16 -0
  279. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts +21 -0
  280. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.d.ts.map +1 -0
  281. package/src/shade/renderer/postprocess/velocity/chunk_velocity_texel.js +30 -0
  282. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -5
  283. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  284. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +19 -17
  285. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +2 -0
  286. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts +49 -0
  287. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts.map +1 -0
  288. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.js +144 -0
  289. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts +71 -0
  290. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts.map +1 -0
  291. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.js +152 -0
  292. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts +21 -0
  293. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts.map +1 -0
  294. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.js +30 -0
  295. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts +101 -0
  296. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts.map +1 -0
  297. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.js +306 -0
  298. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +9 -0
  299. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
  300. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +11 -4
  301. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  302. package/src/shade/renderer/scene/GPUSceneContext.js +2 -1
  303. package/src/shade/renderer/scene/Scene.d.ts +9 -2
  304. package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
  305. package/src/shade/renderer/scene/Scene.js +10 -2
  306. package/src/shade/renderer/shader/ImageShader.d.ts +24 -12
  307. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  308. package/src/shade/renderer/shader/ImageShader.js +11 -8
  309. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts +3 -1
  310. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.d.ts.map +1 -1
  311. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_HEIGHT_DECLARATION.js +11 -3
  312. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +2 -11
  313. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -1
  314. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +23 -32
  315. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts +6 -0
  316. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.d.ts.map +1 -1
  317. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_RADIUS_DECLARATION.js +14 -2
  318. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.d.ts.map +1 -1
  319. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_height.js +4 -2
  320. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.d.ts.map +1 -1
  321. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_intersection.js +11 -3
  322. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -1
  323. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +68 -69
  324. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts +4 -1
  325. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.d.ts.map +1 -1
  326. package/src/shade/renderer/shader/chunk/atmosphere/chunk_get_sun_transmittance.js +46 -39
  327. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.d.ts.map +1 -1
  328. package/src/shade/renderer/shader/chunk/atmosphere/chunk_position_relative_to_planet_center.js +5 -3
  329. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts +18 -10
  330. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.d.ts.map +1 -1
  331. package/src/shade/renderer/shader/chunk/color/tonemap/purkinje/chunk_apply_purkinje_shift.js +30 -27
  332. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts +14 -0
  333. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.d.ts.map +1 -0
  334. package/src/shade/renderer/shader/chunk/depth/chunk_get_device_depth.js +30 -0
  335. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts +21 -0
  336. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.d.ts.map +1 -0
  337. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_equal_area_sphere.js +60 -0
  338. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.d.ts → io/chunk_light_get_sun.d.ts} +3 -6
  339. package/src/shade/renderer/shader/chunk/light/io/chunk_light_get_sun.d.ts.map +1 -0
  340. package/src/shade/renderer/shader/chunk/light/{sky/chunk_sample_sky_color.js → io/chunk_light_get_sun.js} +6 -26
  341. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +1 -1
  342. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts +69 -0
  343. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts.map +1 -0
  344. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.js +129 -0
  345. package/src/shade/renderer/trails/GPUTrailSystem.d.ts +164 -0
  346. package/src/shade/renderer/trails/GPUTrailSystem.d.ts.map +1 -0
  347. package/src/shade/renderer/trails/GPUTrailSystem.js +725 -0
  348. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts +14 -0
  349. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts.map +1 -0
  350. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.js +38 -0
  351. package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts +66 -0
  352. package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts.map +1 -0
  353. package/src/shade/renderer/trails/data/TRAIL_KNOT.js +154 -0
  354. package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts +19 -0
  355. package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts.map +1 -0
  356. package/src/shade/renderer/trails/data/TRAIL_RECORD.js +68 -0
  357. package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts +18 -0
  358. package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts.map +1 -0
  359. package/src/shade/renderer/trails/data/TRAIL_STATE.js +43 -0
  360. package/src/shade/renderer/trails/graph_trails.d.ts +58 -0
  361. package/src/shade/renderer/trails/graph_trails.d.ts.map +1 -0
  362. package/src/shade/renderer/trails/graph_trails.js +155 -0
  363. package/src/shade/renderer/trails/graph_trails_avboit.d.ts +126 -0
  364. package/src/shade/renderer/trails/graph_trails_avboit.d.ts.map +1 -0
  365. package/src/shade/renderer/trails/graph_trails_avboit.js +300 -0
  366. package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts +56 -0
  367. package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts.map +1 -0
  368. package/src/shade/renderer/trails/runtime/TrailFadeCurves.js +220 -0
  369. package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts +49 -0
  370. package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts.map +1 -0
  371. package/src/shade/renderer/trails/runtime/TrailKnotPool.js +162 -0
  372. package/src/shade/renderer/trails/runtime/TrailParameters.d.ts +52 -0
  373. package/src/shade/renderer/trails/runtime/TrailParameters.d.ts.map +1 -0
  374. package/src/shade/renderer/trails/runtime/TrailParameters.js +126 -0
  375. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts +23 -0
  376. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts.map +1 -0
  377. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.js +57 -0
  378. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts +14 -0
  379. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts.map +1 -0
  380. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.js +40 -0
  381. package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts +18 -0
  382. package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts.map +1 -0
  383. package/src/shade/renderer/trails/shaders/chunk_trail_seed.js +64 -0
  384. package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts +14 -0
  385. package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts.map +1 -0
  386. package/src/shade/renderer/trails/shaders/chunk_trail_segment.js +51 -0
  387. package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts +48 -0
  388. package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts.map +1 -0
  389. package/src/shade/renderer/trails/shaders/chunk_trail_update.js +197 -0
  390. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts +34 -0
  391. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts.map +1 -0
  392. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.js +111 -0
  393. package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts +24 -0
  394. package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts.map +1 -0
  395. package/src/shade/renderer/trails/shaders/shader_trail_avboit.js +78 -0
  396. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts +23 -0
  397. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts.map +1 -0
  398. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js +130 -0
  399. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts +29 -0
  400. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts.map +1 -0
  401. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.js +78 -0
  402. package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts +18 -0
  403. package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts.map +1 -0
  404. package/src/shade/renderer/trails/shaders/shader_trail_seed.js +79 -0
  405. package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts +20 -0
  406. package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts.map +1 -0
  407. package/src/shade/renderer/trails/shaders/shader_trail_update.js +101 -0
  408. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +3 -1
  409. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  410. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -2
  411. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  412. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +743 -739
  413. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +2 -0
  414. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  415. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +19 -17
  416. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
  417. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +5 -3
  418. package/src/shade/renderer/water/chunk_water_gi.js +2 -0
  419. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  420. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  421. package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts +0 -18
  422. package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts.map +0 -1
  423. package/src/engine/graphics/ecs/trail3d/advance_trail.js +0 -42
  424. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts +0 -14
  425. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts.map +0 -1
  426. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +0 -75
  427. package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts +0 -17
  428. package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts.map +0 -1
  429. package/src/engine/graphics/ecs/trail3d/trail_head_position.js +0 -19
  430. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts +0 -2
  431. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +0 -1
  432. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +0 -45
  433. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts +0 -2
  434. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +0 -1
  435. package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js +0 -17
  436. package/src/engine/graphics/sh3/sky/hosek/README.md +0 -4
  437. package/src/engine/graphics/sh3/sky/hosek/data.d.ts +0 -17
  438. package/src/engine/graphics/sh3/sky/hosek/data.d.ts.map +0 -1
  439. package/src/engine/graphics/sh3/sky/hosek/data.js +0 -3744
  440. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts +0 -2
  441. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.d.ts.map +0 -1
  442. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +0 -71
  443. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts +0 -26
  444. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.d.ts.map +0 -1
  445. package/src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js +0 -70
  446. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +0 -22
  447. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +0 -1
  448. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +0 -388
  449. package/src/engine/graphics/trail/tube/TubeX.d.ts +0 -186
  450. package/src/engine/graphics/trail/tube/TubeX.d.ts.map +0 -1
  451. package/src/engine/graphics/trail/tube/TubeX.js +0 -575
  452. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +0 -16
  453. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +0 -1
  454. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +0 -34
  455. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +0 -27
  456. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +0 -1
  457. package/src/engine/graphics/trail/tube/tube_attributes_spec.js +0 -70
  458. package/src/engine/graphics3/make_default_environment.d.ts +0 -15
  459. package/src/engine/graphics3/make_default_environment.d.ts.map +0 -1
  460. package/src/engine/graphics3/make_default_environment.js +0 -111
  461. package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +0 -38
  462. package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +0 -1
  463. package/src/engine/graphics3/trail/trail_tube_write_geometry.js +0 -119
  464. package/src/shade/renderer/atmosphere/MIE_G.d.ts +0 -6
  465. package/src/shade/renderer/atmosphere/MIE_G.d.ts.map +0 -1
  466. package/src/shade/renderer/atmosphere/MIE_G.js +0 -5
  467. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +0 -1
  468. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts +0 -4
  469. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.d.ts.map +0 -1
  470. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +0 -44
  471. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts +0 -2
  472. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map +0 -1
  473. package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +0 -43
  474. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts +0 -3
  475. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.d.ts.map +0 -1
  476. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_DENSITY_DECLARATION.js +0 -6
  477. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts +0 -3
  478. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.d.ts.map +0 -1
  479. package/src/shade/renderer/shader/chunk/atmosphere/chunk_absorb.js +0 -18
  480. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts +0 -14
  481. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.d.ts.map +0 -1
  482. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_optical_depth.js +0 -86
  483. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts +0 -8
  484. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.d.ts.map +0 -1
  485. package/src/shade/renderer/shader/chunk/atmosphere/chunk_integrate_scattering.js +0 -125
  486. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts +0 -3
  487. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.d.ts.map +0 -1
  488. package/src/shade/renderer/shader/chunk/atmosphere/chunk_planet_intersection.js +0 -17
  489. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts +0 -3
  490. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.d.ts.map +0 -1
  491. package/src/shade/renderer/shader/chunk/atmosphere/chunk_sphere_intersection_nearest.js +0 -38
  492. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +0 -16
  493. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts.map +0 -1
  494. package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +0 -28
  495. package/src/shade/renderer/shader/chunk/light/sky/chunk_sample_sky_color.d.ts.map +0 -1
  496. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +0 -26
  497. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +0 -1
  498. package/src/shade/renderer/view/GPUViewSkyContext.js +0 -170
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Write a curve's keys into `out` at float index `at`, laid out as `ANIMATION_CURVE_KEYFRAME_STRUCT`, the
3
+ * form `chunk_animation_curve_evaluate_keys` reads them in.
4
+ *
5
+ * @param {Float32Array} out
6
+ * @param {number} at float index
7
+ * @param {import("../../../engine/animation/curve/AnimationCurve.js").AnimationCurve} curve
8
+ * @returns {number} the float index after the curve's keys
9
+ */
10
+ export function animation_curve_write_keys(out: Float32Array, at: number, curve: import("../../../engine/animation/curve/AnimationCurve.js").AnimationCurve): number;
11
+ /**
12
+ * Floats of one keyframe in an `ANIMATION_CURVE_KEYFRAME_STRUCT` array: time, value, in tangent, out
13
+ * tangent.
14
+ *
15
+ * @type {number}
16
+ */
17
+ export const ANIMATION_CURVE_KEYFRAME_FLOATS: number;
18
+ //# sourceMappingURL=animation_curve_write_keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation_curve_write_keys.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/animation_curve_write_keys.js"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,gDALW,YAAY,MACZ,MAAM,SACN,OAAO,mDAAmD,EAAE,cAAc,GACxE,MAAM,CAkBlB;AAjCD;;;;;GAKG;AACH,8CAFU,MAAM,CAEiC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Floats of one keyframe in an `ANIMATION_CURVE_KEYFRAME_STRUCT` array: time, value, in tangent, out
3
+ * tangent.
4
+ *
5
+ * @type {number}
6
+ */
7
+ export const ANIMATION_CURVE_KEYFRAME_FLOATS = 4;
8
+
9
+ /**
10
+ * Write a curve's keys into `out` at float index `at`, laid out as `ANIMATION_CURVE_KEYFRAME_STRUCT`, the
11
+ * form `chunk_animation_curve_evaluate_keys` reads them in.
12
+ *
13
+ * @param {Float32Array} out
14
+ * @param {number} at float index
15
+ * @param {import("../../../engine/animation/curve/AnimationCurve.js").AnimationCurve} curve
16
+ * @returns {number} the float index after the curve's keys
17
+ */
18
+ export function animation_curve_write_keys(out, at, curve) {
19
+ const keys = curve.keys;
20
+ const count = keys.length;
21
+
22
+ for (let i = 0; i < count; i++) {
23
+ const key = keys[i];
24
+
25
+ out[at] = key.time;
26
+ out[at + 1] = key.value;
27
+ out[at + 2] = key.inTangent;
28
+ out[at + 3] = key.outTangent;
29
+
30
+ at += ANIMATION_CURVE_KEYFRAME_FLOATS;
31
+ }
32
+
33
+ return at;
34
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Packed GPU uniform representation of {@link SceneAtmosphere} in GPU atmosphere units
3
+ * ($\text{km}$ and $\text{km}^{-1}$, scaled via `ATMOSPHERE_UNIT_METERS`).
4
+ *
5
+ * @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
6
+ * @type {WebGPUStruct}
7
+ */
8
+ export const ATMOSPHERE_PARAMETERS_STRUCT: WebGPUStruct;
9
+ /**
10
+ * Deeply frozen default Earth uniform payload matching {@link ATMOSPHERE_PARAMETERS_STRUCT}.
11
+ */
12
+ export const ATMOSPHERE_EARTH_UNIFORM: Readonly<Record<string, any>>;
13
+ /**
14
+ * Parameterised Hillaire (2020) atmosphere medium, geometry, and LUT coordinate helpers operating
15
+ * on {@link ATMOSPHERE_PARAMETERS_STRUCT}.
16
+ *
17
+ * @type {CodeChunk}
18
+ */
19
+ export const chunk_atmosphere_parameters: CodeChunk;
20
+ import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
21
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
22
+ //# sourceMappingURL=ATMOSPHERE_PARAMETERS_STRUCT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ATMOSPHERE_PARAMETERS_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/ATMOSPHERE_PARAMETERS_STRUCT.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,2CAFU,YAAY,CAmBK;AAE3B;;GAEG;AACH,qEAQK;AAEL;;;;;GAKG;AACH,0CAFU,SAAS,CA4GjB;6BA5J2B,gCAAgC;0BAFnC,iCAAiC"}
@@ -0,0 +1,160 @@
1
+ import { chunk_atmosphere_ray_bounds } from "../shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js";
2
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
3
+ import { f32, vec3f } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
4
+ import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
5
+ import { ATMOSPHERE_ALTITUDE_CUTOFF } from "./ATMOSPHERE_ALTITUDE_CUTOFF.js";
6
+ import { ATMOSPHERE_UNIT_SCALE_DECLARATION } from "./ATMOSPHERE_UNIT_SCALE.js";
7
+ import { SceneAtmosphere } from "./SceneAtmosphere.js";
8
+
9
+ /**
10
+ * Packed GPU uniform representation of {@link SceneAtmosphere} in GPU atmosphere units
11
+ * ($\text{km}$ and $\text{km}^{-1}$, scaled via `ATMOSPHERE_UNIT_METERS`).
12
+ *
13
+ * @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
14
+ * @type {WebGPUStruct}
15
+ */
16
+ export const ATMOSPHERE_PARAMETERS_STRUCT = WebGPUStruct.from({
17
+ planet_radius: f32,
18
+ atmosphere_height: f32,
19
+ rayleigh_scale_height: f32,
20
+ mie_scale_height: f32,
21
+
22
+ rayleigh_scattering: vec3f,
23
+ mie_phase_g: f32,
24
+
25
+ mie_scattering: vec3f,
26
+ ozone_center_height: f32,
27
+
28
+ mie_absorption: vec3f,
29
+ ozone_half_width: f32,
30
+
31
+ ozone_absorption: vec3f,
32
+ ground_albedo: vec3f,
33
+ }, "AtmosphereParameters");
34
+
35
+ /**
36
+ * Deeply frozen default Earth uniform payload matching {@link ATMOSPHERE_PARAMETERS_STRUCT}.
37
+ */
38
+ export const ATMOSPHERE_EARTH_UNIFORM = (() => {
39
+ const raw = new SceneAtmosphere().write_uniform();
40
+ raw.rayleigh_scattering = Object.freeze([...raw.rayleigh_scattering]);
41
+ raw.mie_scattering = Object.freeze([...raw.mie_scattering]);
42
+ raw.mie_absorption = Object.freeze([...raw.mie_absorption]);
43
+ raw.ozone_absorption = Object.freeze([...raw.ozone_absorption]);
44
+ raw.ground_albedo = Object.freeze([...raw.ground_albedo]);
45
+ return Object.freeze(raw);
46
+ })();
47
+
48
+ /**
49
+ * Parameterised Hillaire (2020) atmosphere medium, geometry, and LUT coordinate helpers operating
50
+ * on {@link ATMOSPHERE_PARAMETERS_STRUCT}.
51
+ *
52
+ * @type {CodeChunk}
53
+ */
54
+ export const chunk_atmosphere_parameters = CodeChunk.from(
55
+ //language=WGSL
56
+ `
57
+ fn atmosphere_earth_parameters() -> ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref} {
58
+ var atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref};
59
+ atm.planet_radius = 6378000.0 * METERS_TO_ATMOSPHERE_UNITS;
60
+ atm.atmosphere_height = 100000.0 * METERS_TO_ATMOSPHERE_UNITS;
61
+ atm.rayleigh_scale_height = 8000.0 * METERS_TO_ATMOSPHERE_UNITS;
62
+ atm.mie_scale_height = 1200.0 * METERS_TO_ATMOSPHERE_UNITS;
63
+ atm.rayleigh_scattering = vec3<f32>(5.802e-6, 13.558e-6, 33.100e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
64
+ atm.mie_phase_g = 0.8;
65
+ atm.mie_scattering = vec3<f32>(3.996e-6, 3.996e-6, 3.996e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
66
+ atm.ozone_center_height = 25000.0 * METERS_TO_ATMOSPHERE_UNITS;
67
+ atm.mie_absorption = vec3<f32>(0.444e-6, 0.444e-6, 0.444e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
68
+ atm.ozone_half_width = 15000.0 * METERS_TO_ATMOSPHERE_UNITS;
69
+ atm.ozone_absorption = vec3<f32>(0.650e-6, 1.881e-6, 0.085e-6) * INVERSE_METERS_TO_ATMOSPHERE_UNITS;
70
+ atm.ground_albedo = vec3<f32>(0.3, 0.3, 0.3);
71
+ return atm;
72
+ }
73
+
74
+ fn atmosphere_planet_center_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}) -> vec3<f32> {
75
+ return vec3<f32>(0.0, -atm.planet_radius, 0.0);
76
+ }
77
+
78
+ // Converts a world-space position (in metres) into planet-centre-relative GPU atmosphere units (km).
79
+ fn atmosphere_position_relative_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, pos_ws: vec3<f32>) -> vec3<f32> {
80
+ return pos_ws * METERS_TO_ATMOSPHERE_UNITS - atmosphere_planet_center_for(atm);
81
+ }
82
+
83
+ // Planet-centre-relative observer position (in km) clamped away from the ground and top-of-atmosphere boundaries.
84
+ fn atmosphere_clamped_observer_relative(
85
+ atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
86
+ world_pos: vec3<f32>
87
+ ) -> vec3<f32> {
88
+ let rel = atmosphere_position_relative_for(atm, world_pos);
89
+ let r_raw = length(rel);
90
+ let up = select(vec3<f32>(0.0, 1.0, 0.0), rel / r_raw, r_raw > 0.0);
91
+ let cutoff = ${ATMOSPHERE_ALTITUDE_CUTOFF.toFixed(1)} * METERS_TO_ATMOSPHERE_UNITS;
92
+ let min_r = atm.planet_radius + cutoff;
93
+ let max_r = max(min_r, atm.planet_radius + atm.atmosphere_height - cutoff);
94
+ return up * clamp(r_raw, min_r, max_r);
95
+ }
96
+
97
+ fn atmosphere_density_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, h: f32) -> vec3<f32> {
98
+ let clamped_h = max(h, 0.0);
99
+ let rayleigh = exp(-clamped_h / max(atm.rayleigh_scale_height, MIN_ATMOSPHERE_LENGTH_UNITS));
100
+ let mie = exp(-clamped_h / max(atm.mie_scale_height, MIN_ATMOSPHERE_LENGTH_UNITS));
101
+ let ozone = max(0.0, 1.0 - abs(h - atm.ozone_center_height) / max(atm.ozone_half_width, MIN_ATMOSPHERE_LENGTH_UNITS));
102
+ return vec3<f32>(rayleigh, mie, ozone);
103
+ }
104
+
105
+ fn atmosphere_extinction_for(atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref}, density: vec3<f32>) -> vec3<f32> {
106
+ let rayleigh = density.x * atm.rayleigh_scattering;
107
+ let mie = density.y * (atm.mie_scattering + atm.mie_absorption);
108
+ let ozone = density.z * atm.ozone_absorption;
109
+ return rayleigh + mie + ozone;
110
+ }
111
+
112
+ fn atmosphere_ray_bounds_for(
113
+ atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
114
+ origin_rel: vec3<f32>,
115
+ ray_direction: vec3<f32>
116
+ ) -> AtmosphereRayBounds {
117
+ let b = dot(origin_rel, ray_direction);
118
+ let r = length(origin_rel);
119
+ let b2 = b * b;
120
+
121
+ let ground_r = atm.planet_radius;
122
+ let top_r = atm.planet_radius + atm.atmosphere_height;
123
+
124
+ // Difference-of-squares factoring (r - R)(r + R) avoids catastrophic f32 cancellation when
125
+ // altitude (r - ground_r) is metres above a 6,378 km planet radius.
126
+ let atmosphere_distance = -b + sqrt(max(b2 - (r - top_r) * (r + top_r), 0.0));
127
+
128
+ let ground_discriminant = b2 - (r - ground_r) * (r + ground_r);
129
+ let hits_ground = (b < 0.0) && (ground_discriminant >= 0.0);
130
+ let ground_distance = select(
131
+ -1.0,
132
+ max(-b - sqrt(max(ground_discriminant, 0.0)), 0.0),
133
+ hits_ground
134
+ );
135
+
136
+ var result: AtmosphereRayBounds;
137
+ result.t_max = select(atmosphere_distance, ground_distance, hits_ground);
138
+ result.ground_distance = ground_distance;
139
+ result.hits_ground = hits_ground;
140
+ return result;
141
+ }
142
+
143
+ fn sky_lut_uv_for(
144
+ atm: ${ATMOSPHERE_PARAMETERS_STRUCT.wgsl_ref},
145
+ height: f32,
146
+ sun_cos_zenith_angle: f32,
147
+ resolution: vec2<f32>
148
+ ) -> vec2<f32> {
149
+ let unit = vec2<f32>(
150
+ saturate(0.5 + 0.5 * sun_cos_zenith_angle),
151
+ saturate(height / max(atm.atmosphere_height, MIN_ATMOSPHERE_LENGTH_UNITS))
152
+ );
153
+ return (unit * (resolution - 1.0) + 0.5) / resolution;
154
+ }
155
+ `, [
156
+ ATMOSPHERE_UNIT_SCALE_DECLARATION,
157
+ ATMOSPHERE_PARAMETERS_STRUCT.declaration_chunk,
158
+ chunk_atmosphere_ray_bounds,
159
+ ]
160
+ );
@@ -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
+ }