@luma.gl/shaders 0.0.0-stage → 10.0.0-alpha.11

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 (765) hide show
  1. package/LICENSE +38 -0
  2. package/README.md +25 -2
  3. package/dist/dist.dev.js +21598 -0
  4. package/dist/dist.min.js +13439 -0
  5. package/dist/glsl.cjs +33 -0
  6. package/dist/glsl.cjs.map +6 -0
  7. package/dist/glsl.d.ts +6 -0
  8. package/dist/glsl.d.ts.map +1 -0
  9. package/dist/glsl.js +7 -0
  10. package/dist/glsl.js.map +1 -0
  11. package/dist/index.cjs +278 -0
  12. package/dist/index.cjs.map +6 -0
  13. package/dist/index.d.ts +108 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +74 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/color/normalize-byte-colors.cjs +50 -0
  18. package/dist/lib/color/normalize-byte-colors.d.ts +23 -0
  19. package/dist/lib/color/normalize-byte-colors.d.ts.map +1 -0
  20. package/dist/lib/color/normalize-byte-colors.js +42 -0
  21. package/dist/lib/color/normalize-byte-colors.js.map +1 -0
  22. package/dist/lib/filters/prop-types.cjs +90 -0
  23. package/dist/lib/filters/prop-types.d.ts +44 -0
  24. package/dist/lib/filters/prop-types.d.ts.map +1 -0
  25. package/dist/lib/filters/prop-types.js +96 -0
  26. package/dist/lib/filters/prop-types.js.map +1 -0
  27. package/dist/lib/glsl-shader-assembler.cjs +50 -0
  28. package/dist/lib/glsl-shader-assembler.d.ts +19 -0
  29. package/dist/lib/glsl-shader-assembler.d.ts.map +1 -0
  30. package/dist/lib/glsl-shader-assembler.js +29 -0
  31. package/dist/lib/glsl-shader-assembler.js.map +1 -0
  32. package/dist/lib/glsl-utils/get-shader-info.cjs +52 -0
  33. package/dist/lib/glsl-utils/get-shader-info.d.ts +9 -0
  34. package/dist/lib/glsl-utils/get-shader-info.d.ts.map +1 -0
  35. package/dist/lib/glsl-utils/get-shader-info.js +33 -0
  36. package/dist/lib/glsl-utils/get-shader-info.js.map +1 -0
  37. package/dist/lib/glsl-utils/shader-utils.cjs +126 -0
  38. package/dist/lib/glsl-utils/shader-utils.d.ts +23 -0
  39. package/dist/lib/glsl-utils/shader-utils.d.ts.map +1 -0
  40. package/dist/lib/glsl-utils/shader-utils.js +92 -0
  41. package/dist/lib/glsl-utils/shader-utils.js.map +1 -0
  42. package/dist/lib/preprocessor/preprocessor.cjs +128 -0
  43. package/dist/lib/preprocessor/preprocessor.d.ts +15 -0
  44. package/dist/lib/preprocessor/preprocessor.d.ts.map +1 -0
  45. package/dist/lib/preprocessor/preprocessor.js +120 -0
  46. package/dist/lib/preprocessor/preprocessor.js.map +1 -0
  47. package/dist/lib/shader-assembler-base.cjs +132 -0
  48. package/dist/lib/shader-assembler-base.d.ts +51 -0
  49. package/dist/lib/shader-assembler-base.d.ts.map +1 -0
  50. package/dist/lib/shader-assembler-base.js +127 -0
  51. package/dist/lib/shader-assembler-base.js.map +1 -0
  52. package/dist/lib/shader-assembler.cjs +33 -0
  53. package/dist/lib/shader-assembler.d.ts +4 -0
  54. package/dist/lib/shader-assembler.d.ts.map +1 -0
  55. package/dist/lib/shader-assembler.js +7 -0
  56. package/dist/lib/shader-assembler.js.map +1 -0
  57. package/dist/lib/shader-assembly/assemble-glsl-shaders.cjs +181 -0
  58. package/dist/lib/shader-assembly/assemble-glsl-shaders.d.ts +70 -0
  59. package/dist/lib/shader-assembly/assemble-glsl-shaders.d.ts.map +1 -0
  60. package/dist/lib/shader-assembly/assemble-glsl-shaders.js +208 -0
  61. package/dist/lib/shader-assembly/assemble-glsl-shaders.js.map +1 -0
  62. package/dist/lib/shader-assembly/assemble-shaders.cjs +42 -0
  63. package/dist/lib/shader-assembly/assemble-shaders.d.ts +10 -0
  64. package/dist/lib/shader-assembly/assemble-shaders.d.ts.map +1 -0
  65. package/dist/lib/shader-assembly/assemble-shaders.js +10 -0
  66. package/dist/lib/shader-assembly/assemble-shaders.js.map +1 -0
  67. package/dist/lib/shader-assembly/assemble-wgsl-shaders.cjs +498 -0
  68. package/dist/lib/shader-assembly/assemble-wgsl-shaders.d.ts +70 -0
  69. package/dist/lib/shader-assembly/assemble-wgsl-shaders.d.ts.map +1 -0
  70. package/dist/lib/shader-assembly/assemble-wgsl-shaders.js +480 -0
  71. package/dist/lib/shader-assembly/assemble-wgsl-shaders.js.map +1 -0
  72. package/dist/lib/shader-assembly/platform-defines.cjs +79 -0
  73. package/dist/lib/shader-assembly/platform-defines.d.ts +4 -0
  74. package/dist/lib/shader-assembly/platform-defines.d.ts.map +1 -0
  75. package/dist/lib/shader-assembly/platform-defines.js +52 -0
  76. package/dist/lib/shader-assembly/platform-defines.js.map +1 -0
  77. package/dist/lib/shader-assembly/platform-info.cjs +15 -0
  78. package/dist/lib/shader-assembly/platform-info.d.ts +20 -0
  79. package/dist/lib/shader-assembly/platform-info.d.ts.map +1 -0
  80. package/dist/lib/shader-assembly/platform-info.js +5 -0
  81. package/dist/lib/shader-assembly/platform-info.js.map +1 -0
  82. package/dist/lib/shader-assembly/shader-assembly-shared.cjs +96 -0
  83. package/dist/lib/shader-assembly/shader-assembly-shared.d.ts +16 -0
  84. package/dist/lib/shader-assembly/shader-assembly-shared.d.ts.map +1 -0
  85. package/dist/lib/shader-assembly/shader-assembly-shared.js +79 -0
  86. package/dist/lib/shader-assembly/shader-assembly-shared.js.map +1 -0
  87. package/dist/lib/shader-assembly/shader-assembly-types.cjs +15 -0
  88. package/dist/lib/shader-assembly/shader-assembly-types.d.ts +132 -0
  89. package/dist/lib/shader-assembly/shader-assembly-types.d.ts.map +1 -0
  90. package/dist/lib/shader-assembly/shader-assembly-types.js +5 -0
  91. package/dist/lib/shader-assembly/shader-assembly-types.js.map +1 -0
  92. package/dist/lib/shader-assembly/shader-injection-targets.cjs +103 -0
  93. package/dist/lib/shader-assembly/shader-injection-targets.d.ts +46 -0
  94. package/dist/lib/shader-assembly/shader-injection-targets.d.ts.map +1 -0
  95. package/dist/lib/shader-assembly/shader-injection-targets.js +83 -0
  96. package/dist/lib/shader-assembly/shader-injection-targets.js.map +1 -0
  97. package/dist/lib/shader-assembly/shader-injections.cjs +204 -0
  98. package/dist/lib/shader-assembly/shader-injections.d.ts +49 -0
  99. package/dist/lib/shader-assembly/shader-injections.d.ts.map +1 -0
  100. package/dist/lib/shader-assembly/shader-injections.js +207 -0
  101. package/dist/lib/shader-assembly/shader-injections.js.map +1 -0
  102. package/dist/lib/shader-assembly/shader-plugin-varyings.cjs +434 -0
  103. package/dist/lib/shader-assembly/shader-plugin-varyings.d.ts +15 -0
  104. package/dist/lib/shader-assembly/shader-plugin-varyings.d.ts.map +1 -0
  105. package/dist/lib/shader-assembly/shader-plugin-varyings.js +438 -0
  106. package/dist/lib/shader-assembly/shader-plugin-varyings.js.map +1 -0
  107. package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.cjs +254 -0
  108. package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.d.ts +12 -0
  109. package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.d.ts.map +1 -0
  110. package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.js +237 -0
  111. package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.js.map +1 -0
  112. package/dist/lib/shader-assembly/wgsl-binding-debug.cjs +166 -0
  113. package/dist/lib/shader-assembly/wgsl-binding-debug.d.ts +37 -0
  114. package/dist/lib/shader-assembly/wgsl-binding-debug.d.ts.map +1 -0
  115. package/dist/lib/shader-assembly/wgsl-binding-debug.js +144 -0
  116. package/dist/lib/shader-assembly/wgsl-binding-debug.js.map +1 -0
  117. package/dist/lib/shader-assembly/wgsl-binding-scan.cjs +184 -0
  118. package/dist/lib/shader-assembly/wgsl-binding-scan.d.ts +19 -0
  119. package/dist/lib/shader-assembly/wgsl-binding-scan.d.ts.map +1 -0
  120. package/dist/lib/shader-assembly/wgsl-binding-scan.js +151 -0
  121. package/dist/lib/shader-assembly/wgsl-binding-scan.js.map +1 -0
  122. package/dist/lib/shader-assembly/wgsl-injection-target-names.cjs +163 -0
  123. package/dist/lib/shader-assembly/wgsl-injection-target-names.d.ts +8 -0
  124. package/dist/lib/shader-assembly/wgsl-injection-target-names.d.ts.map +1 -0
  125. package/dist/lib/shader-assembly/wgsl-injection-target-names.js +145 -0
  126. package/dist/lib/shader-assembly/wgsl-injection-target-names.js.map +1 -0
  127. package/dist/lib/shader-assembly/wgsl-interface-scan.cjs +502 -0
  128. package/dist/lib/shader-assembly/wgsl-interface-scan.d.ts +14 -0
  129. package/dist/lib/shader-assembly/wgsl-interface-scan.d.ts.map +1 -0
  130. package/dist/lib/shader-assembly/wgsl-interface-scan.js +498 -0
  131. package/dist/lib/shader-assembly/wgsl-interface-scan.js.map +1 -0
  132. package/dist/lib/shader-generator/generate-shader.cjs +36 -0
  133. package/dist/lib/shader-generator/generate-shader.d.ts +8 -0
  134. package/dist/lib/shader-generator/generate-shader.d.ts.map +1 -0
  135. package/dist/lib/shader-generator/generate-shader.js +15 -0
  136. package/dist/lib/shader-generator/generate-shader.js.map +1 -0
  137. package/dist/lib/shader-generator/glsl/generate-glsl.cjs +94 -0
  138. package/dist/lib/shader-generator/glsl/generate-glsl.d.ts +7 -0
  139. package/dist/lib/shader-generator/glsl/generate-glsl.d.ts.map +1 -0
  140. package/dist/lib/shader-generator/glsl/generate-glsl.js +79 -0
  141. package/dist/lib/shader-generator/glsl/generate-glsl.js.map +1 -0
  142. package/dist/lib/shader-generator/utils/capitalize.cjs +29 -0
  143. package/dist/lib/shader-generator/utils/capitalize.d.ts +7 -0
  144. package/dist/lib/shader-generator/utils/capitalize.d.ts.map +1 -0
  145. package/dist/lib/shader-generator/utils/capitalize.js +12 -0
  146. package/dist/lib/shader-generator/utils/capitalize.js.map +1 -0
  147. package/dist/lib/shader-generator/wgsl/generate-wgsl.cjs +46 -0
  148. package/dist/lib/shader-generator/wgsl/generate-wgsl.d.ts +7 -0
  149. package/dist/lib/shader-generator/wgsl/generate-wgsl.d.ts.map +1 -0
  150. package/dist/lib/shader-generator/wgsl/generate-wgsl.js +23 -0
  151. package/dist/lib/shader-generator/wgsl/generate-wgsl.js.map +1 -0
  152. package/dist/lib/shader-module/composite-shader-pass.cjs +15 -0
  153. package/dist/lib/shader-module/composite-shader-pass.d.ts +41 -0
  154. package/dist/lib/shader-module/composite-shader-pass.d.ts.map +1 -0
  155. package/dist/lib/shader-module/composite-shader-pass.js +5 -0
  156. package/dist/lib/shader-module/composite-shader-pass.js.map +1 -0
  157. package/dist/lib/shader-module/shader-module-dependencies.cjs +83 -0
  158. package/dist/lib/shader-module/shader-module-dependencies.d.ts +39 -0
  159. package/dist/lib/shader-module/shader-module-dependencies.d.ts.map +1 -0
  160. package/dist/lib/shader-module/shader-module-dependencies.js +103 -0
  161. package/dist/lib/shader-module/shader-module-dependencies.js.map +1 -0
  162. package/dist/lib/shader-module/shader-module-uniform-layout.cjs +224 -0
  163. package/dist/lib/shader-module/shader-module-uniform-layout.d.ts +91 -0
  164. package/dist/lib/shader-module/shader-module-uniform-layout.d.ts.map +1 -0
  165. package/dist/lib/shader-module/shader-module-uniform-layout.js +253 -0
  166. package/dist/lib/shader-module/shader-module-uniform-layout.js.map +1 -0
  167. package/dist/lib/shader-module/shader-module.cjs +99 -0
  168. package/dist/lib/shader-module/shader-module.d.ts +94 -0
  169. package/dist/lib/shader-module/shader-module.d.ts.map +1 -0
  170. package/dist/lib/shader-module/shader-module.js +101 -0
  171. package/dist/lib/shader-module/shader-module.js.map +1 -0
  172. package/dist/lib/shader-module/shader-pass.cjs +15 -0
  173. package/dist/lib/shader-module/shader-pass.d.ts +48 -0
  174. package/dist/lib/shader-module/shader-pass.d.ts.map +1 -0
  175. package/dist/lib/shader-module/shader-pass.js +5 -0
  176. package/dist/lib/shader-module/shader-pass.js.map +1 -0
  177. package/dist/lib/shader-plugin.cjs +156 -0
  178. package/dist/lib/shader-plugin.d.ts +61 -0
  179. package/dist/lib/shader-plugin.d.ts.map +1 -0
  180. package/dist/lib/shader-plugin.js +147 -0
  181. package/dist/lib/shader-plugin.js.map +1 -0
  182. package/dist/lib/shader-transpiler/shader-transpiler.cjs +15 -0
  183. package/dist/lib/shader-transpiler/shader-transpiler.d.ts +27 -0
  184. package/dist/lib/shader-transpiler/shader-transpiler.d.ts.map +1 -0
  185. package/dist/lib/shader-transpiler/shader-transpiler.js +5 -0
  186. package/dist/lib/shader-transpiler/shader-transpiler.js.map +1 -0
  187. package/dist/lib/shader-transpiler/transpile-glsl-shader.cjs +71 -0
  188. package/dist/lib/shader-transpiler/transpile-glsl-shader.d.ts +9 -0
  189. package/dist/lib/shader-transpiler/transpile-glsl-shader.d.ts.map +1 -0
  190. package/dist/lib/shader-transpiler/transpile-glsl-shader.js +69 -0
  191. package/dist/lib/shader-transpiler/transpile-glsl-shader.js.map +1 -0
  192. package/dist/lib/utils/assert.cjs +34 -0
  193. package/dist/lib/utils/assert.d.ts +2 -0
  194. package/dist/lib/utils/assert.d.ts.map +1 -0
  195. package/dist/lib/utils/assert.js +13 -0
  196. package/dist/lib/utils/assert.js.map +1 -0
  197. package/dist/lib/utils/uniform-types.cjs +15 -0
  198. package/dist/lib/utils/uniform-types.d.ts +18 -0
  199. package/dist/lib/utils/uniform-types.d.ts.map +1 -0
  200. package/dist/lib/utils/uniform-types.js +5 -0
  201. package/dist/lib/utils/uniform-types.js.map +1 -0
  202. package/dist/lib/wgsl-shader-assembler.cjs +99 -0
  203. package/dist/lib/wgsl-shader-assembler.d.ts +34 -0
  204. package/dist/lib/wgsl-shader-assembler.d.ts.map +1 -0
  205. package/dist/lib/wgsl-shader-assembler.js +84 -0
  206. package/dist/lib/wgsl-shader-assembler.js.map +1 -0
  207. package/dist/module-injectors.cjs +59 -0
  208. package/dist/module-injectors.d.ts +3 -0
  209. package/dist/module-injectors.d.ts.map +1 -0
  210. package/dist/module-injectors.js +31 -0
  211. package/dist/module-injectors.js.map +1 -0
  212. package/dist/modules/color/float-colors.cjs +275 -0
  213. package/dist/modules/color/float-colors.d.ts +132 -0
  214. package/dist/modules/color/float-colors.d.ts.map +1 -0
  215. package/dist/modules/color/float-colors.js +248 -0
  216. package/dist/modules/color/float-colors.js.map +1 -0
  217. package/dist/modules/engine/clip/clip.cjs +142 -0
  218. package/dist/modules/engine/clip/clip.d.ts +12 -0
  219. package/dist/modules/engine/clip/clip.d.ts.map +1 -0
  220. package/dist/modules/engine/clip/clip.js +119 -0
  221. package/dist/modules/engine/clip/clip.js.map +1 -0
  222. package/dist/modules/engine/filter/filter.cjs +103 -0
  223. package/dist/modules/engine/filter/filter.d.ts +12 -0
  224. package/dist/modules/engine/filter/filter.d.ts.map +1 -0
  225. package/dist/modules/engine/filter/filter.js +80 -0
  226. package/dist/modules/engine/filter/filter.js.map +1 -0
  227. package/dist/modules/engine/geometry/geometry.cjs +63 -0
  228. package/dist/modules/engine/geometry/geometry.d.ts +9 -0
  229. package/dist/modules/engine/geometry/geometry.d.ts.map +1 -0
  230. package/dist/modules/engine/geometry/geometry.js +42 -0
  231. package/dist/modules/engine/geometry/geometry.js.map +1 -0
  232. package/dist/modules/engine/gpu-animation/gpu-animation.cjs +255 -0
  233. package/dist/modules/engine/gpu-animation/gpu-animation.d.ts +34 -0
  234. package/dist/modules/engine/gpu-animation/gpu-animation.d.ts.map +1 -0
  235. package/dist/modules/engine/gpu-animation/gpu-animation.js +228 -0
  236. package/dist/modules/engine/gpu-animation/gpu-animation.js.map +1 -0
  237. package/dist/modules/engine/picking/picking.cjs +210 -0
  238. package/dist/modules/engine/picking/picking.d.ts +77 -0
  239. package/dist/modules/engine/picking/picking.d.ts.map +1 -0
  240. package/dist/modules/engine/picking/picking.js +198 -0
  241. package/dist/modules/engine/picking/picking.js.map +1 -0
  242. package/dist/modules/engine/project/project.cjs +138 -0
  243. package/dist/modules/engine/project/project.d.ts +39 -0
  244. package/dist/modules/engine/project/project.d.ts.map +1 -0
  245. package/dist/modules/engine/project/project.js +129 -0
  246. package/dist/modules/engine/project/project.js.map +1 -0
  247. package/dist/modules/engine/skin/skin.cjs +212 -0
  248. package/dist/modules/engine/skin/skin.d.ts +52 -0
  249. package/dist/modules/engine/skin/skin.d.ts.map +1 -0
  250. package/dist/modules/engine/skin/skin.js +179 -0
  251. package/dist/modules/engine/skin/skin.js.map +1 -0
  252. package/dist/modules/engine/transform/transform.cjs +72 -0
  253. package/dist/modules/engine/transform/transform.d.ts +6 -0
  254. package/dist/modules/engine/transform/transform.d.ts.map +1 -0
  255. package/dist/modules/engine/transform/transform.js +49 -0
  256. package/dist/modules/engine/transform/transform.js.map +1 -0
  257. package/dist/modules/geometry/path-dash/path-dash.cjs +93 -0
  258. package/dist/modules/geometry/path-dash/path-dash.d.ts +10 -0
  259. package/dist/modules/geometry/path-dash/path-dash.d.ts.map +1 -0
  260. package/dist/modules/geometry/path-dash/path-dash.js +66 -0
  261. package/dist/modules/geometry/path-dash/path-dash.js.map +1 -0
  262. package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.cjs +117 -0
  263. package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.d.ts +3 -0
  264. package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.d.ts.map +1 -0
  265. package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.js +87 -0
  266. package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.js.map +1 -0
  267. package/dist/modules/geometry/pattern-fill/pattern-fill.cjs +64 -0
  268. package/dist/modules/geometry/pattern-fill/pattern-fill.d.ts +14 -0
  269. package/dist/modules/geometry/pattern-fill/pattern-fill.d.ts.map +1 -0
  270. package/dist/modules/geometry/pattern-fill/pattern-fill.js +43 -0
  271. package/dist/modules/geometry/pattern-fill/pattern-fill.js.map +1 -0
  272. package/dist/modules/geometry/point-glow/point-glow.cjs +104 -0
  273. package/dist/modules/geometry/point-glow/point-glow.d.ts +11 -0
  274. package/dist/modules/geometry/point-glow/point-glow.d.ts.map +1 -0
  275. package/dist/modules/geometry/point-glow/point-glow.js +77 -0
  276. package/dist/modules/geometry/point-glow/point-glow.js.map +1 -0
  277. package/dist/modules/geometry/precipitation/precipitation.cjs +122 -0
  278. package/dist/modules/geometry/precipitation/precipitation.d.ts +40 -0
  279. package/dist/modules/geometry/precipitation/precipitation.d.ts.map +1 -0
  280. package/dist/modules/geometry/precipitation/precipitation.js +95 -0
  281. package/dist/modules/geometry/precipitation/precipitation.js.map +1 -0
  282. package/dist/modules/geometry/sketch-stroke/sketch-stroke.cjs +158 -0
  283. package/dist/modules/geometry/sketch-stroke/sketch-stroke.d.ts +60 -0
  284. package/dist/modules/geometry/sketch-stroke/sketch-stroke.d.ts.map +1 -0
  285. package/dist/modules/geometry/sketch-stroke/sketch-stroke.js +137 -0
  286. package/dist/modules/geometry/sketch-stroke/sketch-stroke.js.map +1 -0
  287. package/dist/modules/geospatial/dggs/dggs-wgsl.cjs +2304 -0
  288. package/dist/modules/geospatial/dggs/dggs-wgsl.d.ts +3 -0
  289. package/dist/modules/geospatial/dggs/dggs-wgsl.d.ts.map +1 -0
  290. package/dist/modules/geospatial/dggs/dggs-wgsl.js +2283 -0
  291. package/dist/modules/geospatial/dggs/dggs-wgsl.js.map +1 -0
  292. package/dist/modules/geospatial/dggs/dggs.cjs +31 -0
  293. package/dist/modules/geospatial/dggs/dggs.d.ts +6 -0
  294. package/dist/modules/geospatial/dggs/dggs.d.ts.map +1 -0
  295. package/dist/modules/geospatial/dggs/dggs.js +10 -0
  296. package/dist/modules/geospatial/dggs/dggs.js.map +1 -0
  297. package/dist/modules/lighting/area-lighting/area-light-types.cjs +68 -0
  298. package/dist/modules/lighting/area-lighting/area-light-types.d.ts +34 -0
  299. package/dist/modules/lighting/area-lighting/area-light-types.d.ts.map +1 -0
  300. package/dist/modules/lighting/area-lighting/area-light-types.js +40 -0
  301. package/dist/modules/lighting/area-lighting/area-light-types.js.map +1 -0
  302. package/dist/modules/lighting/area-lighting/area-lighting-shaders.cjs +101 -0
  303. package/dist/modules/lighting/area-lighting/area-lighting-shaders.d.ts +3 -0
  304. package/dist/modules/lighting/area-lighting/area-lighting-shaders.d.ts.map +1 -0
  305. package/dist/modules/lighting/area-lighting/area-lighting-shaders.js +71 -0
  306. package/dist/modules/lighting/area-lighting/area-lighting-shaders.js.map +1 -0
  307. package/dist/modules/lighting/area-lighting/area-lighting.cjs +62 -0
  308. package/dist/modules/lighting/area-lighting/area-lighting.d.ts +89 -0
  309. package/dist/modules/lighting/area-lighting/area-lighting.d.ts.map +1 -0
  310. package/dist/modules/lighting/area-lighting/area-lighting.js +41 -0
  311. package/dist/modules/lighting/area-lighting/area-lighting.js.map +1 -0
  312. package/dist/modules/lighting/area-lighting/ltc-shaders.cjs +192 -0
  313. package/dist/modules/lighting/area-lighting/ltc-shaders.d.ts +3 -0
  314. package/dist/modules/lighting/area-lighting/ltc-shaders.d.ts.map +1 -0
  315. package/dist/modules/lighting/area-lighting/ltc-shaders.js +162 -0
  316. package/dist/modules/lighting/area-lighting/ltc-shaders.js.map +1 -0
  317. package/dist/modules/lighting/atmosphere/atmosphere.cjs +253 -0
  318. package/dist/modules/lighting/atmosphere/atmosphere.d.ts +45 -0
  319. package/dist/modules/lighting/atmosphere/atmosphere.d.ts.map +1 -0
  320. package/dist/modules/lighting/atmosphere/atmosphere.js +228 -0
  321. package/dist/modules/lighting/atmosphere/atmosphere.js.map +1 -0
  322. package/dist/modules/lighting/clouds/clouds.cjs +216 -0
  323. package/dist/modules/lighting/clouds/clouds.d.ts +58 -0
  324. package/dist/modules/lighting/clouds/clouds.d.ts.map +1 -0
  325. package/dist/modules/lighting/clouds/clouds.js +192 -0
  326. package/dist/modules/lighting/clouds/clouds.js.map +1 -0
  327. package/dist/modules/lighting/clustered-light-grid/clustered-light-grid.cjs +40 -0
  328. package/dist/modules/lighting/clustered-light-grid/clustered-light-grid.d.ts +6 -0
  329. package/dist/modules/lighting/clustered-light-grid/clustered-light-grid.d.ts.map +1 -0
  330. package/dist/modules/lighting/clustered-light-grid/clustered-light-grid.js +15 -0
  331. package/dist/modules/lighting/clustered-light-grid/clustered-light-grid.js.map +1 -0
  332. package/dist/modules/lighting/contact-shadow/contact-shadow.cjs +348 -0
  333. package/dist/modules/lighting/contact-shadow/contact-shadow.d.ts +188 -0
  334. package/dist/modules/lighting/contact-shadow/contact-shadow.d.ts.map +1 -0
  335. package/dist/modules/lighting/contact-shadow/contact-shadow.js +307 -0
  336. package/dist/modules/lighting/contact-shadow/contact-shadow.js.map +1 -0
  337. package/dist/modules/lighting/firefly/firefly.cjs +74 -0
  338. package/dist/modules/lighting/firefly/firefly.d.ts +36 -0
  339. package/dist/modules/lighting/firefly/firefly.d.ts.map +1 -0
  340. package/dist/modules/lighting/firefly/firefly.js +53 -0
  341. package/dist/modules/lighting/firefly/firefly.js.map +1 -0
  342. package/dist/modules/lighting/globe-clouds/globe-clouds.cjs +143 -0
  343. package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts +53 -0
  344. package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts.map +1 -0
  345. package/dist/modules/lighting/globe-clouds/globe-clouds.js +119 -0
  346. package/dist/modules/lighting/globe-clouds/globe-clouds.js.map +1 -0
  347. package/dist/modules/lighting/gouraud-material/gouraud-material.cjs +61 -0
  348. package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts +12 -0
  349. package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts.map +1 -0
  350. package/dist/modules/lighting/gouraud-material/gouraud-material.js +40 -0
  351. package/dist/modules/lighting/gouraud-material/gouraud-material.js.map +1 -0
  352. package/dist/modules/lighting/height-fog/height-fog-functions.cjs +139 -0
  353. package/dist/modules/lighting/height-fog/height-fog-functions.d.ts +14 -0
  354. package/dist/modules/lighting/height-fog/height-fog-functions.d.ts.map +1 -0
  355. package/dist/modules/lighting/height-fog/height-fog-functions.js +114 -0
  356. package/dist/modules/lighting/height-fog/height-fog-functions.js.map +1 -0
  357. package/dist/modules/lighting/height-fog/height-fog.cjs +104 -0
  358. package/dist/modules/lighting/height-fog/height-fog.d.ts +60 -0
  359. package/dist/modules/lighting/height-fog/height-fog.d.ts.map +1 -0
  360. package/dist/modules/lighting/height-fog/height-fog.js +77 -0
  361. package/dist/modules/lighting/height-fog/height-fog.js.map +1 -0
  362. package/dist/modules/lighting/ibl/ibl.cjs +63 -0
  363. package/dist/modules/lighting/ibl/ibl.d.ts +25 -0
  364. package/dist/modules/lighting/ibl/ibl.d.ts.map +1 -0
  365. package/dist/modules/lighting/ibl/ibl.js +33 -0
  366. package/dist/modules/lighting/ibl/ibl.js.map +1 -0
  367. package/dist/modules/lighting/lambert-material/lambert-material.cjs +54 -0
  368. package/dist/modules/lighting/lambert-material/lambert-material.d.ts +10 -0
  369. package/dist/modules/lighting/lambert-material/lambert-material.d.ts.map +1 -0
  370. package/dist/modules/lighting/lambert-material/lambert-material.js +33 -0
  371. package/dist/modules/lighting/lambert-material/lambert-material.js.map +1 -0
  372. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.cjs +88 -0
  373. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts +3 -0
  374. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts.map +1 -0
  375. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js +60 -0
  376. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js.map +1 -0
  377. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.cjs +97 -0
  378. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts +2 -0
  379. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts.map +1 -0
  380. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js +73 -0
  381. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js.map +1 -0
  382. package/dist/modules/lighting/lights/lighting-glsl.cjs +116 -0
  383. package/dist/modules/lighting/lights/lighting-glsl.d.ts +2 -0
  384. package/dist/modules/lighting/lights/lighting-glsl.d.ts.map +1 -0
  385. package/dist/modules/lighting/lights/lighting-glsl.js +92 -0
  386. package/dist/modules/lighting/lights/lighting-glsl.js.map +1 -0
  387. package/dist/modules/lighting/lights/lighting-wgsl.cjs +115 -0
  388. package/dist/modules/lighting/lights/lighting-wgsl.d.ts +2 -0
  389. package/dist/modules/lighting/lights/lighting-wgsl.d.ts.map +1 -0
  390. package/dist/modules/lighting/lights/lighting-wgsl.js +91 -0
  391. package/dist/modules/lighting/lights/lighting-wgsl.js.map +1 -0
  392. package/dist/modules/lighting/lights/lighting.cjs +210 -0
  393. package/dist/modules/lighting/lights/lighting.d.ts +163 -0
  394. package/dist/modules/lighting/lights/lighting.d.ts.map +1 -0
  395. package/dist/modules/lighting/lights/lighting.js +208 -0
  396. package/dist/modules/lighting/lights/lighting.js.map +1 -0
  397. package/dist/modules/lighting/no-material/dirlight.cjs +112 -0
  398. package/dist/modules/lighting/no-material/dirlight.d.ts +33 -0
  399. package/dist/modules/lighting/no-material/dirlight.d.ts.map +1 -0
  400. package/dist/modules/lighting/no-material/dirlight.js +86 -0
  401. package/dist/modules/lighting/no-material/dirlight.js.map +1 -0
  402. package/dist/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.cjs +87 -0
  403. package/dist/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.d.ts +21 -0
  404. package/dist/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.d.ts.map +1 -0
  405. package/dist/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.js +61 -0
  406. package/dist/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.js.map +1 -0
  407. package/dist/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.cjs +87 -0
  408. package/dist/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.d.ts +21 -0
  409. package/dist/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.d.ts.map +1 -0
  410. package/dist/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.js +61 -0
  411. package/dist/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.js.map +1 -0
  412. package/dist/modules/lighting/pbr-material/pbr-material-glsl.cjs +1789 -0
  413. package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts +3 -0
  414. package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts.map +1 -0
  415. package/dist/modules/lighting/pbr-material/pbr-material-glsl.js +1767 -0
  416. package/dist/modules/lighting/pbr-material/pbr-material-glsl.js.map +1 -0
  417. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.cjs +2084 -0
  418. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts +3 -0
  419. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts.map +1 -0
  420. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js +2062 -0
  421. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js.map +1 -0
  422. package/dist/modules/lighting/pbr-material/pbr-material.cjs +315 -0
  423. package/dist/modules/lighting/pbr-material/pbr-material.d.ts +516 -0
  424. package/dist/modules/lighting/pbr-material/pbr-material.d.ts.map +1 -0
  425. package/dist/modules/lighting/pbr-material/pbr-material.js +292 -0
  426. package/dist/modules/lighting/pbr-material/pbr-material.js.map +1 -0
  427. package/dist/modules/lighting/pbr-material/pbr-projection.cjs +63 -0
  428. package/dist/modules/lighting/pbr-material/pbr-projection.d.ts +10 -0
  429. package/dist/modules/lighting/pbr-material/pbr-projection.d.ts.map +1 -0
  430. package/dist/modules/lighting/pbr-material/pbr-projection.js +37 -0
  431. package/dist/modules/lighting/pbr-material/pbr-projection.js.map +1 -0
  432. package/dist/modules/lighting/pbr-material/pbr-scene.cjs +109 -0
  433. package/dist/modules/lighting/pbr-material/pbr-scene.d.ts +52 -0
  434. package/dist/modules/lighting/pbr-material/pbr-scene.d.ts.map +1 -0
  435. package/dist/modules/lighting/pbr-material/pbr-scene.js +83 -0
  436. package/dist/modules/lighting/pbr-material/pbr-scene.js.map +1 -0
  437. package/dist/modules/lighting/pbr-shadow/pbr-shadow.cjs +97 -0
  438. package/dist/modules/lighting/pbr-shadow/pbr-shadow.d.ts +15 -0
  439. package/dist/modules/lighting/pbr-shadow/pbr-shadow.d.ts.map +1 -0
  440. package/dist/modules/lighting/pbr-shadow/pbr-shadow.js +69 -0
  441. package/dist/modules/lighting/pbr-shadow/pbr-shadow.js.map +1 -0
  442. package/dist/modules/lighting/pbr-surface/pbr-surface.cjs +114 -0
  443. package/dist/modules/lighting/pbr-surface/pbr-surface.d.ts +15 -0
  444. package/dist/modules/lighting/pbr-surface/pbr-surface.d.ts.map +1 -0
  445. package/dist/modules/lighting/pbr-surface/pbr-surface.js +88 -0
  446. package/dist/modules/lighting/pbr-surface/pbr-surface.js.map +1 -0
  447. package/dist/modules/lighting/phong-material/phong-material.cjs +61 -0
  448. package/dist/modules/lighting/phong-material/phong-material.d.ts +13 -0
  449. package/dist/modules/lighting/phong-material/phong-material.d.ts.map +1 -0
  450. package/dist/modules/lighting/phong-material/phong-material.js +40 -0
  451. package/dist/modules/lighting/phong-material/phong-material.js.map +1 -0
  452. package/dist/modules/lighting/phong-material/phong-shaders-glsl.cjs +100 -0
  453. package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts +3 -0
  454. package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts.map +1 -0
  455. package/dist/modules/lighting/phong-material/phong-shaders-glsl.js +72 -0
  456. package/dist/modules/lighting/phong-material/phong-shaders-glsl.js.map +1 -0
  457. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.cjs +153 -0
  458. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts +2 -0
  459. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts.map +1 -0
  460. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js +129 -0
  461. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js.map +1 -0
  462. package/dist/modules/lighting/prefiltered-environment/prefiltered-environment.cjs +379 -0
  463. package/dist/modules/lighting/prefiltered-environment/prefiltered-environment.d.ts +41 -0
  464. package/dist/modules/lighting/prefiltered-environment/prefiltered-environment.d.ts.map +1 -0
  465. package/dist/modules/lighting/prefiltered-environment/prefiltered-environment.js +345 -0
  466. package/dist/modules/lighting/prefiltered-environment/prefiltered-environment.js.map +1 -0
  467. package/dist/modules/lighting/shadow/shadow-glsl.cjs +228 -0
  468. package/dist/modules/lighting/shadow/shadow-glsl.d.ts +3 -0
  469. package/dist/modules/lighting/shadow/shadow-glsl.d.ts.map +1 -0
  470. package/dist/modules/lighting/shadow/shadow-glsl.js +204 -0
  471. package/dist/modules/lighting/shadow/shadow-glsl.js.map +1 -0
  472. package/dist/modules/lighting/shadow/shadow-types.cjs +15 -0
  473. package/dist/modules/lighting/shadow/shadow-types.d.ts +63 -0
  474. package/dist/modules/lighting/shadow/shadow-types.d.ts.map +1 -0
  475. package/dist/modules/lighting/shadow/shadow-types.js +5 -0
  476. package/dist/modules/lighting/shadow/shadow-types.js.map +1 -0
  477. package/dist/modules/lighting/shadow/shadow.cjs +458 -0
  478. package/dist/modules/lighting/shadow/shadow.d.ts +117 -0
  479. package/dist/modules/lighting/shadow/shadow.d.ts.map +1 -0
  480. package/dist/modules/lighting/shadow/shadow.js +450 -0
  481. package/dist/modules/lighting/shadow/shadow.js.map +1 -0
  482. package/dist/modules/lighting/surface-weather/surface-weather.cjs +199 -0
  483. package/dist/modules/lighting/surface-weather/surface-weather.d.ts +54 -0
  484. package/dist/modules/lighting/surface-weather/surface-weather.d.ts.map +1 -0
  485. package/dist/modules/lighting/surface-weather/surface-weather.js +175 -0
  486. package/dist/modules/lighting/surface-weather/surface-weather.js.map +1 -0
  487. package/dist/modules/lighting/unlit-material/unlit-material.cjs +60 -0
  488. package/dist/modules/lighting/unlit-material/unlit-material.d.ts +9 -0
  489. package/dist/modules/lighting/unlit-material/unlit-material.d.ts.map +1 -0
  490. package/dist/modules/lighting/unlit-material/unlit-material.js +40 -0
  491. package/dist/modules/lighting/unlit-material/unlit-material.js.map +1 -0
  492. package/dist/modules/lighting/water-material/river-water-material.cjs +56 -0
  493. package/dist/modules/lighting/water-material/river-water-material.d.ts +21 -0
  494. package/dist/modules/lighting/water-material/river-water-material.d.ts.map +1 -0
  495. package/dist/modules/lighting/water-material/river-water-material.js +36 -0
  496. package/dist/modules/lighting/water-material/river-water-material.js.map +1 -0
  497. package/dist/modules/lighting/water-material/river-water-shaders.cjs +261 -0
  498. package/dist/modules/lighting/water-material/river-water-shaders.d.ts +3 -0
  499. package/dist/modules/lighting/water-material/river-water-shaders.d.ts.map +1 -0
  500. package/dist/modules/lighting/water-material/river-water-shaders.js +233 -0
  501. package/dist/modules/lighting/water-material/river-water-shaders.js.map +1 -0
  502. package/dist/modules/lighting/water-material/water-material.cjs +188 -0
  503. package/dist/modules/lighting/water-material/water-material.d.ts +28 -0
  504. package/dist/modules/lighting/water-material/water-material.d.ts.map +1 -0
  505. package/dist/modules/lighting/water-material/water-material.js +179 -0
  506. package/dist/modules/lighting/water-material/water-material.js.map +1 -0
  507. package/dist/modules/lighting/water-material/water-shaders-glsl.cjs +260 -0
  508. package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts +3 -0
  509. package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts.map +1 -0
  510. package/dist/modules/lighting/water-material/water-shaders-glsl.js +232 -0
  511. package/dist/modules/lighting/water-material/water-shaders-glsl.js.map +1 -0
  512. package/dist/modules/lighting/water-material/water-shaders-wgsl.cjs +254 -0
  513. package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts +2 -0
  514. package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts.map +1 -0
  515. package/dist/modules/lighting/water-material/water-shaders-wgsl.js +230 -0
  516. package/dist/modules/lighting/water-material/water-shaders-wgsl.js.map +1 -0
  517. package/dist/modules/math/fp16/fp16-utils.cjs +112 -0
  518. package/dist/modules/math/fp16/fp16-utils.d.ts +13 -0
  519. package/dist/modules/math/fp16/fp16-utils.d.ts.map +1 -0
  520. package/dist/modules/math/fp16/fp16-utils.js +118 -0
  521. package/dist/modules/math/fp16/fp16-utils.js.map +1 -0
  522. package/dist/modules/math/fp32/fp32.cjs +310 -0
  523. package/dist/modules/math/fp32/fp32.d.ts +9 -0
  524. package/dist/modules/math/fp32/fp32.d.ts.map +1 -0
  525. package/dist/modules/math/fp32/fp32.js +288 -0
  526. package/dist/modules/math/fp32/fp32.js.map +1 -0
  527. package/dist/modules/math/fp64/fp64-arithmetic-glsl.cjs +229 -0
  528. package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts +2 -0
  529. package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts.map +1 -0
  530. package/dist/modules/math/fp64/fp64-arithmetic-glsl.js +205 -0
  531. package/dist/modules/math/fp64/fp64-arithmetic-glsl.js.map +1 -0
  532. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.cjs +144 -0
  533. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts +10 -0
  534. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts.map +1 -0
  535. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js +128 -0
  536. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js.map +1 -0
  537. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.cjs +583 -0
  538. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts +11 -0
  539. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts.map +1 -0
  540. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js +563 -0
  541. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js.map +1 -0
  542. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.cjs +946 -0
  543. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts +3 -0
  544. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts.map +1 -0
  545. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js +923 -0
  546. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js.map +1 -0
  547. package/dist/modules/math/fp64/fp64-functions-glsl.cjs +699 -0
  548. package/dist/modules/math/fp64/fp64-functions-glsl.d.ts +2 -0
  549. package/dist/modules/math/fp64/fp64-functions-glsl.d.ts.map +1 -0
  550. package/dist/modules/math/fp64/fp64-functions-glsl.js +675 -0
  551. package/dist/modules/math/fp64/fp64-functions-glsl.js.map +1 -0
  552. package/dist/modules/math/fp64/fp64-functions-wgsl.cjs +180 -0
  553. package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts +3 -0
  554. package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts.map +1 -0
  555. package/dist/modules/math/fp64/fp64-functions-wgsl.js +157 -0
  556. package/dist/modules/math/fp64/fp64-functions-wgsl.js.map +1 -0
  557. package/dist/modules/math/fp64/fp64-utils.cjs +50 -0
  558. package/dist/modules/math/fp64/fp64-utils.d.ts +22 -0
  559. package/dist/modules/math/fp64/fp64-utils.d.ts.map +1 -0
  560. package/dist/modules/math/fp64/fp64-utils.js +42 -0
  561. package/dist/modules/math/fp64/fp64-utils.js.map +1 -0
  562. package/dist/modules/math/fp64/fp64.cjs +68 -0
  563. package/dist/modules/math/fp64/fp64.d.ts +24 -0
  564. package/dist/modules/math/fp64/fp64.d.ts.map +1 -0
  565. package/dist/modules/math/fp64/fp64.js +46 -0
  566. package/dist/modules/math/fp64/fp64.js.map +1 -0
  567. package/dist/modules/math/random/random.cjs +46 -0
  568. package/dist/modules/math/random/random.d.ts +7 -0
  569. package/dist/modules/math/random/random.d.ts.map +1 -0
  570. package/dist/modules/math/random/random.js +21 -0
  571. package/dist/modules/math/random/random.js.map +1 -0
  572. package/dist/modules/math/value-noise/value-noise.cjs +95 -0
  573. package/dist/modules/math/value-noise/value-noise.d.ts +7 -0
  574. package/dist/modules/math/value-noise/value-noise.d.ts.map +1 -0
  575. package/dist/modules/math/value-noise/value-noise.js +68 -0
  576. package/dist/modules/math/value-noise/value-noise.js.map +1 -0
  577. package/dist/modules/volume/volume-raymarch.cjs +107 -0
  578. package/dist/modules/volume/volume-raymarch.d.ts +6 -0
  579. package/dist/modules/volume/volume-raymarch.d.ts.map +1 -0
  580. package/dist/modules/volume/volume-raymarch.js +84 -0
  581. package/dist/modules/volume/volume-raymarch.js.map +1 -0
  582. package/dist/types/align-to.cjs +38 -0
  583. package/dist/types/align-to.d.ts +3 -0
  584. package/dist/types/align-to.d.ts.map +1 -0
  585. package/dist/types/align-to.js +13 -0
  586. package/dist/types/align-to.js.map +1 -0
  587. package/dist/types/primitive-data-types.cjs +15 -0
  588. package/dist/types/primitive-data-types.d.ts +7 -0
  589. package/dist/types/primitive-data-types.d.ts.map +1 -0
  590. package/dist/types/primitive-data-types.js +5 -0
  591. package/dist/types/primitive-data-types.js.map +1 -0
  592. package/dist/types/sampler-props.cjs +15 -0
  593. package/dist/types/sampler-props.d.ts +26 -0
  594. package/dist/types/sampler-props.d.ts.map +1 -0
  595. package/dist/types/sampler-props.js +5 -0
  596. package/dist/types/sampler-props.js.map +1 -0
  597. package/dist/types/shader-block-layout.cjs +184 -0
  598. package/dist/types/shader-block-layout.d.ts +72 -0
  599. package/dist/types/shader-block-layout.d.ts.map +1 -0
  600. package/dist/types/shader-block-layout.js +209 -0
  601. package/dist/types/shader-block-layout.js.map +1 -0
  602. package/dist/types/shader-layout.cjs +15 -0
  603. package/dist/types/shader-layout.d.ts +178 -0
  604. package/dist/types/shader-layout.d.ts.map +1 -0
  605. package/dist/types/shader-layout.js +5 -0
  606. package/dist/types/shader-layout.js.map +1 -0
  607. package/dist/types/shader-type-decoder.cjs +240 -0
  608. package/dist/types/shader-type-decoder.d.ts +41 -0
  609. package/dist/types/shader-type-decoder.d.ts.map +1 -0
  610. package/dist/types/shader-type-decoder.js +210 -0
  611. package/dist/types/shader-type-decoder.js.map +1 -0
  612. package/dist/types/shader-types.cjs +15 -0
  613. package/dist/types/shader-types.d.ts +101 -0
  614. package/dist/types/shader-types.d.ts.map +1 -0
  615. package/dist/types/shader-types.js +30 -0
  616. package/dist/types/shader-types.js.map +1 -0
  617. package/dist/types/texture-formats.cjs +15 -0
  618. package/dist/types/texture-formats.d.ts +24 -0
  619. package/dist/types/texture-formats.d.ts.map +1 -0
  620. package/dist/types/texture-formats.js +5 -0
  621. package/dist/types/texture-formats.js.map +1 -0
  622. package/dist/types.cjs +53 -0
  623. package/dist/types.cjs.map +6 -0
  624. package/dist/types.d.ts +14 -0
  625. package/dist/types.d.ts.map +1 -0
  626. package/dist/types.js +7 -0
  627. package/dist/types.js.map +1 -0
  628. package/dist/wgsl.cjs +55 -0
  629. package/dist/wgsl.cjs.map +6 -0
  630. package/dist/wgsl.d.ts +8 -0
  631. package/dist/wgsl.d.ts.map +1 -0
  632. package/dist/wgsl.js +9 -0
  633. package/dist/wgsl.js.map +1 -0
  634. package/package.json +65 -4
  635. package/src/glsl.ts +13 -0
  636. package/src/index.ts +307 -0
  637. package/src/lib/color/normalize-byte-colors.ts +57 -0
  638. package/src/lib/filters/prop-types.ts +150 -0
  639. package/src/lib/glsl-shader-assembler.ts +39 -0
  640. package/src/lib/glsl-utils/get-shader-info.ts +42 -0
  641. package/src/lib/glsl-utils/shader-utils.ts +110 -0
  642. package/src/lib/preprocessor/preprocessor.ts +157 -0
  643. package/src/lib/shader-assembler-base.ts +169 -0
  644. package/src/lib/shader-assembler.ts +7 -0
  645. package/src/lib/shader-assembly/assemble-glsl-shaders.ts +305 -0
  646. package/src/lib/shader-assembly/assemble-shaders.ts +13 -0
  647. package/src/lib/shader-assembly/assemble-wgsl-shaders.ts +830 -0
  648. package/src/lib/shader-assembly/platform-defines.ts +58 -0
  649. package/src/lib/shader-assembly/platform-info.ts +23 -0
  650. package/src/lib/shader-assembly/shader-assembly-shared.ts +95 -0
  651. package/src/lib/shader-assembly/shader-assembly-types.ts +146 -0
  652. package/src/lib/shader-assembly/shader-injection-targets.ts +148 -0
  653. package/src/lib/shader-assembly/shader-injections.ts +298 -0
  654. package/src/lib/shader-assembly/shader-plugin-varyings.ts +555 -0
  655. package/src/lib/shader-assembly/shader-plugin-vertex-inputs.ts +279 -0
  656. package/src/lib/shader-assembly/wgsl-binding-debug.ts +227 -0
  657. package/src/lib/shader-assembly/wgsl-binding-scan.ts +228 -0
  658. package/src/lib/shader-assembly/wgsl-injection-target-names.ts +180 -0
  659. package/src/lib/shader-assembly/wgsl-interface-scan.ts +676 -0
  660. package/src/lib/shader-generator/generate-shader.ts +27 -0
  661. package/src/lib/shader-generator/glsl/generate-glsl.ts +101 -0
  662. package/src/lib/shader-generator/utils/capitalize.ts +12 -0
  663. package/src/lib/shader-generator/wgsl/generate-wgsl.ts +40 -0
  664. package/src/lib/shader-module/composite-shader-pass.ts +47 -0
  665. package/src/lib/shader-module/shader-module-dependencies.ts +128 -0
  666. package/src/lib/shader-module/shader-module-uniform-layout.ts +420 -0
  667. package/src/lib/shader-module/shader-module.ts +237 -0
  668. package/src/lib/shader-module/shader-pass.ts +69 -0
  669. package/src/lib/shader-plugin.ts +236 -0
  670. package/src/lib/shader-transpiler/shader-transpiler.ts +34 -0
  671. package/src/lib/shader-transpiler/transpile-glsl-shader.ts +78 -0
  672. package/src/lib/utils/assert.ts +13 -0
  673. package/src/lib/utils/uniform-types.ts +89 -0
  674. package/src/lib/wgsl-shader-assembler.ts +122 -0
  675. package/src/module-injectors.ts +32 -0
  676. package/src/modules/color/float-colors.ts +334 -0
  677. package/src/modules/engine/clip/clip.ts +139 -0
  678. package/src/modules/engine/filter/filter.ts +99 -0
  679. package/src/modules/engine/geometry/geometry.ts +45 -0
  680. package/src/modules/engine/gpu-animation/gpu-animation.ts +244 -0
  681. package/src/modules/engine/picking/README.md +88 -0
  682. package/src/modules/engine/picking/picking.ts +252 -0
  683. package/src/modules/engine/project/project.ts +166 -0
  684. package/src/modules/engine/skin/skin.ts +233 -0
  685. package/src/modules/engine/transform/transform.ts +50 -0
  686. package/src/modules/geometry/path-dash/path-dash.ts +68 -0
  687. package/src/modules/geometry/pattern-fill/pattern-fill-shaders.ts +88 -0
  688. package/src/modules/geometry/pattern-fill/pattern-fill.ts +54 -0
  689. package/src/modules/geometry/point-glow/point-glow.ts +87 -0
  690. package/src/modules/geometry/precipitation/README.md +19 -0
  691. package/src/modules/geometry/precipitation/precipitation.ts +108 -0
  692. package/src/modules/geometry/sketch-stroke/sketch-stroke.ts +160 -0
  693. package/src/modules/geospatial/dggs/dggs-wgsl.ts +2284 -0
  694. package/src/modules/geospatial/dggs/dggs.ts +12 -0
  695. package/src/modules/lighting/area-lighting/area-light-types.ts +71 -0
  696. package/src/modules/lighting/area-lighting/area-lighting-shaders.ts +72 -0
  697. package/src/modules/lighting/area-lighting/area-lighting.ts +63 -0
  698. package/src/modules/lighting/area-lighting/ltc-shaders.ts +163 -0
  699. package/src/modules/lighting/atmosphere/README.md +25 -0
  700. package/src/modules/lighting/atmosphere/atmosphere.ts +246 -0
  701. package/src/modules/lighting/clouds/README.md +24 -0
  702. package/src/modules/lighting/clouds/clouds.ts +216 -0
  703. package/src/modules/lighting/clustered-light-grid/clustered-light-grid.ts +17 -0
  704. package/src/modules/lighting/contact-shadow/contact-shadow.ts +365 -0
  705. package/src/modules/lighting/firefly/firefly.ts +64 -0
  706. package/src/modules/lighting/globe-clouds/globe-clouds.ts +124 -0
  707. package/src/modules/lighting/gouraud-material/gouraud-material.ts +55 -0
  708. package/src/modules/lighting/height-fog/README.md +36 -0
  709. package/src/modules/lighting/height-fog/height-fog-functions.ts +116 -0
  710. package/src/modules/lighting/height-fog/height-fog.ts +96 -0
  711. package/src/modules/lighting/ibl/ibl.ts +43 -0
  712. package/src/modules/lighting/lambert-material/lambert-material.ts +42 -0
  713. package/src/modules/lighting/lambert-material/lambert-shaders-glsl.ts +61 -0
  714. package/src/modules/lighting/lambert-material/lambert-shaders-wgsl.ts +73 -0
  715. package/src/modules/lighting/lights/lighting-glsl.ts +92 -0
  716. package/src/modules/lighting/lights/lighting-wgsl.ts +91 -0
  717. package/src/modules/lighting/lights/lighting.ts +385 -0
  718. package/src/modules/lighting/no-material/dirlight.ts +101 -0
  719. package/src/modules/lighting/pbr-ambient-occlusion/pbr-ambient-occlusion.ts +78 -0
  720. package/src/modules/lighting/pbr-contact-shadow/pbr-contact-shadow.ts +78 -0
  721. package/src/modules/lighting/pbr-material/pbr-material-glsl.ts +1770 -0
  722. package/src/modules/lighting/pbr-material/pbr-material-wgsl.ts +2065 -0
  723. package/src/modules/lighting/pbr-material/pbr-material.ts +517 -0
  724. package/src/modules/lighting/pbr-material/pbr-projection.ts +50 -0
  725. package/src/modules/lighting/pbr-material/pbr-scene.ts +112 -0
  726. package/src/modules/lighting/pbr-shadow/pbr-shadow.ts +85 -0
  727. package/src/modules/lighting/pbr-surface/pbr-surface.ts +103 -0
  728. package/src/modules/lighting/phong-material/phong-material.ts +53 -0
  729. package/src/modules/lighting/phong-material/phong-shaders-glsl.ts +73 -0
  730. package/src/modules/lighting/phong-material/phong-shaders-wgsl.ts +129 -0
  731. package/src/modules/lighting/prefiltered-environment/prefiltered-environment.ts +370 -0
  732. package/src/modules/lighting/shadow/shadow-glsl.ts +204 -0
  733. package/src/modules/lighting/shadow/shadow-types.ts +68 -0
  734. package/src/modules/lighting/shadow/shadow.ts +536 -0
  735. package/src/modules/lighting/surface-weather/README.md +28 -0
  736. package/src/modules/lighting/surface-weather/surface-weather.ts +198 -0
  737. package/src/modules/lighting/unlit-material/unlit-material.ts +44 -0
  738. package/src/modules/lighting/water-material/river-water-material.ts +58 -0
  739. package/src/modules/lighting/water-material/river-water-shaders.ts +234 -0
  740. package/src/modules/lighting/water-material/water-material.ts +234 -0
  741. package/src/modules/lighting/water-material/water-shaders-glsl.ts +233 -0
  742. package/src/modules/lighting/water-material/water-shaders-wgsl.ts +230 -0
  743. package/src/modules/math/fp16/fp16-utils.ts +156 -0
  744. package/src/modules/math/fp32/fp32.ts +291 -0
  745. package/src/modules/math/fp64/fp64-arithmetic-glsl.ts +205 -0
  746. package/src/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.ts +129 -0
  747. package/src/modules/math/fp64/fp64-arithmetic-wgsl-integer.ts +564 -0
  748. package/src/modules/math/fp64/fp64-arithmetic-wgsl.ts +924 -0
  749. package/src/modules/math/fp64/fp64-functions-glsl.ts +675 -0
  750. package/src/modules/math/fp64/fp64-functions-wgsl.ts +157 -0
  751. package/src/modules/math/fp64/fp64-utils.ts +46 -0
  752. package/src/modules/math/fp64/fp64.ts +64 -0
  753. package/src/modules/math/random/random.ts +25 -0
  754. package/src/modules/math/value-noise/value-noise.ts +70 -0
  755. package/src/modules/volume/volume-raymarch.ts +87 -0
  756. package/src/types/align-to.ts +13 -0
  757. package/src/types/primitive-data-types.ts +10 -0
  758. package/src/types/sampler-props.ts +39 -0
  759. package/src/types/shader-block-layout.ts +340 -0
  760. package/src/types/shader-layout.ts +208 -0
  761. package/src/types/shader-type-decoder.ts +285 -0
  762. package/src/types/shader-types.ts +207 -0
  763. package/src/types/texture-formats.ts +157 -0
  764. package/src/types.ts +116 -0
  765. package/src/wgsl.ts +34 -0
