@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.4

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 (749) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +17 -0
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
  4. package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  5. package/dist/adapter/converters/device-parameters.js.map +1 -0
  6. package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
  7. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
  8. package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  9. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  10. package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
  11. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/sampler-parameters.js +208 -0
  13. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +93 -0
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/texture-formats.js +954 -0
  17. package/dist/adapter/converters/texture-formats.js.map +1 -0
  18. package/dist/adapter/converters/vertex-formats.d.ts +4 -0
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
  20. package/dist/adapter/converters/vertex-formats.js +35 -0
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-features.d.ts +3 -6
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +27 -48
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +1 -0
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.js +7 -7
  31. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
  34. package/dist/adapter/helpers/attribute-utils.js +81 -0
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  36. package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
  37. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-layout.js +306 -0
  39. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  40. package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
  41. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
  42. package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  43. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  44. package/dist/adapter/helpers/set-uniform.d.ts +4 -0
  45. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
  46. package/dist/adapter/helpers/set-uniform.js +115 -0
  47. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  48. package/dist/adapter/helpers/uniforms.d.ts +26 -0
  49. package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
  50. package/dist/adapter/helpers/uniforms.js +99 -0
  51. package/dist/adapter/helpers/uniforms.js.map +1 -0
  52. package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
  53. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
  54. package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  55. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  56. package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
  57. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
  58. package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
  59. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  60. package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
  61. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
  62. package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
  63. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  64. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
  65. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
  66. package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
  67. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  68. package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
  69. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
  70. package/dist/adapter/resources/webgl-buffer.js +164 -0
  71. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  72. package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
  74. package/dist/adapter/resources/webgl-command-buffer.js +65 -0
  75. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  76. package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
  78. package/dist/adapter/resources/webgl-command-encoder.js +53 -0
  79. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  80. package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
  81. package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-external-texture.js +2 -0
  83. package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +265 -0
  87. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  88. package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
  89. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
  90. package/dist/adapter/resources/webgl-render-pass.js +19 -0
  91. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  92. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
  94. package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
  95. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  96. package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
  97. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
  98. package/dist/adapter/resources/webgl-sampler.js +50 -0
  99. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  100. package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
  101. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
  102. package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +13 -20
  103. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  104. package/dist/adapter/resources/webgl-texture.d.ts +193 -0
  105. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
  106. package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  107. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  108. package/dist/adapter/webgl-canvas-context.d.ts +36 -0
  109. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
  110. package/dist/adapter/webgl-canvas-context.js +54 -0
  111. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  112. package/dist/adapter/webgl-device.d.ts +58 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +184 -111
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
  123. package/dist/classic/buffer.js.map +1 -0
  124. package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
  125. package/dist/classic/typed-array-utils.d.ts.map +1 -0
  126. package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
  127. package/dist/classic/typed-array-utils.js.map +1 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -1
  129. package/dist/context/context/context-state.js +1 -1
  130. package/dist/context/context/context-state.js.map +1 -1
  131. package/dist/context/context/create-context.d.ts +1 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -1
  133. package/dist/context/context/create-context.js +12 -0
  134. package/dist/context/context/create-context.js.map +1 -1
  135. package/dist/context/context/device-pixels.d.ts +1 -1
  136. package/dist/context/context/device-pixels.d.ts.map +1 -1
  137. package/dist/context/context/device-pixels.js.map +1 -1
  138. package/dist/context/debug/spector.d.ts +18 -0
  139. package/dist/context/debug/spector.d.ts.map +1 -0
  140. package/dist/context/debug/spector.js +76 -0
  141. package/dist/context/debug/spector.js.map +1 -0
  142. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  143. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  144. package/dist/context/debug/webgl-developer-tools.js +121 -0
  145. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
  147. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  148. package/dist/context/parameters/unified-parameter-api.js +4 -4
  149. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  150. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  151. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  152. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  154. package/dist/context/polyfill/polyfill-context.js +4 -3
  155. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +25 -11
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
  162. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  163. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  164. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  165. package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
  166. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  167. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  168. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  169. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  170. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  171. package/dist/es5/adapter/device-helpers/device-features.js +46 -54
  172. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  173. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  174. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  175. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  176. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  177. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  178. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  179. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
  180. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  181. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  182. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  183. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  184. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  185. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  186. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  187. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  188. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  189. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  190. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  191. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  192. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  193. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  194. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  195. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  196. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  197. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  198. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  199. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  200. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  201. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  202. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  203. package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
  204. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  205. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
  206. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  207. package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
  208. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  209. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  210. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  211. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
  212. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  213. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
  214. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  215. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  216. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  217. package/dist/es5/adapter/webgl-device.js +253 -133
  218. package/dist/es5/adapter/webgl-device.js.map +1 -1
  219. package/dist/es5/{classes → classic}/accessor.js +25 -1
  220. package/dist/es5/classic/accessor.js.map +1 -0
  221. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
  222. package/dist/es5/classic/buffer.js.map +1 -0
  223. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  224. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  225. package/dist/es5/context/context/context-state.js +1 -1
  226. package/dist/es5/context/context/context-state.js.map +1 -1
  227. package/dist/es5/context/context/create-context.js +12 -0
  228. package/dist/es5/context/context/create-context.js.map +1 -1
  229. package/dist/es5/context/context/device-pixels.js.map +1 -1
  230. package/dist/es5/context/debug/spector.js +133 -0
  231. package/dist/es5/context/debug/spector.js.map +1 -0
  232. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  233. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  234. package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
  235. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  236. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  237. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  238. package/dist/es5/context/polyfill/polyfill-context.js +4 -3
  239. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  240. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  241. package/dist/es5/context/state-tracker/track-context-state.js +26 -11
  242. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  243. package/dist/es5/index.js +65 -307
  244. package/dist/es5/index.js.map +1 -1
  245. package/dist/es5/init.js +1 -41
  246. package/dist/es5/init.js.map +1 -1
  247. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  248. package/dist/es5/types/webgl.js.map +1 -0
  249. package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  252. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  253. package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
  254. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  255. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  256. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  257. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  258. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  259. package/dist/esm/adapter/device-helpers/device-features.js +27 -48
  260. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  261. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  262. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  263. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  264. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  265. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  266. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  267. package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
  268. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  269. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  270. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  271. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  272. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  273. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  274. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  275. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  276. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  277. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  278. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  279. package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
  280. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  281. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  282. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  283. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  284. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  285. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  286. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  287. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  288. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  289. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  290. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  291. package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
  292. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  293. package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
  294. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  295. package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
  296. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  297. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  298. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  299. package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  302. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  303. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  304. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  305. package/dist/esm/adapter/webgl-device.js +184 -111
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
  310. package/dist/esm/classic/buffer.js.map +1 -0
  311. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  312. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  313. package/dist/esm/context/context/context-state.js +1 -1
  314. package/dist/esm/context/context/context-state.js.map +1 -1
  315. package/dist/esm/context/context/create-context.js +12 -0
  316. package/dist/esm/context/context/create-context.js.map +1 -1
  317. package/dist/esm/context/context/device-pixels.js.map +1 -1
  318. package/dist/esm/context/debug/spector.js +76 -0
  319. package/dist/esm/context/debug/spector.js.map +1 -0
  320. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  321. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  322. package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
  323. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  324. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  325. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  326. package/dist/esm/context/polyfill/polyfill-context.js +4 -3
  327. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  328. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  329. package/dist/esm/context/state-tracker/track-context-state.js +25 -11
  330. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  331. package/dist/esm/index.js +19 -31
  332. package/dist/esm/index.js.map +1 -1
  333. package/dist/esm/init.js +2 -31
  334. package/dist/esm/init.js.map +1 -1
  335. package/dist/esm/types/webgl.js +2 -0
  336. package/dist/esm/types/webgl.js.map +1 -0
  337. package/dist/index.d.ts +22 -46
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -31
  340. package/dist/index.js.map +1 -1
  341. package/dist/init.d.ts +1 -4
  342. package/dist/init.d.ts.map +1 -1
  343. package/dist/init.js +2 -31
  344. package/dist/init.js.map +1 -1
  345. package/dist/types/webgl.d.ts +144 -0
  346. package/dist/types/webgl.d.ts.map +1 -0
  347. package/dist/types/webgl.js +2 -0
  348. package/dist/types/webgl.js.map +1 -0
  349. package/package.json +5 -5
  350. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
  351. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  352. package/src/adapter/converters/sampler-parameters.ts +175 -0
  353. package/src/adapter/converters/texture-formats.ts +633 -0
  354. package/src/adapter/converters/vertex-formats.ts +22 -0
  355. package/src/adapter/device-helpers/device-features.ts +46 -123
  356. package/src/adapter/device-helpers/device-limits.ts +5 -2
  357. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  358. package/src/adapter/helpers/attribute-utils.ts +61 -0
  359. package/src/adapter/helpers/get-shader-layout.ts +388 -0
  360. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  361. package/src/adapter/helpers/set-uniform.ts +87 -0
  362. package/src/adapter/helpers/uniforms.ts +110 -0
  363. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  364. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  365. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  366. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  367. package/src/adapter/resources/webgl-buffer.ts +219 -0
  368. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  369. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  370. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  371. package/src/adapter/resources/webgl-framebuffer.ts +279 -0
  372. package/src/adapter/resources/webgl-render-pass.ts +23 -0
  373. package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
  374. package/src/adapter/resources/webgl-sampler.ts +54 -0
  375. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
  376. package/src/adapter/resources/webgl-texture.ts +1023 -0
  377. package/src/adapter/webgl-canvas-context.ts +74 -0
  378. package/src/adapter/webgl-device.ts +226 -275
  379. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
  380. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
  381. package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
  382. package/src/context/context/context-state.ts +4 -2
  383. package/src/context/context/create-context.ts +28 -1
  384. package/src/context/context/device-pixels.ts +9 -4
  385. package/src/context/debug/spector.ts +92 -0
  386. package/src/context/debug/webgl-developer-tools.ts +162 -0
  387. package/src/context/parameters/unified-parameter-api.ts +6 -4
  388. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  389. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  390. package/src/context/polyfill/polyfill-context.ts +4 -3
  391. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  392. package/src/context/state-tracker/track-context-state.ts +27 -20
  393. package/src/index.ts +33 -102
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/_deprecated/context-api.d.ts +0 -85
  397. package/dist/_deprecated/context-api.d.ts.map +0 -1
  398. package/dist/_deprecated/context-api.js +0 -76
  399. package/dist/_deprecated/context-api.js.map +0 -1
  400. package/dist/_deprecated/features.d.ts +0 -27
  401. package/dist/_deprecated/features.d.ts.map +0 -1
  402. package/dist/_deprecated/features.js +0 -111
  403. package/dist/_deprecated/features.js.map +0 -1
  404. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  405. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  406. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  407. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  408. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  409. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  410. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  411. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  412. package/dist/adapter/webgl-shader.js.map +0 -1
  413. package/dist/classes/accessor.d.ts +0 -28
  414. package/dist/classes/accessor.d.ts.map +0 -1
  415. package/dist/classes/accessor.js.map +0 -1
  416. package/dist/classes/accessor.ts.disabled +0 -159
  417. package/dist/classes/clear.d.ts +0 -17
  418. package/dist/classes/clear.d.ts.map +0 -1
  419. package/dist/classes/clear.js +0 -105
  420. package/dist/classes/clear.js.map +0 -1
  421. package/dist/classes/copy-and-blit.d.ts +0 -86
  422. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  423. package/dist/classes/copy-and-blit.js +0 -338
  424. package/dist/classes/copy-and-blit.js.map +0 -1
  425. package/dist/classes/framebuffer.d.ts +0 -139
  426. package/dist/classes/framebuffer.d.ts.map +0 -1
  427. package/dist/classes/framebuffer.js +0 -656
  428. package/dist/classes/framebuffer.js.map +0 -1
  429. package/dist/classes/program-configuration.d.ts +0 -24
  430. package/dist/classes/program-configuration.d.ts.map +0 -1
  431. package/dist/classes/program-configuration.js +0 -73
  432. package/dist/classes/program-configuration.js.map +0 -1
  433. package/dist/classes/program.d.ts +0 -66
  434. package/dist/classes/program.d.ts.map +0 -1
  435. package/dist/classes/program.js +0 -379
  436. package/dist/classes/program.js.map +0 -1
  437. package/dist/classes/query.d.ts +0 -27
  438. package/dist/classes/query.d.ts.map +0 -1
  439. package/dist/classes/query.js +0 -145
  440. package/dist/classes/query.js.map +0 -1
  441. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  442. package/dist/classes/renderbuffer-formats.js.map +0 -1
  443. package/dist/classes/renderbuffer.d.ts +0 -60
  444. package/dist/classes/renderbuffer.d.ts.map +0 -1
  445. package/dist/classes/renderbuffer.js.map +0 -1
  446. package/dist/classes/shader.d.ts +0 -42
  447. package/dist/classes/shader.d.ts.map +0 -1
  448. package/dist/classes/shader.js +0 -118
  449. package/dist/classes/shader.js.map +0 -1
  450. package/dist/classes/texture-2d.d.ts +0 -9
  451. package/dist/classes/texture-2d.d.ts.map +0 -1
  452. package/dist/classes/texture-2d.js +0 -36
  453. package/dist/classes/texture-2d.js.map +0 -1
  454. package/dist/classes/texture-3d.d.ts +0 -29
  455. package/dist/classes/texture-3d.d.ts.map +0 -1
  456. package/dist/classes/texture-3d.js +0 -76
  457. package/dist/classes/texture-3d.js.map +0 -1
  458. package/dist/classes/texture-cube.d.ts +0 -28
  459. package/dist/classes/texture-cube.d.ts.map +0 -1
  460. package/dist/classes/texture-cube.js +0 -130
  461. package/dist/classes/texture-cube.js.map +0 -1
  462. package/dist/classes/texture-formats.d.ts +0 -37
  463. package/dist/classes/texture-formats.d.ts.map +0 -1
  464. package/dist/classes/texture-formats.js +0 -98
  465. package/dist/classes/texture-formats.js.map +0 -1
  466. package/dist/classes/texture.d.ts +0 -123
  467. package/dist/classes/texture.d.ts.map +0 -1
  468. package/dist/classes/texture.js.map +0 -1
  469. package/dist/classes/transform-feedback.d.ts +0 -33
  470. package/dist/classes/transform-feedback.d.ts.map +0 -1
  471. package/dist/classes/transform-feedback.js +0 -198
  472. package/dist/classes/transform-feedback.js.map +0 -1
  473. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  474. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  475. package/dist/classes/uniform-buffer-layout.js +0 -104
  476. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  477. package/dist/classes/uniforms.d.ts +0 -37
  478. package/dist/classes/uniforms.d.ts.map +0 -1
  479. package/dist/classes/uniforms.js +0 -250
  480. package/dist/classes/uniforms.js.map +0 -1
  481. package/dist/classes/vertex-array-object.d.ts +0 -76
  482. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  483. package/dist/classes/vertex-array-object.js +0 -261
  484. package/dist/classes/vertex-array-object.js.map +0 -1
  485. package/dist/classes/vertex-array.d.ts +0 -75
  486. package/dist/classes/vertex-array.d.ts.map +0 -1
  487. package/dist/classes/vertex-array.js +0 -408
  488. package/dist/classes/vertex-array.js.map +0 -1
  489. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  490. package/dist/classes/webgl-buffer.js.map +0 -1
  491. package/dist/classes/webgl-resource.d.ts.map +0 -1
  492. package/dist/classes/webgl-resource.js.map +0 -1
  493. package/dist/context/context/get-canvas.d.ts +0 -13
  494. package/dist/context/context/get-canvas.d.ts.map +0 -1
  495. package/dist/context/context/get-canvas.js +0 -31
  496. package/dist/context/context/get-canvas.js.map +0 -1
  497. package/dist/context/context/resize-context.d.ts +0 -20
  498. package/dist/context/context/resize-context.d.ts.map +0 -1
  499. package/dist/context/context/resize-context.js +0 -15
  500. package/dist/context/context/resize-context.js.map +0 -1
  501. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  502. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  503. package/dist/context/parameters/webgl-parameters.js +0 -2
  504. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  505. package/dist/debug/debug-program-configuration.d.ts +0 -2
  506. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  507. package/dist/debug/debug-program-configuration.js +0 -40
  508. package/dist/debug/debug-program-configuration.js.map +0 -1
  509. package/dist/debug/debug-uniforms.d.ts +0 -12
  510. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  511. package/dist/debug/debug-uniforms.js +0 -108
  512. package/dist/debug/debug-uniforms.js.map +0 -1
  513. package/dist/debug/debug-vertex-array.d.ts +0 -5
  514. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  515. package/dist/debug/debug-vertex-array.js +0 -118
  516. package/dist/debug/debug-vertex-array.js.map +0 -1
  517. package/dist/es5/_deprecated/context-api.js +0 -116
  518. package/dist/es5/_deprecated/context-api.js.map +0 -1
  519. package/dist/es5/_deprecated/features.js +0 -118
  520. package/dist/es5/_deprecated/features.js.map +0 -1
  521. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  522. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  523. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  524. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  525. package/dist/es5/classes/accessor.d.ts +0 -28
  526. package/dist/es5/classes/accessor.js.map +0 -1
  527. package/dist/es5/classes/accessor.ts.disabled +0 -159
  528. package/dist/es5/classes/clear.js +0 -135
  529. package/dist/es5/classes/clear.js.map +0 -1
  530. package/dist/es5/classes/copy-and-blit.js +0 -382
  531. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  532. package/dist/es5/classes/framebuffer.js +0 -807
  533. package/dist/es5/classes/framebuffer.js.map +0 -1
  534. package/dist/es5/classes/program-configuration.js +0 -119
  535. package/dist/es5/classes/program-configuration.js.map +0 -1
  536. package/dist/es5/classes/program.js +0 -471
  537. package/dist/es5/classes/program.js.map +0 -1
  538. package/dist/es5/classes/query.js +0 -222
  539. package/dist/es5/classes/query.js.map +0 -1
  540. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  541. package/dist/es5/classes/renderbuffer.js.map +0 -1
  542. package/dist/es5/classes/shader.js +0 -195
  543. package/dist/es5/classes/shader.js.map +0 -1
  544. package/dist/es5/classes/texture-2d.js.map +0 -1
  545. package/dist/es5/classes/texture-3d.js +0 -142
  546. package/dist/es5/classes/texture-3d.js.map +0 -1
  547. package/dist/es5/classes/texture-cube.js +0 -202
  548. package/dist/es5/classes/texture-cube.js.map +0 -1
  549. package/dist/es5/classes/texture-formats.js +0 -87
  550. package/dist/es5/classes/texture-formats.js.map +0 -1
  551. package/dist/es5/classes/texture.js.map +0 -1
  552. package/dist/es5/classes/transform-feedback.js +0 -267
  553. package/dist/es5/classes/transform-feedback.js.map +0 -1
  554. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  555. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  556. package/dist/es5/classes/uniforms.js +0 -232
  557. package/dist/es5/classes/uniforms.js.map +0 -1
  558. package/dist/es5/classes/vertex-array-object.js +0 -337
  559. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  560. package/dist/es5/classes/vertex-array.js +0 -465
  561. package/dist/es5/classes/vertex-array.js.map +0 -1
  562. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  563. package/dist/es5/classes/webgl-resource.js.map +0 -1
  564. package/dist/es5/context/context/get-canvas.js +0 -40
  565. package/dist/es5/context/context/get-canvas.js.map +0 -1
  566. package/dist/es5/context/context/resize-context.js +0 -23
  567. package/dist/es5/context/context/resize-context.js.map +0 -1
  568. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  569. package/dist/es5/debug/debug-program-configuration.js +0 -76
  570. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  571. package/dist/es5/debug/debug-uniforms.js +0 -156
  572. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  573. package/dist/es5/debug/debug-vertex-array.js +0 -126
  574. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  575. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  576. package/dist/es5/helpers/program-bindings.js +0 -2
  577. package/dist/es5/types/accessor.d.ts +0 -29
  578. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  579. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  581. package/dist/es5/webgl-utils/format-utils.js +0 -58
  582. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  583. package/dist/es5/webgl-utils/get-error.js +0 -49
  584. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  585. package/dist/es5/webgl-utils/index.js +0 -74
  586. package/dist/es5/webgl-utils/index.js.map +0 -1
  587. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  588. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  589. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  590. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  591. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  592. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  593. package/dist/esm/_deprecated/context-api.js +0 -76
  594. package/dist/esm/_deprecated/context-api.js.map +0 -1
  595. package/dist/esm/_deprecated/features.js +0 -111
  596. package/dist/esm/_deprecated/features.js.map +0 -1
  597. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  598. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  599. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  600. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  601. package/dist/esm/classes/accessor.d.ts +0 -28
  602. package/dist/esm/classes/accessor.js.map +0 -1
  603. package/dist/esm/classes/clear.js +0 -105
  604. package/dist/esm/classes/clear.js.map +0 -1
  605. package/dist/esm/classes/copy-and-blit.js +0 -338
  606. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  607. package/dist/esm/classes/framebuffer.js +0 -656
  608. package/dist/esm/classes/framebuffer.js.map +0 -1
  609. package/dist/esm/classes/program-configuration.js +0 -73
  610. package/dist/esm/classes/program-configuration.js.map +0 -1
  611. package/dist/esm/classes/program.js +0 -379
  612. package/dist/esm/classes/program.js.map +0 -1
  613. package/dist/esm/classes/query.js +0 -145
  614. package/dist/esm/classes/query.js.map +0 -1
  615. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  616. package/dist/esm/classes/renderbuffer.js.map +0 -1
  617. package/dist/esm/classes/shader.js +0 -118
  618. package/dist/esm/classes/shader.js.map +0 -1
  619. package/dist/esm/classes/texture-2d.js +0 -36
  620. package/dist/esm/classes/texture-2d.js.map +0 -1
  621. package/dist/esm/classes/texture-3d.js +0 -76
  622. package/dist/esm/classes/texture-3d.js.map +0 -1
  623. package/dist/esm/classes/texture-cube.js +0 -130
  624. package/dist/esm/classes/texture-cube.js.map +0 -1
  625. package/dist/esm/classes/texture-formats.js +0 -98
  626. package/dist/esm/classes/texture-formats.js.map +0 -1
  627. package/dist/esm/classes/texture.js.map +0 -1
  628. package/dist/esm/classes/transform-feedback.js +0 -198
  629. package/dist/esm/classes/transform-feedback.js.map +0 -1
  630. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  631. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  632. package/dist/esm/classes/uniforms.js +0 -250
  633. package/dist/esm/classes/uniforms.js.map +0 -1
  634. package/dist/esm/classes/vertex-array-object.js +0 -261
  635. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  636. package/dist/esm/classes/vertex-array.js +0 -408
  637. package/dist/esm/classes/vertex-array.js.map +0 -1
  638. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  639. package/dist/esm/classes/webgl-resource.js.map +0 -1
  640. package/dist/esm/context/context/get-canvas.js +0 -31
  641. package/dist/esm/context/context/get-canvas.js.map +0 -1
  642. package/dist/esm/context/context/resize-context.js +0 -15
  643. package/dist/esm/context/context/resize-context.js.map +0 -1
  644. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  645. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  646. package/dist/esm/debug/debug-program-configuration.js +0 -40
  647. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  648. package/dist/esm/debug/debug-uniforms.js +0 -108
  649. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  650. package/dist/esm/debug/debug-vertex-array.js +0 -118
  651. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  652. package/dist/esm/helpers/get-program-bindings.js +0 -228
  653. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  654. package/dist/esm/helpers/program-bindings.js +0 -2
  655. package/dist/esm/types/accessor.d.ts +0 -29
  656. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  657. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  658. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  659. package/dist/esm/webgl-utils/format-utils.js +0 -45
  660. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  661. package/dist/esm/webgl-utils/get-error.js +0 -41
  662. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  663. package/dist/esm/webgl-utils/index.js +0 -5
  664. package/dist/esm/webgl-utils/index.js.map +0 -1
  665. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  666. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  667. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  668. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  669. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  670. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  671. package/dist/helpers/get-program-bindings.d.ts +0 -8
  672. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  673. package/dist/helpers/get-program-bindings.js +0 -228
  674. package/dist/helpers/get-program-bindings.js.map +0 -1
  675. package/dist/helpers/program-bindings.d.ts +0 -41
  676. package/dist/helpers/program-bindings.d.ts.map +0 -1
  677. package/dist/helpers/program-bindings.js +0 -2
  678. package/dist/types/accessor.d.ts +0 -29
  679. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  680. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  681. package/dist/webgl-utils/attribute-utils.js +0 -182
  682. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  683. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  684. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  685. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  686. package/dist/webgl-utils/format-utils.d.ts +0 -3
  687. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  688. package/dist/webgl-utils/format-utils.js +0 -45
  689. package/dist/webgl-utils/format-utils.js.map +0 -1
  690. package/dist/webgl-utils/get-error.d.ts +0 -3
  691. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  692. package/dist/webgl-utils/get-error.js +0 -41
  693. package/dist/webgl-utils/get-error.js.map +0 -1
  694. package/dist/webgl-utils/index.d.ts +0 -5
  695. package/dist/webgl-utils/index.d.ts.map +0 -1
  696. package/dist/webgl-utils/index.js +0 -5
  697. package/dist/webgl-utils/index.js.map +0 -1
  698. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  699. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  701. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  702. package/dist/webgl-utils/request-animation-frame.js +0 -7
  703. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  704. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  705. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  706. package/dist/webgl-utils/texture-utils.js +0 -48
  707. package/dist/webgl-utils/texture-utils.js.map +0 -1
  708. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  709. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  710. package/src/.DS_Store +0 -0
  711. package/src/_deprecated/context-api.ts +0 -146
  712. package/src/_deprecated/features.ts +0 -159
  713. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  714. package/src/classes/accessor.d.ts +0 -28
  715. package/src/classes/accessor.js +0 -129
  716. package/src/classes/accessor.ts.disabled +0 -159
  717. package/src/classes/clear.ts +0 -108
  718. package/src/classes/copy-and-blit.ts +0 -460
  719. package/src/classes/framebuffer.ts +0 -763
  720. package/src/classes/program-configuration.ts +0 -77
  721. package/src/classes/program.ts +0 -431
  722. package/src/classes/query.ts +0 -171
  723. package/src/classes/renderbuffer.ts +0 -154
  724. package/src/classes/shader.ts +0 -129
  725. package/src/classes/texture-2d.ts +0 -35
  726. package/src/classes/texture-3d.ts +0 -123
  727. package/src/classes/texture-cube.ts +0 -162
  728. package/src/classes/texture-formats.ts +0 -171
  729. package/src/classes/texture.ts +0 -965
  730. package/src/classes/transform-feedback.ts +0 -191
  731. package/src/classes/uniform-buffer-layout.ts +0 -113
  732. package/src/classes/uniforms.ts +0 -394
  733. package/src/classes/vertex-array-object.ts +0 -339
  734. package/src/classes/vertex-array.ts +0 -484
  735. package/src/context/context/get-canvas.ts +0 -37
  736. package/src/context/context/resize-context.ts +0 -37
  737. package/src/context/parameters/webgl-parameters.ts +0 -197
  738. package/src/debug/debug-program-configuration.ts +0 -32
  739. package/src/debug/debug-uniforms.ts +0 -100
  740. package/src/debug/debug-vertex-array.ts +0 -123
  741. package/src/helpers/get-program-bindings.ts +0 -244
  742. package/src/helpers/program-bindings.ts +0 -46
  743. package/src/types/accessor.d.ts +0 -29
  744. package/src/webgl-utils/attribute-utils.ts +0 -171
  745. package/src/webgl-utils/format-utils.ts +0 -43
  746. package/src/webgl-utils/get-error.ts +0 -56
  747. package/src/webgl-utils/index.ts +0 -12
  748. package/src/webgl-utils/request-animation-frame.ts +0 -14
  749. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -1,77 +0,0 @@
