@luma.gl/webgl 9.0.0-alpha.16 → 9.0.0-alpha.19

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 (417) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +117 -200
  3. package/dist/adapter/converters/device-parameters.js.map +1 -0
  4. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  6. package/dist/adapter/converters/renderbuffer-formats.js +172 -62
  7. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  8. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.js +151 -149
  10. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +847 -438
  14. package/dist/adapter/converters/texture-formats.js.map +1 -0
  15. package/dist/adapter/converters/vertex-formats.js +24 -15
  16. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  17. package/dist/adapter/device-helpers/device-features.js +84 -120
  18. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  19. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  20. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/device-limits.js +83 -88
  22. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  23. package/dist/adapter/device-helpers/get-device-info.js +37 -42
  24. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  25. package/dist/adapter/device-helpers/is-old-ie.js +8 -10
  26. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  27. package/dist/adapter/helpers/attribute-utils.js +57 -50
  28. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  29. package/dist/adapter/helpers/get-shader-info.d.ts +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-info.js +19 -21
  32. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  33. package/dist/adapter/helpers/get-shader-layout.js +251 -310
  34. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  35. package/dist/adapter/helpers/parse-shader-compiler-log.js +26 -32
  36. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  37. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  38. package/dist/adapter/helpers/set-uniform.js +80 -67
  39. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  40. package/dist/adapter/helpers/uniforms.js +75 -80
  41. package/dist/adapter/helpers/uniforms.js.map +1 -0
  42. package/dist/adapter/objects/constants-to-keys.js +26 -33
  43. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +70 -67
  47. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +158 -213
  50. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  51. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  52. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  53. package/dist/adapter/objects/webgl-vertex-array-object.js +66 -74
  54. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  55. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-buffer.js +118 -150
  57. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  58. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-buffer.js +41 -40
  61. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  62. package/dist/adapter/resources/webgl-command-encoder.js +37 -26
  63. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  64. package/dist/adapter/resources/webgl-external-texture.js +1 -91
  65. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  66. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-framebuffer.js +198 -231
  69. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  70. package/dist/adapter/resources/webgl-render-pass.js +11 -8
  71. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +289 -316
  74. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  75. package/dist/adapter/resources/webgl-sampler.js +35 -42
  76. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  77. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-shader.js +53 -57
  79. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  80. package/dist/adapter/resources/webgl-texture.d.ts +4 -4
  81. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-texture.js +697 -661
  83. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +35 -55
  86. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  87. package/dist/adapter/webgl-device.d.ts +5 -0
  88. package/dist/adapter/webgl-device.d.ts.map +1 -1
  89. package/dist/adapter/webgl-device.js +270 -287
  90. package/dist/adapter/webgl-device.js.map +1 -0
  91. package/dist/classic/accessor.js +103 -120
  92. package/dist/classic/accessor.js.map +1 -0
  93. package/dist/classic/buffer.d.ts +1 -1
  94. package/dist/classic/buffer.d.ts.map +1 -1
  95. package/dist/classic/buffer.js +300 -325
  96. package/dist/classic/buffer.js.map +1 -0
  97. package/dist/classic/typed-array-utils.d.ts +1 -1
  98. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  99. package/dist/classic/typed-array-utils.js +81 -91
  100. package/dist/classic/typed-array-utils.js.map +1 -0
  101. package/dist/context/context/create-browser-context.d.ts +3 -1
  102. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  103. package/dist/context/context/create-browser-context.js +49 -66
  104. package/dist/context/context/create-browser-context.js.map +1 -0
  105. package/dist/context/context/create-headless-context.d.ts +1 -1
  106. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  107. package/dist/context/context/create-headless-context.js +30 -24
  108. package/dist/context/context/create-headless-context.js.map +1 -0
  109. package/dist/context/context/webgl-checks.js +17 -25
  110. package/dist/context/context/webgl-checks.js.map +1 -0
  111. package/dist/context/debug/spector.d.ts +3 -1
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +50 -53
  114. package/dist/context/debug/spector.js.map +1 -0
  115. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  116. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  117. package/dist/context/debug/webgl-developer-tools.js +76 -107
  118. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  119. package/dist/context/parameters/unified-parameter-api.js +46 -93
  120. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  121. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  122. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  123. package/dist/context/parameters/webgl-parameter-tables.js +404 -462
  124. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  125. package/dist/context/polyfill/context-data.js +10 -16
  126. package/dist/context/polyfill/context-data.js.map +1 -0
  127. package/dist/context/polyfill/get-parameter-polyfill.js +71 -91
  128. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  129. package/dist/context/polyfill/polyfill-context.js +73 -75
  130. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  132. package/dist/context/polyfill/polyfill-table.js +116 -133
  133. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  135. package/dist/context/polyfill/polyfill-vertex-array-object.js +227 -255
  136. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +14 -16
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  140. package/dist/context/state-tracker/track-context-state.js +127 -183
  141. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  142. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  143. package/dist/context/state-tracker/with-parameters.js +29 -43
  144. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  145. package/dist/dist.dev.js +9205 -0
  146. package/dist/index.cjs +5948 -0
  147. package/dist/index.d.ts +0 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +25 -41
  150. package/dist/index.js.map +1 -0
  151. package/dist/types/webgl.d.ts +16 -16
  152. package/dist/types/webgl.d.ts.map +1 -1
  153. package/dist/types/webgl.js +1 -0
  154. package/dist/types/webgl.js.map +1 -0
  155. package/dist/types.d.ts +1 -1
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +1 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist.min.js +36 -0
  160. package/package.json +18 -9
  161. package/src/adapter/converters/device-parameters.ts +5 -2
  162. package/src/adapter/converters/sampler-parameters.ts +4 -2
  163. package/src/adapter/converters/texture-formats.ts +3 -1
  164. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  165. package/src/adapter/helpers/get-shader-info.ts +1 -1
  166. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  167. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  168. package/src/adapter/helpers/set-uniform.ts +2 -0
  169. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  170. package/src/adapter/objects/webgl-resource.ts +1 -1
  171. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  172. package/src/adapter/resources/webgl-buffer.ts +6 -6
  173. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  174. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  175. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  176. package/src/adapter/resources/webgl-shader.ts +1 -1
  177. package/src/adapter/resources/webgl-texture.ts +8 -9
  178. package/src/adapter/webgl-canvas-context.ts +2 -2
  179. package/src/adapter/webgl-device.ts +12 -2
  180. package/src/classic/accessor.ts +1 -1
  181. package/src/classic/buffer.ts +3 -3
  182. package/src/classic/typed-array-utils.ts +1 -1
  183. package/src/context/context/create-browser-context.ts +4 -2
  184. package/src/context/context/create-headless-context.ts +2 -2
  185. package/src/context/debug/spector.ts +5 -4
  186. package/src/context/debug/webgl-developer-tools.ts +1 -0
  187. package/src/context/polyfill/polyfill-table.ts +1 -0
  188. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  189. package/src/context/state-tracker/track-context-state.ts +6 -5
  190. package/src/context/state-tracker/with-parameters.ts +1 -1
  191. package/src/index.ts +1 -5
  192. package/src/types/webgl.ts +2 -0
  193. package/dist/bundle.d.ts +0 -2
  194. package/dist/bundle.d.ts.map +0 -1
  195. package/dist/bundle.js +0 -4
  196. package/dist/dist.min.js +0 -1
  197. package/dist/es5/adapter/converters/device-parameters.js +0 -139
  198. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  199. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -151
  200. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  201. package/dist/es5/adapter/converters/sampler-parameters.js +0 -182
  202. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  203. package/dist/es5/adapter/converters/texture-formats.js +0 -950
  204. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  205. package/dist/es5/adapter/converters/vertex-formats.js +0 -36
  206. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  207. package/dist/es5/adapter/device-helpers/device-features.js +0 -121
  208. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  209. package/dist/es5/adapter/device-helpers/device-limits.js +0 -54
  210. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -49
  212. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  213. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -15
  214. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  215. package/dist/es5/adapter/helpers/attribute-utils.js +0 -69
  216. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  217. package/dist/es5/adapter/helpers/get-shader-info.js +0 -31
  218. package/dist/es5/adapter/helpers/get-shader-info.js.map +0 -1
  219. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -311
  220. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  221. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -54
  222. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  223. package/dist/es5/adapter/helpers/set-uniform.js +0 -92
  224. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  225. package/dist/es5/adapter/helpers/uniforms.js +0 -88
  226. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  227. package/dist/es5/adapter/objects/constants-to-keys.js +0 -43
  228. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  229. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -122
  230. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  231. package/dist/es5/adapter/objects/webgl-resource.js +0 -233
  232. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  233. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -109
  234. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  235. package/dist/es5/adapter/resources/webgl-buffer.js +0 -196
  236. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  237. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -70
  238. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  239. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -80
  240. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  241. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  242. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  243. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -275
  244. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  245. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -45
  246. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  247. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -385
  248. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  249. package/dist/es5/adapter/resources/webgl-sampler.js +0 -75
  250. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/es5/adapter/resources/webgl-shader.js +0 -111
  252. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  253. package/dist/es5/adapter/resources/webgl-texture.js +0 -826
  254. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  255. package/dist/es5/adapter/webgl-canvas-context.js +0 -72
  256. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  257. package/dist/es5/adapter/webgl-device.js +0 -387
  258. package/dist/es5/adapter/webgl-device.js.map +0 -1
  259. package/dist/es5/bundle.js +0 -6
  260. package/dist/es5/bundle.js.map +0 -1
  261. package/dist/es5/classic/accessor.js +0 -151
  262. package/dist/es5/classic/accessor.js.map +0 -1
  263. package/dist/es5/classic/buffer.js +0 -398
  264. package/dist/es5/classic/buffer.js.map +0 -1
  265. package/dist/es5/classic/typed-array-utils.js +0 -99
  266. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  267. package/dist/es5/context/context/create-browser-context.js +0 -66
  268. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  269. package/dist/es5/context/context/create-headless-context.js +0 -47
  270. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  271. package/dist/es5/context/context/webgl-checks.js +0 -44
  272. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  273. package/dist/es5/context/debug/spector.js +0 -99
  274. package/dist/es5/context/debug/spector.js.map +0 -1
  275. package/dist/es5/context/debug/webgl-developer-tools.js +0 -146
  276. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  277. package/dist/es5/context/parameters/unified-parameter-api.js +0 -76
  278. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  279. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -346
  280. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  281. package/dist/es5/context/polyfill/context-data.js +0 -18
  282. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  283. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -69
  284. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  285. package/dist/es5/context/polyfill/polyfill-context.js +0 -109
  286. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  287. package/dist/es5/context/polyfill/polyfill-table.js +0 -143
  288. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  289. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -271
  290. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  291. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -23
  292. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  293. package/dist/es5/context/state-tracker/track-context-state.js +0 -167
  294. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  295. package/dist/es5/context/state-tracker/with-parameters.js +0 -40
  296. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  297. package/dist/es5/index.js +0 -249
  298. package/dist/es5/index.js.map +0 -1
  299. package/dist/es5/init.js +0 -7
  300. package/dist/es5/init.js.map +0 -1
  301. package/dist/es5/types/webgl.js +0 -5
  302. package/dist/es5/types/webgl.js.map +0 -1
  303. package/dist/es5/types.js +0 -2
  304. package/dist/es5/types.js.map +0 -1
  305. package/dist/esm/adapter/converters/device-parameters.js +0 -137
  306. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  307. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -181
  308. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  309. package/dist/esm/adapter/converters/sampler-parameters.js +0 -172
  310. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  311. package/dist/esm/adapter/converters/texture-formats.js +0 -901
  312. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  313. package/dist/esm/adapter/converters/vertex-formats.js +0 -29
  314. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  315. package/dist/esm/adapter/device-helpers/device-features.js +0 -95
  316. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  317. package/dist/esm/adapter/device-helpers/device-limits.js +0 -88
  318. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  319. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -42
  320. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  321. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -9
  322. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  323. package/dist/esm/adapter/helpers/attribute-utils.js +0 -64
  324. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/esm/adapter/helpers/get-shader-info.js +0 -25
  326. package/dist/esm/adapter/helpers/get-shader-info.js.map +0 -1
  327. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -282
  328. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  329. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -30
  330. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  331. package/dist/esm/adapter/helpers/set-uniform.js +0 -85
  332. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  333. package/dist/esm/adapter/helpers/uniforms.js +0 -89
  334. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  335. package/dist/esm/adapter/objects/constants-to-keys.js +0 -35
  336. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  337. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -78
  338. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  339. package/dist/esm/adapter/objects/webgl-resource.js +0 -163
  340. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  341. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -74
  342. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  343. package/dist/esm/adapter/resources/webgl-buffer.js +0 -134
  344. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  345. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -50
  346. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  347. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -41
  348. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  349. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  350. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  351. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -207
  352. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  353. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -14
  354. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  355. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -311
  356. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  357. package/dist/esm/adapter/resources/webgl-sampler.js +0 -42
  358. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  359. package/dist/esm/adapter/resources/webgl-shader.js +0 -62
  360. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  361. package/dist/esm/adapter/resources/webgl-texture.js +0 -714
  362. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  363. package/dist/esm/adapter/webgl-canvas-context.js +0 -41
  364. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  365. package/dist/esm/adapter/webgl-device.js +0 -276
  366. package/dist/esm/adapter/webgl-device.js.map +0 -1
  367. package/dist/esm/bundle.js +0 -4
  368. package/dist/esm/bundle.js.map +0 -1
  369. package/dist/esm/classic/accessor.js +0 -120
  370. package/dist/esm/classic/accessor.js.map +0 -1
  371. package/dist/esm/classic/buffer.js +0 -327
  372. package/dist/esm/classic/buffer.js.map +0 -1
  373. package/dist/esm/classic/typed-array-utils.js +0 -92
  374. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  375. package/dist/esm/context/context/create-browser-context.js +0 -53
  376. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  377. package/dist/esm/context/context/create-headless-context.js +0 -39
  378. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  379. package/dist/esm/context/context/webgl-checks.js +0 -31
  380. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  381. package/dist/esm/context/debug/spector.js +0 -64
  382. package/dist/esm/context/debug/spector.js.map +0 -1
  383. package/dist/esm/context/debug/webgl-developer-tools.js +0 -97
  384. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  385. package/dist/esm/context/parameters/unified-parameter-api.js +0 -55
  386. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  387. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -427
  388. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  389. package/dist/esm/context/polyfill/context-data.js +0 -12
  390. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  391. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -86
  392. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  393. package/dist/esm/context/polyfill/polyfill-context.js +0 -84
  394. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  395. package/dist/esm/context/polyfill/polyfill-table.js +0 -138
  396. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  397. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -265
  398. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  399. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -17
  400. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  401. package/dist/esm/context/state-tracker/track-context-state.js +0 -148
  402. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  403. package/dist/esm/context/state-tracker/with-parameters.js +0 -34
  404. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  405. package/dist/esm/index.js +0 -27
  406. package/dist/esm/index.js.map +0 -1
  407. package/dist/esm/init.js +0 -4
  408. package/dist/esm/init.js.map +0 -1
  409. package/dist/esm/types/webgl.js +0 -2
  410. package/dist/esm/types/webgl.js.map +0 -1
  411. package/dist/esm/types.js +0 -2
  412. package/dist/esm/types.js.map +0 -1
  413. package/dist/init.d.ts +0 -2
  414. package/dist/init.d.ts.map +0 -1
  415. package/dist/init.js +0 -3
  416. package/src/bundle.ts +0 -4
  417. package/src/init.ts +0 -4
