@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,111 @@
1
+ import { ANIMATION_CURVE_KEYFRAME_STRUCT } from "../../animation/ANIMATION_CURVE_KEYFRAME_STRUCT.js";
2
+ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
3
+ import { chunk_avboit_unlit_varyings } from "../../rasterize/native/avboit/chunk_avboit_unlit_varyings.js";
4
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
5
+ import { ShaderResourceGroupDescriptor } from "../../shader/resource/ShaderResourceGroupDescriptor.js";
6
+ import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
7
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
8
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
9
+ import { TRAIL_DESCRIPTOR, TRAIL_STATE_DESCRIPTOR } from "../data/TRAIL_DATABASE_SPEC.js";
10
+ import { TRAIL_STRUCT } from "../data/TRAIL_RECORD.js";
11
+ import { chunk_trail_knot_alpha } from "./chunk_trail_knot_alpha.js";
12
+
13
+ /**
14
+ * The frame uniform: the clock the knots' ages are counted against.
15
+ */
16
+ export const TRAIL_FRAME_STRUCT = WebGPUStruct.from({
17
+ now: u32,
18
+ }, "Trail3DFrame");
19
+
20
+ /**
21
+ * What the trails' vertex stage reads, the same group in the splat and the draw: the camera, the
22
+ * clock, the frame's segment list, the knots, the trail and state tables and the fade keys.
23
+ *
24
+ * @type {ShaderResourceGroupDescriptor}
25
+ */
26
+ export const TRAIL_VERTEX_GROUP = new ShaderResourceGroupDescriptor();
27
+
28
+ TRAIL_VERTEX_GROUP
29
+ .addUniform("camera", CAMERA_UNIFORM_STRUCT)
30
+ .addUniform("trail_frame", TRAIL_FRAME_STRUCT)
31
+ .addStorageBuffer("segment_list", WebGPUArray.u32, false)
32
+ .addStorageBuffer("knots", WebGPUArray.u32, false)
33
+ .addStorageBuffer("trail_database", WebGPUArray.u32, false)
34
+ .addStorageBuffer("fade_keys", WebGPUArray.from(ANIMATION_CURVE_KEYFRAME_STRUCT), false);
35
+
36
+ /**
37
+ * `trail_vertex(vertex_index, instance_index) -> AVBOITUnlitVaryings`: one vertex of one segment of a
38
+ * trail's tube, extruded where the vertex shader runs instead of on the CPU.
39
+ *
40
+ * The instance is the segment: `segment_list[instance_index]` is its head-ward knot, and the knot
41
+ * names its trail, whose record and state it reads. `trail_ring_vertex(record, head, live, head_ward,
42
+ * vertex_index, now)` is the vertex itself: `vertex_index` runs over the two rings of `radial + 1`
43
+ * vertices, the head-ward ring first; the seam vertex closes each ring on its first.
44
+ *
45
+ * A ring vertex sits at its knot's centre displaced by `cos θ · normal + sin θ · binormal`, half the
46
+ * knot's thickness out, at `θ = 2π · r / radial`. Its colour is the trail's; its alpha is the knot's (`trail_knot_alpha`), clamped to 0..1 and
47
+ * split between the tube's two faces as `1 - √(1 - α)`, because a line of sight through the closed tube
48
+ * crosses two faces and the two together must cover `α`.
49
+ *
50
+ * The enclosing shader binds {@link TRAIL_VERTEX_GROUP}.
51
+ *
52
+ * @type {CodeChunk}
53
+ */
54
+ export const chunk_trail_vertex = CodeChunk.from(
55
+ //language=WGSL
56
+ `
57
+ const TRAIL_TWO_PI : f32 = 6.283185307179586;
58
+
59
+ fn trail_vertex(vertex_index : u32, instance_index : u32) -> AVBOITUnlitVaryings {
60
+ let head_ward = segment_list[instance_index];
61
+ let row = trail_knot_read(head_ward).trail;
62
+
63
+ let record = ${TRAIL_DESCRIPTOR.marshalling_method_read}(&trail_database, row);
64
+ let state = ${TRAIL_STATE_DESCRIPTOR.marshalling_method_read}(&trail_database, row);
65
+
66
+ return trail_ring_vertex(record, state.head, state.live, head_ward, vertex_index, trail_frame.now);
67
+ }
68
+
69
+ fn trail_ring_vertex(
70
+ record : ${TRAIL_STRUCT.wgsl_ref},
71
+ head : u32,
72
+ live : u32,
73
+ head_ward : u32,
74
+ vertex_index : u32,
75
+ now : u32,
76
+ ) -> AVBOITUnlitVaryings {
77
+ let ring_size = record.radial + 1u;
78
+ let ring = vertex_index / ring_size;
79
+ let around = vertex_index % ring_size;
80
+
81
+ var address = head_ward;
82
+
83
+ if (ring != 0u) {
84
+ address = record.knot_base + (head_ward - record.knot_base + 1u) % record.knot_count;
85
+ }
86
+
87
+ let knot = trail_knot_read(address);
88
+
89
+ let alpha = clamp(trail_knot_alpha(record, head, live, address, now), 0.0, 1.0);
90
+
91
+ let angle = f32(around) / f32(record.radial) * TRAIL_TWO_PI;
92
+ let radial = cos(angle) * knot.normal + sin(angle) * knot.binormal;
93
+ let world = vec4<f32>(knot.position + radial * (knot.thickness * 0.5), 1.0);
94
+
95
+ var out : AVBOITUnlitVaryings;
96
+
97
+ out.clip = camera.view_projection_matrix * world;
98
+ // half the optical depth: the face behind this one carries the other half
99
+ out.color = vec4<f32>(record.color.rgb, 1.0 - sqrt(1.0 - alpha));
100
+ // the camera looks down -Z, so depth is -z
101
+ out.view_depth = -(camera.view_matrix * world).z;
102
+
103
+ return out;
104
+ }
105
+ `, [
106
+ chunk_avboit_unlit_varyings,
107
+ TRAIL_DESCRIPTOR.chunk_read,
108
+ TRAIL_STATE_DESCRIPTOR.chunk_read,
109
+ chunk_trail_knot_alpha,
110
+ ]
111
+ );
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Bind group of {@link TRAIL_VERTEX_GROUP} in both trail pipelines.
3
+ * @type {number}
4
+ */
5
+ export const TRAIL_AVBOIT_BIND_GROUP_VERTEX: number;
6
+ /**
7
+ * The trails' AVBOIT splat: the tube extruded in the vertex stage (`chunk_trail_vertex`), into the unlit
8
+ * splat's fragment stage, the one the dynamic meshes splat through.
9
+ */
10
+ export const TRAIL_AVBOIT_SPLAT_PIPELINE: import("../../../descriptor/pipeline/render/RenderPipelineDescriptor.js").RenderPipelineDescriptor;
11
+ export const TRAIL_AVBOIT_SPLAT_RESOURCES: ShaderResourceSetDescriptor;
12
+ /** The assembled splat shader, for the validity tier. */
13
+ export const shader_trail_avboit_splat: ShaderDescriptor;
14
+ /**
15
+ * The trails' AVBOIT draw: the tube extruded in the vertex stage, into the unlit draw's fragment stage,
16
+ * the one the dynamic meshes draw through.
17
+ */
18
+ export const TRAIL_AVBOIT_DRAW_PIPELINE: import("../../../descriptor/pipeline/render/RenderPipelineDescriptor.js").RenderPipelineDescriptor;
19
+ export const TRAIL_AVBOIT_DRAW_RESOURCES: ShaderResourceSetDescriptor;
20
+ /** The assembled draw shader, for the validity tier. */
21
+ export const shader_trail_avboit_draw: ShaderDescriptor;
22
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
23
+ import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
24
+ //# sourceMappingURL=shader_trail_avboit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_trail_avboit.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/trails/shaders/shader_trail_avboit.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH,6CAFU,MAAM,CAEgC;AA0BhD;;;GAGG;AACH,6IAIG;AAEH,uEAA4D;AAE5D,yDAAyD;AACzD,yDAA0D;AAa1D;;;GAGG;AACH,4IAIG;AAEH,sEAA0D;AAE1D,wDAAwD;AACxD,wDAAwD;4CAzEZ,sDAAsD;iCACjE,kCAAkC"}
@@ -0,0 +1,78 @@
1
+ import { avboit_unlit_draw_pipeline, AVBOIT_UNLIT_DRAW_PASS_GROUP, chunk_avboit_unlit_draw_fragment } from "../../rasterize/native/avboit/avboit_unlit_draw.js";
2
+ import { avboit_unlit_splat_pipeline, AVBOIT_UNLIT_SPLAT_PASS_GROUP, chunk_avboit_unlit_splat_fragment } from "../../rasterize/native/avboit/avboit_unlit_splat.js";
3
+ import { AVBOIT_SPLAT_VOLUME_GROUP } from "../../rasterize/native/avboit/shader_avboit_splat.js";
4
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
5
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
6
+ import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
7
+ import { chunk_trail_vertex, TRAIL_VERTEX_GROUP } from "./chunk_trail_vertex.js";
8
+
9
+ /**
10
+ * Bind group of {@link TRAIL_VERTEX_GROUP} in both trail pipelines.
11
+ * @type {number}
12
+ */
13
+ export const TRAIL_AVBOIT_BIND_GROUP_VERTEX = 0;
14
+
15
+ const vertex_stage = CodeChunk.from(
16
+ //language=WGSL
17
+ `
18
+ @vertex
19
+ fn vs_main(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32) -> AVBOITUnlitVaryings {
20
+ return trail_vertex(vi, ii);
21
+ }
22
+ `, [
23
+ chunk_trail_vertex,
24
+ ]
25
+ );
26
+
27
+ const splat_resources = new ShaderResourceSetDescriptor();
28
+
29
+ splat_resources.addGroup(TRAIL_VERTEX_GROUP);
30
+ splat_resources.addGroup(AVBOIT_UNLIT_SPLAT_PASS_GROUP);
31
+ splat_resources.addGroup(AVBOIT_SPLAT_VOLUME_GROUP);
32
+
33
+ const splat_descriptor = ShaderDescriptor.from({
34
+ label: "Trail AVBOIT Splat",
35
+ body: CodeChunk.from("", [vertex_stage, chunk_avboit_unlit_splat_fragment]),
36
+ resources: splat_resources,
37
+ });
38
+
39
+ /**
40
+ * The trails' AVBOIT splat: the tube extruded in the vertex stage (`chunk_trail_vertex`), into the unlit
41
+ * splat's fragment stage, the one the dynamic meshes splat through.
42
+ */
43
+ export const TRAIL_AVBOIT_SPLAT_PIPELINE = avboit_unlit_splat_pipeline({
44
+ label: "Trail AVBOIT Splat",
45
+ resources: splat_resources,
46
+ source: splat_descriptor.source,
47
+ });
48
+
49
+ export const TRAIL_AVBOIT_SPLAT_RESOURCES = splat_resources;
50
+
51
+ /** The assembled splat shader, for the validity tier. */
52
+ export const shader_trail_avboit_splat = splat_descriptor;
53
+
54
+ const draw_resources = new ShaderResourceSetDescriptor();
55
+
56
+ draw_resources.addGroup(TRAIL_VERTEX_GROUP);
57
+ draw_resources.addGroup(AVBOIT_UNLIT_DRAW_PASS_GROUP);
58
+
59
+ const draw_descriptor = ShaderDescriptor.from({
60
+ label: "Trail AVBOIT Draw",
61
+ body: CodeChunk.from("", [vertex_stage, chunk_avboit_unlit_draw_fragment]),
62
+ resources: draw_resources,
63
+ });
64
+
65
+ /**
66
+ * The trails' AVBOIT draw: the tube extruded in the vertex stage, into the unlit draw's fragment stage,
67
+ * the one the dynamic meshes draw through.
68
+ */
69
+ export const TRAIL_AVBOIT_DRAW_PIPELINE = avboit_unlit_draw_pipeline({
70
+ label: "Trail AVBOIT Draw",
71
+ resources: draw_resources,
72
+ source: draw_descriptor.source,
73
+ });
74
+
75
+ export const TRAIL_AVBOIT_DRAW_RESOURCES = draw_resources;
76
+
77
+ /** The assembled draw shader, for the validity tier. */
78
+ export const shader_trail_avboit_draw = draw_descriptor;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Threads per workgroup: the group size `shader_prefix_sum_to_command` sizes the dispatch for.
3
+ * @type {number}
4
+ */
5
+ export const TRAIL_SEGMENTS_WORKGROUP_SIZE: number;
6
+ export const TRAIL_SEGMENTS_SETTINGS: WebGPUStruct;
7
+ /**
8
+ * The trails' AVBOIT occupancy and their draw lists, per view: a thread per live segment of every
9
+ * trail, its trail found by lower bound over the frame's sums of live segments.
10
+ *
11
+ * A segment whose two knots have both faded, or whose capsule — the two centres, padded by the wider
12
+ * ring's radius — misses the view frustum, does nothing (`trail_segment_bounds`). A visible one marks the depth slices its box
13
+ * spans (`aabb3_view_depth_range`, `avboit_occupancy_mark`, the arithmetic the other channels' boxes
14
+ * go through), and appends its head-ward knot's address to its trail's draw class's list
15
+ * (`subgroup_keyed_append`, one atomic per class a subgroup holds). `class_counts` starts each class's
16
+ * counter at the class's region of `segment_list`, so the place handed back is where to write.
17
+ *
18
+ * @type {ComputeShader}
19
+ */
20
+ export const shader_trail_avboit_segments: ComputeShader;
21
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
22
+ import { ComputeShader } from "../../shader/ComputeShader.js";
23
+ //# sourceMappingURL=shader_trail_avboit_segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_trail_avboit_segments.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,4CAFU,MAAM,CAE+D;AAE/E,mDAK8B;AA6E9B;;;;;;;;;;;;GAYG;AACH,2CAFU,aAAa,CAMpB;6BA7G0B,mCAAmC;8BAJlC,+BAA+B"}
@@ -0,0 +1,130 @@
1
+ import { ANIMATION_CURVE_KEYFRAME_STRUCT } from "../../animation/ANIMATION_CURVE_KEYFRAME_STRUCT.js";
2
+ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
3
+ import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
4
+ import { AVBOIT_OCCUPANCY_WORDS } from "../../rasterize/native/avboit/AVBOIT_CONSTANTS.js";
5
+ import { chunk_avboit_occupancy_mark } from "../../rasterize/native/avboit/chunk_avboit_occupancy_mark.js";
6
+ import { AABB3_STRUCT } from "../../shader/chunk/geometry/aabb3/AABB3_STRUCT.js";
7
+ import { chunk_aabb3_intersects_frustum } from "../../shader/chunk/geometry/aabb3/chunk_aabb3_intersects_frustum.js";
8
+ import { chunk_aabb3_view_depth_range } from "../../shader/chunk/geometry/aabb3/chunk_aabb3_view_depth_range.js";
9
+ import { chunk_folded_workgroup_index } from "../../shader/chunk/grid/chunk_folded_workgroup_index.js";
10
+ import { chunk_lower_bound_branchless } from "../../shader/chunk/math/chunk_lower_bound_branchless.js";
11
+ import {
12
+ chunk_subgroup_keyed_append,
13
+ SUBGROUP_KEYED_APPEND_NONE
14
+ } from "../../shader/chunk/subgroup/chunk_subgroup_keyed_append.js";
15
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
16
+ import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
17
+ import { ComputeShader } from "../../shader/ComputeShader.js";
18
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
19
+ import { atomic_u32, u32, vec3f } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
20
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
21
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
22
+ import { TRAIL_DESCRIPTOR, TRAIL_STATE_DESCRIPTOR } from "../data/TRAIL_DATABASE_SPEC.js";
23
+ import { chunk_trail_segment } from "./chunk_trail_segment.js";
24
+
25
+ /**
26
+ * Threads per workgroup: the group size `shader_prefix_sum_to_command` sizes the dispatch for.
27
+ * @type {number}
28
+ */
29
+ export const TRAIL_SEGMENTS_WORKGROUP_SIZE = COMPUTE_SHADER_DEFAULT_GROUP_SIZE;
30
+
31
+ export const TRAIL_SEGMENTS_SETTINGS = WebGPUStruct.from({
32
+ /** the frame's AVBOIT depth curve */
33
+ cluster_parameters: vec3f,
34
+ /** the clock, in ticks */
35
+ now: u32,
36
+ }, "Trail3DSegmentsSettings");
37
+
38
+ const resources = new ShaderResourceSetDescriptor();
39
+
40
+ resources.setImmediate("settings", TRAIL_SEGMENTS_SETTINGS);
41
+
42
+ resources.createGroup()
43
+ .addUniform("camera", CAMERA_UNIFORM_STRUCT)
44
+ .addStorageBuffer("trail_database", WebGPUArray.u32, false)
45
+ .addStorageBuffer("knots", WebGPUArray.u32, false)
46
+ .addStorageBuffer("fade_keys", WebGPUArray.from(ANIMATION_CURVE_KEYFRAME_STRUCT), false)
47
+ .addStorageBuffer("segment_sums", COLLECTION_U32_STRUCT_READ, false)
48
+ .addStorageBuffer("class_counts", WebGPUArray.from(atomic_u32), true)
49
+ .addStorageBuffer("segment_list", WebGPUArray.u32, true)
50
+ .addStorageBuffer("occupancy", WebGPUArray.from(atomic_u32, AVBOIT_OCCUPANCY_WORDS), true);
51
+
52
+ const body = CodeChunk.from(
53
+ //language=WGSL
54
+ `
55
+ @compute @workgroup_size(${TRAIL_SEGMENTS_WORKGROUP_SIZE}, 1, 1)
56
+ fn main(
57
+ @builtin(workgroup_id) wg_id : vec3<u32>,
58
+ @builtin(local_invocation_index) local_id : u32,
59
+ ) {
60
+ let i = folded_workgroup_index(wg_id) * ${TRAIL_SEGMENTS_WORKGROUP_SIZE}u + local_id;
61
+ let rows = segment_sums.count;
62
+
63
+ // every lane reaches the append below; one with no visible segment appends nothing
64
+ var key = ${SUBGROUP_KEYED_APPEND_NONE}u;
65
+ var address = 0u;
66
+
67
+ if (rows > 0u && i < segment_sums.elements[rows - 1u]) {
68
+ let row = lower_bound_branchless(&segment_sums.elements, i + 1u, rows);
69
+
70
+ var first = 0u;
71
+
72
+ if (row > 0u) {
73
+ first = segment_sums.elements[row - 1u];
74
+ }
75
+
76
+ let segment = i - first;
77
+
78
+ let record = ${TRAIL_DESCRIPTOR.marshalling_method_read}(&trail_database, row);
79
+ let state = ${TRAIL_STATE_DESCRIPTOR.marshalling_method_read}(&trail_database, row);
80
+
81
+ var box : ${AABB3_STRUCT.wgsl_ref};
82
+
83
+ if (trail_segment_bounds(record, state.head, state.live, segment, settings.now, &box)
84
+ && aabb3_intersects_frustum(box, camera.frustum)) {
85
+ let range = aabb3_view_depth_range(box, camera.view_matrix);
86
+
87
+ avboit_occupancy_mark(range.x, range.y, camera.clip_near_far.x, settings.cluster_parameters);
88
+
89
+ key = record.draw_class;
90
+ address = trail_knot_address(record, state.head, segment);
91
+ }
92
+ }
93
+
94
+ let place = subgroup_keyed_append(&class_counts, key);
95
+
96
+ if (key != ${SUBGROUP_KEYED_APPEND_NONE}u) {
97
+ segment_list[place] = address;
98
+ }
99
+ }
100
+ `, [
101
+ TRAIL_DESCRIPTOR.chunk_read,
102
+ TRAIL_STATE_DESCRIPTOR.chunk_read,
103
+ AABB3_STRUCT.declaration_chunk,
104
+ chunk_aabb3_intersects_frustum,
105
+ chunk_aabb3_view_depth_range,
106
+ chunk_avboit_occupancy_mark,
107
+ chunk_folded_workgroup_index,
108
+ chunk_lower_bound_branchless,
109
+ chunk_subgroup_keyed_append,
110
+ chunk_trail_segment,
111
+ ]);
112
+
113
+ /**
114
+ * The trails' AVBOIT occupancy and their draw lists, per view: a thread per live segment of every
115
+ * trail, its trail found by lower bound over the frame's sums of live segments.
116
+ *
117
+ * A segment whose two knots have both faded, or whose capsule — the two centres, padded by the wider
118
+ * ring's radius — misses the view frustum, does nothing (`trail_segment_bounds`). A visible one marks the depth slices its box
119
+ * spans (`aabb3_view_depth_range`, `avboit_occupancy_mark`, the arithmetic the other channels' boxes
120
+ * go through), and appends its head-ward knot's address to its trail's draw class's list
121
+ * (`subgroup_keyed_append`, one atomic per class a subgroup holds). `class_counts` starts each class's
122
+ * counter at the class's region of `segment_list`, so the place handed back is where to write.
123
+ *
124
+ * @type {ComputeShader}
125
+ */
126
+ export const shader_trail_avboit_segments = ComputeShader.from({
127
+ label: "Trail AVBOIT Segments",
128
+ resources,
129
+ body,
130
+ });
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Words of one indexed indirect draw: index count, instance count, first index, base vertex, first
3
+ * instance — `drawIndexedIndirect`'s layout.
4
+ * @type {number}
5
+ */
6
+ export const TRAIL_DRAW_ARGS_WORDS: number;
7
+ /**
8
+ * Threads per workgroup; one draw class each.
9
+ * @type {number}
10
+ */
11
+ export const TRAIL_DRAW_ARGS_WORKGROUP_SIZE: number;
12
+ /**
13
+ * One draw class as the args pass reads it: its radial count and where its region of the segment list
14
+ * starts.
15
+ */
16
+ export const TRAIL_DRAW_CLASS_STRUCT: WebGPUStruct;
17
+ export const TRAIL_DRAW_ARGS_SETTINGS: WebGPUStruct;
18
+ /**
19
+ * The trails' indexed indirect draws, one per draw class: `6 × radial` indices from the class's static
20
+ * index buffer, an instance per segment the segments pass appended to the class's list, and the
21
+ * instances starting at the class's region of that list (`first_instance`). Written by a pass of its
22
+ * own, so the render passes that draw through it bind it read-only.
23
+ *
24
+ * @type {ComputeShader}
25
+ */
26
+ export const shader_trail_draw_args: ComputeShader;
27
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
28
+ import { ComputeShader } from "../../shader/ComputeShader.js";
29
+ //# sourceMappingURL=shader_trail_draw_args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_trail_draw_args.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/trails/shaders/shader_trail_draw_args.js"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,6CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,mDAGuB;AAEvB,oDAE8B;AAkC9B;;;;;;;GAOG;AACH,qCAFU,aAAa,CAMpB;6BAxE0B,mCAAmC;8BAJlC,+BAA+B"}
@@ -0,0 +1,78 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { ComputeShader } from "../../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
5
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
6
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
7
+
8
+ /**
9
+ * Words of one indexed indirect draw: index count, instance count, first index, base vertex, first
10
+ * instance — `drawIndexedIndirect`'s layout.
11
+ * @type {number}
12
+ */
13
+ export const TRAIL_DRAW_ARGS_WORDS = 5;
14
+
15
+ /**
16
+ * Threads per workgroup; one draw class each.
17
+ * @type {number}
18
+ */
19
+ export const TRAIL_DRAW_ARGS_WORKGROUP_SIZE = 64;
20
+
21
+ /**
22
+ * One draw class as the args pass reads it: its radial count and where its region of the segment list
23
+ * starts.
24
+ */
25
+ export const TRAIL_DRAW_CLASS_STRUCT = WebGPUStruct.from({
26
+ radial: u32,
27
+ region: u32,
28
+ }, "Trail3DDrawClass");
29
+
30
+ export const TRAIL_DRAW_ARGS_SETTINGS = WebGPUStruct.from({
31
+ class_count: u32,
32
+ }, "Trail3DDrawArgsSettings");
33
+
34
+ const resources = new ShaderResourceSetDescriptor();
35
+
36
+ resources.setImmediate("settings", TRAIL_DRAW_ARGS_SETTINGS);
37
+
38
+ resources.createGroup()
39
+ .addStorageBuffer("class_counts", WebGPUArray.u32, false)
40
+ .addStorageBuffer("classes", WebGPUArray.from(TRAIL_DRAW_CLASS_STRUCT), false)
41
+ .addStorageBuffer("args", WebGPUArray.u32, true);
42
+
43
+ const body = CodeChunk.from(
44
+ //language=WGSL
45
+ `
46
+ @compute @workgroup_size(${TRAIL_DRAW_ARGS_WORKGROUP_SIZE}, 1, 1)
47
+ fn main(@builtin(global_invocation_id) id : vec3<u32>) {
48
+ let c = id.x;
49
+
50
+ if (c >= settings.class_count) {
51
+ return;
52
+ }
53
+
54
+ let draw_class = classes[c];
55
+ let at = c * ${TRAIL_DRAW_ARGS_WORDS}u;
56
+
57
+ // a segment is an instance: the indices of two rings, the instances the segments pass appended
58
+ args[at] = 6u * draw_class.radial;
59
+ args[at + 1u] = class_counts[c] - draw_class.region;
60
+ args[at + 2u] = 0u;
61
+ args[at + 3u] = 0u;
62
+ args[at + 4u] = draw_class.region;
63
+ }
64
+ `);
65
+
66
+ /**
67
+ * The trails' indexed indirect draws, one per draw class: `6 × radial` indices from the class's static
68
+ * index buffer, an instance per segment the segments pass appended to the class's list, and the
69
+ * instances starting at the class's region of that list (`first_instance`). Written by a pass of its
70
+ * own, so the render passes that draw through it bind it read-only.
71
+ *
72
+ * @type {ComputeShader}
73
+ */
74
+ export const shader_trail_draw_args = ComputeShader.from({
75
+ label: "Trail Draw Args",
76
+ resources,
77
+ body,
78
+ });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Threads per workgroup; a workgroup seeds one trail, each thread a stride of its knots. A ring of
3
+ * 1,024 knots is 16 a thread.
4
+ * @type {number}
5
+ */
6
+ export const TRAIL_SEED_WORKGROUP_SIZE: number;
7
+ export const TRAIL_SEED_SETTINGS: WebGPUStruct;
8
+ /**
9
+ * Seed the trails asked for this frame: a workgroup per row of `seeds`, each thread a stride of the
10
+ * trail's knots (`trail_seed_knot`), then its state (`trail_seed_state`), every knot collapsed onto the
11
+ * head where the first update will put it (`trail_head_world`).
12
+ *
13
+ * @type {ComputeShader}
14
+ */
15
+ export const shader_trail_seed: ComputeShader;
16
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
17
+ import { ComputeShader } from "../../shader/ComputeShader.js";
18
+ //# sourceMappingURL=shader_trail_seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_trail_seed.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/trails/shaders/shader_trail_seed.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wCAFU,MAAM,CAE4B;AAE5C,+CAG0B;AA+C1B;;;;;;GAMG;AACH,gCAFU,aAAa,CAMpB;6BAxE0B,mCAAmC;8BAJlC,+BAA+B"}
@@ -0,0 +1,79 @@
1
+ import { chunk_scene_database_access } from "../../scene/chunk_scene_database_access.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import { ComputeShader } from "../../shader/ComputeShader.js";
4
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
5
+ import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
6
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
7
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
8
+ import { TRAIL_DESCRIPTOR, TRAIL_STATE_DESCRIPTOR } from "../data/TRAIL_DATABASE_SPEC.js";
9
+ import { chunk_trail_seed } from "./chunk_trail_seed.js";
10
+
11
+ /**
12
+ * Threads per workgroup; a workgroup seeds one trail, each thread a stride of its knots. A ring of
13
+ * 1,024 knots is 16 a thread.
14
+ * @type {number}
15
+ */
16
+ export const TRAIL_SEED_WORKGROUP_SIZE = 64;
17
+
18
+ export const TRAIL_SEED_SETTINGS = WebGPUStruct.from({
19
+ /** the clock, in ticks */
20
+ now: u32,
21
+ }, "Trail3DSeedSettings");
22
+
23
+ const STATE = TRAIL_STATE_DESCRIPTOR;
24
+
25
+ const resources = new ShaderResourceSetDescriptor();
26
+
27
+ resources.setImmediate("settings", TRAIL_SEED_SETTINGS);
28
+
29
+ resources.createGroup()
30
+ .addStorageBuffer("trail_database", WebGPUArray.u32, true)
31
+ .addStorageBuffer("scene_database", WebGPUArray.u32, false)
32
+ .addStorageBuffer("knots", WebGPUArray.u32, true)
33
+ .addStorageBuffer("seeds", WebGPUArray.u32, false);
34
+
35
+ const body = CodeChunk.from(
36
+ //language=WGSL
37
+ `
38
+ @compute @workgroup_size(${TRAIL_SEED_WORKGROUP_SIZE}, 1, 1)
39
+ fn main(
40
+ @builtin(workgroup_id) wg_id : vec3<u32>,
41
+ @builtin(local_invocation_index) local_id : u32,
42
+ ) {
43
+ let row = seeds[wg_id.x];
44
+ let record = ${TRAIL_DESCRIPTOR.marshalling_method_read_rw}(&trail_database, row);
45
+
46
+ let head = trail_head_world(scene_read_node(&scene_database, record.node).global, record.offset);
47
+
48
+ for (var i = local_id; i < record.knot_count; i = i + ${TRAIL_SEED_WORKGROUP_SIZE}u) {
49
+ trail_seed_knot(record, row, i, head, settings.now);
50
+ }
51
+
52
+ if (local_id == 0u) {
53
+ var state = ${STATE.marshalling_method_read_rw}(&trail_database, row);
54
+
55
+ trail_seed_state(record, &state, settings.now);
56
+
57
+ ${STATE.marshalling_method_write}(&trail_database, row, state);
58
+ }
59
+ }
60
+ `, [
61
+ TRAIL_DESCRIPTOR.chunk_read_rw,
62
+ STATE.chunk_read_rw,
63
+ STATE.chunk_write,
64
+ chunk_scene_database_access,
65
+ chunk_trail_seed,
66
+ ]);
67
+
68
+ /**
69
+ * Seed the trails asked for this frame: a workgroup per row of `seeds`, each thread a stride of the
70
+ * trail's knots (`trail_seed_knot`), then its state (`trail_seed_state`), every knot collapsed onto the
71
+ * head where the first update will put it (`trail_head_world`).
72
+ *
73
+ * @type {ComputeShader}
74
+ */
75
+ export const shader_trail_seed = ComputeShader.from({
76
+ label: "Trail Seed",
77
+ resources,
78
+ body,
79
+ });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Threads per workgroup; one trail row each. The page iterator wants a multiple of 32.
3
+ * @type {number}
4
+ */
5
+ export const TRAIL_UPDATE_WORKGROUP_SIZE: number;
6
+ export const TRAIL_UPDATE_SETTINGS: WebGPUStruct;
7
+ /**
8
+ * One frame of every trail: a thread per row of the trail table, through the table's page iterator.
9
+ * Each reads its entity's world matrix from the scene database — the hierarchy has composed this
10
+ * frame's — runs `trail_update`, writes its state back, and writes how many of its segments can be
11
+ * visible into `live_segments`, the list the scan sums.
12
+ *
13
+ * A row whose state has not been seeded for its record's epoch writes zero and waits for its seed.
14
+ *
15
+ * @type {ComputeShader}
16
+ */
17
+ export const shader_trail_update: ComputeShader;
18
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
19
+ import { ComputeShader } from "../../shader/ComputeShader.js";
20
+ //# sourceMappingURL=shader_trail_update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_trail_update.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/trails/shaders/shader_trail_update.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,0CAFU,MAAM,CAE8B;AAK9C,iDAK4B;AA6D5B;;;;;;;;;GASG;AACH,kCAFU,aAAa,CAMpB;6BA7F0B,mCAAmC;8BAJlC,+BAA+B"}