1
- // Contains metadata describing attribute configurations for a program's shaders
2
- // Much of this is automatically extracted from shaders after program linking
3
- // import Accessor from './accessor';
4
- import type Program from './program';
5
- import type {AttributeBinding, VaryingBinding} from '../helpers/program-bindings';
6
- import {getProgramBindings} from '../helpers/get-program-bindings';
7
-
8
- /**
9
- * is a mechanism for taking a program object and querying information
10
- * about it, so as to be able to interface and interact with it.
11
- * For example, if there is a uniform, you may need to query its
12
- * location so that you can set its value.
13
- */
14
- export default class ProgramConfiguration {
15
- id: string;
16
- attributeInfos: AttributeBinding[] = [];
17
- attributeInfosByName: Record<string, AttributeBinding> = {};
18
- // Locations may not be contiguous the case of matrix attributes
19
- // so keep a separate location->attribute map.
20
- attributeInfosByLocation: AttributeBinding[] = [];
21
- varyingInfos: VaryingBinding[] = [];
22
- varyingInfosByName: Record<string, VaryingBinding> = {};
23
-
24
- constructor(program: Program) {
25
- this.id = program.id;
26
- Object.seal(this);
27
-
28
- const bindings = getProgramBindings(program.gl2, program.handle);
29
-
30
- this.attributeInfos = bindings.attributes;
31
- for (const attributeInfo of bindings.attributes) {
32
- this.attributeInfosByName[attributeInfo.name] = attributeInfo;
33
- this.attributeInfosByLocation[attributeInfo.location] = attributeInfo;
34
- }
35
-
36
- for (const varyingInfo of bindings.varyings) {
37
- this.varyingInfosByName[varyingInfo.name] = varyingInfo;
38
- }
39
- }
40
-
41
- getAttributeInfo(locationOrName: number | string): AttributeBinding {
42
- const location = Number(locationOrName);
43
- if (Number.isFinite(location)) {
44
- return this.attributeInfosByLocation[location];
45
- }
46
- return this.attributeInfosByName[locationOrName] || null;
47
- }
48
-
49
- // Resolves an attribute name or index to an index
50
- getAttributeLocation(locationOrName: number | string): number {
51
- const attributeInfo = this.getAttributeInfo(locationOrName);
52
- return attributeInfo ? attributeInfo.location : -1;
53
- }
54
-
55
- getAttributeAccessor(locationOrName: number | string) {
56
- const attributeInfo = this.getAttributeInfo(locationOrName);
57
- return attributeInfo ? attributeInfo.accessor : null;
58
- }
59
-
60
- getVaryingInfo(locationOrName: number | string): VaryingBinding {
61
- const location = Number(locationOrName);
62
- if (Number.isFinite(location)) {
63
- return this.varyingInfos[location];
64
- }
65
- return this.varyingInfosByName[locationOrName] || null;
66
- }
67
-
68
- getVaryingIndex(locationOrName: number | string): number {
69
- const varying = this.getVaryingInfo(locationOrName);
70
- return varying ? varying.location : -1;
71
- }
72
-
73
- getVaryingAccessor(locationOrName: number | string) {
74
- const varying = this.getVaryingInfo(locationOrName);
75
- return varying ? varying.accessor : null;
76
- }
77
- }
@@ -1,431 +0,0 @@
1
- import {log, assert, uid, cast, Shader} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
3
- import WebGLDevice from '../adapter/webgl-device';
4
- import WebGLResource, {ResourceProps} from './webgl-resource';
5
- import Texture from './texture';
6
- import Framebuffer from './framebuffer';
7
- import {parseUniformName, getUniformSetter} from './uniforms';
8
- import {WEBGLShader} from '../adapter/webgl-shader';
9
- import ProgramConfiguration from './program-configuration';
10
- import {copyUniform, checkUniformValues} from './uniforms';
11
-
12
- import {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';
13
- import {withParameters} from '../context/state-tracker/with-parameters';
14
- import {getKey} from '../webgl-utils/constants-to-keys';
15
- import {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';
16
-
17
- const LOG_PROGRAM_PERF_PRIORITY = 4;
18
-
19
- const GL_SEPARATE_ATTRIBS = 0x8c8d;
20
-
21
- export type ProgramProps = ResourceProps & {
22
- hash?: string;
23
- vs?: string | Shader;
24
- fs?: string | Shader;
25
- varyings?: string[];
26
- bufferMode?: number;
27
- };
28
-
29
- export type ProgramDrawOptions = {
30
- logPriority?: number;
31
- drawMode?: number;
32
- vertexCount: any;
33
- offset?: number;
34
- start?: number;
35
- end?: number;
36
- isIndexed?: boolean;
37
- indexType?: any;
38
- instanceCount?: number;
39
- isInstanced?: boolean;
40
- vertexArray?: any;
41
- transformFeedback?: any; // TransformFeedback;
42
- framebuffer?: Framebuffer;
43
- parameters?: {};
44
- uniforms?: Record<string, any>;
45
- samplers?: any;
46
- };
47
-
48
- export default class Program extends WebGLResource<ProgramProps> {
49
- configuration: ProgramConfiguration;
50
- // Experimental flag to avoid deleting Program object while it is cached
51
- hash: string; // Used by ProgramManager
52
- vs: WEBGLShader;
53
- fs: WEBGLShader;
54
- uniforms: Record<string, any>;
55
- varyings: Record<string, any>;
56
- _textureUniforms: Record<string, any>;
57
- _isCached: boolean = false;
58
- _textureIndexCounter: number = 0;
59
- _uniformCount: number = 0;
60
- _uniformSetters: Record<string, Function>;
61
-
62
- constructor(device: WebGLDevice | WebGLRenderingContext, props: ProgramProps = {}) {
63
- super(WebGLDevice.attach(device), props, {} as any);
64
- this.initialize(props);
65
- Object.seal(this);
66
- this._setId(props.id);
67
- }
68
-
69
- destroy(options = {}) {
70
- if (this._isCached) {
71
- // This object is cached, do not delete
72
- return this;
73
- }
74
- return super.delete(options);
75
- }
76
-
77
- delete(options = {}) {
78
- if (this._isCached) {
79
- // This object is cached, do not delete
80
- return this;
81
- }
82
- return super.delete(options);
83
- }
84
-
85
- initialize(props: ProgramProps = {}) {
86
- const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;
87
-
88
- this.hash = hash || ''; // Used by ProgramManager
89
-
90
- // Create shaders if needed
91
- this.vs =
92
- typeof vs === 'string'
93
- ? this.device.createShader({id: `${props.id}-vs`, source: vs, stage: 'vertex'})
94
- : cast<WEBGLShader>(vs);
95
- this.fs =
96
- typeof fs === 'string'
97
- ? this.device.createShader({id: `${props.id}-fs`, source: fs, stage: 'fragment'})
98
- : cast<WEBGLShader>(fs);
99
- assert(this.vs.stage === 'vertex');
100
- assert(this.fs.stage === 'fragment');
101
-
102
- // uniforms
103
- this.uniforms = {};
104
- this._textureUniforms = {};
105
-
106
- // Setup varyings if supplied
107
- if (varyings && varyings.length > 0) {
108
- assertWebGL2Context(this.gl);
109
- this.varyings = varyings;
110
- this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);
111
- }
112
-
113
- this._compileAndLink();
114
- this._readUniformLocationsFromLinkedProgram();
115
- this.configuration = new ProgramConfiguration(this);
116
-
117
- return this.setProps(props);
118
- }
119
-
120
- setProps(props) {
121
- if ('uniforms' in props) {
122
- this.setUniforms(props.uniforms);
123
- }
124
- return this;
125
- }
126
-
127
- // A good thing about the WebGL API is that there are so many ways to draw things ;)
128
- // This function unifies those ways into a single call using common parameters with sane defaults
129
- draw(options: ProgramDrawOptions): boolean {
130
- const {
131
- logPriority, // Probe log priority, enables Model to do more integrated logging
132
-
133
- drawMode = GL.TRIANGLES,
134
- vertexCount,
135
- offset = 0,
136
- start,
137
- end,
138
- isIndexed = false,
139
- indexType = GL.UNSIGNED_SHORT,
140
- instanceCount = 0,
141
- isInstanced = instanceCount > 0,
142
-
143
- vertexArray = null,
144
- transformFeedback,
145
- framebuffer,
146
-
147
- // Deprecated
148
- uniforms,
149
- samplers
150
- } = options;
151
-
152
- let {parameters = {}} = options;
153
-
154
- if (uniforms || samplers) {
155
- // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)
156
- log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();
157
- this.setUniforms(uniforms || {});
158
- }
159
-
160
- if (log.priority >= logPriority) {
161
- const fb = framebuffer ? framebuffer.id : 'default';
162
- const message =
163
- `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +
164
- `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +
165
- `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +
166
- `Framebuffer=${fb}`;
167
- log.log(logPriority, message)();
168
- }
169
-
170
- // TODO - move vertex array binding and transform feedback binding to withParameters?
171
- assert(vertexArray);
172
-
173
- this.gl.useProgram(this.handle);
174
-
175
- if (
176
- // Note: async textures set as uniforms might still be loading.
177
- // Now that all uniforms have been updated, check if any texture
178
- // in the uniforms is not yet initialized, then we don't draw
179
- !this._areTexturesRenderable() ||
180
- // Avoid WebGL draw call when not rendering any data
181
- vertexCount === 0 ||
182
- (isInstanced && instanceCount === 0)
183
- ) {
184
- return false;
185
- }
186
-
187
- vertexArray.bindForDraw(vertexCount, instanceCount, () => {
188
- if (framebuffer !== undefined) {
189
- parameters = Object.assign({}, parameters, {framebuffer});
190
- }
191
-
192
- if (transformFeedback) {
193
- const primitiveMode = getPrimitiveDrawMode(drawMode);
194
- transformFeedback.begin(primitiveMode);
195
- }
196
-
197
- this._bindTextures();
198
-
199
- withParameters(this.gl, parameters, () => {
200
- // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
201
- if (isIndexed && isInstanced) {
202
- this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);
203
- } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {
204
- this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
205
- } else if (isIndexed) {
206
- this.gl.drawElements(drawMode, vertexCount, indexType, offset);
207
- } else if (isInstanced) {
208
- this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);
209
- } else {
210
- this.gl.drawArrays(drawMode, offset, vertexCount);
211
- }
212
- });
213
-
214
- if (transformFeedback) {
215
- transformFeedback.end();
216
- }
217
- });
218
-
219
- return true;
220
- }
221
-
222
- setUniforms(uniforms = {}) {
223
- if (log.priority >= 2) {
224
- checkUniformValues(uniforms, this.id, this._uniformSetters);
225
- }
226
-
227
- this.gl.useProgram(this.handle);
228
-
229
- for (const uniformName in uniforms) {
230
- const uniform = uniforms[uniformName];
231
- const uniformSetter = this._uniformSetters[uniformName];
232
-
233
- if (uniformSetter) {
234
- let value = uniform;
235
- let textureUpdate = false;
236
-
237
- if (value instanceof Framebuffer) {
238
- value = value.texture;
239
- }
240
- if (value instanceof Texture) {
241
- textureUpdate = this.uniforms[uniformName] !== uniform;
242
-
243
- if (textureUpdate) {
244
- // eslint-disable-next-line max-depth
245
- // @ts-expect-error
246
- if (uniformSetter.textureIndex === undefined) {
247
- // @ts-expect-error
248
- uniformSetter.textureIndex = this._textureIndexCounter++;
249
- }
250
-
251
- // Bind texture to index
252
- const texture = value;
253
- // @ts-expect-error
254
- const {textureIndex} = uniformSetter;
255
-
256
- texture.bind(textureIndex);
257
- value = textureIndex;
258
-
259
- this._textureUniforms[uniformName] = texture;
260
- } else {
261
- // @ts-expect-error
262
- value = uniformSetter.textureIndex;
263
- }
264
- } else if (this._textureUniforms[uniformName]) {
265
- delete this._textureUniforms[uniformName];
266
- }
267
-
268
- // NOTE(Tarek): uniformSetter returns whether
269
- // value had to be updated or not.
270
- if (uniformSetter(value) || textureUpdate) {
271
- copyUniform(this.uniforms, uniformName, uniform);
272
- }
273
- }
274
- }
275
-
276
- return this;
277
- }
278
-
279
- // PRIVATE METHODS
280
-
281
- // Checks if all texture-values uniforms are renderable (i.e. loaded)
282
- // Update a texture if needed (e.g. from video)
283
- // Note: This is currently done before every draw call
284
- _areTexturesRenderable() {
285
- let texturesRenderable = true;
286
-
287
- for (const uniformName in this._textureUniforms) {
288
- const texture = this._textureUniforms[uniformName];
289
- texture.update();
290
- texturesRenderable = texturesRenderable && texture.loaded;
291
- }
292
-
293
- return texturesRenderable;
294
- }
295
-
296
- // Binds textures
297
- // Note: This is currently done before every draw call
298
- _bindTextures() {
299
- for (const uniformName in this._textureUniforms) {
300
- // @ts-expect-error
301
- const textureIndex = this._uniformSetters[uniformName].textureIndex;
302
- this._textureUniforms[uniformName].bind(textureIndex);
303
- }
304
- }
305
-
306
- // RESOURCE METHODS
307
-
308
- _createHandle() {
309
- return this.gl.createProgram();
310
- }
311
-
312
- _deleteHandle() {
313
- this.gl.deleteProgram(this.handle);
314
- }
315
-
316
- // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle
317
- _getOptionsFromHandle(handle) {
318
- const shaderHandles = this.gl.getAttachedShaders(handle);
319
- const opts = {};
320
- for (const shaderHandle of shaderHandles) {
321
- const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);
322
- switch (type) {
323
- case GL.VERTEX_SHADER:
324
- // @ts-expect-error
325
- opts.vs = new VertexShader({handle: shaderHandle});
326
- break;
327
- case GL.FRAGMENT_SHADER:
328
- // @ts-expect-error
329
- opts.fs = new FragmentShader({handle: shaderHandle});
330
- break;
331
- default:
332
- }
333
- }
334
- return opts;
335
- }
336
-
337
- _getParameter(pname) {
338
- return this.gl.getProgramParameter(this.handle, pname);
339
- }
340
-
341
- // If program is not named, name it after shader names
342
- // TODO - this.id will already have been initialized
343
- _setId(id) {
344
- if (!id) {
345
- const programName = this._getName();
346
- this.id = uid(programName);
347
- }
348
- }
349
-
350
- // Generate a default name for the program based on names of the shaders
351
- _getName() {
352
- // let programName = this.vs.getName() || this.fs.getName();
353
- let programName = this.vs.id || this.fs.id;
354
- programName = programName.replace(/shader/i, '');
355
- programName = programName ? `${programName}-program` : 'program';
356
- return programName;
357
- }
358
-
359
- _compileAndLink() {
360
- const {gl} = this;
361
- gl.attachShader(this.handle, this.vs.handle);
362
- gl.attachShader(this.handle, this.fs.handle);
363
- log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();
364
- gl.linkProgram(this.handle);
365
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();
366
-
367
- // Avoid checking program linking error in production
368
- // @ts-expect-error
369
- if (gl.debug || log.level > 0) {
370
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
371
- if (!linked) {
372
- throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);
373
- }
374
-
375
- gl.validateProgram(this.handle);
376
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
377
- if (!validated) {
378
- throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);
379
- }
380
- }
381
- }
382
-
383
- // query uniform locations and build name to setter map.
384
- // TODO - This overlaps with ProgramConfiguration?
385
- _readUniformLocationsFromLinkedProgram() {
386
- const {gl} = this;
387
- this._uniformSetters = {};
388
- this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);
389
- for (let i = 0; i < this._uniformCount; i++) {
390
- const info = this.gl.getActiveUniform(this.handle, i);
391
- const {name} = parseUniformName(info.name);
392
- let location = gl.getUniformLocation(this.handle, name);
393
- // @ts-expect-error
394
- this._uniformSetters[name] = getUniformSetter(gl, location, info);
395
- if (info.size > 1) {
396
- for (let l = 0; l < info.size; l++) {
397
- location = gl.getUniformLocation(this.handle, `${name}[${l}]`);
398
- // @ts-expect-error
399
- this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);
400
- }
401
- }
402
- }
403
- this._textureIndexCounter = 0;
404
- }
405
-
406
- // TO BE REMOVED in v7?
407
-
408
- // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)
409
- // https://
410
- // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms
411
- getActiveUniforms(uniformIndices, pname) {
412
- return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);
413
- }
414
-
415
- // Retrieves the index of a uniform block
416
- getUniformBlockIndex(blockName) {
417
- return this.gl2.getUniformBlockIndex(this.handle, blockName);
418
- }
419
-
420
- // Retrieves information about an active uniform block (`blockIndex`)
421
- // https://
422
- // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter
423
- getActiveUniformBlockParameter(blockIndex, pname) {
424
- return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);
425
- }
426
-
427
- // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)
428
- uniformBlockBinding(blockIndex, blockBinding) {
429
- this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
430
- }
431
- }
@@ -1,171 +0,0 @@
1
- // WebGL2 Query (also handles disjoint timer extensions)
2
- import {assert} from '@luma.gl/api';
3
- import WebGLDevice from '../adapter/webgl-device';
4
- import {isWebGL2} from '../context/context/webgl-checks';
5
- import WebGLResource, {ResourceProps} from './webgl-resource';
6
-
7
- const GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.
8
- const GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.
9
-
10
- const GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).
11
- const GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.
12
-
13
- const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers
14
- const GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)
15
- const GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version
16
-
17
- export type QueryProps = ResourceProps & {
18
- };
19
-
20
- /**
21
- * Asynchronous queries for different kinds of information
22
- */
23
- export default class Query extends WebGLResource<QueryProps> {
24
- // Returns true if Query is supported by the WebGL implementation
25
- // Can also check whether timestamp queries are available.
26
- static isSupported(gl: WebGLRenderingContext, options: string[] = []): boolean {
27
- const webgl2 = isWebGL2(gl);
28
-
29
- // Initial value
30
- const webglDevice = WebGLDevice.fromContext(gl);
31
- const hasTimerQuery = webglDevice.features.has('webgl-timer-query');
32
- let supported = webgl2 || hasTimerQuery;
33
-
34
- for (const key of options) {
35
- switch (key) {
36
- case 'queries':
37
- supported = supported && webgl2;
38
- break;
39
- case 'timers':
40
- supported = supported && hasTimerQuery;
41
- break;
42
- default:
43
- assert(false);
44
- }
45
- }
46
-
47
- return supported;
48
- }
49
-
50
- target = null;
51
- _queryPending = false;
52
- _pollingPromise = null;
53
-
54
- // Create a query class
55
- constructor(gl: WebGLRenderingContext, opts: QueryProps = {}) {
56
- super(WebGLDevice.attach(gl), opts, {} as any);
57
- Object.seal(this);
58
- }
59
-
60
- // Shortcut for timer query (dependent on extension in both WebGL1 and 2)
61
- // Measures GPU time delta between this call and a matching `end` call in the
62
- // GPU instruction stream.
63
- beginTimeElapsedQuery(): this {
64
- return this.begin(GL_TIME_ELAPSED_EXT);
65
- }
66
-
67
- // Shortcut for occlusion queries
68
- beginOcclusionQuery(options?: {conservative?: boolean}): this {
69
- return this.begin(options?.conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
70
- }
71
-
72
- // Shortcut for transformFeedbackQuery
73
- beginTransformFeedbackQuery(): this {
74
- return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
75
- }
76
-
77
- // Due to OpenGL API limitations, after calling `begin()` on one Query
78
- // instance, `end()` must be called on that same instance before
79
- // calling `begin()` on another query. While there can be multiple
80
- // outstanding queries representing disjoint `begin()`/`end()` intervals.
81
- // It is not possible to interleave or overlap `begin` and `end` calls.
82
- begin(target: number): this {
83
- // Don't start a new query if one is already active.
84
- if (this._queryPending) {
85
- return this;
86
- }
87
-
88
- this.target = target;
89
- this.gl2.beginQuery(this.target, this.handle);
90
-
91
- return this;
92
- }
93
-
94
- // ends the current query
95
- end(): this {
96
- // Can't end a new query if the last one hasn't been resolved.
97
- if (this._queryPending) {
98
- return this;
99
- }
100
-
101
- if (this.target) {
102
- this.gl2.endQuery(this.target);
103
- this.target = null;
104
- this._queryPending = true;
105
- }
106
- return this;
107
- }
108
-
109
- // Returns true if the query result is available
110
- isResultAvailable(): boolean {
111
- if (!this._queryPending) {
112
- return false;
113
- }
114
-
115
- const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);
116
- if (resultAvailable) {
117
- this._queryPending = false;
118
- }
119
- return resultAvailable;
120
- }
121
-
122
- // Timing query is disjoint, i.e. results are invalid
123
- isTimerDisjoint(): boolean {
124
- return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);
125
- }
126
-
127
- // Returns query result.
128
- getResult(): any {
129
- return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);
130
- }
131
-
132
- // Returns the query result, converted to milliseconds to match JavaScript conventions.
133
- getTimerMilliseconds() {
134
- return this.getResult() / 1e6;
135
- }
136
-
137
- // Polls the query
138
- createPoll(limit: number = Number.POSITIVE_INFINITY): Promise<any> {
139
- if (this._pollingPromise) {
140
- return this._pollingPromise;
141
- }
142
-
143
- let counter = 0;
144
-
145
- this._pollingPromise = new Promise((resolve, reject) => {
146
- const poll = () => {
147
- if (this.isResultAvailable()) {
148
- resolve(this.getResult());
149
- this._pollingPromise = null;
150
- } else if (counter++ > limit) {
151
- reject('Timed out');
152
- this._pollingPromise = null;
153
- } else {
154
- requestAnimationFrame(poll);
155
- }
156
- };
157
-
158
- requestAnimationFrame(poll);
159
- });
160
-
161
- return this._pollingPromise;
162
- }
163
-
164
- _createHandle() {
165
- return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;
166
- }
167
-
168
- _deleteHandle() {
169
- this.gl2.deleteQuery(this.handle);
170
- }
171
- }