@@ -1,492 +1,901 @@
1
1
  import { decodeTextureFormat } from '@luma.gl/api';
2
2
  import GL from '@luma.gl/constants';
3
- import { isWebGL2 } from '../../context/context/webgl-checks.js';
4
- // TEXTURE FEATURES
5
- // Define local device feature strings to optimize minification
3
+ import { isWebGL2 } from "../../context/context/webgl-checks.js";
6
4
  const texture_compression_bc = 'texture-compression-bc';
7
5
  const texture_compression_astc = 'texture-compression-astc';
8
6
  const texture_compression_etc2 = 'texture-compression-etc2';
9
7
  const texture_compression_etc1_webgl = 'texture-compression-etc1-webgl';
10
8
  const texture_compression_pvrtc_webgl = 'texture-compression-pvrtc-webgl';
11
9
  const texture_compression_atc_webgl = 'texture-compression-atc-webgl';
12
- // Define local webgl extension strings to optimize minification
13
- const X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3
14
- const X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3
15
- const X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5
16
- const X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7
17
- const X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'
10
+ const X_S3TC = 'WEBGL_compressed_texture_s3tc';
11
+ const X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb';
12
+ const X_RGTC = 'EXT_texture_compression_rgtc';
13
+ const X_BPTC = 'EXT_texture_compression_bptc';
14
+ const X_ETC2 = 'WEBGL_compressed_texture_etc';
18
15
  const X_ASTC = 'WEBGL_compressed_texture_astc';
19
16
  const X_ETC1 = 'WEBGL_compressed_texture_etc1';
20
17
  const X_PVRTC = 'WEBGL_compressed_texture_pvrtc';
21
18
  const X_ATC = 'WEBGL_compressed_texture_atc';
22
- // Define local webgl extension strings to optimize minification
23
- const EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB
19
+ const EXT_SRGB = 'EXT_sRGB';
24
20
  const EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';
