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

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 (699) hide show
  1. package/LICENSE +38 -0
  2. package/README.md +25 -2
  3. package/dist/dist.dev.js +19880 -0
  4. package/dist/dist.min.js +12192 -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 +243 -0
  12. package/dist/index.cjs.map +6 -0
  13. package/dist/index.d.ts +91 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +65 -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/firefly/firefly.cjs +74 -0
  328. package/dist/modules/lighting/firefly/firefly.d.ts +36 -0
  329. package/dist/modules/lighting/firefly/firefly.d.ts.map +1 -0
  330. package/dist/modules/lighting/firefly/firefly.js +53 -0
  331. package/dist/modules/lighting/firefly/firefly.js.map +1 -0
  332. package/dist/modules/lighting/globe-clouds/globe-clouds.cjs +143 -0
  333. package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts +53 -0
  334. package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts.map +1 -0
  335. package/dist/modules/lighting/globe-clouds/globe-clouds.js +119 -0
  336. package/dist/modules/lighting/globe-clouds/globe-clouds.js.map +1 -0
  337. package/dist/modules/lighting/gouraud-material/gouraud-material.cjs +61 -0
  338. package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts +12 -0
  339. package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts.map +1 -0
  340. package/dist/modules/lighting/gouraud-material/gouraud-material.js +40 -0
  341. package/dist/modules/lighting/gouraud-material/gouraud-material.js.map +1 -0
  342. package/dist/modules/lighting/height-fog/height-fog-functions.cjs +139 -0
  343. package/dist/modules/lighting/height-fog/height-fog-functions.d.ts +14 -0
  344. package/dist/modules/lighting/height-fog/height-fog-functions.d.ts.map +1 -0
  345. package/dist/modules/lighting/height-fog/height-fog-functions.js +114 -0
  346. package/dist/modules/lighting/height-fog/height-fog-functions.js.map +1 -0
  347. package/dist/modules/lighting/height-fog/height-fog.cjs +104 -0
  348. package/dist/modules/lighting/height-fog/height-fog.d.ts +60 -0
  349. package/dist/modules/lighting/height-fog/height-fog.d.ts.map +1 -0
  350. package/dist/modules/lighting/height-fog/height-fog.js +77 -0
  351. package/dist/modules/lighting/height-fog/height-fog.js.map +1 -0
  352. package/dist/modules/lighting/ibl/ibl.cjs +63 -0
  353. package/dist/modules/lighting/ibl/ibl.d.ts +25 -0
  354. package/dist/modules/lighting/ibl/ibl.d.ts.map +1 -0
  355. package/dist/modules/lighting/ibl/ibl.js +33 -0
  356. package/dist/modules/lighting/ibl/ibl.js.map +1 -0
  357. package/dist/modules/lighting/lambert-material/lambert-material.cjs +54 -0
  358. package/dist/modules/lighting/lambert-material/lambert-material.d.ts +10 -0
  359. package/dist/modules/lighting/lambert-material/lambert-material.d.ts.map +1 -0
  360. package/dist/modules/lighting/lambert-material/lambert-material.js +33 -0
  361. package/dist/modules/lighting/lambert-material/lambert-material.js.map +1 -0
  362. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.cjs +88 -0
  363. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts +3 -0
  364. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts.map +1 -0
  365. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js +60 -0
  366. package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js.map +1 -0
  367. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.cjs +97 -0
  368. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts +2 -0
  369. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts.map +1 -0
  370. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js +73 -0
  371. package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js.map +1 -0
  372. package/dist/modules/lighting/lights/lighting-glsl.cjs +116 -0
  373. package/dist/modules/lighting/lights/lighting-glsl.d.ts +2 -0
  374. package/dist/modules/lighting/lights/lighting-glsl.d.ts.map +1 -0
  375. package/dist/modules/lighting/lights/lighting-glsl.js +92 -0
  376. package/dist/modules/lighting/lights/lighting-glsl.js.map +1 -0
  377. package/dist/modules/lighting/lights/lighting-wgsl.cjs +115 -0
  378. package/dist/modules/lighting/lights/lighting-wgsl.d.ts +2 -0
  379. package/dist/modules/lighting/lights/lighting-wgsl.d.ts.map +1 -0
  380. package/dist/modules/lighting/lights/lighting-wgsl.js +91 -0
  381. package/dist/modules/lighting/lights/lighting-wgsl.js.map +1 -0
  382. package/dist/modules/lighting/lights/lighting.cjs +210 -0
  383. package/dist/modules/lighting/lights/lighting.d.ts +163 -0
  384. package/dist/modules/lighting/lights/lighting.d.ts.map +1 -0
  385. package/dist/modules/lighting/lights/lighting.js +208 -0
  386. package/dist/modules/lighting/lights/lighting.js.map +1 -0
  387. package/dist/modules/lighting/no-material/dirlight.cjs +112 -0
  388. package/dist/modules/lighting/no-material/dirlight.d.ts +33 -0
  389. package/dist/modules/lighting/no-material/dirlight.d.ts.map +1 -0
  390. package/dist/modules/lighting/no-material/dirlight.js +86 -0
  391. package/dist/modules/lighting/no-material/dirlight.js.map +1 -0
  392. package/dist/modules/lighting/pbr-material/pbr-material-glsl.cjs +1767 -0
  393. package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts +3 -0
  394. package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts.map +1 -0
  395. package/dist/modules/lighting/pbr-material/pbr-material-glsl.js +1745 -0
  396. package/dist/modules/lighting/pbr-material/pbr-material-glsl.js.map +1 -0
  397. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.cjs +2062 -0
  398. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts +3 -0
  399. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts.map +1 -0
  400. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js +2040 -0
  401. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js.map +1 -0
  402. package/dist/modules/lighting/pbr-material/pbr-material.cjs +315 -0
  403. package/dist/modules/lighting/pbr-material/pbr-material.d.ts +516 -0
  404. package/dist/modules/lighting/pbr-material/pbr-material.d.ts.map +1 -0
  405. package/dist/modules/lighting/pbr-material/pbr-material.js +292 -0
  406. package/dist/modules/lighting/pbr-material/pbr-material.js.map +1 -0
  407. package/dist/modules/lighting/pbr-material/pbr-projection.cjs +63 -0
  408. package/dist/modules/lighting/pbr-material/pbr-projection.d.ts +10 -0
  409. package/dist/modules/lighting/pbr-material/pbr-projection.d.ts.map +1 -0
  410. package/dist/modules/lighting/pbr-material/pbr-projection.js +37 -0
  411. package/dist/modules/lighting/pbr-material/pbr-projection.js.map +1 -0
  412. package/dist/modules/lighting/pbr-material/pbr-scene.cjs +109 -0
  413. package/dist/modules/lighting/pbr-material/pbr-scene.d.ts +52 -0
  414. package/dist/modules/lighting/pbr-material/pbr-scene.d.ts.map +1 -0
  415. package/dist/modules/lighting/pbr-material/pbr-scene.js +83 -0
  416. package/dist/modules/lighting/pbr-material/pbr-scene.js.map +1 -0
  417. package/dist/modules/lighting/phong-material/phong-material.cjs +61 -0
  418. package/dist/modules/lighting/phong-material/phong-material.d.ts +13 -0
  419. package/dist/modules/lighting/phong-material/phong-material.d.ts.map +1 -0
  420. package/dist/modules/lighting/phong-material/phong-material.js +40 -0
  421. package/dist/modules/lighting/phong-material/phong-material.js.map +1 -0
  422. package/dist/modules/lighting/phong-material/phong-shaders-glsl.cjs +100 -0
  423. package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts +3 -0
  424. package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts.map +1 -0
  425. package/dist/modules/lighting/phong-material/phong-shaders-glsl.js +72 -0
  426. package/dist/modules/lighting/phong-material/phong-shaders-glsl.js.map +1 -0
  427. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.cjs +153 -0
  428. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts +2 -0
  429. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts.map +1 -0
  430. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js +129 -0
  431. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js.map +1 -0
  432. package/dist/modules/lighting/surface-weather/surface-weather.cjs +199 -0
  433. package/dist/modules/lighting/surface-weather/surface-weather.d.ts +54 -0
  434. package/dist/modules/lighting/surface-weather/surface-weather.d.ts.map +1 -0
  435. package/dist/modules/lighting/surface-weather/surface-weather.js +175 -0
  436. package/dist/modules/lighting/surface-weather/surface-weather.js.map +1 -0
  437. package/dist/modules/lighting/water-material/river-water-material.cjs +56 -0
  438. package/dist/modules/lighting/water-material/river-water-material.d.ts +21 -0
  439. package/dist/modules/lighting/water-material/river-water-material.d.ts.map +1 -0
  440. package/dist/modules/lighting/water-material/river-water-material.js +36 -0
  441. package/dist/modules/lighting/water-material/river-water-material.js.map +1 -0
  442. package/dist/modules/lighting/water-material/river-water-shaders.cjs +261 -0
  443. package/dist/modules/lighting/water-material/river-water-shaders.d.ts +3 -0
  444. package/dist/modules/lighting/water-material/river-water-shaders.d.ts.map +1 -0
  445. package/dist/modules/lighting/water-material/river-water-shaders.js +233 -0
  446. package/dist/modules/lighting/water-material/river-water-shaders.js.map +1 -0
  447. package/dist/modules/lighting/water-material/water-material.cjs +188 -0
  448. package/dist/modules/lighting/water-material/water-material.d.ts +28 -0
  449. package/dist/modules/lighting/water-material/water-material.d.ts.map +1 -0
  450. package/dist/modules/lighting/water-material/water-material.js +179 -0
  451. package/dist/modules/lighting/water-material/water-material.js.map +1 -0
  452. package/dist/modules/lighting/water-material/water-shaders-glsl.cjs +260 -0
  453. package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts +3 -0
  454. package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts.map +1 -0
  455. package/dist/modules/lighting/water-material/water-shaders-glsl.js +232 -0
  456. package/dist/modules/lighting/water-material/water-shaders-glsl.js.map +1 -0
  457. package/dist/modules/lighting/water-material/water-shaders-wgsl.cjs +254 -0
  458. package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts +2 -0
  459. package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts.map +1 -0
  460. package/dist/modules/lighting/water-material/water-shaders-wgsl.js +230 -0
  461. package/dist/modules/lighting/water-material/water-shaders-wgsl.js.map +1 -0
  462. package/dist/modules/math/fp16/fp16-utils.cjs +112 -0
  463. package/dist/modules/math/fp16/fp16-utils.d.ts +13 -0
  464. package/dist/modules/math/fp16/fp16-utils.d.ts.map +1 -0
  465. package/dist/modules/math/fp16/fp16-utils.js +118 -0
  466. package/dist/modules/math/fp16/fp16-utils.js.map +1 -0
  467. package/dist/modules/math/fp32/fp32.cjs +310 -0
  468. package/dist/modules/math/fp32/fp32.d.ts +9 -0
  469. package/dist/modules/math/fp32/fp32.d.ts.map +1 -0
  470. package/dist/modules/math/fp32/fp32.js +288 -0
  471. package/dist/modules/math/fp32/fp32.js.map +1 -0
  472. package/dist/modules/math/fp64/fp64-arithmetic-glsl.cjs +229 -0
  473. package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts +2 -0
  474. package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts.map +1 -0
  475. package/dist/modules/math/fp64/fp64-arithmetic-glsl.js +205 -0
  476. package/dist/modules/math/fp64/fp64-arithmetic-glsl.js.map +1 -0
  477. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.cjs +144 -0
  478. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts +10 -0
  479. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts.map +1 -0
  480. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js +128 -0
  481. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js.map +1 -0
  482. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.cjs +583 -0
  483. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts +11 -0
  484. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts.map +1 -0
  485. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js +563 -0
  486. package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js.map +1 -0
  487. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.cjs +946 -0
  488. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts +3 -0
  489. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts.map +1 -0
  490. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js +923 -0
  491. package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js.map +1 -0
  492. package/dist/modules/math/fp64/fp64-functions-glsl.cjs +699 -0
  493. package/dist/modules/math/fp64/fp64-functions-glsl.d.ts +2 -0
  494. package/dist/modules/math/fp64/fp64-functions-glsl.d.ts.map +1 -0
  495. package/dist/modules/math/fp64/fp64-functions-glsl.js +675 -0
  496. package/dist/modules/math/fp64/fp64-functions-glsl.js.map +1 -0
  497. package/dist/modules/math/fp64/fp64-functions-wgsl.cjs +180 -0
  498. package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts +3 -0
  499. package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts.map +1 -0
  500. package/dist/modules/math/fp64/fp64-functions-wgsl.js +157 -0
  501. package/dist/modules/math/fp64/fp64-functions-wgsl.js.map +1 -0
  502. package/dist/modules/math/fp64/fp64-utils.cjs +50 -0
  503. package/dist/modules/math/fp64/fp64-utils.d.ts +22 -0
  504. package/dist/modules/math/fp64/fp64-utils.d.ts.map +1 -0
  505. package/dist/modules/math/fp64/fp64-utils.js +42 -0
  506. package/dist/modules/math/fp64/fp64-utils.js.map +1 -0
  507. package/dist/modules/math/fp64/fp64.cjs +68 -0
  508. package/dist/modules/math/fp64/fp64.d.ts +24 -0
  509. package/dist/modules/math/fp64/fp64.d.ts.map +1 -0
  510. package/dist/modules/math/fp64/fp64.js +46 -0
  511. package/dist/modules/math/fp64/fp64.js.map +1 -0
  512. package/dist/modules/math/random/random.cjs +46 -0
  513. package/dist/modules/math/random/random.d.ts +7 -0
  514. package/dist/modules/math/random/random.d.ts.map +1 -0
  515. package/dist/modules/math/random/random.js +21 -0
  516. package/dist/modules/math/random/random.js.map +1 -0
  517. package/dist/modules/math/value-noise/value-noise.cjs +95 -0
  518. package/dist/modules/math/value-noise/value-noise.d.ts +7 -0
  519. package/dist/modules/math/value-noise/value-noise.d.ts.map +1 -0
  520. package/dist/modules/math/value-noise/value-noise.js +68 -0
  521. package/dist/modules/math/value-noise/value-noise.js.map +1 -0
  522. package/dist/modules/volume/volume-raymarch.cjs +107 -0
  523. package/dist/modules/volume/volume-raymarch.d.ts +6 -0
  524. package/dist/modules/volume/volume-raymarch.d.ts.map +1 -0
  525. package/dist/modules/volume/volume-raymarch.js +84 -0
  526. package/dist/modules/volume/volume-raymarch.js.map +1 -0
  527. package/dist/types/align-to.cjs +38 -0
  528. package/dist/types/align-to.d.ts +3 -0
  529. package/dist/types/align-to.d.ts.map +1 -0
  530. package/dist/types/align-to.js +13 -0
  531. package/dist/types/align-to.js.map +1 -0
  532. package/dist/types/primitive-data-types.cjs +15 -0
  533. package/dist/types/primitive-data-types.d.ts +7 -0
  534. package/dist/types/primitive-data-types.d.ts.map +1 -0
  535. package/dist/types/primitive-data-types.js +5 -0
  536. package/dist/types/primitive-data-types.js.map +1 -0
  537. package/dist/types/sampler-props.cjs +15 -0
  538. package/dist/types/sampler-props.d.ts +26 -0
  539. package/dist/types/sampler-props.d.ts.map +1 -0
  540. package/dist/types/sampler-props.js +5 -0
  541. package/dist/types/sampler-props.js.map +1 -0
  542. package/dist/types/shader-block-layout.cjs +184 -0
  543. package/dist/types/shader-block-layout.d.ts +72 -0
  544. package/dist/types/shader-block-layout.d.ts.map +1 -0
  545. package/dist/types/shader-block-layout.js +209 -0
  546. package/dist/types/shader-block-layout.js.map +1 -0
  547. package/dist/types/shader-layout.cjs +15 -0
  548. package/dist/types/shader-layout.d.ts +178 -0
  549. package/dist/types/shader-layout.d.ts.map +1 -0
  550. package/dist/types/shader-layout.js +5 -0
  551. package/dist/types/shader-layout.js.map +1 -0
  552. package/dist/types/shader-type-decoder.cjs +240 -0
  553. package/dist/types/shader-type-decoder.d.ts +41 -0
  554. package/dist/types/shader-type-decoder.d.ts.map +1 -0
  555. package/dist/types/shader-type-decoder.js +210 -0
  556. package/dist/types/shader-type-decoder.js.map +1 -0
  557. package/dist/types/shader-types.cjs +15 -0
  558. package/dist/types/shader-types.d.ts +101 -0
  559. package/dist/types/shader-types.d.ts.map +1 -0
  560. package/dist/types/shader-types.js +30 -0
  561. package/dist/types/shader-types.js.map +1 -0
  562. package/dist/types/texture-formats.cjs +15 -0
  563. package/dist/types/texture-formats.d.ts +24 -0
  564. package/dist/types/texture-formats.d.ts.map +1 -0
  565. package/dist/types/texture-formats.js +5 -0
  566. package/dist/types/texture-formats.js.map +1 -0
  567. package/dist/types.cjs +53 -0
  568. package/dist/types.cjs.map +6 -0
  569. package/dist/types.d.ts +14 -0
  570. package/dist/types.d.ts.map +1 -0
  571. package/dist/types.js +7 -0
  572. package/dist/types.js.map +1 -0
  573. package/dist/wgsl.cjs +55 -0
  574. package/dist/wgsl.cjs.map +6 -0
  575. package/dist/wgsl.d.ts +8 -0
  576. package/dist/wgsl.d.ts.map +1 -0
  577. package/dist/wgsl.js +9 -0
  578. package/dist/wgsl.js.map +1 -0
  579. package/package.json +65 -4
  580. package/src/glsl.ts +13 -0
  581. package/src/index.ts +259 -0
  582. package/src/lib/color/normalize-byte-colors.ts +57 -0
  583. package/src/lib/filters/prop-types.ts +150 -0
  584. package/src/lib/glsl-shader-assembler.ts +39 -0
  585. package/src/lib/glsl-utils/get-shader-info.ts +42 -0
  586. package/src/lib/glsl-utils/shader-utils.ts +110 -0
  587. package/src/lib/preprocessor/preprocessor.ts +157 -0
  588. package/src/lib/shader-assembler-base.ts +169 -0
  589. package/src/lib/shader-assembler.ts +7 -0
  590. package/src/lib/shader-assembly/assemble-glsl-shaders.ts +305 -0
  591. package/src/lib/shader-assembly/assemble-shaders.ts +13 -0
  592. package/src/lib/shader-assembly/assemble-wgsl-shaders.ts +830 -0
  593. package/src/lib/shader-assembly/platform-defines.ts +58 -0
  594. package/src/lib/shader-assembly/platform-info.ts +23 -0
  595. package/src/lib/shader-assembly/shader-assembly-shared.ts +95 -0
  596. package/src/lib/shader-assembly/shader-assembly-types.ts +146 -0
  597. package/src/lib/shader-assembly/shader-injection-targets.ts +148 -0
  598. package/src/lib/shader-assembly/shader-injections.ts +298 -0
  599. package/src/lib/shader-assembly/shader-plugin-varyings.ts +555 -0
  600. package/src/lib/shader-assembly/shader-plugin-vertex-inputs.ts +279 -0
  601. package/src/lib/shader-assembly/wgsl-binding-debug.ts +227 -0
  602. package/src/lib/shader-assembly/wgsl-binding-scan.ts +228 -0
  603. package/src/lib/shader-assembly/wgsl-injection-target-names.ts +180 -0
  604. package/src/lib/shader-assembly/wgsl-interface-scan.ts +676 -0
  605. package/src/lib/shader-generator/generate-shader.ts +27 -0
  606. package/src/lib/shader-generator/glsl/generate-glsl.ts +101 -0
  607. package/src/lib/shader-generator/utils/capitalize.ts +12 -0
  608. package/src/lib/shader-generator/wgsl/generate-wgsl.ts +40 -0
  609. package/src/lib/shader-module/composite-shader-pass.ts +47 -0
  610. package/src/lib/shader-module/shader-module-dependencies.ts +128 -0
  611. package/src/lib/shader-module/shader-module-uniform-layout.ts +420 -0
  612. package/src/lib/shader-module/shader-module.ts +237 -0
  613. package/src/lib/shader-module/shader-pass.ts +69 -0
  614. package/src/lib/shader-plugin.ts +236 -0
  615. package/src/lib/shader-transpiler/shader-transpiler.ts +34 -0
  616. package/src/lib/shader-transpiler/transpile-glsl-shader.ts +78 -0
  617. package/src/lib/utils/assert.ts +13 -0
  618. package/src/lib/utils/uniform-types.ts +89 -0
  619. package/src/lib/wgsl-shader-assembler.ts +122 -0
  620. package/src/module-injectors.ts +32 -0
  621. package/src/modules/color/float-colors.ts +334 -0
  622. package/src/modules/engine/clip/clip.ts +139 -0
  623. package/src/modules/engine/filter/filter.ts +99 -0
  624. package/src/modules/engine/geometry/geometry.ts +45 -0
  625. package/src/modules/engine/gpu-animation/gpu-animation.ts +244 -0
  626. package/src/modules/engine/picking/README.md +88 -0
  627. package/src/modules/engine/picking/picking.ts +252 -0
  628. package/src/modules/engine/project/project.ts +166 -0
  629. package/src/modules/engine/skin/skin.ts +233 -0
  630. package/src/modules/engine/transform/transform.ts +50 -0
  631. package/src/modules/geometry/path-dash/path-dash.ts +68 -0
  632. package/src/modules/geometry/pattern-fill/pattern-fill-shaders.ts +88 -0
  633. package/src/modules/geometry/pattern-fill/pattern-fill.ts +54 -0
  634. package/src/modules/geometry/point-glow/point-glow.ts +87 -0
  635. package/src/modules/geometry/precipitation/README.md +19 -0
  636. package/src/modules/geometry/precipitation/precipitation.ts +108 -0
  637. package/src/modules/geometry/sketch-stroke/sketch-stroke.ts +160 -0
  638. package/src/modules/geospatial/dggs/dggs-wgsl.ts +2284 -0
  639. package/src/modules/geospatial/dggs/dggs.ts +12 -0
  640. package/src/modules/lighting/area-lighting/area-light-types.ts +71 -0
  641. package/src/modules/lighting/area-lighting/area-lighting-shaders.ts +72 -0
  642. package/src/modules/lighting/area-lighting/area-lighting.ts +63 -0
  643. package/src/modules/lighting/area-lighting/ltc-shaders.ts +163 -0
  644. package/src/modules/lighting/atmosphere/README.md +25 -0
  645. package/src/modules/lighting/atmosphere/atmosphere.ts +246 -0
  646. package/src/modules/lighting/clouds/README.md +24 -0
  647. package/src/modules/lighting/clouds/clouds.ts +216 -0
  648. package/src/modules/lighting/firefly/firefly.ts +64 -0
  649. package/src/modules/lighting/globe-clouds/globe-clouds.ts +124 -0
  650. package/src/modules/lighting/gouraud-material/gouraud-material.ts +55 -0
  651. package/src/modules/lighting/height-fog/README.md +36 -0
  652. package/src/modules/lighting/height-fog/height-fog-functions.ts +116 -0
  653. package/src/modules/lighting/height-fog/height-fog.ts +96 -0
  654. package/src/modules/lighting/ibl/ibl.ts +43 -0
  655. package/src/modules/lighting/lambert-material/lambert-material.ts +42 -0
  656. package/src/modules/lighting/lambert-material/lambert-shaders-glsl.ts +61 -0
  657. package/src/modules/lighting/lambert-material/lambert-shaders-wgsl.ts +73 -0
  658. package/src/modules/lighting/lights/lighting-glsl.ts +92 -0
  659. package/src/modules/lighting/lights/lighting-wgsl.ts +91 -0
  660. package/src/modules/lighting/lights/lighting.ts +385 -0
  661. package/src/modules/lighting/no-material/dirlight.ts +101 -0
  662. package/src/modules/lighting/pbr-material/pbr-material-glsl.ts +1748 -0
  663. package/src/modules/lighting/pbr-material/pbr-material-wgsl.ts +2043 -0
  664. package/src/modules/lighting/pbr-material/pbr-material.ts +517 -0
  665. package/src/modules/lighting/pbr-material/pbr-projection.ts +50 -0
  666. package/src/modules/lighting/pbr-material/pbr-scene.ts +112 -0
  667. package/src/modules/lighting/phong-material/phong-material.ts +53 -0
  668. package/src/modules/lighting/phong-material/phong-shaders-glsl.ts +73 -0
  669. package/src/modules/lighting/phong-material/phong-shaders-wgsl.ts +129 -0
  670. package/src/modules/lighting/surface-weather/README.md +28 -0
  671. package/src/modules/lighting/surface-weather/surface-weather.ts +198 -0
  672. package/src/modules/lighting/water-material/river-water-material.ts +58 -0
  673. package/src/modules/lighting/water-material/river-water-shaders.ts +234 -0
  674. package/src/modules/lighting/water-material/water-material.ts +234 -0
  675. package/src/modules/lighting/water-material/water-shaders-glsl.ts +233 -0
  676. package/src/modules/lighting/water-material/water-shaders-wgsl.ts +230 -0
  677. package/src/modules/math/fp16/fp16-utils.ts +156 -0
  678. package/src/modules/math/fp32/fp32.ts +291 -0
  679. package/src/modules/math/fp64/fp64-arithmetic-glsl.ts +205 -0
  680. package/src/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.ts +129 -0
  681. package/src/modules/math/fp64/fp64-arithmetic-wgsl-integer.ts +564 -0
  682. package/src/modules/math/fp64/fp64-arithmetic-wgsl.ts +924 -0
  683. package/src/modules/math/fp64/fp64-functions-glsl.ts +675 -0
  684. package/src/modules/math/fp64/fp64-functions-wgsl.ts +157 -0
  685. package/src/modules/math/fp64/fp64-utils.ts +46 -0
  686. package/src/modules/math/fp64/fp64.ts +64 -0
  687. package/src/modules/math/random/random.ts +25 -0
  688. package/src/modules/math/value-noise/value-noise.ts +70 -0
  689. package/src/modules/volume/volume-raymarch.ts +87 -0
  690. package/src/types/align-to.ts +13 -0
  691. package/src/types/primitive-data-types.ts +10 -0
  692. package/src/types/sampler-props.ts +39 -0
  693. package/src/types/shader-block-layout.ts +340 -0
  694. package/src/types/shader-layout.ts +208 -0
  695. package/src/types/shader-type-decoder.ts +285 -0
  696. package/src/types/shader-types.ts +207 -0
  697. package/src/types/texture-formats.ts +157 -0
  698. package/src/types.ts +116 -0
  699. package/src/wgsl.ts +34 -0