@@ -0,0 +1,64 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+
7
+ export type FireflyProps = {
8
+ enabled?: number;
9
+ time?: number;
10
+ radius?: number;
11
+ speed?: number;
12
+ pulse?: number;
13
+ };
14
+ export type FireflyUniforms = Required<FireflyProps>;
15
+ const uniforms = {enabled: 0, time: 0, radius: 8, speed: 0.6, pulse: 0.85};
16
+
17
+ /** Seeded smooth wandering and independently phased bioluminescence. Positions are in metres. */
18
+ export const firefly = {
19
+ name: 'firefly',
20
+ uniformTypes: {enabled: 'f32', time: 'f32', radius: 'f32', speed: 'f32', pulse: 'f32'},
21
+ defaultUniforms: uniforms,
22
+ getUniforms(props = {}, previous = uniforms) {
23
+ return {...uniforms, ...previous, ...props};
24
+ },
25
+ source: `struct FireflyUniforms {enabled: f32, time: f32, radius: f32, speed: f32, pulse: f32};
26
+ @group(3) @binding(auto) var<uniform> firefly: FireflyUniforms;
27
+ fn firefly_getPosition(position: vec3f, seed: f32, time: f32) -> vec3f {
28
+ if (firefly.enabled <= 0.0) { return position; }
29
+ let phase = seed * 2.399963;
30
+ let travel = time * firefly.speed;
31
+ let offset = vec3f(sin(travel * 0.71 + phase) + sin(travel * 1.31 + phase * 1.7) * 0.35,
32
+ cos(travel * 0.83 + phase * 1.2) + sin(travel * 0.47 + phase * 2.3) * 0.4,
33
+ sin(travel * 0.59 + phase * 1.9) * 0.3);
34
+ return position + offset * firefly.radius * firefly.enabled;
35
+ }
36
+ fn firefly_getBrightness(seed: f32, time: f32) -> f32 {
37
+ if (firefly.enabled <= 0.0) { return 1.0; }
38
+ let phase = seed * 2.399963;
39
+ let pulse = pow(0.5 + 0.5 * sin(time * firefly.speed * (1.6 + fract(seed * 0.37)) + phase), 3.0);
40
+ return mix(1.0, mix(0.08, 1.0, pulse), firefly.pulse * firefly.enabled);
41
+ }`,
42
+ vs: `layout(std140) uniform fireflyUniforms {
43
+ float enabled;
44
+ float time;
45
+ float radius;
46
+ float speed;
47
+ float pulse;
48
+ } firefly;
49
+ vec3 firefly_getPosition(vec3 position, float seed, float time) {
50
+ if (firefly.enabled <= 0.0) { return position; }
51
+ float phase = seed * 2.399963;
52
+ float travel = time * firefly.speed;
53
+ vec3 offset = vec3(sin(travel * 0.71 + phase) + sin(travel * 1.31 + phase * 1.7) * 0.35,
54
+ cos(travel * 0.83 + phase * 1.2) + sin(travel * 0.47 + phase * 2.3) * 0.4,
55
+ sin(travel * 0.59 + phase * 1.9) * 0.3);
56
+ return position + offset * firefly.radius * firefly.enabled;
57
+ }
58
+ float firefly_getBrightness(float seed, float time) {
59
+ if (firefly.enabled <= 0.0) { return 1.0; }
60
+ float phase = seed * 2.399963;
61
+ float pulse = pow(0.5 + 0.5 * sin(time * firefly.speed * (1.6 + fract(seed * 0.37)) + phase), 3.0);
62
+ return mix(1.0, mix(0.08, 1.0, pulse), firefly.pulse * firefly.enabled);
63
+ }`
64
+ } as const satisfies ShaderModule<FireflyProps, FireflyUniforms>;
@@ -0,0 +1,124 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+ import {clouds} from '../clouds/clouds';
7
+
8
+ export type GlobeCloudUniforms = {planetRadius: number};
9
+ export type GlobeCloudProps = Partial<GlobeCloudUniforms>;
10
+
11
+ /** Spherical cloud shell using the existing cloud density, noise and sunlight model.
12
+ * Camera and rays are globe-centered, with the planet's surface at unit radius.
13
+ * The shared clouds uniforms retain metre/second units; sunDirection is globe-centered XYZ.
14
+ */
15
+ export const globeClouds = {
16
+ name: 'globeClouds',
17
+ dependencies: [clouds],
18
+ uniformTypes: {planetRadius: 'f32'},
19
+ defaultUniforms: {planetRadius: 6370972},
20
+ fs: /* glsl */ `
21
+ layout(std140) uniform globeCloudsUniforms { float planetRadius; } globeClouds;
22
+ vec2 globeClouds_intersectSphere(vec3 camera, vec3 direction, float radius) {
23
+ float projected = dot(camera, direction);
24
+ float discriminant = projected * projected - dot(camera, camera) + radius * radius;
25
+ if (discriminant < 0.0) return vec2(-1.0);
26
+ float root = sqrt(discriminant);
27
+ return vec2(-projected - root, -projected + root);
28
+ }
29
+ float globeClouds_getDensity(vec3 position) {
30
+ float height = ((length(position) - 1.0) * globeClouds.planetRadius - clouds.altitude) / max(clouds.thickness, 1.0);
31
+ // Rotate a 3D field rather than wrapping longitude UVs: no seams or pinched poles.
32
+ vec2 angle = clouds.velocity * clouds.time / globeClouds.planetRadius;
33
+ vec3 rotated = vec3(cos(angle.x) * position.x + sin(angle.x) * position.y,
34
+ -sin(angle.x) * position.x + cos(angle.x) * position.y, position.z);
35
+ rotated = vec3(rotated.x, cos(angle.y) * rotated.y + sin(angle.y) * rotated.z,
36
+ -sin(angle.y) * rotated.y + cos(angle.y) * rotated.z);
37
+ return clouds_getDensityAt(rotated * globeClouds.planetRadius / max(clouds.scale, 1.0), height);
38
+ }
39
+ vec4 globeClouds_getColor(vec3 camera, vec3 direction) {
40
+ if (clouds.cover <= 0.0 || clouds.density <= 0.0) return vec4(0.0);
41
+ float bottom = 1.0 + clouds.altitude / globeClouds.planetRadius;
42
+ float top = bottom + max(clouds.thickness, 1.0) / globeClouds.planetRadius;
43
+ vec2 outer = globeClouds_intersectSphere(camera, direction, top);
44
+ if (outer.y <= 0.0) return vec4(0.0);
45
+ float start = max(outer.x, 0.0);
46
+ float end = outer.y;
47
+ vec2 inner = globeClouds_intersectSphere(camera, direction, bottom);
48
+ if (length(camera) < bottom) start = max(start, inner.y);
49
+ else if (inner.x >= start) end = min(end, inner.x);
50
+ vec2 ground = globeClouds_intersectSphere(camera, direction, 1.0);
51
+ if (ground.x >= 0.0) end = min(end, ground.x);
52
+ if (end <= start) return vec4(0.0);
53
+ float stepLength = (end - start) / 32.0;
54
+ float jitter = valueNoise_hash(direction.xy * 4096.0);
55
+ vec3 sunlightDirection = normalize(clouds.sunDirection);
56
+ float silver = pow(max(dot(direction, sunlightDirection), 0.0), 12.0);
57
+ vec3 radiance = vec3(0.0);
58
+ float transmittance = 1.0;
59
+ for (int sampleIndex = 0; sampleIndex < 32; sampleIndex++) {
60
+ vec3 position = camera + direction * (start + (float(sampleIndex) + jitter) * stepLength);
61
+ float density = globeClouds_getDensity(position);
62
+ float sunDensity = globeClouds_getDensity(position + sunlightDirection * clouds.thickness * 0.28 / globeClouds.planetRadius);
63
+ float daylight = smoothstep(-0.08, 0.18, dot(normalize(position), sunlightDirection));
64
+ float alpha = 1.0 - exp(-density * clouds.density * stepLength * globeClouds.planetRadius);
65
+ radiance += transmittance * alpha * clouds_getLighting(density * 0.25, sunDensity * 0.25, daylight, silver);
66
+ transmittance *= 1.0 - alpha;
67
+ if (transmittance < 0.01) break;
68
+ }
69
+ return vec4(radiance, 1.0 - transmittance);
70
+ }
71
+ `,
72
+ source: /* wgsl */ `
73
+ struct globeCloudsUniforms { planetRadius: f32 };
74
+ @group(3) @binding(auto) var<uniform> globeClouds: globeCloudsUniforms;
75
+ fn globeClouds_intersectSphere(camera: vec3f, direction: vec3f, radius: f32) -> vec2f {
76
+ let projected = dot(camera, direction);
77
+ let discriminant = projected * projected - dot(camera, camera) + radius * radius;
78
+ if (discriminant < 0.0) { return vec2f(-1.0); }
79
+ let root = sqrt(discriminant);
80
+ return vec2f(-projected - root, -projected + root);
81
+ }
82
+ fn globeClouds_getDensity(position: vec3f) -> f32 {
83
+ let height = ((length(position) - 1.0) * globeClouds.planetRadius - clouds.altitude) / max(clouds.thickness, 1.0);
84
+ let angle = clouds.velocity * clouds.time / globeClouds.planetRadius;
85
+ var rotated = vec3f(cos(angle.x) * position.x + sin(angle.x) * position.y,
86
+ -sin(angle.x) * position.x + cos(angle.x) * position.y, position.z);
87
+ rotated = vec3f(rotated.x, cos(angle.y) * rotated.y + sin(angle.y) * rotated.z,
88
+ -sin(angle.y) * rotated.y + cos(angle.y) * rotated.z);
89
+ return clouds_getDensityAt(rotated * globeClouds.planetRadius / max(clouds.scale, 1.0), height);
90
+ }
91
+ fn globeClouds_getColor(camera: vec3f, direction: vec3f) -> vec4f {
92
+ if (clouds.cover <= 0.0 || clouds.density <= 0.0) { return vec4f(0.0); }
93
+ let bottom = 1.0 + clouds.altitude / globeClouds.planetRadius;
94
+ let top = bottom + max(clouds.thickness, 1.0) / globeClouds.planetRadius;
95
+ let outer = globeClouds_intersectSphere(camera, direction, top);
96
+ if (outer.y <= 0.0) { return vec4f(0.0); }
97
+ var start = max(outer.x, 0.0);
98
+ var end = outer.y;
99
+ let inner = globeClouds_intersectSphere(camera, direction, bottom);
100
+ if (length(camera) < bottom) { start = max(start, inner.y); }
101
+ else if (inner.x >= start) { end = min(end, inner.x); }
102
+ let ground = globeClouds_intersectSphere(camera, direction, 1.0);
103
+ if (ground.x >= 0.0) { end = min(end, ground.x); }
104
+ if (end <= start) { return vec4f(0.0); }
105
+ let stepLength = (end - start) / 32.0;
106
+ let jitter = valueNoise_hash(direction.xy * 4096.0);
107
+ let sunlightDirection = normalize(clouds.sunDirection);
108
+ let silver = pow(max(dot(direction, sunlightDirection), 0.0), 12.0);
109
+ var radiance = vec3f(0.0);
110
+ var transmittance = 1.0;
111
+ for (var sampleIndex = 0; sampleIndex < 32; sampleIndex++) {
112
+ let position = camera + direction * (start + (f32(sampleIndex) + jitter) * stepLength);
113
+ let density = globeClouds_getDensity(position);
114
+ let sunDensity = globeClouds_getDensity(position + sunlightDirection * clouds.thickness * 0.28 / globeClouds.planetRadius);
115
+ let daylight = smoothstep(-0.08, 0.18, dot(normalize(position), sunlightDirection));
116
+ let alpha = 1.0 - exp(-density * clouds.density * stepLength * globeClouds.planetRadius);
117
+ radiance += transmittance * alpha * clouds_getLighting(density * 0.25, sunDensity * 0.25, daylight, silver);
118
+ transmittance *= 1.0 - alpha;
119
+ if (transmittance < 0.01) { break; }
120
+ }
121
+ return vec4f(radiance, 1.0 - transmittance);
122
+ }
123
+ `
124
+ } as const satisfies ShaderModule<GlobeCloudProps, GlobeCloudUniforms>;
@@ -0,0 +1,55 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import {NumberArray3} from '@math.gl/core';
6
+ import {ShaderModule} from '../../../lib/shader-module/shader-module';
7
+ import {floatColors} from '../../color/float-colors';
8
+ import {lighting} from '../lights/lighting';
9
+ import {PHONG_VS, PHONG_FS} from '../phong-material/phong-shaders-glsl';
10
+ import {PHONG_WGSL} from '../phong-material/phong-shaders-wgsl';
11
+
12
+ export type GouraudMaterialProps = {
13
+ unlit?: boolean;
14
+ ambient?: number;
15
+ diffuse?: number;
16
+ /** Specularity exponent */
17
+ shininess?: number;
18
+ specularColor?: [number, number, number];
19
+ };
20
+
21
+ const DEFAULT_SPECULAR_COLOR: NumberArray3 = [38.25, 38.25, 38.25];
22
+
23
+ /** In Gouraud shading, color is calculated for each triangle vertex normal, and then color is interpolated colors across the triangle */
24
+ export const gouraudMaterial: ShaderModule<GouraudMaterialProps> = {
25
+ props: {} as GouraudMaterialProps,
26
+
27
+ name: 'gouraudMaterial',
28
+ bindingLayout: [{name: 'gouraudMaterial', group: 3}],
29
+ // Note these are switched between phong and gouraud
30
+ vs: PHONG_FS.replace('phongMaterial', 'gouraudMaterial'),
31
+ fs: PHONG_VS.replace('phongMaterial', 'gouraudMaterial'),
32
+ source: PHONG_WGSL.replaceAll('phongMaterial', 'gouraudMaterial'),
33
+ defines: {
34
+ LIGHTING_VERTEX: true
35
+ },
36
+ dependencies: [lighting, floatColors],
37
+ uniformTypes: {
38
+ unlit: 'i32',
39
+ ambient: 'f32',
40
+ diffuse: 'f32',
41
+ shininess: 'f32',
42
+ specularColor: 'vec3<f32>'
43
+ },
44
+ defaultUniforms: {
45
+ unlit: false,
46
+ ambient: 0.35,
47
+ diffuse: 0.6,
48
+ shininess: 32,
49
+ specularColor: DEFAULT_SPECULAR_COLOR
50
+ },
51
+
52
+ getUniforms(props: GouraudMaterialProps) {
53
+ return {...gouraudMaterial.defaultUniforms, ...props};
54
+ }
55
+ };
@@ -0,0 +1,36 @@
1
+ # heightFog
2
+
3
+ Analytic fog extinction for fragment shaders in GLSL and WGSL. Call
4
+ `heightFog_getColor(color, position, cameraPosition)` with both positions in the same
5
+ local east/north/up metre coordinates. It preserves alpha and mixes linear RGB with
6
+ `heightFog.color`. `heightFog_getTransmittance(position, cameraPosition)` returns the
7
+ unscattered fraction for custom compositing.
8
+
9
+ `density` is base extinction per metre, `baseHeight` is in metres, and `heightFalloff`
10
+ is inverse metres. Density stays constant below the base and decays exponentially above
11
+ it. Zero density disables fog; zero falloff gives uniform distance fog. The ray integral
12
+ handles horizontal rays and rays crossing the base without a marching loop or history.
13
+ This is a constant-color atmosphere approximation, without shadowing or directional scattering.
14
+
15
+
16
+ `heightFogFunctions` exposes the same calculation without a uniform block. Its
17
+ `heightFog_getRayTransmittance(rayLength, cameraHeight, fragmentHeight, density, baseHeight, heightFalloff)`
18
+ function accepts scalar metre-space ray length and heights, allowing callers to choose an up
19
+ axis and supply their own uniform layout. The `heightFog` material module depends on it, as does
20
+ `@luma.gl/engine/effects`' analytic height-fog pass. The two paths therefore share the density integral.
21
+
22
+
23
+ For drifting wisps, set `variation` from 0 to 1, `wispScale` in metres, `velocity`
24
+ in metres per second, and `time` in seconds. Defaults keep the uniform analytic path.
25
+ With variation enabled, twelve ray segments sample warped, multiscale world-space
26
+ noise; each segment retains the analytic height integral. This is a bounded-cost density
27
+ approximation, not a volumetric fluid simulation. Pausing time freezes it; zero velocity
28
+ keeps a static, nonuniform field. Both material and depth-pass fog call the same
29
+ `heightFog_getSpatialTransmittance` helper. It needs no noise textures or temporal history.
30
+ The tint remains constant; density varies. Very long rays through small wisps can undersample
31
+ this fixed twelve-segment approximation, so choose bank sizes appropriate to the scene.
32
+
33
+ Set `evolutionSpeed` above zero for gentle internal deformation in addition to advection.
34
+ Zero retains the rigid density field. Applications control time; freeze it to pause both
35
+ forms of motion. When changing drift speed interactively, integrate distance over time
36
+ instead of multiplying the new speed by the entire elapsed clock.
@@ -0,0 +1,116 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+ import {valueNoise} from '../../math/value-noise/value-noise';
7
+
8
+ /** Uniform-free analytic extinction shared by materials and screen-space effects.
9
+ * Lengths and heights are metres; density and falloff are inverse metres.
10
+ */
11
+ export const heightFogFunctions = {
12
+ name: 'heightFogFunctions',
13
+ dependencies: [valueNoise],
14
+ fs: /* glsl */ `
15
+ float heightFog_getRayTransmittance(float rayLength, float cameraHeight, float fragmentHeight, float density, float baseHeight, float heightFalloff) {
16
+ float startHeight = (cameraHeight - baseHeight) * max(heightFalloff, 0.0);
17
+ float endHeight = (fragmentHeight - baseHeight) * max(heightFalloff, 0.0);
18
+ float lowerHeight = min(startHeight, endHeight);
19
+ float upperHeight = max(startHeight, endHeight);
20
+ float averageDensity = 1.0;
21
+ if (upperHeight > 0.0) {
22
+ float heightSpan = upperHeight - lowerHeight;
23
+ if (heightSpan < 0.001) {
24
+ averageDensity = exp(-max((startHeight + endHeight) * 0.5, 0.0));
25
+ } else if (lowerHeight >= 0.0) {
26
+ averageDensity = (exp(-lowerHeight) - exp(-upperHeight)) / heightSpan;
27
+ } else {
28
+ averageDensity = (-lowerHeight + 1.0 - exp(-upperHeight)) / heightSpan;
29
+ }
30
+ }
31
+ return exp(-max(density, 0.0) * rayLength * averageDensity);
32
+ }
33
+ float heightFog_hash(vec2 cell) { return valueNoise_hash(cell); }
34
+ float heightFog_noise(vec2 position) { return valueNoise_noise(position); }
35
+ // Integrate drifting density along the ray so wisps occupy space rather than coat surfaces.
36
+ float heightFog_getSpatialTransmittance(vec3 camera, vec3 position, vec3 upDirection,
37
+ float density, float baseHeight, float heightFalloff, float variation, float wispScale,
38
+ float time, vec3 velocity, float evolutionSpeed) {
39
+ if (density <= 0.0) return 1.0;
40
+ float rayLength = distance(camera, position);
41
+ if (variation <= 0.0) return heightFog_getRayTransmittance(rayLength, dot(camera, upDirection),
42
+ dot(position, upDirection), density, baseHeight, heightFalloff);
43
+ vec3 reference = abs(upDirection.z) < 0.9 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
44
+ vec3 horizontal = normalize(cross(reference, upDirection));
45
+ vec3 forward = cross(upDirection, horizontal);
46
+ float transmittance = 1.0;
47
+ for (int sampleIndex = 0; sampleIndex < 12; sampleIndex++) {
48
+ float fraction = float(sampleIndex) / 12.0;
49
+ vec3 start = mix(camera, position, fraction);
50
+ vec3 end = mix(camera, position, fraction + 1.0 / 12.0);
51
+ vec3 samplePosition = (start + end) * 0.5 - velocity * time;
52
+ vec2 coordinate = vec2(dot(samplePosition, horizontal), dot(samplePosition, forward)) / max(wispScale, 1.0);
53
+ coordinate.y = coordinate.y * 1.8 + dot(samplePosition, upDirection) / max(wispScale, 1.0);
54
+ float warp = heightFog_noise(coordinate * 0.45 + vec2(8.3, 2.7) + time * evolutionSpeed * vec2(1.0, 0.37));
55
+ float broad = heightFog_noise(coordinate + vec2(warp * 2.0, warp * 0.8));
56
+ float detail = heightFog_noise(mat2(0.8, 0.6, -0.6, 0.8) * coordinate * 2.17 + vec2(17.1, 9.2) + broad * 0.7);
57
+ float modulation = mix(1.0, 1.8 * smoothstep(0.15, 0.85, broad * 0.7 + detail * 0.3), clamp(variation, 0.0, 1.0));
58
+ transmittance *= heightFog_getRayTransmittance(rayLength / 12.0, dot(start, upDirection),
59
+ dot(end, upDirection), density * modulation, baseHeight, heightFalloff);
60
+ }
61
+ return transmittance;
62
+ }
63
+
64
+ `,
65
+ source: /* wgsl */ `
66
+ fn heightFog_getRayTransmittance(rayLength: f32, cameraHeight: f32, fragmentHeight: f32, density: f32, baseHeight: f32, heightFalloff: f32) -> f32 {
67
+ let startHeight = (cameraHeight - baseHeight) * max(heightFalloff, 0.0);
68
+ let endHeight = (fragmentHeight - baseHeight) * max(heightFalloff, 0.0);
69
+ let lowerHeight = min(startHeight, endHeight);
70
+ let upperHeight = max(startHeight, endHeight);
71
+ var averageDensity = 1.0;
72
+ if (upperHeight > 0.0) {
73
+ let heightSpan = upperHeight - lowerHeight;
74
+ if (heightSpan < 0.001) {
75
+ averageDensity = exp(-max((startHeight + endHeight) * 0.5, 0.0));
76
+ } else if (lowerHeight >= 0.0) {
77
+ averageDensity = (exp(-lowerHeight) - exp(-upperHeight)) / heightSpan;
78
+ } else {
79
+ averageDensity = (-lowerHeight + 1.0 - exp(-upperHeight)) / heightSpan;
80
+ }
81
+ }
82
+ return exp(-max(density, 0.0) * rayLength * averageDensity);
83
+ }
84
+ fn heightFog_hash(cell: vec2f) -> f32 { return valueNoise_hash(cell); }
85
+ fn heightFog_noise(position: vec2f) -> f32 { return valueNoise_noise(position); }
86
+ // Integrate drifting density along the ray so wisps occupy space rather than coat surfaces.
87
+ fn heightFog_getSpatialTransmittance(camera: vec3f, position: vec3f, upDirection: vec3f,
88
+ density: f32, baseHeight: f32, heightFalloff: f32, variation: f32, wispScale: f32,
89
+ time: f32, velocity: vec3f, evolutionSpeed: f32) -> f32 {
90
+ if (density <= 0.0) { return 1.0; }
91
+ let rayLength = distance(camera, position);
92
+ if (variation <= 0.0) { return heightFog_getRayTransmittance(rayLength, dot(camera, upDirection),
93
+ dot(position, upDirection), density, baseHeight, heightFalloff); }
94
+ let reference = select(vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0), abs(upDirection.z) < 0.9);
95
+ let horizontal = normalize(cross(reference, upDirection));
96
+ let forward = cross(upDirection, horizontal);
97
+ var transmittance = 1.0;
98
+ for (var sampleIndex = 0; sampleIndex < 12; sampleIndex++) {
99
+ let fraction = f32(sampleIndex) / 12.0;
100
+ let start = mix(camera, position, fraction);
101
+ let end = mix(camera, position, fraction + 1.0 / 12.0);
102
+ let samplePosition = (start + end) * 0.5 - velocity * time;
103
+ var coordinate = vec2f(dot(samplePosition, horizontal), dot(samplePosition, forward)) / max(wispScale, 1.0);
104
+ coordinate.y = coordinate.y * 1.8 + dot(samplePosition, upDirection) / max(wispScale, 1.0);
105
+ let warp = heightFog_noise(coordinate * 0.45 + vec2f(8.3, 2.7) + time * evolutionSpeed * vec2f(1.0, 0.37));
106
+ let broad = heightFog_noise(coordinate + vec2f(warp * 2.0, warp * 0.8));
107
+ let detail = heightFog_noise(mat2x2f(vec2f(0.8, 0.6), vec2f(-0.6, 0.8)) * coordinate * 2.17 + vec2f(17.1, 9.2) + vec2f(broad * 0.7));
108
+ let modulation = mix(1.0, 1.8 * smoothstep(0.15, 0.85, broad * 0.7 + detail * 0.3), clamp(variation, 0.0, 1.0));
109
+ transmittance *= heightFog_getRayTransmittance(rayLength / 12.0, dot(start, upDirection),
110
+ dot(end, upDirection), density * modulation, baseHeight, heightFalloff);
111
+ }
112
+ return transmittance;
113
+ }
114
+
115
+ `
116
+ } as const satisfies ShaderModule;
@@ -0,0 +1,96 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+ import {heightFogFunctions} from './height-fog-functions';
7
+
8
+ export type HeightFogUniforms = {
9
+ color: [number, number, number];
10
+ density: number;
11
+ baseHeight: number;
12
+ heightFalloff: number;
13
+ /** Spatial density variation, from uniform (0) to wispy (1). */
14
+ variation: number;
15
+ /** Horizontal size of fog banks in metres. */
16
+ wispScale: number;
17
+ /** Fog advection in metres per second in the same frame as the positions. */
18
+ velocity: [number, number, number];
19
+ time: number;
20
+ /** Rate of internal wisp deformation; zero keeps a rigidly advected field. */
21
+ evolutionSpeed: number;
22
+ };
23
+ export type HeightFogProps = Partial<HeightFogUniforms>;
24
+
25
+ /** Analytic extinction through a height-dependent atmosphere. All distances are metres. */
26
+ export const heightFog = {
27
+ name: 'heightFog',
28
+ dependencies: [heightFogFunctions],
29
+ bindingLayout: [{name: 'heightFog', group: 3}],
30
+ uniformTypes: {
31
+ color: 'vec3<f32>',
32
+ density: 'f32',
33
+ baseHeight: 'f32',
34
+ heightFalloff: 'f32',
35
+ variation: 'f32',
36
+ wispScale: 'f32',
37
+ velocity: 'vec3<f32>',
38
+ time: 'f32',
39
+ evolutionSpeed: 'f32'
40
+ },
41
+ defaultUniforms: {
42
+ color: [0.65, 0.72, 0.78],
43
+ density: 0,
44
+ baseHeight: 0,
45
+ heightFalloff: 0.01,
46
+ variation: 0,
47
+ wispScale: 160,
48
+ velocity: [0, 0, 0],
49
+ time: 0,
50
+ evolutionSpeed: 0
51
+ },
52
+ getUniforms(props: HeightFogProps = {}) {
53
+ return props;
54
+ },
55
+ fs: /* glsl */ `
56
+ layout(std140) uniform heightFogUniforms {
57
+ vec3 color;
58
+ float density;
59
+ float baseHeight;
60
+ float heightFalloff;
61
+ float variation;
62
+ float wispScale;
63
+ vec3 velocity;
64
+ float time;
65
+ float evolutionSpeed;
66
+ } heightFog;
67
+ float heightFog_getTransmittance(vec3 position, vec3 cameraPosition) {
68
+ return heightFog_getSpatialTransmittance(cameraPosition, position, vec3(0.0, 0.0, 1.0),
69
+ heightFog.density, heightFog.baseHeight, heightFog.heightFalloff, heightFog.variation, heightFog.wispScale, heightFog.time, heightFog.velocity, heightFog.evolutionSpeed);
70
+ }
71
+ vec4 heightFog_getColor(vec4 color, vec3 position, vec3 cameraPosition) {
72
+ return vec4(mix(heightFog.color, color.rgb, heightFog_getTransmittance(position, cameraPosition)), color.a);
73
+ }
74
+ `,
75
+ source: /* wgsl */ `
76
+ struct heightFogUniforms {
77
+ color: vec3<f32>,
78
+ density: f32,
79
+ baseHeight: f32,
80
+ heightFalloff: f32,
81
+ variation: f32,
82
+ wispScale: f32,
83
+ velocity: vec3<f32>,
84
+ time: f32,
85
+ evolutionSpeed: f32,
86
+ };
87
+ @group(3) @binding(auto) var<uniform> heightFog: heightFogUniforms;
88
+ fn heightFog_getTransmittance(position: vec3<f32>, cameraPosition: vec3<f32>) -> f32 {
89
+ return heightFog_getSpatialTransmittance(cameraPosition, position, vec3<f32>(0.0, 0.0, 1.0),
90
+ heightFog.density, heightFog.baseHeight, heightFog.heightFalloff, heightFog.variation, heightFog.wispScale, heightFog.time, heightFog.velocity, heightFog.evolutionSpeed);
91
+ }
92
+ fn heightFog_getColor(color: vec4<f32>, position: vec3<f32>, cameraPosition: vec3<f32>) -> vec4<f32> {
93
+ return vec4<f32>(mix(heightFog.color, color.rgb, heightFog_getTransmittance(position, cameraPosition)), color.a);
94
+ }
95
+ `
96
+ } as const satisfies ShaderModule<HeightFogProps, HeightFogUniforms>;
@@ -0,0 +1,43 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+
7
+ export type IBLBindings<TextureT = unknown> = {
8
+ pbr_diffuseEnvSampler?: TextureT | null;
9
+ pbr_specularEnvSampler?: TextureT | null;
10
+ pbr_brdfLUT?: TextureT | null;
11
+ };
12
+
13
+ export const iblWGSL = /* wgsl */ `\
14
+ #ifdef USE_IBL
15
+ @group(2) @binding(auto) var pbr_diffuseEnvSampler: texture_cube<f32>;
16
+ @group(2) @binding(auto) var pbr_diffuseEnvSamplerSampler: sampler;
17
+ @group(2) @binding(auto) var pbr_specularEnvSampler: texture_cube<f32>;
18
+ @group(2) @binding(auto) var pbr_specularEnvSamplerSampler: sampler;
19
+ @group(2) @binding(auto) var pbr_brdfLUT: texture_2d<f32>;
20
+ @group(2) @binding(auto) var pbr_brdfLUTSampler: sampler;
21
+ #endif
22
+ `;
23
+
24
+ export const iblGLSL = /* glsl */ `\
25
+ #ifdef USE_IBL
26
+ uniform samplerCube pbr_diffuseEnvSampler;
27
+ uniform samplerCube pbr_specularEnvSampler;
28
+ uniform sampler2D pbr_brdfLUT;
29
+ #endif
30
+ `;
31
+
32
+ export const ibl = {
33
+ name: 'ibl',
34
+ firstBindingSlot: 32,
35
+ bindingLayout: [
36
+ {name: 'pbr_diffuseEnvSampler', group: 2},
37
+ {name: 'pbr_specularEnvSampler', group: 2},
38
+ {name: 'pbr_brdfLUT', group: 2}
39
+ ],
40
+ source: iblWGSL,
41
+ vs: iblGLSL,
42
+ fs: iblGLSL
43
+ } as const satisfies ShaderModule<IBLBindings, {}, IBLBindings>;
@@ -0,0 +1,42 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import {ShaderModule} from '../../../lib/shader-module/shader-module';
6
+ import {lighting} from '../lights/lighting';
7
+ import {LAMBERT_WGSL} from './lambert-shaders-wgsl';
8
+ import {LAMBERT_VS, LAMBERT_FS} from './lambert-shaders-glsl';
9
+
10
+ /** Uniform props for the built-in diffuse-only Lambert material model. */
11
+ export type LambertMaterialProps = {
12
+ unlit?: boolean;
13
+ ambient?: number;
14
+ diffuse?: number;
15
+ };
16
+
17
+ /** A matte material model that applies diffuse-only Lambert lighting per fragment. */
18
+ export const lambertMaterial: ShaderModule<LambertMaterialProps> = {
19
+ name: 'lambertMaterial',
20
+ firstBindingSlot: 0,
21
+ bindingLayout: [{name: 'lambertMaterial', group: 3}],
22
+ dependencies: [lighting],
23
+ source: LAMBERT_WGSL,
24
+ vs: LAMBERT_VS,
25
+ fs: LAMBERT_FS,
26
+ defines: {
27
+ LIGHTING_FRAGMENT: true
28
+ },
29
+ uniformTypes: {
30
+ unlit: 'i32',
31
+ ambient: 'f32',
32
+ diffuse: 'f32'
33
+ },
34
+ defaultUniforms: {
35
+ unlit: false,
36
+ ambient: 0.35,
37
+ diffuse: 0.6
38
+ },
39
+ getUniforms(props?: LambertMaterialProps) {
40
+ return {...lambertMaterial.defaultUniforms, ...props};
41
+ }
42
+ };
@@ -0,0 +1,61 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ export const LAMBERT_VS = /* glsl */ `\
6
+ layout(std140) uniform lambertMaterialUniforms {
7
+ uniform bool unlit;
8
+ uniform float ambient;
9
+ uniform float diffuse;
10
+ } material;
11
+ `;
12
+
13
+ export const LAMBERT_FS = /* glsl */ `\
14
+ layout(std140) uniform lambertMaterialUniforms {
15
+ uniform bool unlit;
16
+ uniform float ambient;
17
+ uniform float diffuse;
18
+ } material;
19
+
20
+ vec3 lambert_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 normal_worldspace, vec3 color) {
21
+ float lambertian = max(dot(light_direction, normal_worldspace), 0.0);
22
+ return lambertian * material.diffuse * surfaceColor * color;
23
+ }
24
+
25
+ vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {
26
+ vec3 lightColor = surfaceColor;
27
+
28
+ if (material.unlit) {
29
+ return surfaceColor;
30
+ }
31
+
32
+ if (lighting.enabled == 0) {
33
+ return lightColor;
34
+ }
35
+
36
+ lightColor = material.ambient * surfaceColor * lighting.ambientColor;
37
+
38
+ for (int i = 0; i < lighting.pointLightCount; i++) {
39
+ PointLight pointLight = lighting_getPointLight(i);
40
+ vec3 light_position_worldspace = pointLight.position;
41
+ vec3 light_direction = normalize(light_position_worldspace - position_worldspace);
42
+ float light_attenuation = getPointLightAttenuation(pointLight, distance(light_position_worldspace, position_worldspace));
43
+ lightColor += lambert_getLightColor(surfaceColor, light_direction, normal_worldspace, pointLight.color / light_attenuation);
44
+ }
45
+
46
+ for (int i = 0; i < lighting.spotLightCount; i++) {
47
+ SpotLight spotLight = lighting_getSpotLight(i);
48
+ vec3 light_position_worldspace = spotLight.position;
49
+ vec3 light_direction = normalize(light_position_worldspace - position_worldspace);
50
+ float light_attenuation = getSpotLightAttenuation(spotLight, position_worldspace);
51
+ lightColor += lambert_getLightColor(surfaceColor, light_direction, normal_worldspace, spotLight.color / light_attenuation);
52
+ }
53
+
54
+ for (int i = 0; i < lighting.directionalLightCount; i++) {
55
+ DirectionalLight directionalLight = lighting_getDirectionalLight(i);
56
+ lightColor += lambert_getLightColor(surfaceColor, -directionalLight.direction, normal_worldspace, directionalLight.color);
57
+ }
58
+
59
+ return lightColor;
60
+ }
61
+ `;