25
21
  const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';
26
22
  const EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';
27
- // const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
28
- // const DEPTH = 'WEBGL_depth_texture';
29
23
  const checkExtension = (gl, extension) => gl.getExtension(extension);
30
- const checkExtensions = (gl, extensions) => extensions.every((extension) => gl.getExtension(extension));
31
- // prettier-ignore
24
+ const checkExtensions = (gl, extensions) => extensions.every(extension => gl.getExtension(extension));
32
25
  const TEXTURE_FEATURE_CHECKS = {
33
- 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),
34
- 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),
35
- 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),
36
- 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),
37
- 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),
38
- 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,
39
- 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),
40
- 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),
41
- 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),
42
- 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'),
43
- 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),
44
- 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),
45
- 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),
46
- // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),
47
- // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),
48
- // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),
49
- 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),
50
- 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),
51
- 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),
52
- 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),
53
- 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])
26
+ 'texture-blend-float-webgl1': gl => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),
27
+ 'texture-formats-srgb-webgl1': gl => isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB),
28
+ 'texture-formats-depth-webgl1': gl => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),
29
+ 'texture-formats-float32-webgl1': gl => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),
30
+ 'texture-formats-float16-webgl1': gl => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),
31
+ 'texture-formats-norm16-webgl': gl => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,
32
+ 'texture-filter-linear-float32-webgl': gl => checkExtension(gl, 'OES_texture_float_linear'),
33
+ 'texture-filter-linear-float16-webgl': gl => checkExtension(gl, 'OES_texture_half_float_linear'),
34
+ 'texture-filter-anisotropic-webgl': gl => checkExtension(gl, 'EXT_texture_filter_anisotropic'),
35
+ 'texture-renderable-float32-webgl': gl => checkExtension(gl, 'EXT_color_buffer_float'),
36
+ 'texture-renderable-float16-webgl': gl => checkExtension(gl, 'EXT_color_buffer_half_float'),
37
+ 'texture-compression-bc': gl => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),
38
+ 'texture-compression-bc5-webgl': gl => checkExtensions(gl, [X_RGTC]),
39
+ 'texture-compression-etc2': gl => checkExtensions(gl, [X_ETC2]),
40
+ 'texture-compression-astc': gl => checkExtensions(gl, [X_ASTC]),
41
+ 'texture-compression-etc1-webgl': gl => checkExtensions(gl, [X_ETC1]),
42
+ 'texture-compression-pvrtc-webgl': gl => checkExtensions(gl, [X_PVRTC]),
43
+ 'texture-compression-atc-webgl': gl => checkExtensions(gl, [X_ATC])
54
44
  };
55
45
  export function checkTextureFeature(gl, feature) {
56
- return TEXTURE_FEATURE_CHECKS[feature]?.(gl) || false;
46
+ var _TEXTURE_FEATURE_CHEC;
47
+ return ((_TEXTURE_FEATURE_CHEC = TEXTURE_FEATURE_CHECKS[feature]) === null || _TEXTURE_FEATURE_CHEC === void 0 ? void 0 : _TEXTURE_FEATURE_CHEC.call(TEXTURE_FEATURE_CHECKS, gl)) || false;
57
48
  }
58
- const checkTextureFeatures = (gl, features) => features.every((feature) => checkTextureFeature(gl, feature));
59
- /** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */
49
+ const checkTextureFeatures = (gl, features) => features.every(feature => checkTextureFeature(gl, feature));
60
50
  export function getTextureFeatures(gl) {
61
- const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS);
62
- return textureFeatures.filter((feature) => checkTextureFeature(gl, feature));
51
+ const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS);
52
+ return textureFeatures.filter(feature => checkTextureFeature(gl, feature));
63
53
  }