@@ -0,0 +1,69 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderBinding as Binding, SamplerProps, TextureFormat} from '../../types';
6
+ import type {PickBindings, PickUniforms, ShaderModule} from './shader-module';
7
+ import type {UniformValue} from '../utils/uniform-types';
8
+
9
+ export type ShaderPassRenderTarget = {
10
+ /** Width and height scale relative to the renderer output size. */
11
+ scale?: [number, number];
12
+ /** Render target format. Defaults to the device preferred color format. */
13
+ format?: TextureFormat;
14
+ /** Optional sampling behavior when later passes read this target. */
15
+ sampler?: SamplerProps;
16
+ /** Reuse an earlier transient target with an identical size, format, and sampler. */
17
+ aliasFor?: string;
18
+ /** Allow WebGPU compute shaders to write this target as a storage texture. */
19
+ storage?: boolean;
20
+ /** Resource lifetime. History targets retain their last successfully rendered value. */
21
+ lifetime?: 'transient' | 'history';
22
+ /** Initial value used after construction, resize, or an explicit history reset. */
23
+ initialize?: 'original' | {clearColor: [number, number, number, number]};
24
+ };
25
+
26
+ export type ShaderPassInputSource<TargetNameT extends string = string> =
27
+ | 'original'
28
+ | 'previous'
29
+ | TargetNameT;
30
+
31
+ /**
32
+ * A ShaderPass is a ShaderModule that can be run "standalone" (e.g. post processing effects)
33
+ * It adds additional information on how to run the module.
34
+ * A ShaderPass can require one or more sub passes.
35
+ */
36
+ export type ShaderPass<
37
+ PropsT extends Record<string, any> = Record<string, any>,
38
+ UniformsT extends Record<string, UniformValue> = PickUniforms<PropsT>,
39
+ BindingsT extends Record<string, Binding> = PickBindings<PropsT>,
40
+ RenderTargetNameT extends string = never
41
+ > = ShaderModule<PropsT, UniformsT, BindingsT> & {
42
+ /** A shader pass can run multiple sub passes */
43
+ passes?: ShaderSubPass<UniformsT, Extract<keyof BindingsT, string>, RenderTargetNameT>[];
44
+ // TODO better name
45
+ // subPasses?: ShaderSubPass[];
46
+ };
47
+
48
+ /** Information on how to run a specific sub pass */
49
+ export type ShaderSubPass<
50
+ UniformsT extends Record<string, UniformValue> = Record<string, UniformValue>,
51
+ BindingNameT extends string = string,
52
+ RenderTargetNameT extends string = string
53
+ > = {
54
+ /**
55
+ * Action indicates whether this pass:
56
+ * - filters the color in each pixel (provides a `<pass.name>_filterColor()` shader function)
57
+ * - performs its own sampling (provides a `<pass.name>_sampleColor()` shader function)
58
+ */
59
+ action?: 'filter' | 'sample';
60
+ sampler?: boolean;
61
+ filter?: boolean;
62
+ uniforms?: UniformsT;
63
+ /** Mapping from shader binding name to the logical texture source. */
64
+ inputs?: Partial<
65
+ Record<BindingNameT | 'sourceTexture', ShaderPassInputSource<RenderTargetNameT>>
66
+ >;
67
+ /** Output target for this sub pass. Defaults to the shared "previous" chain. */
68
+ output?: 'previous' | RenderTargetNameT;
69
+ };
@@ -0,0 +1,236 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderInjectionTarget} from './shader-assembly/shader-injection-targets';
6
+ import {
7
+ resolveShaderInjections,
8
+ type ShaderInjection,
9
+ type ResolvedShaderInjection
10
+ } from './shader-assembly/shader-injections';
11
+ import type {ShaderModule} from './shader-module/shader-module';
12
+ import {shaderTypeDecoder, type AttributeShaderType} from '../types';
13
+
14
+ /** Portable interpolation modes for ShaderPlugin inter-stage variables. */
15
+ export type ShaderPluginInterStageVariableInterpolation = 'smooth' | 'flat';
16
+
17
+ /** Cross-stage value contributed by a ShaderPlugin. */
18
+ export type ShaderPluginInterStageVariable = {
19
+ /** Portable scalar or vector shader type. */
20
+ type: AttributeShaderType;
21
+ /** Defaults to smooth for floating-point types and flat for integer types. */
22
+ interpolation?: ShaderPluginInterStageVariableInterpolation;
23
+ };
24
+
25
+ /** Fully normalized ShaderPlugin inter-stage variable declaration. */
26
+ export type ResolvedShaderPluginInterStageVariable = {
27
+ type: AttributeShaderType;
28
+ interpolation: ShaderPluginInterStageVariableInterpolation;
29
+ };
30
+
31
+ /** Reusable shader assembly descriptor with one portable interface and language-specific source. */
32
+ export type ShaderPlugin = {
33
+ /** Stable plugin identifier. */
34
+ name: string;
35
+ /** Primary shader module. Supporting modules belong in its dependencies; omit for injection-only plugins. */
36
+ module?: ShaderModule<any, any, any>;
37
+ /** Boolean or numeric preprocessor defines added to shader assembly. */
38
+ defines?: Record<string, boolean | number>;
39
+ /** Named injections as explicit-stage objects or optionally language-qualified string keys. */
40
+ injections?: ShaderInjection[] | Record<string, string>;
41
+ /** Callable extension points with a shared name and language-specific source. */
42
+ injectionTargets?: ShaderInjectionTarget[];
43
+ /** Shader-facing vertex inputs added by this plugin. Buffer ownership remains with the caller. */
44
+ vertexInputs?: Record<string, AttributeShaderType>;
45
+ /** Values transported from the selected vertex entry point to the fragment entry point. */
46
+ interStageVariables?: Record<string, ShaderPluginInterStageVariable>;
47
+ };
48
+
49
+ /** ShaderPlugin contributions resolved for one shader language. */
50
+ export type ResolvedShaderPlugins = {
51
+ /** Resolved shader modules in plugin declaration order. */
52
+ modules: ShaderModule[];
53
+ /** Language-selected callable injection target declarations. */
54
+ injectionTargets: ShaderInjectionTarget[];
55
+ /** Resolved boolean or numeric preprocessor defines. */
56
+ defines: Record<string, boolean | number>;
57
+ /** Resolved named code injections grouped by target. */
58
+ injections: Record<string, ResolvedShaderInjection[]>;
59
+ /** Resolved shader-facing vertex inputs in plugin declaration order. */
60
+ vertexInputs: Record<string, AttributeShaderType>;
61
+ /** Resolved inter-stage variables in plugin declaration order. */
62
+ interStageVariables: Record<string, ResolvedShaderPluginInterStageVariable>;
63
+ };
64
+
65
+ /** Resolve plugin interfaces and select injection source for one shader language. */
66
+ export function resolveShaderPlugins(
67
+ plugins: readonly ShaderPlugin[] = [],
68
+ shaderLanguage: 'glsl' | 'wgsl'
69
+ ): ResolvedShaderPlugins {
70
+ const resolved: ResolvedShaderPlugins = {
71
+ modules: [],
72
+ injectionTargets: [],
73
+ defines: {},
74
+ injections: {},
75
+ vertexInputs: {},
76
+ interStageVariables: {}
77
+ };
78
+
79
+ for (const plugin of plugins) {
80
+ appendShaderPlugin(resolved, plugin, shaderLanguage);
81
+ }
82
+ const {vertexInputs, interStageVariables} = resolved;
83
+
84
+ for (const name of Object.keys(interStageVariables)) {
85
+ if (vertexInputs[name]) {
86
+ throw new Error(`ShaderPlugin name "${name}" cannot be both a vertex input and a varying`);
87
+ }
88
+ }
89
+
90
+ return resolved;
91
+ }
92
+
93
+ /**
94
+ * Preserve explicit module inputs while appending plugin modules by first-seen name.
95
+ * Optional diagnostics report distinct descriptors sharing a name, without changing selection.
96
+ * Descriptor identity is checked; equivalent independently-created descriptors also report a conflict.
97
+ */
98
+ export function mergeShaderPluginModules(
99
+ modules: readonly ShaderModule[] = [],
100
+ pluginModules: readonly ShaderModule[] = [],
101
+ options: {onConflict?: (name: string, selected: ShaderModule, ignored: ShaderModule) => void} = {}
102
+ ): ShaderModule[] {
103
+ const mergedModules: ShaderModule[] = [...modules];
104
+ const selectedModules = new Map<string, ShaderModule>();
105
+ for (const module of mergedModules) {
106
+ const selected = selectedModules.get(module.name);
107
+ if (selected && selected !== module) options.onConflict?.(module.name, selected, module);
108
+ if (!selected) selectedModules.set(module.name, module);
109
+ }
110
+
111
+ for (const pluginModule of pluginModules) {
112
+ const selected = selectedModules.get(pluginModule.name);
113
+ if (selected && selected !== pluginModule) {
114
+ options.onConflict?.(pluginModule.name, selected, pluginModule);
115
+ }
116
+ if (!selected) {
117
+ mergedModules.push(pluginModule);
118
+ selectedModules.set(pluginModule.name, pluginModule);
119
+ }
120
+ }
121
+
122
+ return mergedModules;
123
+ }
124
+
125
+ function appendShaderPlugin(
126
+ resolved: ResolvedShaderPlugins,
127
+ plugin: ShaderPlugin,
128
+ shaderLanguage: 'glsl' | 'wgsl'
129
+ ): void {
130
+ if (plugin.module) {
131
+ resolved.modules.push(plugin.module);
132
+ }
133
+ if (plugin.defines) {
134
+ Object.assign(resolved.defines, plugin.defines);
135
+ }
136
+ for (const [name, type] of Object.entries(plugin.vertexInputs || {})) {
137
+ assertShaderPluginInterfaceName(name, 'vertex input');
138
+ const existingType = resolved.vertexInputs[name];
139
+ if (existingType && existingType !== type) {
140
+ throw new Error(
141
+ `ShaderPlugin vertex input "${name}" has conflicting types "${existingType}" and "${type}"`
142
+ );
143
+ }
144
+ resolved.vertexInputs[name] = type;
145
+ }
146
+ for (const [name, varying] of Object.entries(plugin.interStageVariables || {})) {
147
+ assertShaderPluginInterfaceName(name, 'varying');
148
+ const normalizedVarying = normalizeShaderPluginInterStageVariable(name, varying);
149
+ const existingVarying = resolved.interStageVariables[name];
150
+ if (
151
+ existingVarying &&
152
+ (existingVarying.type !== normalizedVarying.type ||
153
+ existingVarying.interpolation !== normalizedVarying.interpolation)
154
+ ) {
155
+ throw new Error(
156
+ `ShaderPlugin varying "${name}" has conflicting declarations ` +
157
+ `"${existingVarying.type}/${existingVarying.interpolation}" and ` +
158
+ `"${normalizedVarying.type}/${normalizedVarying.interpolation}"`
159
+ );
160
+ }
161
+ resolved.interStageVariables[name] = normalizedVarying;
162
+ }
163
+
164
+ for (const injectionTarget of plugin.injectionTargets || []) {
165
+ const implementation = injectionTarget[shaderLanguage];
166
+ if (!implementation) continue;
167
+ const target = `${injectionTarget.stage === 'vertex' ? 'vs' : 'fs'}:${injectionTarget.name}`;
168
+ if (!/^(vs|fs):[A-Za-z_][A-Za-z0-9_]*$/.test(target)) {
169
+ throw new Error(`Invalid ShaderPlugin injection target ${target}`);
170
+ }
171
+ const existing = resolved.injectionTargets.find(
172
+ value => value.stage === injectionTarget.stage && value.name === injectionTarget.name
173
+ );
174
+ const previous = existing?.[shaderLanguage];
175
+ if (
176
+ previous &&
177
+ (previous.parameters !== implementation.parameters ||
178
+ (previous.returnType || 'void') !== (implementation.returnType || 'void') ||
179
+ previous.header !== implementation.header ||
180
+ previous.footer !== implementation.footer)
181
+ ) {
182
+ throw new Error(`Conflicting ShaderPlugin injection target ${target}`);
183
+ }
184
+ if (!existing)
185
+ resolved.injectionTargets.push({
186
+ name: injectionTarget.name,
187
+ stage: injectionTarget.stage,
188
+ [shaderLanguage]: implementation
189
+ });
190
+ }
191
+ const pluginInjections = Array.isArray(plugin.injections)
192
+ ? plugin.injections
193
+ : Object.entries(plugin.injections || {}).flatMap(([key, source]): ShaderInjection[] => {
194
+ const target = selectShaderLanguage(key, shaderLanguage);
195
+ if (target === undefined) return [];
196
+ const [stage, ...name] = target.split(':');
197
+ if (stage !== 'vs' && stage !== 'fs')
198
+ throw new Error(`Invalid ShaderPlugin injection ${key}`);
199
+ return [
200
+ {
201
+ stage: stage === 'vs' ? ('vertex' as const) : ('fragment' as const),
202
+ target: name.join(':'),
203
+ [shaderLanguage]: source
204
+ }
205
+ ];
206
+ });
207
+ const selectedInjections = resolveShaderInjections(pluginInjections, shaderLanguage, plugin.name);
208
+ for (const [target, injections] of Object.entries(selectedInjections)) {
209
+ resolved.injections[target] ||= [];
210
+ resolved.injections[target].push(...injections);
211
+ }
212
+ }
213
+
214
+ function assertShaderPluginInterfaceName(name: string, kind: 'vertex input' | 'varying'): void {
215
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name) || name.startsWith('_luma_')) {
216
+ throw new Error(`ShaderPlugin ${kind} "${name}" must be a valid non-reserved identifier`);
217
+ }
218
+ }
219
+
220
+ function normalizeShaderPluginInterStageVariable(
221
+ name: string,
222
+ varying: ShaderPluginInterStageVariable
223
+ ): ResolvedShaderPluginInterStageVariable {
224
+ const {primitiveType} = shaderTypeDecoder.getAttributeShaderTypeInfo(varying.type);
225
+ const integerType = primitiveType === 'i32' || primitiveType === 'u32';
226
+ const interpolation = varying.interpolation || (integerType ? 'flat' : 'smooth');
227
+ if (integerType && interpolation === 'smooth') {
228
+ throw new Error(`ShaderPlugin integer varying "${name}" must use flat interpolation`);
229
+ }
230
+ return {type: varying.type, interpolation};
231
+ }
232
+
233
+ function selectShaderLanguage(value: string, language: 'glsl' | 'wgsl'): string | undefined {
234
+ const match = /^(glsl|wgsl):([\s\S]+)$/.exec(value);
235
+ return match ? (match[1] === language ? match[2] : undefined) : value;
236
+ }
@@ -0,0 +1,34 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {PlatformInfo} from '../shader-assembly/platform-info';
6
+
7
+ export type ShaderTranspilerEntryPoints = {
8
+ vertex?: string;
9
+ fragment?: string;
10
+ compute?: string;
11
+ };
12
+
13
+ /** One translation unit, including source-language module dependencies. */
14
+ export type ShaderTranspileProps = {
15
+ source: string;
16
+ target: 'glsl' | 'wgsl';
17
+ /** GLSL compiles one stage at a time; WGSL may compile a unified render program. */
18
+ stage?: 'vertex' | 'fragment' | 'compute';
19
+ entryPoints: ShaderTranspilerEntryPoints;
20
+ platformInfo: PlatformInfo;
21
+ };
22
+
23
+ export type ShaderTranspileResult = {
24
+ code: string;
25
+ /** Generated names selected by subsequent interface scanning and pipeline creation. */
26
+ entryPoints?: ShaderTranspilerEntryPoints;
27
+ };
28
+
29
+ /** Application-owned compiler. Shaders has no dependency on its implementation. */
30
+ export type ShaderTranspiler = {
31
+ name: string;
32
+ sourceLanguage: string;
33
+ transpile: (props: ShaderTranspileProps) => ShaderTranspileResult;
34
+ };
@@ -0,0 +1,78 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ // TRANSPILATION TABLES
6
+
7
+ /**
8
+ * Transpiles GLSL 3.00 shader source code to target GLSL version (3.00 or 1.00)
9
+ *
10
+ * @note We always run transpiler even if same version e.g. 3.00 => 3.00
11
+ * @note For texture sampling transpilation, apps need to use non-standard texture* calls in GLSL 3.00 source
12
+ * RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md
13
+ */
14
+ export function transpileGLSLShader(source: string, stage: 'vertex' | 'fragment'): string {
15
+ const sourceGLSLVersion = Number(source.match(/^#version[ \t]+(\d+)/m)?.[1] || 100);
16
+ if (sourceGLSLVersion !== 300) {
17
+ // TODO - we splurge on a longer error message to help deck.gl custom layer developers
18
+ throw new Error('luma.gl v9 only supports GLSL 3.00 shader sources');
19
+ }
20
+
21
+ switch (stage) {
22
+ case 'vertex':
23
+ source = convertShader(source, ES300_VERTEX_REPLACEMENTS);
24
+ return source;
25
+ case 'fragment':
26
+ source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);
27
+ return source;
28
+ default:
29
+ // Unknown shader stage
30
+ throw new Error(stage);
31
+ }
32
+ }
33
+
34
+ type GLSLReplacement = [RegExp, string];
35
+
36
+ /** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */
37
+ const ES300_REPLACEMENTS: GLSLReplacement[] = [
38
+ // Fix poorly formatted version directive
39
+ [/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/, '#version 300 es\n'],
40
+ // The individual `texture...()` functions were replaced with `texture()` overloads
41
+ [/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g, 'textureLod('],
42
+ [/\btexture(2D|2DProj|Cube)(EXT)?\(/g, 'texture(']
43
+ ];
44
+
45
+ const ES300_VERTEX_REPLACEMENTS: GLSLReplacement[] = [
46
+ ...ES300_REPLACEMENTS,
47
+ // `attribute` keyword replaced with `in`
48
+ [makeVariableTextRegExp('attribute'), 'in $1'],
49
+ // `varying` keyword replaced with `out`
50
+ [makeVariableTextRegExp('varying'), 'out $1']
51
+ ];
52
+
53
+ /** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */
54
+ const ES300_FRAGMENT_REPLACEMENTS: GLSLReplacement[] = [
55
+ ...ES300_REPLACEMENTS,
56
+ // `varying` keyword replaced with `in`
57
+ [makeVariableTextRegExp('varying'), 'in $1']
58
+ ];
59
+
60
+ function convertShader(source: string, replacements: GLSLReplacement[]) {
61
+ for (const [pattern, replacement] of replacements) {
62
+ source = source.replace(pattern, replacement);
63
+ }
64
+ return source;
65
+ }
66
+
67
+ /**
68
+ * Creates a regexp that tests for a specific variable type
69
+ * @example
70
+ * should match:
71
+ * in float weight;
72
+ * out vec4 positions[2];
73
+ * should not match:
74
+ * void f(out float a, in float b) {}
75
+ */
76
+ function makeVariableTextRegExp(qualifier: 'attribute' | 'varying' | 'in' | 'out'): RegExp {
77
+ return new RegExp(`\\b${qualifier}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`, 'g');
78
+ }
@@ -0,0 +1,13 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ // Recommendation is to ignore message but current test suite checks against the
6
+ // message so keep it for now.
7
+ export function assert(condition: unknown, message?: string): void {
8
+ if (!condition) {
9
+ const error = new Error(message || 'shaders: assertion failed.');
10
+ Error.captureStackTrace?.(error, assert);
11
+ throw error;
12
+ }
13
+ }
@@ -0,0 +1,89 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import type {
6
+ Matrix3,
7
+ Matrix4,
8
+ Vector2,
9
+ Vector3,
10
+ Vector4,
11
+ NumberArray2,
12
+ NumberArray3,
13
+ NumberArray4,
14
+ NumberArray6,
15
+ NumberArray8,
16
+ NumberArray9,
17
+ NumberArray12,
18
+ NumberArray16
19
+ } from '@math.gl/core';
20
+
21
+ import type {CompositeShaderType} from '../../types';
22
+
23
+ /*
24
+ * Allowed types to be used for uniform values
25
+ *
26
+ * Only allow types whose length we can type-check (not `TypedArray`)
27
+ */
28
+ export type UniformValue = Readonly<
29
+ | number
30
+ | boolean
31
+ | NumberArray2
32
+ | NumberArray3
33
+ | NumberArray4
34
+ | NumberArray6
35
+ | NumberArray8
36
+ | NumberArray9
37
+ | NumberArray12
38
+ | NumberArray16
39
+ | Vector2
40
+ | Vector3
41
+ | Vector4
42
+ | Matrix3
43
+ | Matrix4
44
+ >;
45
+
46
+ export type ShaderModuleUniformValue =
47
+ | UniformValue
48
+ | ShaderModuleUniformStruct
49
+ | ShaderModuleUniformArray;
50
+
51
+ export type ShaderModuleUniformStruct = {
52
+ [name: string]: ShaderModuleUniformValue | undefined;
53
+ };
54
+
55
+ export type ShaderModuleUniformArray = ReadonlyArray<ShaderModuleUniformValue | undefined>;
56
+
57
+ type UniformLeafType<ValueT extends UniformValue> = ValueT extends number | boolean
58
+ ? 'f32' | 'i32' | 'u32'
59
+ : ValueT extends Readonly<NumberArray2 | Vector2>
60
+ ? 'vec2<f32>' | 'vec2<i32>' | 'vec2<u32>'
61
+ : ValueT extends Readonly<NumberArray3 | Vector3>
62
+ ? 'vec3<f32>' | 'vec3<i32>' | 'vec3<u32>'
63
+ : ValueT extends Readonly<NumberArray4 | Vector4>
64
+ ? 'vec4<f32>' | 'vec4<i32>' | 'vec4<u32>' | 'mat2x2<f32>'
65
+ : ValueT extends Readonly<NumberArray6>
66
+ ? 'mat2x3<f32>' | 'mat3x2<f32>'
67
+ : ValueT extends Readonly<NumberArray8>
68
+ ? 'mat2x4<f32>' | 'mat4x2<f32>'
69
+ : ValueT extends Readonly<NumberArray9 | Matrix3>
70
+ ? 'mat3x3<f32>'
71
+ : ValueT extends Readonly<NumberArray12>
72
+ ? 'mat3x4<f32>' | 'mat4x3<f32>'
73
+ : ValueT extends Readonly<NumberArray16 | Matrix4>
74
+ ? 'mat4x4<f32>'
75
+ : never;
76
+
77
+ type UniformType<ValueT> = ValueT extends UniformValue
78
+ ? UniformLeafType<ValueT>
79
+ : ValueT extends ReadonlyArray<infer ElementT>
80
+ ? readonly [UniformType<NonNullable<ElementT>>, number]
81
+ : ValueT extends Record<string, unknown>
82
+ ? {[name in keyof ValueT]-?: UniformType<NonNullable<ValueT[name]>>}
83
+ : never;
84
+
85
+ type UniformProps = Record<string, unknown>;
86
+
87
+ export type UniformTypes<PropsT extends UniformProps> = {
88
+ [name in keyof PropsT]-?: UniformType<NonNullable<PropsT[name]>> & CompositeShaderType;
89
+ };
@@ -0,0 +1,122 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import {ShaderAssembler} from './shader-assembler-base';
6
+ import type {ShaderModule} from './shader-module/shader-module';
7
+ import type {AssembleShaderProps, GetUniformsFunc} from './shader-assembly/shader-assembly-types';
8
+ import {assembleWGSLSource} from './shader-assembly/assemble-wgsl-shaders';
9
+ import {
10
+ getShaderBindingDebugRowsFromWGSL,
11
+ type ShaderBindingDebugRow
12
+ } from './shader-assembly/wgsl-binding-debug';
13
+ import {preprocess} from './preprocessor/preprocessor';
14
+ import {scanWGSLInterface} from './shader-assembly/wgsl-interface-scan';
15
+ import type {ShaderLayout} from '../types';
16
+ import type {ShaderTranspilerEntryPoints} from './shader-transpiler/shader-transpiler';
17
+
18
+ /** Stateful assembler for unified WGSL shaders. */
19
+ export class WGSLShaderAssembler extends ShaderAssembler {
20
+ readonly shaderLanguage: 'wgsl' = 'wgsl';
21
+ /** Stable per-run WGSL auto-binding assignments keyed by group/module/binding. */
22
+ private readonly _wgslBindingRegistry = new Map<string, number>();
23
+
24
+ /**
25
+ * Assemble a WGSL unified shader.
26
+ * @param props WGSL source, platform information, shader modules, defines, and injections.
27
+ * @returns Assembled WGSL source, resolved modules, uniforms, and binding debug metadata.
28
+ */
29
+ assembleWGSLShader(props: AssembleShaderProps): {
30
+ source: string;
31
+ getUniforms: GetUniformsFunc;
32
+ modules: ShaderModule[];
33
+ bindingAssignments: {moduleName: string; name: string; group: number; location: number}[];
34
+ bindingTable: ShaderBindingDebugRow[];
35
+ shaderLayout: ShaderLayout | null;
36
+ entryPoints: ShaderTranspilerEntryPoints;
37
+ } {
38
+ const modules = this._getModuleList(props.modules); // Combine with default modules
39
+ const injectionTargets = [...this._injectionTargets, ...(props.injectionTargets || [])];
40
+ const translated = this._transpileShader(
41
+ props,
42
+ modules,
43
+ props.source,
44
+ props.shaderStage ?? (props.computeEntryPoint ? 'compute' : undefined)
45
+ );
46
+ const entryPoints = {
47
+ vertex: translated.entryPoints?.vertex ?? props.vertexEntryPoint,
48
+ fragment: translated.entryPoints?.fragment ?? props.fragmentEntryPoint,
49
+ compute: translated.entryPoints?.compute ?? props.computeEntryPoint
50
+ };
51
+ const defines = WGSLShaderAssembler.getShaderPreprocessorDefines(props, modules);
52
+ const preprocessedApplicationSource =
53
+ props.platformInfo.shaderLanguage === 'wgsl' && translated.code
54
+ ? preprocess(translated.code, {defines})
55
+ : translated.code;
56
+ const {
57
+ source: assembledSource,
58
+ getUniforms,
59
+ bindingAssignments
60
+ } = assembleWGSLSource({
61
+ ...props,
62
+ source: preprocessedApplicationSource,
63
+ vertexEntryPoint: entryPoints.vertex,
64
+ fragmentEntryPoint: entryPoints.fragment,
65
+ defines,
66
+ _bindingRegistry: this._wgslBindingRegistry,
67
+ modules: translated.modules,
68
+ injectionTargets
69
+ });
70
+ // WGSL does not have built-in preprocessing support (just compile time constants)
71
+ const preprocessedSource =
72
+ props.platformInfo.shaderLanguage === 'wgsl'
73
+ ? preprocess(assembledSource, {defines})
74
+ : assembledSource;
75
+ return {
76
+ source: preprocessedSource,
77
+ entryPoints,
78
+ getUniforms,
79
+ modules,
80
+ bindingAssignments,
81
+ bindingTable: getShaderBindingDebugRowsFromWGSL(preprocessedSource, bindingAssignments),
82
+ shaderLayout: scanWGSLInterface(preprocessedSource, {
83
+ vertexEntryPoint: entryPoints.vertex,
84
+ scanVertexAttributes: props.scanVertexAttributes
85
+ })
86
+ };
87
+ }
88
+
89
+ private static getShaderPreprocessorDefines(
90
+ props: AssembleShaderProps,
91
+ modules: ShaderModule[]
92
+ ): Record<string, boolean | number> {
93
+ return {
94
+ ...WGSLShaderAssembler.getPlatformPreprocessorDefines(props.platformInfo),
95
+ ...modules.reduce<Record<string, boolean | number>>((accumulator, module) => {
96
+ Object.assign(accumulator, module.defines);
97
+ return accumulator;
98
+ }, {}),
99
+ ...props.defines
100
+ };
101
+ }
102
+
103
+ private static getPlatformPreprocessorDefines(
104
+ platformInfo: AssembleShaderProps['platformInfo']
105
+ ): Record<string, boolean> {
106
+ const limits = platformInfo.limits || {};
107
+ return {
108
+ LUMA_SUPPORTS_VERTEX_STORAGE_BUFFERS:
109
+ platformInfo.type === 'webgpu' && (limits['maxStorageBuffersInVertexStage'] || 0) > 0,
110
+ // Native tan() does not provide enough precision on all WebGPU implementations.
111
+ LUMA_FP32_TAN_PRECISION_WORKAROUND:
112
+ platformInfo.type === 'webgpu' &&
113
+ platformInfo.gpu.toLowerCase() !== 'nvidia' &&
114
+ platformInfo.gpu.toLowerCase() !== 'amd',
115
+ // Metal may reassociate the floating-point transforms used by classic
116
+ // double-single arithmetic. The integer path makes each rounding point
117
+ // explicit while preserving the public vec2<f32> representation.
118
+ LUMA_FP64_INTEGER_ARITHMETIC:
119
+ platformInfo.type === 'webgpu' && platformInfo.gpu.toLowerCase() === 'apple'
120
+ };
121
+ }
122
+ }
@@ -0,0 +1,32 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ export const MODULE_INJECTORS_VS = /* glsl */ `\
6
+ #ifdef MODULE_LOGDEPTH
7
+ logdepth_adjustPosition(gl_Position);
8
+ #endif
9
+ `;
10
+
11
+ export const MODULE_INJECTORS_FS = /* glsl */ `\
12
+ #ifdef MODULE_MATERIAL
13
+ fragColor = material_filterColor(fragColor);
14
+ #endif
15
+
16
+ #ifdef MODULE_LIGHTING
17
+ fragColor = lighting_filterColor(fragColor);
18
+ #endif
19
+
20
+ #ifdef MODULE_FOG
21
+ fragColor = fog_filterColor(fragColor);
22
+ #endif
23
+
24
+ #ifdef MODULE_PICKING
25
+ fragColor = picking_filterHighlightColor(fragColor);
26
+ fragColor = picking_filterPickingColor(fragColor);
27
+ #endif
28
+
29
+ #ifdef MODULE_LOGDEPTH
30
+ logdepth_setFragDepth();
31
+ #endif
32
+ `;