@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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=prototype_hosek.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prototype_hosek.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/sky/hosek/prototype_hosek.js"],"names":[],"mappings":""}
@@ -1,71 +0,0 @@
1
- import { v3_normalize_array } from "../../../../../core/geom/vec3/v3_normalize_array.js";
2
- import { CanvasView } from "../../../../../view/elements/CanvasView.js";
3
- import { Sampler2D } from "../../../texture/sampler/Sampler2D.js";
4
- import sampler2D2Canvas from "../../../texture/sampler/sampler2d_to_html_canvas.js";
5
- import { make_sky_hosek } from "../../path_tracer/make_sky_hosek.js";
6
-
7
- const view = new CanvasView();
8
-
9
- view.css({
10
- position: 'fixed',
11
- left: '10px',
12
- top: '10px',
13
- zIndex: 5
14
- });
15
- view.size.set(400, 400);
16
-
17
- document.body.append(view.el);
18
-
19
- view.link();
20
-
21
- const sampler = Sampler2D.float32(4, 400, 400);
22
-
23
-
24
- const sky = make_sky_hosek(
25
- [0, 0.8, 0.4],
26
- 1,
27
- 0,
28
- [0,0,0]
29
- );
30
- const vl_halfPi = Math.PI / 2;
31
- const color = [1, 1, 1, 1];
32
- for (let i = 0; i < sampler.width; i++) {
33
- const u = i / (sampler.width - 1);
34
-
35
- const x = u * 2 - 1;
36
-
37
- for (let j = 0; j < sampler.height; j++) {
38
- const v = j / (sampler.height - 1);
39
-
40
- const y = v * 2 - 1;
41
- const y2 = y * y;
42
- // fisheye projection
43
-
44
- const x2 = x * x;
45
- const h2 = x2 + y2;
46
-
47
- const theta = vl_halfPi - vl_halfPi * Math.sqrt(h2);
48
- const phi = Math.atan2(y, x);
49
- const v_x = Math.cos(phi) * Math.cos(theta);
50
- const v_y = Math.sin(phi) * Math.cos(theta);
51
- const v_z = Math.sin(theta);
52
-
53
- const direction = [v_x, v_z, v_y];
54
-
55
- v3_normalize_array(direction, 0, direction, 0);
56
-
57
- sky(color, 0, direction, 0);
58
-
59
- sampler.write(i, j, color);
60
-
61
- // sampler.write(i, j, [f, f, f, 1]);
62
-
63
- }
64
- // sampler.write(i, sampler.height - 1, [f, f, f, 1]);
65
- }
66
-
67
- console.log(sampler);
68
-
69
- sampler2D2Canvas(sampler, 255, 0, view.el);
70
-
71
-
@@ -1,26 +0,0 @@
1
- /**
2
- * Render the Hosek sky into an equirectangular RGBA float buffer.
3
- *
4
- * The layout matches three.js' `equirectUv` (so the result can be used directly
5
- * as an EquirectangularReflectionMapping texture or fed to PMREMGenerator):
6
- * u = atan2(z, x) / (2pi) + 0.5
7
- * v = asin(y) / pi + 0.5
8
- * with +Y up, matching the engine convention.
9
- *
10
- * @param {number[]|Float32Array} sun direction towards the sun (engine frame, +Y up); need not be unit length
11
- * @param {number} width number of horizontal (longitude) samples
12
- * @param {number} height number of vertical (latitude) samples
13
- * @param {object} [options]
14
- * @param {number} [options.turbidity=2] atmospheric turbidity, 1..10
15
- * @param {number} [options.overcast=0] 0 = clear, 1 = fully overcast
16
- * @param {number[]|Float32Array} [options.albedo=[0,0,0]] linear ground albedo
17
- * @param {Float32Array} [options.target] optional pre-allocated buffer of length width*height*4
18
- * @returns {Float32Array} RGBA, row 0 = bottom (-Y), length width*height*4
19
- */
20
- export function render_hosek_sky_to_equirectangular(sun: number[] | Float32Array, width: number, height: number, options?: {
21
- turbidity?: number;
22
- overcast?: number;
23
- albedo?: number[] | Float32Array;
24
- target?: Float32Array;
25
- }): Float32Array;
26
- //# sourceMappingURL=render_hosek_sky_to_equirectangular.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render_hosek_sky_to_equirectangular.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/sky/hosek/render_hosek_sky_to_equirectangular.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AACH,yDAVW,MAAM,EAAE,GAAC,YAAY,SACrB,MAAM,UACN,MAAM;IAEW,SAAS,GAA1B,MAAM;IACW,QAAQ,GAAzB,MAAM;IAC0B,MAAM,GAAtC,MAAM,EAAE,GAAC,YAAY;IACE,MAAM,GAA7B,YAAY;IACV,YAAY,CAgDxB"}
@@ -1,70 +0,0 @@
1
- import { make_sky_hosek } from "../../path_tracer/make_sky_hosek.js";
2
-
3
- const TWO_PI = Math.PI * 2;
4
-
5
- /**
6
- * Render the Hosek sky into an equirectangular RGBA float buffer.
7
- *
8
- * The layout matches three.js' `equirectUv` (so the result can be used directly
9
- * as an EquirectangularReflectionMapping texture or fed to PMREMGenerator):
10
- * u = atan2(z, x) / (2pi) + 0.5
11
- * v = asin(y) / pi + 0.5
12
- * with +Y up, matching the engine convention.
13
- *
14
- * @param {number[]|Float32Array} sun direction towards the sun (engine frame, +Y up); need not be unit length
15
- * @param {number} width number of horizontal (longitude) samples
16
- * @param {number} height number of vertical (latitude) samples
17
- * @param {object} [options]
18
- * @param {number} [options.turbidity=2] atmospheric turbidity, 1..10
19
- * @param {number} [options.overcast=0] 0 = clear, 1 = fully overcast
20
- * @param {number[]|Float32Array} [options.albedo=[0,0,0]] linear ground albedo
21
- * @param {Float32Array} [options.target] optional pre-allocated buffer of length width*height*4
22
- * @returns {Float32Array} RGBA, row 0 = bottom (-Y), length width*height*4
23
- */
24
- export function render_hosek_sky_to_equirectangular(sun, width, height, options = {}) {
25
- const {
26
- turbidity = 2,
27
- overcast = 0,
28
- albedo = [0, 0, 0],
29
- target
30
- } = options;
31
-
32
- const sky = make_sky_hosek(sun, turbidity, overcast, albedo);
33
-
34
- const data = target !== undefined ? target : new Float32Array(width * height * 4);
35
-
36
- const direction = [0, 0, 0];
37
-
38
- let p = 0;
39
-
40
- for (let j = 0; j < height; j++) {
41
- const v = (j + 0.5) / height;
42
-
43
- // v = asin(y)/pi + 0.5 => y = sin((v - 0.5) * pi)
44
- const latitude = (v - 0.5) * Math.PI;
45
- const y = Math.sin(latitude);
46
- const cos_latitude = Math.cos(latitude);
47
-
48
- for (let i = 0; i < width; i++) {
49
- const u = (i + 0.5) / width;
50
-
51
- // u = atan2(z, x)/(2pi) + 0.5 => atan2(z, x) = (u - 0.5) * 2pi
52
- const longitude = (u - 0.5) * TWO_PI;
53
-
54
- direction[0] = cos_latitude * Math.cos(longitude);
55
- direction[1] = y;
56
- direction[2] = cos_latitude * Math.sin(longitude);
57
-
58
- const offset = p * 4;
59
-
60
- // writes linear RGB into data[offset .. offset + 2]
61
- sky(data, offset, direction, 0);
62
-
63
- data[offset + 3] = 1;
64
-
65
- p++;
66
- }
67
- }
68
-
69
- return data;
70
- }
@@ -1,22 +0,0 @@
1
- /**
2
- * @see https://github.com/andrewwillmott/sun-sky/blob/master/SunSky.cpp
3
- * @param {number[]} mCoeffsXYZ output, float[3][9], Hosek 9-term distribution coefficients
4
- * @param {number[]} mRadXYZ output, vec3, Overall average radiance
5
- * @param {number[]|Float32Array} sun_direction direction to the sun, engine frame (+Y up)
6
- * @param {number} turbidity should be between 1 and 10
7
- * @param {number[]|Float32Array} rgbAlbedo albedo in linear color space (make sure it's not sRGB)
8
- * @param {number} overcast
9
- */
10
- export function sky_hosek_precompute(mCoeffsXYZ: number[], mRadXYZ: number[], sun_direction: number[] | Float32Array, turbidity: number, rgbAlbedo: number[] | Float32Array, overcast: number): void;
11
- /**
12
- *
13
- * @param {number[]|Float32Array} out vec3 in RGB color space
14
- * @param {number[]|Float32Array} mCoeffsXYZ float[3][9]
15
- * @param {number[]|Float32Array} mRadXYZ vec3
16
- * @param {number[]|Float32Array} mToSun vec3, direction to the sun, engine frame (+Y up)
17
- * @param {number} direction_x
18
- * @param {number} direction_y up axis (engine +Y up)
19
- * @param {number} direction_z
20
- */
21
- export function sky_hosek_compute_irradiance_by_direction(out: number[] | Float32Array, mCoeffsXYZ: number[] | Float32Array, mRadXYZ: number[] | Float32Array, mToSun: number[] | Float32Array, direction_x: number, direction_y: number, direction_z: number): void;
22
- //# sourceMappingURL=sky_hosek_compute_irradiance_by_direction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sky_hosek_compute_irradiance_by_direction.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js"],"names":[],"mappings":"AAyNA;;;;;;;;GAQG;AACH,iDAPW,MAAM,EAAE,WACR,MAAM,EAAE,iBACR,MAAM,EAAE,GAAC,YAAY,aACrB,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,YACrB,MAAM,QAgHhB;AAGD;;;;;;;;;GASG;AACH,+DARW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,EAAE,GAAC,YAAY,UACrB,MAAM,EAAE,GAAC,YAAY,eACrB,MAAM,eACN,MAAM,eACN,MAAM,QAwChB"}
@@ -1,388 +0,0 @@
1
- import { rgb_to_xyz } from "../../../../../core/color/xyz/rgb_to_xyz.js";
2
- import { xyz_to_rgb } from "../../../../../core/color/xyz/xyz_to_rgb.js";
3
- import { v3_cos_angle } from "../../../../../core/geom/vec3/v3_cos_angle.js";
4
- import { v3_scale_array } from "../../../../../core/geom/vec3/v3_scale_array.js";
5
- import { v3_length } from "../../../../../core/geom/vec3/v3_length.js";
6
- import { clamp } from "../../../../../core/math/clamp.js";
7
- import { clamp01 } from "../../../../../core/math/clamp01.js";
8
- import { lerp } from "../../../../../core/math/lerp.js";
9
- import { kHosekCoeffsX, kHosekCoeffsY, kHosekCoeffsZ, kHosekRadX, kHosekRadY, kHosekRadZ } from "./data.js";
10
-
11
- const HALF_PI = Math.PI * 0.5;
12
-
13
-
14
- /**
15
- *
16
- * @param {number[]|Float32Array} w float[6]
17
- * @param {number[]|Float32Array} data float[6]
18
- * @param {number} data_offset
19
- * @return {number}
20
- */
21
- function EvalQuintic_2(w, data, data_offset) {
22
- return w[0] * data[data_offset + 0]
23
- + w[1] * data[data_offset + 1]
24
- + w[2] * data[data_offset + 2]
25
- + w[3] * data[data_offset + 3]
26
- + w[4] * data[data_offset + 4]
27
- + w[5] * data[data_offset + 5];
28
- }
29
-
30
- /**
31
- *
32
- * @param {number[]|Float32Array} w float[6]
33
- * @param {number[]|Float32Array} data float[6][9] flattened
34
- * @param {number} data_offset
35
- * @param {number[]|Float32Array} coeffs float[9] output is written here
36
- * @param {number} coeffs_offset
37
- */
38
- function EvalQuintic_3(w, data, data_offset, coeffs, coeffs_offset) {
39
- for (let i = 0; i < 9; i++) {
40
- coeffs[coeffs_offset + i] = w[0] * data[data_offset + 0 * 9 + i]
41
- + w[1] * data[data_offset + 1 * 9 + i]
42
- + w[2] * data[data_offset + 2 * 9 + i]
43
- + w[3] * data[data_offset + 3 * 9 + i]
44
- + w[4] * data[data_offset + 4 * 9 + i]
45
- + w[5] * data[data_offset + 5 * 9 + i];
46
- }
47
- }
48
-
49
- /**
50
- *
51
- * @param {number} s
52
- * @param {number[]|ArrayLike<number>|Float32Array} w
53
- */
54
- function FindQuinticWeights(s, w) {
55
- const s1 = s;
56
- const s2 = s1 * s1;
57
- const s3 = s1 * s2;
58
- const s4 = s2 * s2;
59
- const s5 = s2 * s3;
60
-
61
- const is1 = 1.0 - s1;
62
- const is2 = is1 * is1;
63
- const is3 = is1 * is2;
64
- const is4 = is2 * is2;
65
- const is5 = is2 * is3;
66
-
67
- w[0] = is5;
68
- w[1] = is4 * s1 * 5.0;
69
- w[2] = is3 * s2 * 10.0;
70
- w[3] = is2 * s3 * 10.0;
71
- w[4] = is1 * s4 * 5.0;
72
- w[5] = s5;
73
- }
74
-
75
- // Reusable scratch buffers for FindHosekCoeffs. Safe to share: evaluation is
76
- // synchronous and non-reentrant, and each call fully overwrites them.
77
- const quinticWeights = new Float32Array(6);
78
- const ic = new Float32Array(4 * 9);
79
-
80
- /**
81
- *
82
- * @param {number[]|Float32Array} dataset9 albedo x 2, turbidity x 10, quintics x 6, weights x 9
83
- * @param {number[]|Float32Array} datasetR albedo x 2, turbidity x 10, quintics x 6
84
- * @param {number} turbidity
85
- * @param {number} albedo
86
- * @param {number} solarElevation
87
- * @param {number[]|Float32Array} coeffs result is written here
88
- * @param {number} coeffs_offset
89
- * @return {number}
90
- * @constructor
91
- */
92
- function FindHosekCoeffs
93
- (
94
- dataset9,
95
- datasetR,
96
- turbidity,
97
- albedo,
98
- solarElevation,
99
- coeffs,
100
- coeffs_offset
101
- ) {
102
- const tbi = clamp(Math.floor(turbidity), 1, 9);
103
-
104
- const tbf = turbidity - tbi;
105
-
106
- const s = Math.cbrt(solarElevation / HALF_PI);
107
-
108
- FindQuinticWeights(s, quinticWeights);
109
-
110
- const size_set9_1 = 6 * 9;
111
- const size_set9_0 = 10 * size_set9_1;
112
- EvalQuintic_3(quinticWeights, dataset9, (tbi - 1) * size_set9_1, ic, 0);
113
- EvalQuintic_3(quinticWeights, dataset9, size_set9_0 + (tbi - 1) * size_set9_1, ic, 9);
114
- EvalQuintic_3(quinticWeights, dataset9, tbi * size_set9_1, ic, 18);
115
- EvalQuintic_3(quinticWeights, dataset9, size_set9_0 + tbi * size_set9_1, ic, 27);
116
-
117
- const size_set_R_1 = 6;
118
- const size_set_R_0 = 10 * size_set_R_1;
119
- const ir_0 = EvalQuintic_2(quinticWeights, datasetR, (tbi - 1) * size_set_R_1);
120
- const ir_1 = EvalQuintic_2(quinticWeights, datasetR, size_set_R_0 + (tbi - 1) * size_set_R_1);
121
- const ir_2 = EvalQuintic_2(quinticWeights, datasetR, tbi * size_set_R_1);
122
- const ir_3 = EvalQuintic_2(quinticWeights, datasetR, size_set_R_0 + tbi * size_set_R_1);
123
-
124
- const cw_0 = (1.0 - albedo) * (1.0 - tbf);
125
- const cw_1 = albedo * (1.0 - tbf);
126
- const cw_2 = (1.0 - albedo) * tbf;
127
- const cw_3 = albedo * tbf;
128
-
129
- for (let i = 0; i < 9; i++) {
130
- coeffs[coeffs_offset + i] = cw_0 * ic[i]
131
- + cw_1 * ic[9 + i]
132
- + cw_2 * ic[2 * 9 + i]
133
- + cw_3 * ic[3 * 9 + i];
134
- }
135
-
136
- return cw_0 * ir_0 + cw_1 * ir_1 + cw_2 * ir_2 + cw_3 * ir_3;
137
- }
138
-
139
- /**
140
- *
141
- * Hosek:
142
- * (1 + A e ^ (B / cos(t))) (1 + C e ^ (D g) + E cos(g) ^ 2 + F mieM(g, G) + H cos(t)^1/2 + (I - 1))
143
- *
144
- * These bits are the same as Preetham, but do different jobs in some cases
145
- * A: sky gradient, carries white -> blue gradient
146
- * B: sky tightness
147
- * C: sun, carries most of sun-centred blue term
148
- * D: sun tightness, higher = tighter
149
- * E: rosy hue around sun
150
- *
151
- * Hosek-specific:
152
- * F: mie term, does most of the heavy lifting for sunset glow
153
- * G: mie tuning
154
- * H: zenith gradient
155
- * I: constant term balanced with H
156
- *
157
- * Notes:
158
- * A/B still carries some of the "blue" base of sky, but much comes from C/D
159
- * C/E minimal effect in sunset situations, carry bulk of sun halo in sun-overhead
160
- * F/G sunset glow, but also takes sun halo from yellowish to white overhead
161
- * @param {number[]|Float32Array} coeffs
162
- * @param {number} coeffs_offset
163
- * @param {number} cosTheta
164
- * @param {number} gamma
165
- * @param {number} cosGamma
166
- * @return {number}
167
- * @constructor
168
- */
169
- function EvalHosekCoeffs(
170
- coeffs,
171
- coeffs_offset,
172
- cosTheta,
173
- gamma,
174
- cosGamma
175
- ) {
176
- const c_0 = coeffs[coeffs_offset + 0];
177
- const c_1 = coeffs[coeffs_offset + 1];
178
- const c_2 = coeffs[coeffs_offset + 2];
179
- const c_3 = coeffs[coeffs_offset + 3];
180
- const c_4 = coeffs[coeffs_offset + 4];
181
- const c_5 = coeffs[coeffs_offset + 5];
182
- const c_6 = coeffs[coeffs_offset + 6];
183
- const c_7 = coeffs[coeffs_offset + 7];
184
- const c_8 = coeffs[coeffs_offset + 8];
185
-
186
- // Current coeffs ordering is AB I CDEF HG
187
- // 01 2 3456 78
188
- const expM = Math.exp(c_4 * gamma); // D g
189
- const rayM = cosGamma * cosGamma; // Rayleigh scattering
190
- const mieM = (1.0 + rayM) / Math.pow((1.0 + c_8 * c_8 - 2.0 * c_8 * cosGamma), 1.5); // G
191
- const zenith = Math.sqrt(cosTheta); // vertical zenith gradient
192
-
193
- return (
194
- 1.0 + c_0 * Math.exp(c_1 / (cosTheta + 0.01)) // A, B
195
- )
196
- * (1.0
197
- + c_3 * expM // C
198
- + c_5 * rayM // E
199
- + c_6 * mieM // F
200
- + c_7 * zenith // H
201
- + (c_2 - 1.0) // I
202
- );
203
- }
204
-
205
- /**
206
- *
207
- * @param {number} thetaS
208
- * @param {number} T
209
- * @return {number}
210
- */
211
- function ZenithLuminance(thetaS, T) {
212
- const chi = (4.0 / 9.0 - T / 120.0) * (Math.PI - 2.0 * thetaS);
213
- let Lz = (4.0453 * T - 4.9710) * Math.tan(chi) - 0.2155 * T + 2.4192;
214
- Lz *= 1000.0; // conversion from kcd/m^2 to cd/m^2
215
- return Lz;
216
- }
217
-
218
- /**
219
- * @see https://github.com/andrewwillmott/sun-sky/blob/master/SunSky.cpp
220
- * @param {number[]} mCoeffsXYZ output, float[3][9], Hosek 9-term distribution coefficients
221
- * @param {number[]} mRadXYZ output, vec3, Overall average radiance
222
- * @param {number[]|Float32Array} sun_direction direction to the sun, engine frame (+Y up)
223
- * @param {number} turbidity should be between 1 and 10
224
- * @param {number[]|Float32Array} rgbAlbedo albedo in linear color space (make sure it's not sRGB)
225
- * @param {number} overcast
226
- */
227
- export function sky_hosek_precompute(
228
- mCoeffsXYZ,
229
- mRadXYZ,
230
- sun_direction,
231
- turbidity,
232
- rgbAlbedo,
233
- overcast
234
- ) {
235
-
236
- const mToSun = sun_direction;
237
-
238
- const sun_x = mToSun[0];
239
- const sun_y = mToSun[1];
240
- const sun_z = mToSun[2];
241
-
242
- // Y is up (engine convention): solar elevation is measured from the Y component.
243
- const solarElevation = sun_y > 0 ? Math.asin(sun_y) : 0;
244
-
245
- const albedo = [];
246
- rgb_to_xyz(albedo, rgbAlbedo);
247
-
248
-
249
- // Note that the hosek coefficients change with time of day, vs. Preetham where the 'upper' coefficients stay the same,
250
- // and only the scaler mPerezInvDen, consisting of time-dependent normalisation and zenith luminnce factors, changes.
251
- mRadXYZ[0] = FindHosekCoeffs(kHosekCoeffsX, kHosekRadX, turbidity, albedo[0], solarElevation, mCoeffsXYZ, 0);
252
- mRadXYZ[1] = FindHosekCoeffs(kHosekCoeffsY, kHosekRadY, turbidity, albedo[1], solarElevation, mCoeffsXYZ, 9);
253
- mRadXYZ[2] = FindHosekCoeffs(kHosekCoeffsZ, kHosekRadZ, turbidity, albedo[2], solarElevation, mCoeffsXYZ, 18);
254
-
255
- v3_scale_array(mRadXYZ, 0, mRadXYZ, 0, 683); // convert to luminance in lumens
256
-
257
-
258
- if (sun_y < 0.0) // sun below horizon?
259
- {
260
- const s = clamp01(1.0 + sun_y * 50.0); // goes from 1 to 0 as the sun sets
261
- const is = 1.0 - s;
262
-
263
- // Emulate Preetham's zenith darkening
264
- const darken = ZenithLuminance(Math.acos(sun_y), turbidity) / ZenithLuminance(HALF_PI, turbidity);
265
-
266
- // Take C/E/F which control sun term to zero
267
- for (let j = 0; j < 3; j++) {
268
- mCoeffsXYZ[j * 9 + 3] *= s;
269
- mCoeffsXYZ[j * 9 + 5] *= s;
270
- mCoeffsXYZ[j * 9 + 6] *= s;
271
-
272
- // Take horizon term H to zero, as it's an orange glow at this point
273
- mCoeffsXYZ[j * 9 + 7] *= s;
274
-
275
- // Take I term back to 1
276
- mCoeffsXYZ[j * 9 + 2] *= s;
277
- mCoeffsXYZ[j * 9 + 2] += is;
278
- }
279
-
280
- v3_scale_array(mRadXYZ, 0, mRadXYZ, 0, darken);
281
- }
282
-
283
- if (overcast !== 0.0) // Handle overcast term
284
- {
285
- const is = overcast;
286
- const s = 1.0 - overcast; // goes to 0 as we go to overcast
287
-
288
- // Hosek isn't self-normalising, unlike Preetham/CIE, which divides by PreethamLower().
289
- // Thus when we lerp to the CIE overcast model, we get some non-linearities.
290
- // We deal with this by using ratios of normalisation terms to balance.
291
- // Another difference is that Hosek is relative to the average radiance,
292
- // whereas CIE is the zenith radiance, so rather than taking the zenith
293
- // as normalising as in CIE, we average over the zenith and two horizon
294
- // points.
295
- const cosGammaZ = sun_y;
296
- const gammaZ = Math.acos(cosGammaZ);
297
- const cosGammaH = sun_z;
298
- const gammaHP = Math.acos(sun_z);
299
- const gammaHN = Math.PI - gammaHP;
300
-
301
- const sc0 = EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 1.0, gammaZ, cosGammaZ) * 2.0
302
- + EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 0.0, gammaHP, +cosGammaH)
303
- + EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 0.0, gammaHN, -cosGammaH);
304
-
305
- for (let j = 0; j < 3; j++) {
306
- // sun flare -> 0 strength/base chroma
307
- // Take C/E/F which control sun term to zero
308
- mCoeffsXYZ[j * 9 + 3] *= s;
309
- mCoeffsXYZ[j * 9 + 5] *= s;
310
- mCoeffsXYZ[j * 9 + 6] *= s;
311
-
312
- // Take H back to 0
313
- mCoeffsXYZ[j * 9 + 7] *= s;
314
-
315
- // Take I term back to 1
316
- mCoeffsXYZ[j * 9 + 2] *= s;
317
- mCoeffsXYZ[j * 9 + 2] += is;
318
-
319
- // Take A/B to CIE cloudy sky model: 4, -0.7
320
- mCoeffsXYZ[j * 9 + 0] = lerp(mCoeffsXYZ[j * 9 + 0], 4.0, is);
321
- mCoeffsXYZ[j * 9 + 1] = lerp(mCoeffsXYZ[j * 9 + 1], -0.7, is);
322
- }
323
-
324
- const sc1 = EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 1.0, gammaZ, cosGammaZ) * 2.0
325
- + EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 0.0, gammaHP, +cosGammaH)
326
- + EvalHosekCoeffs(mCoeffsXYZ, 1 * 9, 0.0, gammaHN, -cosGammaH);
327
-
328
- const rescale = sc0 / sc1;
329
- v3_scale_array(mRadXYZ, 0, mRadXYZ, 0, rescale);
330
-
331
-
332
- // move back to white point
333
- mRadXYZ[0] = lerp(mRadXYZ[0], mRadXYZ[1], is);
334
- mRadXYZ[2] = lerp(mRadXYZ[2], mRadXYZ[1], is);
335
- }
336
-
337
- }
338
-
339
-
340
- /**
341
- *
342
- * @param {number[]|Float32Array} out vec3 in RGB color space
343
- * @param {number[]|Float32Array} mCoeffsXYZ float[3][9]
344
- * @param {number[]|Float32Array} mRadXYZ vec3
345
- * @param {number[]|Float32Array} mToSun vec3, direction to the sun, engine frame (+Y up)
346
- * @param {number} direction_x
347
- * @param {number} direction_y up axis (engine +Y up)
348
- * @param {number} direction_z
349
- */
350
- export function sky_hosek_compute_irradiance_by_direction(
351
- out,
352
- mCoeffsXYZ,
353
- mRadXYZ,
354
- mToSun,
355
- direction_x,
356
- direction_y,
357
- direction_z,
358
- ) {
359
- // Normalise the view direction so cosTheta stays a true cosine even when the
360
- // caller passes a non-unit direction.
361
- const direction_length = v3_length(direction_x, direction_y, direction_z);
362
- const inv_direction_length = direction_length !== 0.0 ? 1.0 / direction_length : 0.0;
363
-
364
- let cosTheta = direction_y * inv_direction_length;
365
-
366
- // v3_cos_angle divides by both magnitudes and clamps to [-1, 1], so it
367
- // is robust to non-unit inputs and gamma = acos(cosGamma) can never be NaN.
368
- const cosGamma = v3_cos_angle(
369
- mToSun[0], mToSun[1], mToSun[2],
370
- direction_x, direction_y, direction_z
371
- );
372
- const gamma = Math.acos(cosGamma);
373
-
374
- if (cosTheta < 0.0) {
375
- // clamp angle
376
- cosTheta = 0.0;
377
- }
378
-
379
- const x = EvalHosekCoeffs(mCoeffsXYZ, 0, cosTheta, gamma, cosGamma);
380
- const y = EvalHosekCoeffs(mCoeffsXYZ, 9, cosTheta, gamma, cosGamma);
381
- const z = EvalHosekCoeffs(mCoeffsXYZ, 18, cosTheta, gamma, cosGamma);
382
-
383
- out[0] = x * mRadXYZ[0];
384
- out[1] = y * mRadXYZ[1];
385
- out[2] = z * mRadXYZ[2];
386
-
387
- xyz_to_rgb(out, out);
388
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Build the environment the engine lights with when nobody has supplied one.
3
- *
4
- * **Shade assumes global illumination**, and that is a deliberate quality decision rather than a
5
- * limitation: indirect light is on, and a scene with no environment renders unlit. So the default is
6
- * something the engine *provides*. Turning GI off is the thing that takes an explicit choice.
7
- *
8
- * The map is octahedral because that is the projection `scene.lights.environment` is sampled with,
9
- * and half-float because that is what the octahedral path is built for.
10
- *
11
- * @returns {ShadeTexture}
12
- */
13
- export function make_default_environment(): ShadeTexture;
14
- import { ShadeTexture } from "../../shade/renderer/texture/ShadeTexture.js";
15
- //# sourceMappingURL=make_default_environment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"make_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/make_default_environment.js"],"names":[],"mappings":"AA4DA;;;;;;;;;;;GAWG;AACH,4CAFa,YAAY,CAwCxB;6BAvG4B,8CAA8C"}