64
- // TABLES
65
- /** Legal combinations for internalFormat, format and type *
66
- // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},
67
- // [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},
68
- // Sized texture format
69
- // R
70
- [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},
71
- [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},
72
- [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
73
- // // RG
74
- [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},
75
- [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},
76
- [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
77
- // // RGB
78
- [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},
79
- [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},
80
- [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
81
- [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
82
- // // RGBA
83
-
84
- [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},
85
- [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},
86
- [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
87
- [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},
88
- [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},
89
- [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},
90
- [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},
91
- [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
92
- [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}
93
- */
94
- /** Texture format data */
95
- // prettier-ignore
96
54
  export const TEXTURE_FORMATS = {
97
- // Unsized formats that leave the precision up to the driver.
98
- // TODO - Fix bpp constants
99
- // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},
100
- 'rgb8unorm-unsized': { gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,
101
- dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5] },
102
- 'rgba8unorm-unsized': { gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,
103
- dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1] },
104
- // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},
105
- // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},
106
- // 8-bit formats
107
- 'r8unorm': { gl: GL.R8, b: 1, c: 1 },
108
- 'r8snorm': { gl: GL.R8_SNORM, b: 1, c: 1 },
109
- 'r8uint': { gl: GL.R8UI, b: 1, c: 1 },
110
- 'r8sint': { gl: GL.R8I, b: 1, c: 1 },
111
- // 16-bit formats
112
- 'rg8unorm': { gl: GL.RG8, b: 2, c: 2 },
113
- 'rg8snorm': { gl: GL.RG8_SNORM, b: 2, c: 2 },
114
- 'rg8uint': { gl: GL.RG8UI, b: 2, c: 2 },
115
- 'rg8sint': { gl: GL.RG8I, b: 2, c: 2 },
116
- 'r16uint': { gl: GL.R16UI, b: 2, c: 1 },
117
- 'r16sint': { gl: GL.R16I, b: 2, c: 1 },
118
- 'r16float': { gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl' },
119
- 'r16unorm-webgl': { gl: GL.R16_EXT, b: 2, c: 1, f: 'texture-formats-norm16-webgl' },
120
- 'r16snorm-webgl': { gl: GL.R16_SNORM_EXT, b: 2, c: 1, f: 'texture-formats-norm16-webgl' },
121
- // Packed 16-bit formats
122
- 'rgba4unorm-webgl': { gl: GL.RGBA4, b: 2, c: 4, wgpu: false },
123
- 'rgb565unorm-webgl': { gl: GL.RGB565, b: 2, c: 4, wgpu: false },
124
- 'rgb5a1unorm-webgl': { gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false },
125
- // 24-bit formats
126
- 'rbg8unorm-webgl': { gl: GL.RGB8, b: 3, c: 3, wgpu: false },
127
- 'rbg8snorm-webgl': { gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false },
128
- // 32-bit formats
129
- 'rgba8unorm': { gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4 },
130
- 'rgba8unorm-srgb': { gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4 },
131
- 'rgba8snorm': { gl: GL.RGBA8_SNORM, b: 4, c: 4 },
132
- 'rgba8uint': { gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4 },
133
- 'rgba8sint': { gl: GL.RGBA8I, b: 4, c: 4, bpp: 4 },
134
- // reverse colors, webgpu only
135
- 'bgra8unorm': { b: 4, c: 4 },
136
- 'bgra8unorm-srgb': { b: 4, c: 4 },
137
- 'rg16uint': { gl: GL.RG16UI, b: 4, c: 1, bpp: 4 },
138
- 'rg16sint': { gl: GL.RG16I, b: 4, c: 2, bpp: 4 },
139
- // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension
140
- 'rg16float': { gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl' },
141
- 'rg16unorm-webgl': { gl: GL.RG16_EXT, b: 2, c: 2, f: 'texture-formats-norm16-webgl' },
142
- 'rg16snorm-webgl': { gl: GL.RG16_SNORM_EXT, b: 2, c: 2, f: 'texture-formats-norm16-webgl' },
143
- 'r32uint': { gl: GL.R32UI, b: 4, c: 1, bpp: 4 },
144
- 'r32sint': { gl: GL.R32I, b: 4, c: 1, bpp: 4 },
145
- 'r32float': { gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl' },
146
- // Packed 32-bit formats
147
- 'rgb9e5ufloat': { gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl' },
148
- 'rg11b10ufloat': { gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1, render: 'texture-renderable-float32-webgl' },
149
- 'rgb10a2unorm': { gl: GL.RGB10_A2, b: 4, c: 4, p: 1 },
150
- // webgl2 only
151
- 'rgb10a2unorm-webgl': { b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4 },
152
- // 48-bit formats
153
- 'rgb16unorm-webgl': { gl: GL.RGB16_EXT, b: 2, c: 3, f: 'texture-formats-norm16-webgl' },
154
- 'rgb16snorm-webgl': { gl: GL.RGB16_SNORM_EXT, b: 2, c: 3, f: 'texture-formats-norm16-webgl' },
155
- // 64-bit formats
156
- 'rg32uint': { gl: GL.RG32UI, b: 8, c: 2 },
157
- 'rg32sint': { gl: GL.RG32I, b: 8, c: 2 },
158
- 'rg32float': { gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl' },
159
- 'rgba16uint': { gl: GL.RGBA16UI, b: 8, c: 4 },
160
- 'rgba16sint': { gl: GL.RGBA16I, b: 8, c: 4 },
161
- 'rgba16float': { gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl' },
162
- 'rgba16unorm-webgl': { gl: GL.RGBA16_EXT, b: 2, c: 4, f: 'texture-formats-norm16-webgl' },
163
- 'rgba16snorm-webgl': { gl: GL.RGBA16_SNORM_EXT, b: 2, c: 4, f: 'texture-formats-norm16-webgl' },
164
- // 96-bit formats (deprecated!)
165
- 'rgb32float-webgl': { gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',
166
- gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1,
167
- dataFormat: GL.RGB, types: [GL.FLOAT] },
168
- // 128-bit formats
169
- 'rgba32uint': { gl: GL.RGBA32UI, b: 16, c: 4 },
170
- 'rgba32sint': { gl: GL.RGBA32I, b: 16, c: 4 },
171
- 'rgba32float': { gl: GL.RGBA32F, gl1: GL.RGBA, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl' },
172
- // Depth and stencil formats
173
- 'stencil8': { gl: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT },
174
- 'depth16unorm': { gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT },
175
- 'depth24plus': { gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT },
176
- 'depth32float': { gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT },
177
- 'depth24plus-stencil8': { b: 4, gl: GL.UNSIGNED_INT_24_8, gl1: GL.DEPTH_STENCIL, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT },
178
- // "depth24unorm-stencil8" feature
179
- 'depth24unorm-stencil8': { gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT },
180
- // "depth32float-stencil8" feature
181
- "depth32float-stencil8": { gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT },
182
- // BC compressed formats: check device.features.has("texture-compression-bc");
183
- 'bc1-rgb-unorm-webgl': { gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc },
184
- 'bc1-rgb-unorm-srgb-webgl': { gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc },
185
- 'bc1-rgba-unorm': { gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc },
186
- 'bc1-rgba-unorm-srgb': { gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc },
187
- 'bc2-rgba-unorm': { gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc },
188
- 'bc2-rgba-unorm-srgb': { gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc },
189
- 'bc3-rgba-unorm': { gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc },
190
- 'bc3-rgba-unorm-srgb': { gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc },
191
- 'bc4-r-unorm': { gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc },
192
- 'bc4-r-snorm': { gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc },
193
- 'bc5-rg-unorm': { gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc },
194
- 'bc5-rg-snorm': { gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc },
195
- 'bc6h-rgb-ufloat': { gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc },
196
- 'bc6h-rgb-float': { gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc },
197
- 'bc7-rgba-unorm': { gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc },
198
- 'bc7-rgba-unorm-srgb': { gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc },
199
- // WEBGL_compressed_texture_etc: device.features.has("texture-compression-etc2")
200
- // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression
201
- 'etc2-rgb8unorm': { gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2 },
202
- 'etc2-rgb8unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2 },
203
- 'etc2-rgb8a1unorm': { gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2 },
204
- 'etc2-rgb8a1unorm-srgb': { gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2 },
205
- 'etc2-rgba8unorm': { gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2 },
206
- 'etc2-rgba8unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2 },
207
- 'eac-r11unorm': { gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2 },
208
- 'eac-r11snorm': { gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2 },
209
- 'eac-rg11unorm': { gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2 },
210
- 'eac-rg11snorm': { gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2 },
211
- // X_ASTC compressed formats: device.features.has("texture-compression-astc")
212
- 'astc-4x4-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc },
213
- 'astc-4x4-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc },
214
- 'astc-5x4-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc },
215
- 'astc-5x4-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc },
216
- 'astc-5x5-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc },
217
- 'astc-5x5-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc },
218
- 'astc-6x5-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc },
219
- 'astc-6x5-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc },
220
- 'astc-6x6-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc },
221
- 'astc-6x6-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc },
222
- 'astc-8x5-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc },
223
- 'astc-8x5-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc },
224
- 'astc-8x6-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc },
225
- 'astc-8x6-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc },
226
- 'astc-8x8-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc },
227
- 'astc-8x8-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc },
228
- 'astc-10x5-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc },
229
- 'astc-10x5-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc },
230
- 'astc-10x6-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc },
231
- 'astc-10x6-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc },
232
- 'astc-10x8-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc },
233
- 'astc-10x8-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc },
234
- 'astc-10x10-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc },
235
- 'astc-10x10-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc },
236
- 'astc-12x10-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc },
237
- 'astc-12x10-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc },
238
- 'astc-12x12-unorm': { gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc },
239
- 'astc-12x12-unorm-srgb': { gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc },
240
- // WEBGL_compressed_texture_pvrtc
241
- 'pvrtc-rgb4unorm-webgl': { gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl },
242
- 'pvrtc-rgba4unorm-webgl': { gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl },
243
- 'pvrtc-rbg2unorm-webgl': { gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl },
244
- 'pvrtc-rgba2unorm-webgl': { gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl },
245
- // WEBGL_compressed_texture_etc1
246
- 'etc1-rbg-unorm-webgl': { gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl },
247
- // WEBGL_compressed_texture_atc
248
- 'atc-rgb-unorm-webgl': { gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl },
249
- 'atc-rgba-unorm-webgl': { gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl },
250
- 'atc-rgbai-unorm-webgl': { gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl }
55
+ 'rgb8unorm-unsized': {
56
+ gl: GL.RGB,
57
+ gl1: GL.RGB,
58
+ b: 4,
59
+ c: 2,
60
+ bpp: 4,
61
+ dataFormat: GL.RGB,
62
+ types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]
63
+ },
64
+ 'rgba8unorm-unsized': {
65
+ gl: GL.RGBA,
66
+ gl1: GL.RGBA,
67
+ b: 4,
68
+ c: 2,
69
+ bpp: 4,
70
+ dataFormat: GL.RGBA,
71
+ types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]
72
+ },
73
+ 'r8unorm': {
74
+ gl: GL.R8,
75
+ b: 1,
76
+ c: 1
77
+ },
78
+ 'r8snorm': {
79
+ gl: GL.R8_SNORM,
80
+ b: 1,
81
+ c: 1
82
+ },
83
+ 'r8uint': {
84
+ gl: GL.R8UI,
85
+ b: 1,
86
+ c: 1
87
+ },
88
+ 'r8sint': {
89
+ gl: GL.R8I,
90
+ b: 1,
91
+ c: 1
92
+ },
93
+ 'rg8unorm': {
94
+ gl: GL.RG8,
95
+ b: 2,
96
+ c: 2
97
+ },
98
+ 'rg8snorm': {
99
+ gl: GL.RG8_SNORM,
100
+ b: 2,
101
+ c: 2
102
+ },
103
+ 'rg8uint': {
104
+ gl: GL.RG8UI,
105
+ b: 2,
106
+ c: 2
107
+ },
108
+ 'rg8sint': {
109
+ gl: GL.RG8I,
110
+ b: 2,
111
+ c: 2
112
+ },
113
+ 'r16uint': {
114
+ gl: GL.R16UI,
115
+ b: 2,
116
+ c: 1
117
+ },
118
+ 'r16sint': {
119
+ gl: GL.R16I,
120
+ b: 2,
121
+ c: 1
122
+ },
123
+ 'r16float': {
124
+ gl: GL.R16F,
125
+ b: 2,
126
+ c: 1,
127
+ render: 'texture-renderable-float16-webgl',
128
+ filter: 'texture-filter-linear-float16-webgl'
129
+ },
130
+ 'r16unorm-webgl': {
131
+ gl: GL.R16_EXT,
132
+ b: 2,
133
+ c: 1,
134
+ f: 'texture-formats-norm16-webgl'
135
+ },
136
+ 'r16snorm-webgl': {
137
+ gl: GL.R16_SNORM_EXT,
138
+ b: 2,
139
+ c: 1,
140
+ f: 'texture-formats-norm16-webgl'
141
+ },
142
+ 'rgba4unorm-webgl': {
143
+ gl: GL.RGBA4,
144
+ b: 2,
145
+ c: 4,
146
+ wgpu: false
147
+ },
148
+ 'rgb565unorm-webgl': {
149
+ gl: GL.RGB565,
150
+ b: 2,
151
+ c: 4,
152
+ wgpu: false
153
+ },
154
+ 'rgb5a1unorm-webgl': {
155
+ gl: GL.RGB5_A1,
156
+ b: 2,
157
+ c: 4,
158
+ wgpu: false
159
+ },
160
+ 'rbg8unorm-webgl': {
161
+ gl: GL.RGB8,
162
+ b: 3,
163
+ c: 3,
164
+ wgpu: false
165
+ },
166
+ 'rbg8snorm-webgl': {
167
+ gl: GL.RGB8_SNORM,
168
+ b: 3,
169
+ c: 3,
170
+ wgpu: false
171
+ },
172
+ 'rgba8unorm': {
173
+ gl: GL.RGBA8,
174
+ gl1: GL.RGBA,
175
+ b: 4,
176
+ c: 2,
177
+ bpp: 4
178
+ },
179
+ 'rgba8unorm-srgb': {
180
+ gl: GL.SRGB8_ALPHA8,
181
+ gl1: GL.SRGB_ALPHA_EXT,
182
+ b: 4,
183
+ c: 4,
184
+ gl1ext: EXT_SRGB,
185
+ bpp: 4
186
+ },
187
+ 'rgba8snorm': {
188
+ gl: GL.RGBA8_SNORM,
189
+ b: 4,
190
+ c: 4
191
+ },
192
+ 'rgba8uint': {
193
+ gl: GL.RGBA8UI,
194
+ b: 4,
195
+ c: 4,
196
+ bpp: 4
197
+ },
198
+ 'rgba8sint': {
199
+ gl: GL.RGBA8I,
200
+ b: 4,
201
+ c: 4,
202
+ bpp: 4
203
+ },
204
+ 'bgra8unorm': {
205
+ b: 4,
206
+ c: 4
207
+ },
208
+ 'bgra8unorm-srgb': {
209
+ b: 4,
210
+ c: 4
211
+ },
212
+ 'rg16uint': {
213
+ gl: GL.RG16UI,
214
+ b: 4,
215
+ c: 1,
216
+ bpp: 4
217
+ },
218
+ 'rg16sint': {
219
+ gl: GL.RG16I,
220
+ b: 4,
221
+ c: 2,
222
+ bpp: 4
223
+ },
224
+ 'rg16float': {
225
+ gl: GL.RG16F,
226
+ bpp: 4,
227
+ b: 4,
228
+ c: 2,
229
+ render: 'texture-renderable-float16-webgl',
230
+ filter: 'texture-filter-linear-float16-webgl'
231
+ },
232
+ 'rg16unorm-webgl': {
233
+ gl: GL.RG16_EXT,
234
+ b: 2,
235
+ c: 2,
236
+ f: 'texture-formats-norm16-webgl'
237
+ },
238
+ 'rg16snorm-webgl': {
239
+ gl: GL.RG16_SNORM_EXT,
240
+ b: 2,
241
+ c: 2,
242
+ f: 'texture-formats-norm16-webgl'
243
+ },
244
+ 'r32uint': {
245
+ gl: GL.R32UI,
246
+ b: 4,
247
+ c: 1,
248
+ bpp: 4
249
+ },
250
+ 'r32sint': {
251
+ gl: GL.R32I,
252
+ b: 4,
253
+ c: 1,
254
+ bpp: 4
255
+ },
256
+ 'r32float': {
257
+ gl: GL.R32F,
258
+ bpp: 4,
259
+ b: 4,
260
+ c: 1,
261
+ render: 'texture-renderable-float32-webgl',
262
+ filter: 'texture-filter-linear-float32-webgl'
263
+ },
264
+ 'rgb9e5ufloat': {
265
+ gl: GL.RGB9_E5,
266
+ b: 4,
267
+ c: 3,
268
+ p: 1,
269
+ render: 'texture-renderable-float16-webgl',
270
+ filter: 'texture-filter-linear-float16-webgl'
271
+ },
272
+ 'rg11b10ufloat': {
273
+ gl: GL.R11F_G11F_B10F,
274
+ b: 4,
275
+ c: 3,
276
+ p: 1,
277
+ render: 'texture-renderable-float32-webgl'
278
+ },
279
+ 'rgb10a2unorm': {
280
+ gl: GL.RGB10_A2,
281
+ b: 4,
282
+ c: 4,
283
+ p: 1
284
+ },
285
+ 'rgb10a2unorm-webgl': {
286
+ b: 4,
287
+ c: 4,
288
+ gl: GL.RGB10_A2UI,
289
+ p: 1,
290
+ wgpu: false,
291
+ bpp: 4
292
+ },
293
+ 'rgb16unorm-webgl': {
294
+ gl: GL.RGB16_EXT,
295
+ b: 2,
296
+ c: 3,
297
+ f: 'texture-formats-norm16-webgl'
298
+ },
299
+ 'rgb16snorm-webgl': {
300
+ gl: GL.RGB16_SNORM_EXT,
301
+ b: 2,
302
+ c: 3,
303
+ f: 'texture-formats-norm16-webgl'
304
+ },
305
+ 'rg32uint': {
306
+ gl: GL.RG32UI,
307
+ b: 8,
308
+ c: 2
309
+ },
310
+ 'rg32sint': {
311
+ gl: GL.RG32I,
312
+ b: 8,
313
+ c: 2
314
+ },
315
+ 'rg32float': {
316
+ gl: GL.RG32F,
317
+ b: 8,
318
+ c: 2,
319
+ render: 'texture-renderable-float32-webgl',
320
+ filter: 'texture-filter-linear-float32-webgl'
321
+ },
322
+ 'rgba16uint': {
323
+ gl: GL.RGBA16UI,
324
+ b: 8,
325
+ c: 4
326
+ },
327
+ 'rgba16sint': {
328
+ gl: GL.RGBA16I,
329
+ b: 8,
330
+ c: 4
331
+ },
332
+ 'rgba16float': {
333
+ gl: GL.RGBA16F,
334
+ gl1: GL.RGBA,
335
+ b: 8,
336
+ c: 4,
337
+ render: 'texture-renderable-float16-webgl',
338
+ filter: 'texture-filter-linear-float16-webgl'
339
+ },
340
+ 'rgba16unorm-webgl': {
341
+ gl: GL.RGBA16_EXT,
342
+ b: 2,
343
+ c: 4,
344
+ f: 'texture-formats-norm16-webgl'
345
+ },
346
+ 'rgba16snorm-webgl': {
347
+ gl: GL.RGBA16_SNORM_EXT,
348
+ b: 2,
349
+ c: 4,
350
+ f: 'texture-formats-norm16-webgl'
351
+ },
352
+ 'rgb32float-webgl': {
353
+ gl: GL.RGB32F,
354
+ gl1: GL.RGB,
355
+ render: 'texture-renderable-float32-webgl',
356
+ filter: 'texture-filter-linear-float32-webgl',
357
+ gl2ext: EXT_FLOAT_RENDER_WEBGL2,
358
+ gl1ext: EXT_FLOAT_WEBGL1,
359
+ dataFormat: GL.RGB,
360
+ types: [GL.FLOAT]
361
+ },
362
+ 'rgba32uint': {
363
+ gl: GL.RGBA32UI,
364
+ b: 16,
365
+ c: 4
366
+ },
367
+ 'rgba32sint': {
368
+ gl: GL.RGBA32I,
369
+ b: 16,
370
+ c: 4
371
+ },
372
+ 'rgba32float': {
373
+ gl: GL.RGBA32F,
374
+ gl1: GL.RGBA,
375
+ b: 16,
376
+ c: 4,
377
+ render: 'texture-renderable-float32-webgl',
378
+ filter: 'texture-filter-linear-float32-webgl'
379
+ },
380
+ 'stencil8': {
381
+ gl: GL.STENCIL_INDEX8,
382
+ b: 1,
383
+ c: 1,
384
+ attachment: GL.STENCIL_ATTACHMENT
385
+ },
386
+ 'depth16unorm': {
387
+ gl: GL.DEPTH_COMPONENT16,
388
+ gl1: GL.DEPTH_COMPONENT16,
389
+ b: 2,
390
+ c: 1,
391
+ attachment: GL.DEPTH_ATTACHMENT
392
+ },
393
+ 'depth24plus': {
394
+ gl: GL.DEPTH_COMPONENT24,
395
+ b: 3,
396
+ c: 1,
397
+ attachment: GL.DEPTH_ATTACHMENT
398
+ },
399
+ 'depth32float': {
400
+ gl: GL.DEPTH_COMPONENT32F,
401
+ b: 4,
402
+ c: 1,
403
+ attachment: GL.DEPTH_ATTACHMENT
404
+ },
405
+ 'depth24plus-stencil8': {
406
+ b: 4,
407
+ gl: GL.UNSIGNED_INT_24_8,
408
+ gl1: GL.DEPTH_STENCIL,
409
+ c: 2,
410
+ p: 1,
411
+ attachment: GL.DEPTH_STENCIL_ATTACHMENT
412
+ },
413
+ 'depth24unorm-stencil8': {
414
+ gl: GL.DEPTH24_STENCIL8,
415
+ b: 4,
416
+ c: 2,
417
+ p: 1,
418
+ attachment: GL.DEPTH_STENCIL_ATTACHMENT
419
+ },
420
+ 'depth32float-stencil8': {
421
+ gl: GL.DEPTH32F_STENCIL8,
422
+ b: 5,
423
+ c: 2,
424
+ p: 1,
425
+ attachment: GL.DEPTH_STENCIL_ATTACHMENT
426
+ },
427
+ 'bc1-rgb-unorm-webgl': {
428
+ gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT,
429
+ x: X_S3TC,
430
+ f: texture_compression_bc
431
+ },
432
+ 'bc1-rgb-unorm-srgb-webgl': {
433
+ gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT,
434
+ x: X_S3TC_SRGB,
435
+ f: texture_compression_bc
436
+ },
437
+ 'bc1-rgba-unorm': {
438
+ gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT,
439
+ x: X_S3TC,
440
+ f: texture_compression_bc
441
+ },
442
+ 'bc1-rgba-unorm-srgb': {
443
+ gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT,
444
+ x: X_S3TC_SRGB,
445
+ f: texture_compression_bc
446
+ },
447
+ 'bc2-rgba-unorm': {
448
+ gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT,
449
+ x: X_S3TC,
450
+ f: texture_compression_bc
451
+ },
452
+ 'bc2-rgba-unorm-srgb': {
453
+ gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
454
+ x: X_S3TC_SRGB,
455
+ f: texture_compression_bc
456
+ },
457
+ 'bc3-rgba-unorm': {
458
+ gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT,
459
+ x: X_S3TC,
460
+ f: texture_compression_bc
461
+ },
462
+ 'bc3-rgba-unorm-srgb': {
463
+ gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
464
+ x: X_S3TC_SRGB,
465
+ f: texture_compression_bc
466
+ },
467
+ 'bc4-r-unorm': {
468
+ gl: GL.COMPRESSED_RED_RGTC1_EXT,
469
+ x: X_RGTC,
470
+ f: texture_compression_bc
471
+ },
472
+ 'bc4-r-snorm': {
473
+ gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT,
474
+ x: X_RGTC,
475
+ f: texture_compression_bc
476
+ },
477
+ 'bc5-rg-unorm': {
478
+ gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT,
479
+ x: X_RGTC,
480
+ f: texture_compression_bc
481
+ },
482
+ 'bc5-rg-snorm': {
483
+ gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
484
+ x: X_RGTC,
485
+ f: texture_compression_bc
486
+ },
487
+ 'bc6h-rgb-ufloat': {
488
+ gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,
489
+ x: X_BPTC,
490
+ f: texture_compression_bc
491
+ },
492
+ 'bc6h-rgb-float': {
493
+ gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,
494
+ x: X_BPTC,
495
+ f: texture_compression_bc
496
+ },
497
+ 'bc7-rgba-unorm': {
498
+ gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT,
499
+ x: X_BPTC,
500
+ f: texture_compression_bc
501
+ },
502
+ 'bc7-rgba-unorm-srgb': {
503
+ gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,
504
+ x: X_BPTC,
505
+ f: texture_compression_bc
506
+ },
507
+ 'etc2-rgb8unorm': {
508
+ gl: GL.COMPRESSED_RGB8_ETC2,
509
+ f: texture_compression_etc2
510
+ },
511
+ 'etc2-rgb8unorm-srgb': {
512
+ gl: GL.COMPRESSED_SRGB8_ETC2,
513
+ f: texture_compression_etc2
514
+ },
515
+ 'etc2-rgb8a1unorm': {
516
+ gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
517
+ f: texture_compression_etc2
518
+ },
519
+ 'etc2-rgb8a1unorm-srgb': {
520
+ gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
521
+ f: texture_compression_etc2
522
+ },
523
+ 'etc2-rgba8unorm': {
524
+ gl: GL.COMPRESSED_RGBA8_ETC2_EAC,
525
+ f: texture_compression_etc2
526
+ },
527
+ 'etc2-rgba8unorm-srgb': {
528
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
529
+ f: texture_compression_etc2
530
+ },
531
+ 'eac-r11unorm': {
532
+ gl: GL.COMPRESSED_R11_EAC,
533
+ f: texture_compression_etc2
534
+ },
535
+ 'eac-r11snorm': {
536
+ gl: GL.COMPRESSED_SIGNED_R11_EAC,
537
+ f: texture_compression_etc2
538
+ },
539
+ 'eac-rg11unorm': {
540
+ gl: GL.COMPRESSED_RG11_EAC,
541
+ f: texture_compression_etc2
542
+ },
543
+ 'eac-rg11snorm': {
544
+ gl: GL.COMPRESSED_SIGNED_RG11_EAC,
545
+ f: texture_compression_etc2
546
+ },
547
+ 'astc-4x4-unorm': {
548
+ gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR,
549
+ f: texture_compression_astc
550
+ },
551
+ 'astc-4x4-unorm-srgb': {
552
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
553
+ f: texture_compression_astc
554
+ },
555
+ 'astc-5x4-unorm': {
556
+ gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR,
557
+ f: texture_compression_astc
558
+ },
559
+ 'astc-5x4-unorm-srgb': {
560
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
561
+ f: texture_compression_astc
562
+ },
563
+ 'astc-5x5-unorm': {
564
+ gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR,
565
+ f: texture_compression_astc
566
+ },
567
+ 'astc-5x5-unorm-srgb': {
568
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
569
+ f: texture_compression_astc
570
+ },
571
+ 'astc-6x5-unorm': {
572
+ gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR,
573
+ f: texture_compression_astc
574
+ },
575
+ 'astc-6x5-unorm-srgb': {
576
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
577
+ f: texture_compression_astc
578
+ },
579
+ 'astc-6x6-unorm': {
580
+ gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR,
581
+ f: texture_compression_astc
582
+ },
583
+ 'astc-6x6-unorm-srgb': {
584
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
585
+ f: texture_compression_astc
586
+ },
587
+ 'astc-8x5-unorm': {
588
+ gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR,
589
+ f: texture_compression_astc
590
+ },
591
+ 'astc-8x5-unorm-srgb': {
592
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
593
+ f: texture_compression_astc
594
+ },
595
+ 'astc-8x6-unorm': {
596
+ gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR,
597
+ f: texture_compression_astc
598
+ },
599
+ 'astc-8x6-unorm-srgb': {
600
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
601
+ f: texture_compression_astc
602
+ },
603
+ 'astc-8x8-unorm': {
604
+ gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR,
605
+ f: texture_compression_astc
606
+ },
607
+ 'astc-8x8-unorm-srgb': {
608
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
609
+ f: texture_compression_astc
610
+ },
611
+ 'astc-10x5-unorm': {
612
+ gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR,
613
+ f: texture_compression_astc
614
+ },
615
+ 'astc-10x5-unorm-srgb': {
616
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
617
+ f: texture_compression_astc
618
+ },
619
+ 'astc-10x6-unorm': {
620
+ gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR,
621
+ f: texture_compression_astc
622
+ },
623
+ 'astc-10x6-unorm-srgb': {
624
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
625
+ f: texture_compression_astc
626
+ },
627
+ 'astc-10x8-unorm': {
628
+ gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR,
629
+ f: texture_compression_astc
630
+ },
631
+ 'astc-10x8-unorm-srgb': {
632
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
633
+ f: texture_compression_astc
634
+ },
635
+ 'astc-10x10-unorm': {
636
+ gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR,
637
+ f: texture_compression_astc
638
+ },
639
+ 'astc-10x10-unorm-srgb': {
640
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
641
+ f: texture_compression_astc
642
+ },
643
+ 'astc-12x10-unorm': {
644
+ gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR,
645
+ f: texture_compression_astc
646
+ },
647
+ 'astc-12x10-unorm-srgb': {
648
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
649
+ f: texture_compression_astc
650
+ },
651
+ 'astc-12x12-unorm': {
652
+ gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR,
653
+ f: texture_compression_astc
654
+ },
655
+ 'astc-12x12-unorm-srgb': {
656
+ gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
657
+ f: texture_compression_astc
658
+ },
659
+ 'pvrtc-rgb4unorm-webgl': {
660
+ gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
661
+ f: texture_compression_pvrtc_webgl
662
+ },
663
+ 'pvrtc-rgba4unorm-webgl': {
664
+ gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
665
+ f: texture_compression_pvrtc_webgl
666
+ },
667
+ 'pvrtc-rbg2unorm-webgl': {
668
+ gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
669
+ f: texture_compression_pvrtc_webgl
670
+ },
671
+ 'pvrtc-rgba2unorm-webgl': {
672
+ gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
673
+ f: texture_compression_pvrtc_webgl
674
+ },
675
+ 'etc1-rbg-unorm-webgl': {
676
+ gl: GL.COMPRESSED_RGB_ETC1_WEBGL,
677
+ f: texture_compression_etc1_webgl
678
+ },
679
+ 'atc-rgb-unorm-webgl': {
680
+ gl: GL.COMPRESSED_RGB_ATC_WEBGL,
681
+ f: texture_compression_atc_webgl
682
+ },
683
+ 'atc-rgba-unorm-webgl': {
684
+ gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
685
+ f: texture_compression_atc_webgl
686
+ },
687
+ 'atc-rgbai-unorm-webgl': {
688
+ gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
689
+ f: texture_compression_atc_webgl
690
+ }
251
691
  };
252
- // FUNCTIONS
253
692
  function getTextureFormat(format) {
254
- if (typeof format === 'string') {
255
- return format;
256
- }
257
- const entry = Object.entries(TEXTURE_FORMATS).find(([, entry]) => (entry.gl === format || entry.gl1 === format));
258
- if (!entry) {
259
- throw new Error(`Unknown texture format ${format}`);
260
- }
261
- return entry[0];
693
+ if (typeof format === 'string') {
694
+ return format;
695
+ }
696
+ const entry = Object.entries(TEXTURE_FORMATS).find(_ref => {
697
+ let [, entry] = _ref;
698
+ return entry.gl === format || entry.gl1 === format;
699
+ });
700
+ if (!entry) {
701
+ throw new Error("Unknown texture format ".concat(format));
702
+ }
703
+ return entry[0];
262
704
  }
263
- /** Checks if a texture format is supported */
264
705
  export function isTextureFormatSupported(gl, formatOrGL) {
265
- const format = getTextureFormat(formatOrGL);
266
- const info = TEXTURE_FORMATS[format];
267
- if (!info) {
268
- return false;
269
- }
270
- // Check that we have a GL constant
271
- if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {
272
- return false;
273
- }
274
- // Check extensions
275
- const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);
276
- if (extension) {
277
- return Boolean(gl.getExtension(extension));
278
- }
279
- // if (info.gl1 === undefined && info.gl2 === undefined) {
280
- // // No info - always supported
281
- // }
282
- return true;
706
+ const format = getTextureFormat(formatOrGL);
707
+ const info = TEXTURE_FORMATS[format];
708
+ if (!info) {
709
+ return false;
710
+ }
711
+ if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {
712
+ return false;
713
+ }
714
+ const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);
715
+ if (extension) {
716
+ return Boolean(gl.getExtension(extension));
717
+ }
718
+ return true;
283
719
  }
284
- /** Checks if a texture format is supported */
285
720
  export function getTextureFormatSupport(gl, formatOrGL) {
286
- const format = getTextureFormat(formatOrGL);
287
- const info = TEXTURE_FORMATS[format];
288
- if (!info) {
289
- return { supported: false };
290
- }
291
- // let decoded;
292
- // try {
293
- // decoded = decodeTextureFormat(format);
294
- // } catch {}
295
- // Support Check that we have a GL constant
296
- let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;
297
- supported = supported && checkTextureFeatures(gl, [info.f]);
298
- // Filtering
299
- // const filterable = info.filter
300
- // ? checkTextureFeatures(gl, [info.filter])
301
- // : decoded && !decoded.signed;
302
- // const renderable = info.filter
303
- // ? checkTextureFeatures(gl, [info.render])
304
- // : decoded && !decoded.signed;
721
+ const format = getTextureFormat(formatOrGL);
722
+ const info = TEXTURE_FORMATS[format];
723
+ if (!info) {
305
724
  return {
306
- supported,
307
- renderable: supported && checkTextureFeatures(gl, [info.render]),
308
- filterable: supported && checkTextureFeatures(gl, [info.filter]),
309
- blendable: false,
310
- storable: false
725
+ supported: false
311
726
  };
727
+ }
728
+ let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;
729
+ supported = supported && checkTextureFeatures(gl, [info.f]);
730
+ return {
731
+ supported,
732
+ renderable: supported && checkTextureFeatures(gl, [info.render]),
733
+ filterable: supported && checkTextureFeatures(gl, [info.filter]),
734
+ blendable: false,
735
+ storable: false
736
+ };
312
737
  }
313
- /** Checks whether linear filtering (interpolated sampling) is available for floating point textures */
314
738
  export function isTextureFormatFilterable(gl, formatOrGL) {
315
- const format = getTextureFormat(formatOrGL);
316
- if (!isTextureFormatSupported(gl, format)) {
317
- return false;
318
- }
319
- try {
320
- const decoded = decodeTextureFormat(format);
321
- if (decoded.signed) {
322
- return false;
323
- }
324
- }
325
- catch {
326
- return false;
327
- }
328
- if (format.endsWith('32float')) {
329
- return Boolean(gl.getExtension('OES_texture_float_linear'));
330
- }
331
- if (format.endsWith('16float')) {
332
- return Boolean(gl.getExtension('OES_texture_half_float_linear'));
739
+ const format = getTextureFormat(formatOrGL);
740
+ if (!isTextureFormatSupported(gl, format)) {
741
+ return false;
742
+ }
743
+ try {
744
+ const decoded = decodeTextureFormat(format);
745
+ if (decoded.signed) {
746
+ return false;
333
747
  }
334
- // if (typeof format === 'string') {
335
- // if (format === 'rgba32float') {
336
- // return gl.device.features.has('texture-renderable-rgba32float-webgl');
337
- // }
338
- // if (format.endsWith('32float')) {
339
- // return gl.device.features.has('texture-renderable-float32-webgl');
340
- // }
341
- // if (format.endsWith('16float')) {
342
- // return gl.device.features.has('texture-renderable-float16-webgl');
343
- // }
344
- // }
345
- return true;
748
+ } catch {
749
+ return false;
750
+ }
751
+ if (format.endsWith('32float')) {
752
+ return Boolean(gl.getExtension('OES_texture_float_linear'));
753
+ }
754
+ if (format.endsWith('16float')) {
755
+ return Boolean(gl.getExtension('OES_texture_half_float_linear'));
756
+ }
757
+ return true;
346
758
  }
347
759
  export function isTextureFormatRenderable(gl, formatOrGL) {
348
- const format = getTextureFormat(formatOrGL);
349
- if (!isTextureFormatSupported(gl, format)) {
350
- return false;
351
- }
352
- if (typeof format === 'number') {
353
- return false; // isTextureFormatFilterableWebGL(gl, format);
354
- }
355
- // TODO depends on device...
356
- return true;
760
+ const format = getTextureFormat(formatOrGL);
761
+ if (!isTextureFormatSupported(gl, format)) {
762
+ return false;
763
+ }
764
+ if (typeof format === 'number') {
765
+ return false;
766
+ }
767
+ return true;
357
768
  }
358
- /**
359
- * Converts WebGPU string style texture formats to GL constants
360
- * Pass through GL constants
361
- */
362
769
  export function getWebGLTextureFormat(gl, formatOrGL) {
363
- const format = getTextureFormat(formatOrGL);
364
- const formatInfo = TEXTURE_FORMATS[format];
365
- const webglFormat = isWebGL2(gl) ? formatInfo?.gl : formatInfo?.gl1;
366
- // Remap or pass through
367
- if (typeof format === 'number') {
368
- return webglFormat || format;
369
- }
370
- if (webglFormat === undefined) {
371
- throw new Error(`Unsupported texture format ${format}`);
372
- }
373
- return webglFormat;
770
+ const format = getTextureFormat(formatOrGL);
771
+ const formatInfo = TEXTURE_FORMATS[format];
772
+ const webglFormat = isWebGL2(gl) ? formatInfo === null || formatInfo === void 0 ? void 0 : formatInfo.gl : formatInfo === null || formatInfo === void 0 ? void 0 : formatInfo.gl1;
773
+ if (typeof format === 'number') {
774
+ return webglFormat || format;
775
+ }
776
+ if (webglFormat === undefined) {
777
+ throw new Error("Unsupported texture format ".concat(format));
778
+ }
779
+ return webglFormat;
374
780
  }
375
781
  export function getWebGLTextureParameters(gl, formatOrGL) {
376
- const format = getTextureFormat(formatOrGL);
377
- const webglFormat = getWebGLTextureFormat(gl, format);
378
- const decoded = decodeTextureFormat(format);
379
- return {
380
- format: webglFormat,
381
- dataFormat: getWebGLPixelDataFormat(decoded.format, decoded.integer, decoded.normalized, webglFormat),
382
- type: getWebGLDataType(decoded.dataType),
383
- // @ts-expect-error
384
- compressed: decoded.compressed
385
- };
782
+ const format = getTextureFormat(formatOrGL);
783
+ const webglFormat = getWebGLTextureFormat(gl, format);
784
+ const decoded = decodeTextureFormat(format);
785
+ return {
786
+ format: webglFormat,
787
+ dataFormat: getWebGLPixelDataFormat(decoded.format, decoded.integer, decoded.normalized, webglFormat),
788
+ type: getWebGLDataType(decoded.dataType),
789
+ compressed: decoded.compressed
790
+ };
386
791
  }
387
792
  export function getWebGLDepthStencilAttachment(formatOrGL) {
388
- const format = getTextureFormat(formatOrGL);
389
- if (typeof format === 'number') {
390
- // TODO
391
- throw new Error('unsupported depth stencil format');
392
- }
393
- const info = TEXTURE_FORMATS[format];
394
- const attachment = info.attachment;
395
- if (!attachment) {
396
- throw new Error('not a depth stencil format');
397
- }
398
- return attachment;
793
+ const format = getTextureFormat(formatOrGL);
794
+ if (typeof format === 'number') {
795
+ throw new Error('unsupported depth stencil format');
796
+ }
797
+ const info = TEXTURE_FORMATS[format];
798
+ const attachment = info.attachment;
799
+ if (!attachment) {
800
+ throw new Error('not a depth stencil format');
801
+ }
802
+ return attachment;
399
803
  }
400
- /**
401
- * function to test if Float 32 bit format texture can be bound as color attachment
402
- * @todo Generalize to check arbitrary formats?
403
- */
404
- export function _checkFloat32ColorAttachment(gl, internalFormat = gl.RGBA, srcFormat = GL.RGBA, srcType = GL.UNSIGNED_BYTE) {
405
- let texture = null;
406
- let framebuffer = null;
407
- try {
408
- texture = gl.createTexture();
409
- gl.bindTexture(GL.TEXTURE_2D, texture);
410
- const level = 0;
411
- const width = 1;
412
- const height = 1;
413
- const border = 0;
414
- const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue
415
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, srcFormat, srcType, pixel);
416
- framebuffer = gl.createFramebuffer();
417
- gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);
418
- gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);
419
- const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;
420
- gl.bindTexture(GL.TEXTURE_2D, null);
421
- return status;
422
- }
423
- finally {
424
- gl.deleteTexture(texture);
425
- gl.deleteFramebuffer(framebuffer);
426
- }
804
+ export function _checkFloat32ColorAttachment(gl) {
805
+ let internalFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : gl.RGBA;
806
+ let srcFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : GL.RGBA;
807
+ let srcType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : GL.UNSIGNED_BYTE;
808
+ let texture = null;
809
+ let framebuffer = null;
810
+ try {
811
+ texture = gl.createTexture();
812
+ gl.bindTexture(GL.TEXTURE_2D, texture);
813
+ const level = 0;
814
+ const width = 1;
815
+ const height = 1;
816
+ const border = 0;
817
+ const pixel = new Uint8Array([0, 0, 255, 255]);
818
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, srcFormat, srcType, pixel);
819
+ framebuffer = gl.createFramebuffer();
820
+ gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);
821
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);
822
+ const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;
823
+ gl.bindTexture(GL.TEXTURE_2D, null);
824
+ return status;
825
+ } finally {
826
+ gl.deleteTexture(texture);
827
+ gl.deleteFramebuffer(framebuffer);
828
+ }
427
829
  }
428
- /** @deprecated should be removed */
429
830
  const DATA_FORMAT_CHANNELS = {
430
- [GL.RED]: 1,
431
- [GL.RED_INTEGER]: 1,
432
- [GL.RG]: 2,
433
- [GL.RG_INTEGER]: 2,
434
- [GL.RGB]: 3,
435
- [GL.RGB_INTEGER]: 3,
436
- [GL.RGBA]: 4,
437
- [GL.RGBA_INTEGER]: 4,
438
- [GL.DEPTH_COMPONENT]: 1,
439
- [GL.DEPTH_STENCIL]: 1,
440
- [GL.ALPHA]: 1,
441
- [GL.LUMINANCE]: 1,
442
- [GL.LUMINANCE_ALPHA]: 2
831
+ [GL.RED]: 1,
832
+ [GL.RED_INTEGER]: 1,
833
+ [GL.RG]: 2,
834
+ [GL.RG_INTEGER]: 2,
835
+ [GL.RGB]: 3,
836
+ [GL.RGB_INTEGER]: 3,
837
+ [GL.RGBA]: 4,
838
+ [GL.RGBA_INTEGER]: 4,
839
+ [GL.DEPTH_COMPONENT]: 1,
840
+ [GL.DEPTH_STENCIL]: 1,
841
+ [GL.ALPHA]: 1,
842
+ [GL.LUMINANCE]: 1,
843
+ [GL.LUMINANCE_ALPHA]: 2
443
844
  };
444
- /** @deprecated should be removed */
445
845
  const TYPE_SIZES = {
446
- [GL.FLOAT]: 4,
447
- [GL.UNSIGNED_INT]: 4,
448
- [GL.INT]: 4,
449
- [GL.UNSIGNED_SHORT]: 2,
450
- [GL.SHORT]: 2,
451
- [GL.HALF_FLOAT]: 2,
452
- [GL.BYTE]: 1,
453
- [GL.UNSIGNED_BYTE]: 1
846
+ [GL.FLOAT]: 4,
847
+ [GL.UNSIGNED_INT]: 4,
848
+ [GL.INT]: 4,
849
+ [GL.UNSIGNED_SHORT]: 2,
850
+ [GL.SHORT]: 2,
851
+ [GL.HALF_FLOAT]: 2,
852
+ [GL.BYTE]: 1,
853
+ [GL.UNSIGNED_BYTE]: 1
454
854
  };
455
- /** TODO - VERY roundabout legacy way of calculating bytes per pixel */
456
855
  export function getTextureFormatBytesPerPixel(gl, formatOrGL) {
457
- const format = getTextureFormat(formatOrGL);
458
- const params = getWebGLTextureParameters(gl, format);
459
- // NOTE(Tarek): Default to RGBA bytes
460
- const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;
461
- const channelSize = TYPE_SIZES[params.type] || 1;
462
- return channels * channelSize;
856
+ const format = getTextureFormat(formatOrGL);
857
+ const params = getWebGLTextureParameters(gl, format);
858
+ const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;
859
+ const channelSize = TYPE_SIZES[params.type] || 1;
860
+ return channels * channelSize;
463
861
  }
464
- // DATA TYPE HELPERS
465
862
  function getWebGLPixelDataFormat(dataFormat, integer, normalized, format) {
466
- // WebGL1 formats use same internalFormat
467
- if (format === GL.RGBA || format === GL.RGB) {
468
- return format;
469
- }
470
- // prettier-ignore
471
- switch (dataFormat) {
472
- case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;
473
- case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;
474
- case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;
475
- case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;
476
- default: return GL.RGBA;
477
- }
863
+ if (format === GL.RGBA || format === GL.RGB) {
864
+ return format;
865
+ }
866
+ switch (dataFormat) {
867
+ case 'r':
868
+ return integer && !normalized ? GL.RED_INTEGER : GL.RED;
869
+ case 'rg':
870
+ return integer && !normalized ? GL.RG_INTEGER : GL.RG;
871
+ case 'rgb':
872
+ return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;
873
+ case 'rgba':
874
+ return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;
875
+ default:
876
+ return GL.RGBA;
877
+ }
478
878
  }
479
879
  export function getWebGLDataType(dataType) {
480
- // prettier-ignore
481
- switch (dataType) {
482
- case 'uint8': return GL.UNSIGNED_BYTE;
483
- case 'sint8': return GL.BYTE;
484
- case 'uint16': return GL.UNSIGNED_SHORT;
485
- case 'sint16': return GL.SHORT;
486
- case 'uint32': return GL.UNSIGNED_INT;
487
- case 'sint32': return GL.INT;
488
- case 'float16': return GL.HALF_FLOAT;
489
- case 'float32': return GL.FLOAT;
490
- default: return GL.UNSIGNED_BYTE;
491
- }
880
+ switch (dataType) {
881
+ case 'uint8':
882
+ return GL.UNSIGNED_BYTE;
883
+ case 'sint8':
884
+ return GL.BYTE;
885
+ case 'uint16':
886
+ return GL.UNSIGNED_SHORT;
887
+ case 'sint16':
888
+ return GL.SHORT;
889
+ case 'uint32':
890
+ return GL.UNSIGNED_INT;
891
+ case 'sint32':
892
+ return GL.INT;
893
+ case 'float16':
894
+ return GL.HALF_FLOAT;
895
+ case 'float32':
896
+ return GL.FLOAT;
897
+ default:
898
+ return GL.UNSIGNED_BYTE;
899
+ }
492
900
  }
901
+ //# sourceMappingURL=texture-formats.js.map