@luma.gl/core 9.0.0-alpha.9 → 9.0.0-beta.2

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 (306) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +4 -4
  3. package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts +52 -0
  4. package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts.map +1 -0
  5. package/dist/adapter/attribute-utils/get-attribute-from-layouts.js +130 -0
  6. package/dist/adapter/attribute-utils/get-attribute-from-layouts.js.map +1 -0
  7. package/dist/adapter/canvas-context.d.ts +109 -0
  8. package/dist/adapter/canvas-context.d.ts.map +1 -0
  9. package/dist/adapter/canvas-context.js +254 -0
  10. package/dist/adapter/canvas-context.js.map +1 -0
  11. package/dist/adapter/device.d.ts +219 -0
  12. package/dist/adapter/device.d.ts.map +1 -0
  13. package/dist/adapter/device.js +99 -0
  14. package/dist/adapter/device.js.map +1 -0
  15. package/dist/adapter/resources/buffer.d.ts +56 -0
  16. package/dist/adapter/resources/buffer.d.ts.map +1 -0
  17. package/dist/adapter/resources/buffer.js +62 -0
  18. package/dist/adapter/resources/buffer.js.map +1 -0
  19. package/dist/adapter/resources/command-buffer.d.ts +12 -0
  20. package/dist/adapter/resources/command-buffer.d.ts.map +1 -0
  21. package/dist/adapter/resources/command-buffer.js +15 -0
  22. package/dist/adapter/resources/command-buffer.js.map +1 -0
  23. package/dist/adapter/resources/command-encoder.d.ts +113 -0
  24. package/dist/adapter/resources/command-encoder.d.ts.map +1 -0
  25. package/dist/adapter/resources/command-encoder.js +19 -0
  26. package/dist/adapter/resources/command-encoder.js.map +1 -0
  27. package/dist/adapter/resources/compute-pass.d.ts +31 -0
  28. package/dist/adapter/resources/compute-pass.d.ts.map +1 -0
  29. package/dist/adapter/resources/compute-pass.js +15 -0
  30. package/dist/adapter/resources/compute-pass.js.map +1 -0
  31. package/dist/adapter/resources/compute-pipeline.d.ts +24 -0
  32. package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -0
  33. package/dist/adapter/resources/compute-pipeline.js +20 -0
  34. package/dist/adapter/resources/compute-pipeline.js.map +1 -0
  35. package/dist/adapter/resources/external-texture.d.ts +12 -0
  36. package/dist/adapter/resources/external-texture.d.ts.map +1 -0
  37. package/dist/adapter/resources/external-texture.js +17 -0
  38. package/dist/adapter/resources/external-texture.js.map +1 -0
  39. package/dist/adapter/resources/framebuffer.d.ts +50 -0
  40. package/dist/adapter/resources/framebuffer.d.ts.map +1 -0
  41. package/dist/adapter/resources/framebuffer.js +102 -0
  42. package/dist/adapter/resources/framebuffer.js.map +1 -0
  43. package/dist/adapter/resources/render-pass.d.ts +51 -0
  44. package/dist/adapter/resources/render-pass.d.ts.map +1 -0
  45. package/dist/adapter/resources/render-pass.js +23 -0
  46. package/dist/adapter/resources/render-pass.js.map +1 -0
  47. package/dist/adapter/resources/render-pipeline.d.ts +89 -0
  48. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -0
  49. package/dist/adapter/resources/render-pipeline.js +36 -0
  50. package/dist/adapter/resources/render-pipeline.js.map +1 -0
  51. package/dist/adapter/resources/resource.d.ts +73 -0
  52. package/dist/adapter/resources/resource.d.ts.map +1 -0
  53. package/dist/adapter/resources/resource.js +101 -0
  54. package/dist/adapter/resources/resource.js.map +1 -0
  55. package/dist/adapter/resources/sampler.d.ts +42 -0
  56. package/dist/adapter/resources/sampler.d.ts.map +1 -0
  57. package/dist/adapter/resources/sampler.js +26 -0
  58. package/dist/adapter/resources/sampler.js.map +1 -0
  59. package/dist/adapter/resources/shader.d.ts +45 -0
  60. package/dist/adapter/resources/shader.d.ts.map +1 -0
  61. package/dist/adapter/resources/shader.js +90 -0
  62. package/dist/adapter/resources/shader.js.map +1 -0
  63. package/dist/adapter/resources/texture.d.ts +90 -0
  64. package/dist/adapter/resources/texture.d.ts.map +1 -0
  65. package/dist/adapter/resources/texture.js +45 -0
  66. package/dist/adapter/resources/texture.js.map +1 -0
  67. package/dist/adapter/resources/transform-feedback.d.ts +30 -0
  68. package/dist/adapter/resources/transform-feedback.d.ts.map +1 -0
  69. package/dist/adapter/resources/transform-feedback.js +17 -0
  70. package/dist/adapter/resources/transform-feedback.js.map +1 -0
  71. package/dist/adapter/resources/vertex-array.d.ts +40 -0
  72. package/dist/adapter/resources/vertex-array.d.ts.map +1 -0
  73. package/dist/adapter/resources/vertex-array.js +24 -0
  74. package/dist/adapter/resources/vertex-array.js.map +1 -0
  75. package/dist/adapter/type-utils/decode-attribute-type.d.ts +20 -0
  76. package/dist/adapter/type-utils/decode-attribute-type.d.ts.map +1 -0
  77. package/dist/adapter/type-utils/decode-attribute-type.js +60 -0
  78. package/dist/adapter/type-utils/decode-attribute-type.js.map +1 -0
  79. package/dist/adapter/type-utils/decode-data-type.d.ts +16 -0
  80. package/dist/adapter/type-utils/decode-data-type.d.ts.map +1 -0
  81. package/dist/adapter/type-utils/decode-data-type.js +43 -0
  82. package/dist/adapter/type-utils/decode-data-type.js.map +1 -0
  83. package/dist/adapter/type-utils/decode-shader-types.d.ts +9 -0
  84. package/dist/adapter/type-utils/decode-shader-types.d.ts.map +1 -0
  85. package/dist/adapter/type-utils/decode-shader-types.js +103 -0
  86. package/dist/adapter/type-utils/decode-shader-types.js.map +1 -0
  87. package/dist/adapter/type-utils/decode-texture-format.d.ts +19 -0
  88. package/dist/adapter/type-utils/decode-texture-format.d.ts.map +1 -0
  89. package/dist/adapter/type-utils/decode-texture-format.js +101 -0
  90. package/dist/adapter/type-utils/decode-texture-format.js.map +1 -0
  91. package/dist/adapter/type-utils/decode-vertex-format.d.ts +22 -0
  92. package/dist/adapter/type-utils/decode-vertex-format.d.ts.map +1 -0
  93. package/dist/adapter/type-utils/decode-vertex-format.js +25 -0
  94. package/dist/adapter/type-utils/decode-vertex-format.js.map +1 -0
  95. package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts +10 -0
  96. package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts.map +1 -0
  97. package/dist/adapter/type-utils/vertex-format-from-attribute.js +76 -0
  98. package/dist/adapter/type-utils/vertex-format-from-attribute.js.map +1 -0
  99. package/dist/adapter/type-utils/wgsl-utils.d.ts +4 -0
  100. package/dist/adapter/type-utils/wgsl-utils.d.ts.map +1 -0
  101. package/dist/adapter/type-utils/wgsl-utils.js +15 -0
  102. package/dist/adapter/type-utils/wgsl-utils.js.map +1 -0
  103. package/dist/adapter/types/accessor.d.ts +23 -0
  104. package/dist/adapter/types/accessor.d.ts.map +1 -0
  105. package/dist/adapter/types/accessor.js +2 -0
  106. package/dist/adapter/types/accessor.js.map +1 -0
  107. package/dist/adapter/types/buffer-layout.d.ts +59 -0
  108. package/dist/adapter/types/buffer-layout.d.ts.map +1 -0
  109. package/dist/adapter/types/buffer-layout.js +2 -0
  110. package/dist/adapter/types/buffer-layout.js.map +1 -0
  111. package/dist/adapter/types/parameters.d.ts +97 -0
  112. package/dist/adapter/types/parameters.d.ts.map +1 -0
  113. package/dist/adapter/types/parameters.js +28 -0
  114. package/dist/adapter/types/parameters.js.map +1 -0
  115. package/dist/adapter/types/shader-layout.d.ts +145 -0
  116. package/dist/adapter/types/shader-layout.d.ts.map +1 -0
  117. package/dist/adapter/types/shader-layout.js +2 -0
  118. package/dist/adapter/types/shader-layout.js.map +1 -0
  119. package/dist/adapter/types/shader-types.d.ts +21 -0
  120. package/dist/adapter/types/shader-types.d.ts.map +1 -0
  121. package/dist/adapter/types/shader-types.js +2 -0
  122. package/dist/adapter/types/shader-types.js.map +1 -0
  123. package/dist/adapter/types/texture-formats.d.ts +12 -0
  124. package/dist/adapter/types/texture-formats.d.ts.map +1 -0
  125. package/dist/adapter/types/texture-formats.js +2 -0
  126. package/dist/adapter/types/texture-formats.js.map +1 -0
  127. package/dist/adapter/types/types.d.ts +90 -0
  128. package/dist/adapter/types/types.d.ts.map +1 -0
  129. package/dist/adapter/types/types.js +2 -0
  130. package/dist/adapter/types/types.js.map +1 -0
  131. package/dist/adapter/types/vertex-formats.d.ts +14 -0
  132. package/dist/adapter/types/vertex-formats.d.ts.map +1 -0
  133. package/dist/adapter/types/vertex-formats.js +2 -0
  134. package/dist/adapter/types/vertex-formats.js.map +1 -0
  135. package/dist/dist.dev.js +2976 -0
  136. package/dist/index.cjs +2445 -0
  137. package/dist/index.d.ts +81 -128
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +45 -18
  140. package/dist/index.js.map +1 -1
  141. package/dist/init.d.ts +5 -0
  142. package/dist/init.d.ts.map +1 -0
  143. package/dist/init.js +24 -0
  144. package/dist/init.js.map +1 -0
  145. package/dist/lib/compiler-log/compiler-message.d.ts +8 -0
  146. package/dist/lib/compiler-log/compiler-message.d.ts.map +1 -0
  147. package/dist/lib/compiler-log/compiler-message.js +2 -0
  148. package/dist/lib/compiler-log/compiler-message.js.map +1 -0
  149. package/dist/lib/compiler-log/format-compiler-log.d.ts +8 -0
  150. package/dist/lib/compiler-log/format-compiler-log.d.ts.map +1 -0
  151. package/dist/lib/compiler-log/format-compiler-log.js +64 -0
  152. package/dist/lib/compiler-log/format-compiler-log.js.map +1 -0
  153. package/dist/lib/compiler-log/get-shader-info.d.ts +9 -0
  154. package/dist/lib/compiler-log/get-shader-info.d.ts.map +1 -0
  155. package/dist/lib/compiler-log/get-shader-info.js +25 -0
  156. package/dist/lib/compiler-log/get-shader-info.js.map +1 -0
  157. package/dist/lib/luma.d.ts +22 -0
  158. package/dist/lib/luma.d.ts.map +1 -0
  159. package/dist/lib/luma.js +63 -0
  160. package/dist/lib/luma.js.map +1 -0
  161. package/dist/lib/uniforms/uniform-block.d.ts +29 -0
  162. package/dist/lib/uniforms/uniform-block.d.ts.map +1 -0
  163. package/dist/lib/uniforms/uniform-block.js +48 -0
  164. package/dist/lib/uniforms/uniform-block.js.map +1 -0
  165. package/dist/lib/uniforms/uniform-buffer-layout.d.ts +27 -0
  166. package/dist/lib/uniforms/uniform-buffer-layout.d.ts.map +1 -0
  167. package/dist/lib/uniforms/uniform-buffer-layout.js +76 -0
  168. package/dist/lib/uniforms/uniform-buffer-layout.js.map +1 -0
  169. package/dist/lib/uniforms/uniform-store.d.ts +62 -0
  170. package/dist/lib/uniforms/uniform-store.d.ts.map +1 -0
  171. package/dist/lib/uniforms/uniform-store.js +89 -0
  172. package/dist/lib/uniforms/uniform-store.js.map +1 -0
  173. package/dist/lib/uniforms/uniform.d.ts +10 -0
  174. package/dist/lib/uniforms/uniform.d.ts.map +1 -0
  175. package/dist/lib/uniforms/uniform.js +20 -0
  176. package/dist/lib/uniforms/uniform.js.map +1 -0
  177. package/dist/types.d.ts +19 -0
  178. package/dist/types.d.ts.map +1 -0
  179. package/dist/types.js +3 -0
  180. package/dist/types.js.map +1 -0
  181. package/dist/utils/array-equal.d.ts +5 -0
  182. package/dist/utils/array-equal.d.ts.map +1 -0
  183. package/dist/utils/array-equal.js +28 -0
  184. package/dist/utils/array-equal.js.map +1 -0
  185. package/dist/utils/array-utils-flat.d.ts +10 -0
  186. package/dist/utils/array-utils-flat.d.ts.map +1 -0
  187. package/dist/utils/array-utils-flat.js +36 -0
  188. package/dist/utils/array-utils-flat.js.map +1 -0
  189. package/dist/utils/assert.d.ts +2 -0
  190. package/dist/utils/assert.d.ts.map +1 -0
  191. package/dist/utils/assert.js +6 -0
  192. package/dist/utils/assert.js.map +1 -0
  193. package/dist/utils/cast.d.ts +3 -0
  194. package/dist/utils/cast.d.ts.map +1 -0
  195. package/dist/utils/cast.js +4 -0
  196. package/dist/utils/cast.js.map +1 -0
  197. package/dist/utils/check-props.d.ts +7 -0
  198. package/dist/utils/check-props.d.ts.map +1 -0
  199. package/dist/utils/check-props.js +32 -0
  200. package/dist/utils/check-props.js.map +1 -0
  201. package/dist/utils/deep-equal.d.ts +9 -0
  202. package/dist/utils/deep-equal.d.ts.map +1 -0
  203. package/dist/utils/deep-equal.js +40 -0
  204. package/dist/utils/deep-equal.js.map +1 -0
  205. package/dist/utils/format-value.d.ts +7 -0
  206. package/dist/utils/format-value.d.ts.map +1 -0
  207. package/dist/utils/format-value.js +42 -0
  208. package/dist/utils/format-value.js.map +1 -0
  209. package/dist/utils/is-array.d.ts +16 -0
  210. package/dist/utils/is-array.d.ts.map +1 -0
  211. package/dist/utils/is-array.js +10 -0
  212. package/dist/utils/is-array.js.map +1 -0
  213. package/dist/utils/load-file.d.ts +35 -0
  214. package/dist/utils/load-file.d.ts.map +1 -0
  215. package/dist/utils/load-file.js +48 -0
  216. package/dist/utils/load-file.js.map +1 -0
  217. package/dist/utils/log.d.ts +4 -0
  218. package/dist/utils/log.d.ts.map +1 -0
  219. package/dist/utils/log.js +5 -0
  220. package/dist/utils/log.js.map +1 -0
  221. package/dist/utils/random.d.ts +5 -0
  222. package/dist/utils/random.d.ts.map +1 -0
  223. package/dist/utils/random.js +14 -0
  224. package/dist/utils/random.js.map +1 -0
  225. package/dist/utils/request-animation-frame.d.ts +3 -0
  226. package/dist/utils/request-animation-frame.d.ts.map +1 -0
  227. package/dist/utils/request-animation-frame.js +7 -0
  228. package/dist/utils/request-animation-frame.js.map +1 -0
  229. package/dist/utils/stats-manager.d.ts +12 -0
  230. package/dist/utils/stats-manager.d.ts.map +1 -0
  231. package/dist/utils/stats-manager.js +19 -0
  232. package/dist/utils/stats-manager.js.map +1 -0
  233. package/dist/utils/stub-methods.d.ts +2 -0
  234. package/dist/utils/stub-methods.d.ts.map +1 -0
  235. package/dist/utils/stub-methods.js +16 -0
  236. package/dist/utils/stub-methods.js.map +1 -0
  237. package/dist/utils/utils.d.ts +15 -0
  238. package/dist/utils/utils.d.ts.map +1 -0
  239. package/dist/utils/utils.js +19 -0
  240. package/dist/utils/utils.js.map +1 -0
  241. package/dist.min.js +33 -0
  242. package/package.json +17 -12
  243. package/src/adapter/attribute-utils/get-attribute-from-layouts.ts +259 -0
  244. package/src/adapter/canvas-context.ts +433 -0
  245. package/src/adapter/device.ts +435 -0
  246. package/src/adapter/resources/buffer.ts +106 -0
  247. package/src/adapter/resources/command-buffer.ts +38 -0
  248. package/src/adapter/resources/command-encoder.ts +172 -0
  249. package/src/adapter/resources/compute-pass.ts +52 -0
  250. package/src/adapter/resources/compute-pipeline.ts +39 -0
  251. package/src/adapter/resources/external-texture.ts +20 -0
  252. package/src/adapter/resources/framebuffer.ts +230 -0
  253. package/src/adapter/resources/render-pass.ts +117 -0
  254. package/src/adapter/resources/render-pipeline.ts +133 -0
  255. package/src/adapter/resources/resource.ts +176 -0
  256. package/src/adapter/resources/sampler.ts +69 -0
  257. package/src/adapter/resources/shader.ts +143 -0
  258. package/src/adapter/resources/texture.ts +140 -0
  259. package/src/adapter/resources/transform-feedback.ts +45 -0
  260. package/src/adapter/resources/vertex-array.ts +65 -0
  261. package/src/adapter/type-utils/decode-attribute-type.ts +82 -0
  262. package/src/adapter/type-utils/decode-data-type.ts +62 -0
  263. package/src/adapter/type-utils/decode-shader-types.ts +48 -0
  264. package/src/adapter/type-utils/decode-texture-format.ts +190 -0
  265. package/src/adapter/type-utils/decode-vertex-format.ts +49 -0
  266. package/src/adapter/type-utils/vertex-format-from-attribute.ts +103 -0
  267. package/src/adapter/type-utils/wgsl-utils.ts +18 -0
  268. package/src/adapter/types/accessor.ts +34 -0
  269. package/src/adapter/types/buffer-layout.ts +62 -0
  270. package/src/adapter/types/parameters.ts +250 -0
  271. package/src/adapter/types/shader-layout.ts +193 -0
  272. package/src/adapter/types/shader-types.ts +77 -0
  273. package/src/adapter/types/texture-formats.ts +168 -0
  274. package/src/adapter/types/types.ts +109 -0
  275. package/src/adapter/types/vertex-formats.ts +91 -0
  276. package/src/index.ts +160 -92
  277. package/src/init.ts +47 -0
  278. package/src/lib/compiler-log/compiler-message.ts +10 -0
  279. package/src/lib/compiler-log/format-compiler-log.ts +113 -0
  280. package/src/lib/compiler-log/get-shader-info.ts +41 -0
  281. package/src/lib/luma.ts +84 -0
  282. package/src/lib/uniforms/uniform-block.ts +80 -0
  283. package/src/lib/uniforms/uniform-buffer-layout.ts +109 -0
  284. package/src/lib/uniforms/uniform-store.ts +173 -0
  285. package/src/lib/uniforms/uniform.ts +25 -0
  286. package/src/types.ts +33 -0
  287. package/src/utils/array-equal.ts +33 -0
  288. package/src/utils/array-utils-flat.ts +43 -0
  289. package/src/utils/assert.ts +7 -0
  290. package/src/utils/cast.ts +4 -0
  291. package/src/utils/check-props.ts +74 -0
  292. package/src/utils/deep-equal.ts +47 -0
  293. package/src/utils/format-value.ts +40 -0
  294. package/src/utils/is-array.ts +24 -0
  295. package/src/utils/load-file.ts +89 -0
  296. package/src/utils/log.ts +4 -0
  297. package/src/utils/random.ts +17 -0
  298. package/src/utils/request-animation-frame.ts +15 -0
  299. package/src/utils/stats-manager.ts +23 -0
  300. package/src/utils/stub-methods.ts +20 -0
  301. package/src/utils/utils.ts +36 -0
  302. package/dist/bundle.d.ts +0 -2
  303. package/dist/bundle.d.ts.map +0 -1
  304. package/dist/bundle.js +0 -5
  305. package/dist/bundle.js.map +0 -1
  306. package/src/bundle.ts +0 -4
@@ -0,0 +1,90 @@
1
+ /// <reference types="node" />
2
+ import type { Device } from '../device';
3
+ import type { TypedArray } from '../../types';
4
+ import type { TextureFormat } from '../types/texture-formats';
5
+ import { Resource, ResourceProps } from './resource';
6
+ import { Sampler, SamplerProps } from './sampler';
7
+ /** Data types that can be used to initialize textures */
8
+ export type TextureData = TypedArray | ArrayBuffer | Buffer | ImageBitmap | HTMLImageElement;
9
+ export type CubeTextureData = Record<string, TextureData> | Record<string, Promise<TextureData>>;
10
+ export type ExternalTextureData = HTMLVideoElement;
11
+ /** Abstract Texture interface */
12
+ export type TextureProps = ResourceProps & {
13
+ format?: TextureFormat;
14
+ dimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
15
+ width?: number | undefined;
16
+ height?: number | undefined;
17
+ depth?: number;
18
+ usage?: number;
19
+ data?: TextureData | Promise<TextureData> | CubeTextureData | string | HTMLVideoElement | null;
20
+ mipmaps?: boolean;
21
+ sampler?: Sampler | SamplerProps;
22
+ mipLevels?: number;
23
+ samples?: number;
24
+ type?: number;
25
+ compressed?: boolean;
26
+ };
27
+ export type WebGPUTextureProps = ResourceProps & {
28
+ width: number;
29
+ height: number;
30
+ depth?: number;
31
+ mipLevels?: number;
32
+ format?: string;
33
+ };
34
+ export type TextureViewProps = {
35
+ format: string;
36
+ dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
37
+ aspect?: 'all' | 'stencil-only' | 'depth-only';
38
+ arrayLayerCount: number;
39
+ baseArrayLayer?: number;
40
+ mipLevels?: number;
41
+ baseMipLevel?: number;
42
+ };
43
+ /**
44
+ * @deprecated
45
+ * @todo remove, are these even used anymore?
46
+ */
47
+ export type DeprecatedWebGLTextureProps = {
48
+ /** @deprecated use props.sampler */
49
+ parameters?: Record<number, number>;
50
+ /** @deprecated use props.data */
51
+ pixels?: any;
52
+ /** @deprecated use props.format */
53
+ dataFormat?: number | null;
54
+ /** @deprecated rarely supported */
55
+ border?: number;
56
+ /** @deprecated WebGL only. */
57
+ pixelStore?: object;
58
+ /** @deprecated WebGL only. */
59
+ textureUnit?: number;
60
+ /** @deprecated WebGL only. Use dimension. */
61
+ target?: number;
62
+ };
63
+ /**
64
+ * Abstract Texture interface
65
+ * Texture Object
66
+ * https://gpuweb.github.io/gpuweb/#gputexture
67
+ */
68
+ export declare abstract class Texture<Props extends TextureProps = TextureProps> extends Resource<Props> {
69
+ static defaultProps: Required<TextureProps>;
70
+ static COPY_SRC: number;
71
+ static COPY_DST: number;
72
+ static TEXTURE_BINDING: number;
73
+ static STORAGE_BINDING: number;
74
+ static RENDER_ATTACHMENT: number;
75
+ get [Symbol.toStringTag](): string;
76
+ /** dimension of this texture */
77
+ readonly dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
78
+ /** format of this texture */
79
+ readonly format: TextureFormat;
80
+ /** width in pixels of this texture */
81
+ width: number;
82
+ /** height in pixels of this texture */
83
+ height: number;
84
+ /** depth of this texture */
85
+ readonly depth: number;
86
+ /** Default sampler for this texture */
87
+ abstract sampler: Sampler;
88
+ constructor(device: Device, props: Props, defaultProps?: Required<Props>);
89
+ }
90
+ //# sourceMappingURL=texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ let _Symbol$toStringTag;
2
+ import { Resource } from "./resource.js";
3
+ _Symbol$toStringTag = Symbol.toStringTag;
4
+ export class Texture extends Resource {
5
+ get [_Symbol$toStringTag]() {
6
+ return 'Texture';
7
+ }
8
+ constructor(device, props) {
9
+ let defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Texture.defaultProps;
10
+ super(device, props, defaultProps);
11
+ this.dimension = void 0;
12
+ this.format = void 0;
13
+ this.width = void 0;
14
+ this.height = void 0;
15
+ this.depth = void 0;
16
+ this.sampler = void 0;
17
+ this.dimension = this.props.dimension;
18
+ this.format = this.props.format;
19
+ this.width = this.props.width;
20
+ this.height = this.props.height;
21
+ this.depth = this.props.depth;
22
+ }
23
+ }
24
+ Texture.defaultProps = {
25
+ ...Resource.defaultProps,
26
+ data: null,
27
+ dimension: '2d',
28
+ format: 'rgba8unorm',
29
+ width: undefined,
30
+ height: undefined,
31
+ depth: 1,
32
+ mipmaps: true,
33
+ sampler: {},
34
+ compressed: false,
35
+ usage: 0,
36
+ mipLevels: undefined,
37
+ samples: undefined,
38
+ type: undefined
39
+ };
40
+ Texture.COPY_SRC = 0x01;
41
+ Texture.COPY_DST = 0x02;
42
+ Texture.TEXTURE_BINDING = 0x04;
43
+ Texture.STORAGE_BINDING = 0x08;
44
+ Texture.RENDER_ATTACHMENT = 0x10;
45
+ //# sourceMappingURL=texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.js","names":["Resource","_Symbol$toStringTag","Symbol","toStringTag","Texture","constructor","device","props","defaultProps","arguments","length","undefined","dimension","format","width","height","depth","sampler","data","mipmaps","compressed","usage","mipLevels","samples","type","COPY_SRC","COPY_DST","TEXTURE_BINDING","STORAGE_BINDING","RENDER_ATTACHMENT"],"sources":["../../../src/adapter/resources/texture.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport type {TypedArray} from '../../types';\nimport type {TextureFormat} from '../types/texture-formats';\nimport {Resource, ResourceProps} from './resource';\nimport {Sampler, SamplerProps} from './sampler';\n\n// required GPUExtent3D size;\n// GPUIntegerCoordinate mipLevelCount = 1;\n// GPUSize32 sampleCount = 1;\n// GPUTextureDimension dimension = \"2d\";\n// required GPUTextureFormat format;\n// required GPUTextureUsageFlags usage;\n\n/** Data types that can be used to initialize textures */\nexport type TextureData = \n TypedArray | ArrayBuffer | Buffer | ImageBitmap | HTMLImageElement\n ;\n\nexport type CubeTextureData = \n Record<string, TextureData> |\n Record<string, Promise<TextureData>>\n ;\n\nexport type ExternalTextureData = HTMLVideoElement;\n\n/** Abstract Texture interface */\nexport type TextureProps = ResourceProps & {\n format?: TextureFormat;\n dimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n width?: number | undefined;\n height?: number | undefined;\n depth?: number;\n usage?: number;\n\n data?: TextureData | Promise<TextureData> | CubeTextureData | string | HTMLVideoElement | null;\n mipmaps?: boolean;\n sampler?: Sampler | SamplerProps;\n\n mipLevels?: number;\n samples?: number;\n type?: number;\n compressed?: boolean;\n};\n\nexport type WebGPUTextureProps = ResourceProps & {\n width: number;\n height: number;\n depth?: number;\n mipLevels?: number;\n format?: string;\n};\n\nexport type TextureViewProps = {\n format: string;\n dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n aspect?: 'all' | 'stencil-only' | 'depth-only';\n arrayLayerCount: number;\n baseArrayLayer?: number;\n mipLevels?: number;\n baseMipLevel?: number;\n};\n\n/** \n * @deprecated\n * @todo remove, are these even used anymore?\n */\nexport type DeprecatedWebGLTextureProps = {\n /** @deprecated use props.sampler */\n parameters?: Record<number, number>;\n /** @deprecated use props.data */\n pixels?: any;\n /** @deprecated use props.format */\n dataFormat?: number | null;\n /** @deprecated rarely supported */\n border?: number;\n /** @deprecated WebGL only. */\n pixelStore?: object;\n /** @deprecated WebGL only. */\n textureUnit?: number;\n /** @deprecated WebGL only. Use dimension. */\n target?: number;\n};\n\n/**\n * Abstract Texture interface\n * Texture Object\n * https://gpuweb.github.io/gpuweb/#gputexture\n */\nexport abstract class Texture<Props extends TextureProps = TextureProps> extends Resource<Props> {\n static override defaultProps: Required<TextureProps> = {\n ...Resource.defaultProps,\n data: null,\n dimension: '2d',\n format: 'rgba8unorm',\n width: undefined!,\n height: undefined!,\n depth: 1,\n mipmaps: true,\n sampler: {},\n // type: undefined,\n compressed: false,\n // mipLevels: 1,\n usage: 0,\n // usage: GPUTextureUsage.COPY_DST\n mipLevels: undefined!,\n samples: undefined!,\n type: undefined!\n };\n \n static COPY_SRC = 0x01;\n static COPY_DST = 0x02;\n static TEXTURE_BINDING = 0x04;\n static STORAGE_BINDING = 0x08;\n static RENDER_ATTACHMENT = 0x10;\n\n override get [Symbol.toStringTag](): string { return 'Texture'; }\n\n /** dimension of this texture */\n readonly dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n /** format of this texture */\n readonly format: TextureFormat;\n /** width in pixels of this texture */\n width: number;\n /** height in pixels of this texture */\n height: number;\n /** depth of this texture */\n readonly depth: number;\n /** Default sampler for this texture */\n abstract sampler: Sampler;\n\n constructor(device: Device, props: Props, defaultProps = Texture.defaultProps as Required<Props>) {\n super(device, props, defaultProps);\n this.dimension = this.props.dimension;\n this.format = this.props.format ;\n this.width = this.props.width;\n this.height = this.props.height;\n this.depth = this.props.depth;\n }\n}\n"],"mappings":";SAIQA,QAAQ;AAAAC,mBAAA,GAgHAC,MAAM,CAACC,WAAW;AA3BlC,OAAO,MAAeC,OAAO,SAAoDJ,QAAQ,CAAQ;EA2B/F,KAAAC,mBAAA,IAA4C;IAAE,OAAO,SAAS;EAAE;EAehEI,WAAWA,CAACC,MAAc,EAAEC,KAAY,EAA0D;IAAA,IAAxDC,YAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGL,OAAO,CAACI,YAAY;IAC3E,KAAK,CAACF,MAAM,EAAEC,KAAK,EAAEC,YAAY,CAAC;IAAC,KAb5BI,SAAS;IAAA,KAETC,MAAM;IAAA,KAEfC,KAAK;IAAA,KAELC,MAAM;IAAA,KAEGC,KAAK;IAAA,KAELC,OAAO;IAId,IAAI,CAACL,SAAS,GAAG,IAAI,CAACL,KAAK,CAACK,SAAS;IACrC,IAAI,CAACC,MAAM,GAAG,IAAI,CAACN,KAAK,CAACM,MAAM;IAC/B,IAAI,CAACC,KAAK,GAAG,IAAI,CAACP,KAAK,CAACO,KAAK;IAC7B,IAAI,CAACC,MAAM,GAAG,IAAI,CAACR,KAAK,CAACQ,MAAM;IAC/B,IAAI,CAACC,KAAK,GAAG,IAAI,CAACT,KAAK,CAACS,KAAK;EAC/B;AACF;AAlDsBZ,OAAO,CACXI,YAAY,GAA2B;EACrD,GAAGR,QAAQ,CAACQ,YAAY;EACxBU,IAAI,EAAE,IAAI;EACVN,SAAS,EAAE,IAAI;EACfC,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAEH,SAAU;EACjBI,MAAM,EAAEJ,SAAU;EAClBK,KAAK,EAAE,CAAC;EACRG,OAAO,EAAE,IAAI;EACbF,OAAO,EAAE,CAAC,CAAC;EAEXG,UAAU,EAAE,KAAK;EAEjBC,KAAK,EAAE,CAAC;EAERC,SAAS,EAAEX,SAAU;EACrBY,OAAO,EAAEZ,SAAU;EACnBa,IAAI,EAAEb;AACR,CAAC;AAnBmBP,OAAO,CAqBpBqB,QAAQ,GAAG,IAAI;AArBFrB,OAAO,CAsBpBsB,QAAQ,GAAG,IAAI;AAtBFtB,OAAO,CAuBpBuB,eAAe,GAAG,IAAI;AAvBTvB,OAAO,CAwBpBwB,eAAe,GAAG,IAAI;AAxBTxB,OAAO,CAyBpByB,iBAAiB,GAAG,IAAI"}
@@ -0,0 +1,30 @@
1
+ import type { Device } from '../device';
2
+ import { PrimitiveTopology } from '../types/parameters';
3
+ import { ShaderLayout } from '../types/shader-layout';
4
+ import type { Buffer } from './buffer';
5
+ import { Resource, ResourceProps } from './resource';
6
+ /** For bindRange */
7
+ export type BufferRange = {
8
+ buffer: Buffer;
9
+ byteOffset?: number;
10
+ byteLength?: number;
11
+ };
12
+ /** Configures a set of output buffers for pipeline (WebGL 2 only) */
13
+ export type TransformFeedbackProps = ResourceProps & {
14
+ /** Layout of shader (for varyings) */
15
+ layout: ShaderLayout;
16
+ /** Buffer bindings (for varyings) */
17
+ buffers: Record<string, Buffer | BufferRange>;
18
+ };
19
+ /** Holds a set of output buffers for pipeline (WebGL 2 only) */
20
+ export declare abstract class TransformFeedback extends Resource<TransformFeedbackProps> {
21
+ static defaultProps: Required<TransformFeedbackProps>;
22
+ get [Symbol.toStringTag](): string;
23
+ constructor(device: Device, props?: TransformFeedbackProps);
24
+ abstract begin(topology?: PrimitiveTopology): void;
25
+ abstract end(): void;
26
+ abstract setBuffers(buffers: Record<string, Buffer | BufferRange>): void;
27
+ abstract setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void;
28
+ abstract getBuffer(locationOrName: string | number): Buffer | BufferRange | null;
29
+ }
30
+ //# sourceMappingURL=transform-feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/transform-feedback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AACrC,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAEnD,oBAAoB;AACpB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,sCAAsC;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;CAC/C,CAAC;AAEF,gEAAgE;AAChE,8BAAsB,iBAAkB,SAAQ,QAAQ,CAAC,sBAAsB,CAAC;IAC9E,OAAgB,YAAY,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAI5D;IAEF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAEW,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,sBAAsB;IAI1D,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAClD,QAAQ,CAAC,GAAG,IAAI,IAAI;IAEpB,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IACxE,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAC9F,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;CACjF"}
@@ -0,0 +1,17 @@
1
+ let _Symbol$toStringTag;
2
+ import { Resource } from "./resource.js";
3
+ _Symbol$toStringTag = Symbol.toStringTag;
4
+ export class TransformFeedback extends Resource {
5
+ get [_Symbol$toStringTag]() {
6
+ return 'TransformFeedback';
7
+ }
8
+ constructor(device, props) {
9
+ super(device, props, TransformFeedback.defaultProps);
10
+ }
11
+ }
12
+ TransformFeedback.defaultProps = {
13
+ ...Resource.defaultProps,
14
+ layout: undefined,
15
+ buffers: {}
16
+ };
17
+ //# sourceMappingURL=transform-feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-feedback.js","names":["Resource","_Symbol$toStringTag","Symbol","toStringTag","TransformFeedback","constructor","device","props","defaultProps","layout","undefined","buffers"],"sources":["../../../src/adapter/resources/transform-feedback.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport {PrimitiveTopology} from '../types/parameters';\nimport {ShaderLayout} from '../types/shader-layout';\nimport type {Buffer} from './buffer';\nimport {Resource, ResourceProps} from './resource';\n\n/** For bindRange */\nexport type BufferRange = {\n buffer: Buffer;\n byteOffset?: number;\n byteLength?: number;\n};\n\n/** Configures a set of output buffers for pipeline (WebGL 2 only) */\nexport type TransformFeedbackProps = ResourceProps & {\n /** Layout of shader (for varyings) */\n layout: ShaderLayout;\n /** Buffer bindings (for varyings) */\n buffers: Record<string, Buffer | BufferRange>;\n};\n\n/** Holds a set of output buffers for pipeline (WebGL 2 only) */\nexport abstract class TransformFeedback extends Resource<TransformFeedbackProps> {\n static override defaultProps: Required<TransformFeedbackProps> = {\n ...Resource.defaultProps,\n layout: undefined!,\n buffers: {}\n };\n\n get [Symbol.toStringTag](): string {\n return 'TransformFeedback';\n }\n\n constructor(device: Device, props?: TransformFeedbackProps) {\n super(device, props, TransformFeedback.defaultProps);\n }\n\n abstract begin(topology?: PrimitiveTopology): void;\n abstract end(): void;\n\n abstract setBuffers(buffers: Record<string, Buffer | BufferRange>): void;\n abstract setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void;\n abstract getBuffer(locationOrName: string | number): Buffer | BufferRange | null;\n}\n"],"mappings":";SAKQA,QAAQ;AAAAC,mBAAA,GAyBTC,MAAM,CAACC,WAAW;AAPzB,OAAO,MAAeC,iBAAiB,SAASJ,QAAQ,CAAyB;EAO/E,KAAAC,mBAAA,IAAmC;IACjC,OAAO,mBAAmB;EAC5B;EAEAI,WAAWA,CAACC,MAAc,EAAEC,KAA8B,EAAE;IAC1D,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,iBAAiB,CAACI,YAAY,CAAC;EACtD;AAQF;AArBsBJ,iBAAiB,CACrBI,YAAY,GAAqC;EAC/D,GAAGR,QAAQ,CAACQ,YAAY;EACxBC,MAAM,EAAEC,SAAU;EAClBC,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { TypedArray } from '../../types';
2
+ import { AttributeInfo } from '../attribute-utils/get-attribute-from-layouts';
3
+ import type { Device } from '../device';
4
+ import type { Buffer } from './buffer';
5
+ import type { RenderPass } from './render-pass';
6
+ import type { RenderPipeline } from './render-pipeline';
7
+ import { Resource, ResourceProps } from './resource';
8
+ /** Properties for initializing a VertexArray */
9
+ export type VertexArrayProps = ResourceProps & {
10
+ renderPipeline: RenderPipeline | null;
11
+ };
12
+ /**
13
+ * Stores attribute bindings.
14
+ * Makes it easy to share a render pipeline and use separate vertex arrays.
15
+ * @note On WebGL, VertexArray allows non-constant bindings to be performed in advance
16
+ * reducing the number of WebGL calls per draw call.
17
+ * @note On WebGPU this is just a convenience class that collects the bindings.
18
+ */
19
+ export declare abstract class VertexArray extends Resource<VertexArrayProps> {
20
+ static defaultProps: Required<VertexArrayProps>;
21
+ get [Symbol.toStringTag](): string;
22
+ /** Max number of vertex attributes */
23
+ readonly maxVertexAttributes: number;
24
+ /** Attribute infos indexed by location - TODO only needed by webgl module? */
25
+ protected readonly attributeInfos: AttributeInfo[];
26
+ /** Index buffer */
27
+ indexBuffer: Buffer | null;
28
+ /** Attributes indexed by buffer slot */
29
+ attributes: (Buffer | TypedArray | null)[];
30
+ constructor(device: Device, props: VertexArrayProps);
31
+ /** Set attributes (stored on pipeline and set before each call) */
32
+ abstract setIndexBuffer(indices: Buffer | null): void;
33
+ /** Set attributes (stored on pipeline and set before each call) */
34
+ abstract setBuffer(bufferSlot: number, buffer: Buffer | null): void;
35
+ /** Set constant attributes (WebGL only) */
36
+ abstract setConstant(location: number, value: TypedArray | null): void;
37
+ abstract bindBeforeRender(renderPass: RenderPass): void;
38
+ abstract unbindAfterRender(renderPass: RenderPass): void;
39
+ }
40
+ //# sourceMappingURL=vertex-array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/vertex-array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,aAAa,EAEd,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAEnD,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClE,OAAgB,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAGtD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,sCAAsC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC;IAEnD,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,wCAAwC;IACxC,UAAU,EAAE,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB;IAWnD,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACrD,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACnE,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAEtE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IACvD,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CACzD"}
@@ -0,0 +1,24 @@
1
+ let _Symbol$toStringTag;
2
+ import { getAttributeInfosByLocation } from "../attribute-utils/get-attribute-from-layouts.js";
3
+ import { Resource } from "./resource.js";
4
+ _Symbol$toStringTag = Symbol.toStringTag;
5
+ export class VertexArray extends Resource {
6
+ get [_Symbol$toStringTag]() {
7
+ return 'VertexArray';
8
+ }
9
+ constructor(device, props) {
10
+ super(device, props, VertexArray.defaultProps);
11
+ this.maxVertexAttributes = void 0;
12
+ this.attributeInfos = void 0;
13
+ this.indexBuffer = null;
14
+ this.attributes = void 0;
15
+ this.maxVertexAttributes = device.limits.maxVertexAttributes;
16
+ this.attributes = new Array(this.maxVertexAttributes).fill(null);
17
+ this.attributeInfos = getAttributeInfosByLocation(props.renderPipeline.shaderLayout, props.renderPipeline.bufferLayout, this.maxVertexAttributes);
18
+ }
19
+ }
20
+ VertexArray.defaultProps = {
21
+ ...Resource.defaultProps,
22
+ renderPipeline: null
23
+ };
24
+ //# sourceMappingURL=vertex-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex-array.js","names":["getAttributeInfosByLocation","Resource","_Symbol$toStringTag","Symbol","toStringTag","VertexArray","constructor","device","props","defaultProps","maxVertexAttributes","attributeInfos","indexBuffer","attributes","limits","Array","fill","renderPipeline","shaderLayout","bufferLayout"],"sources":["../../../src/adapter/resources/vertex-array.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {TypedArray} from '../../types';\nimport {\n AttributeInfo,\n getAttributeInfosByLocation\n} from '../attribute-utils/get-attribute-from-layouts';\nimport type {Device} from '../device';\nimport type {Buffer} from './buffer';\nimport type {RenderPass} from './render-pass';\nimport type {RenderPipeline} from './render-pipeline';\nimport {Resource, ResourceProps} from './resource';\n\n/** Properties for initializing a VertexArray */\nexport type VertexArrayProps = ResourceProps & {\n renderPipeline: RenderPipeline | null;\n};\n\n/**\n * Stores attribute bindings.\n * Makes it easy to share a render pipeline and use separate vertex arrays.\n * @note On WebGL, VertexArray allows non-constant bindings to be performed in advance\n * reducing the number of WebGL calls per draw call.\n * @note On WebGPU this is just a convenience class that collects the bindings.\n */\nexport abstract class VertexArray extends Resource<VertexArrayProps> {\n static override defaultProps: Required<VertexArrayProps> = {\n ...Resource.defaultProps,\n renderPipeline: null\n };\n\n override get [Symbol.toStringTag](): string {\n return 'VertexArray';\n }\n\n /** Max number of vertex attributes */\n readonly maxVertexAttributes: number;\n /** Attribute infos indexed by location - TODO only needed by webgl module? */\n protected readonly attributeInfos: AttributeInfo[];\n\n /** Index buffer */\n indexBuffer: Buffer | null = null;\n /** Attributes indexed by buffer slot */\n attributes: (Buffer | TypedArray | null)[];\n\n constructor(device: Device, props: VertexArrayProps) {\n super(device, props, VertexArray.defaultProps);\n this.maxVertexAttributes = device.limits.maxVertexAttributes;\n this.attributes = new Array(this.maxVertexAttributes).fill(null);\n this.attributeInfos = getAttributeInfosByLocation(\n props.renderPipeline.shaderLayout,\n props.renderPipeline.bufferLayout,\n this.maxVertexAttributes\n );\n }\n\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setIndexBuffer(indices: Buffer | null): void;\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setBuffer(bufferSlot: number, buffer: Buffer | null): void;\n /** Set constant attributes (WebGL only) */\n abstract setConstant(location: number, value: TypedArray | null): void;\n\n abstract bindBeforeRender(renderPass: RenderPass): void;\n abstract unbindAfterRender(renderPass: RenderPass): void;\n}\n"],"mappings":";SAIEA,2BAA2B;AAAA,SAMrBC,QAAQ;AAAAC,mBAAA,GAoBAC,MAAM,CAACC,WAAW;AANlC,OAAO,MAAeC,WAAW,SAASJ,QAAQ,CAAmB;EAMnE,KAAAC,mBAAA,IAA4C;IAC1C,OAAO,aAAa;EACtB;EAYAI,WAAWA,CAACC,MAAc,EAAEC,KAAuB,EAAE;IACnD,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,WAAW,CAACI,YAAY,CAAC;IAAC,KAVxCC,mBAAmB;IAAA,KAETC,cAAc;IAAA,KAGjCC,WAAW,GAAkB,IAAI;IAAA,KAEjCC,UAAU;IAIR,IAAI,CAACH,mBAAmB,GAAGH,MAAM,CAACO,MAAM,CAACJ,mBAAmB;IAC5D,IAAI,CAACG,UAAU,GAAG,IAAIE,KAAK,CAAC,IAAI,CAACL,mBAAmB,CAAC,CAACM,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACL,cAAc,GAAGX,2BAA2B,CAC/CQ,KAAK,CAACS,cAAc,CAACC,YAAY,EACjCV,KAAK,CAACS,cAAc,CAACE,YAAY,EACjC,IAAI,CAACT,mBACP,CAAC;EACH;AAWF;AAxCsBL,WAAW,CACfI,YAAY,GAA+B;EACzD,GAAGR,QAAQ,CAACQ,YAAY;EACxBQ,cAAc,EAAE;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ShaderDataType, ShaderAttributeType } from '../types/shader-types';
2
+ import { VertexFormat } from '../types/vertex-formats';
3
+ /** Information extracted from a ShaderAttributeInfo constant */
4
+ export type ShaderAttributeTypeInfo = {
5
+ /** WGSL-style primitive data type, f32, i32, u32 */
6
+ dataType: ShaderDataType;
7
+ /** Whether this is a normalized integer (that must be used as float) */
8
+ components: 1 | 2 | 3 | 4;
9
+ /** Length in bytes of the data for one vertex */
10
+ byteLength?: number;
11
+ /** Whether this is for integer or float vert */
12
+ integer: boolean;
13
+ /** Whether this data type is signed */
14
+ signed: boolean;
15
+ /** The simplest vertex format that matches the shader attribute's data type */
16
+ defaultVertexFormat?: VertexFormat;
17
+ };
18
+ /** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */
19
+ export declare function decodeShaderAttributeType(attributeType: ShaderAttributeType): ShaderAttributeTypeInfo;
20
+ //# sourceMappingURL=decode-attribute-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-attribute-type.d.ts","sourceRoot":"","sources":["../../../src/adapter/type-utils/decode-attribute-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAC,YAAY,EAAa,MAAM,yBAAyB,CAAC;AAEjE,gEAAgE;AAChE,MAAM,MAAM,uBAAuB,GAAG;IACpC,oDAAoD;IACpD,QAAQ,EAAE,cAAc,CAAC;IACzB,wEAAwE;IACxE,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,YAAY,CAAC;CACpC,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,mBAAmB,GAAG,uBAAuB,CAerG"}
@@ -0,0 +1,60 @@
1
+ export function decodeShaderAttributeType(attributeType) {
2
+ const [dataType, components] = TYPE_INFO[attributeType];
3
+ const integer = dataType === 'i32' || dataType === 'u32';
4
+ const signed = dataType !== 'u32';
5
+ const byteLength = TYPE_SIZES[dataType] * components;
6
+ const defaultVertexFormat = getCompatibleVertexFormat(dataType, components);
7
+ return {
8
+ dataType,
9
+ components,
10
+ defaultVertexFormat,
11
+ byteLength,
12
+ integer,
13
+ signed
14
+ };
15
+ }
16
+ function getCompatibleVertexFormat(dataType, components) {
17
+ let vertexType;
18
+ switch (dataType) {
19
+ case 'f32':
20
+ vertexType = 'float32';
21
+ break;
22
+ case 'i32':
23
+ vertexType = 'sint32';
24
+ break;
25
+ case 'u32':
26
+ vertexType = 'uint32';
27
+ break;
28
+ case 'f16':
29
+ return components <= 2 ? 'float16x2' : 'float16x4';
30
+ }
31
+ if (components === 1) {
32
+ return vertexType;
33
+ }
34
+ return `${vertexType}x${components}`;
35
+ }
36
+ const TYPE_INFO = {
37
+ f32: ['f32', 1],
38
+ 'vec2<f32>': ['f32', 2],
39
+ 'vec3<f32>': ['f32', 3],
40
+ 'vec4<f32>': ['f32', 4],
41
+ f16: ['f16', 1],
42
+ 'vec2<f16>': ['f16', 2],
43
+ 'vec3<f16>': ['f16', 3],
44
+ 'vec4<f16>': ['f16', 4],
45
+ i32: ['i32', 1],
46
+ 'vec2<i32>': ['i32', 2],
47
+ 'vec3<i32>': ['i32', 3],
48
+ 'vec4<i32>': ['i32', 4],
49
+ u32: ['u32', 1],
50
+ 'vec2<u32>': ['u32', 2],
51
+ 'vec3<u32>': ['u32', 3],
52
+ 'vec4<u32>': ['u32', 4]
53
+ };
54
+ const TYPE_SIZES = {
55
+ f32: 4,
56
+ f16: 2,
57
+ i32: 4,
58
+ u32: 4
59
+ };
60
+ //# sourceMappingURL=decode-attribute-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-attribute-type.js","names":["decodeShaderAttributeType","attributeType","dataType","components","TYPE_INFO","integer","signed","byteLength","TYPE_SIZES","defaultVertexFormat","getCompatibleVertexFormat","vertexType","f32","f16","i32","u32"],"sources":["../../../src/adapter/type-utils/decode-attribute-type.ts"],"sourcesContent":["// luma.gl, MIT licese\nimport {ShaderDataType, ShaderAttributeType} from '../types/shader-types';\nimport {VertexFormat, VertexType} from '../types/vertex-formats';\n\n/** Information extracted from a ShaderAttributeInfo constant */\nexport type ShaderAttributeTypeInfo = {\n /** WGSL-style primitive data type, f32, i32, u32 */\n dataType: ShaderDataType,\n /** Whether this is a normalized integer (that must be used as float) */\n components: 1 | 2 | 3 | 4;\n /** Length in bytes of the data for one vertex */\n byteLength?: number;\n /** Whether this is for integer or float vert */\n integer: boolean;\n /** Whether this data type is signed */\n signed: boolean;\n /** The simplest vertex format that matches the shader attribute's data type */\n defaultVertexFormat?: VertexFormat;\n};\n\n/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */\nexport function decodeShaderAttributeType(attributeType: ShaderAttributeType): ShaderAttributeTypeInfo {\n const [dataType, components] = TYPE_INFO[attributeType];\n const integer: boolean = dataType === 'i32' || dataType === 'u32';\n const signed: boolean = dataType !== 'u32';\n\n const byteLength = TYPE_SIZES[dataType] * components;\n const defaultVertexFormat = getCompatibleVertexFormat(dataType, components);\n return {\n dataType,\n components,\n defaultVertexFormat,\n byteLength,\n integer,\n signed\n };\n}\n\n/** Get the \"default\" vertex format for a certain shader data type */\nfunction getCompatibleVertexFormat(dataType: ShaderDataType, components: 1 | 2 | 3 | 4): VertexFormat {\n let vertexType: VertexType;\n switch (dataType) {\n case 'f32': vertexType = 'float32'; break;\n case 'i32': vertexType = 'sint32'; break;\n case 'u32': vertexType = 'uint32'; break;\n case 'f16': \n return components <= 2 ? 'float16x2' : 'float16x4';\n }\n // TODO logic does not work for float16\n if (components === 1) {\n return vertexType;\n }\n return `${vertexType}x${components}`;\n}\n\n/** All valid shader attribute types. A table guarantees exhaustive list and fast execution */\nconst TYPE_INFO: Record<ShaderAttributeType, [ShaderDataType, 1 | 2 | 3 | 4]> = {\n f32: ['f32', 1],\n 'vec2<f32>': ['f32', 2],\n 'vec3<f32>': ['f32', 3],\n 'vec4<f32>': ['f32', 4],\n f16: ['f16', 1],\n 'vec2<f16>': ['f16', 2],\n 'vec3<f16>': ['f16', 3],\n 'vec4<f16>': ['f16', 4],\n i32: ['i32', 1],\n 'vec2<i32>': ['i32', 2],\n 'vec3<i32>': ['i32', 3],\n 'vec4<i32>': ['i32', 4],\n u32: ['u32', 1],\n 'vec2<u32>': ['u32', 2],\n 'vec3<u32>': ['u32', 3],\n 'vec4<u32>': ['u32', 4]\n};\n\nconst TYPE_SIZES: Record<ShaderDataType, number> = {\n f32: 4,\n f16: 2,\n i32: 4,\n u32: 4,\n // 'bool-webgl': 4, \n};\n"],"mappings":"AAqBA,OAAO,SAASA,yBAAyBA,CAACC,aAAkC,EAA2B;EACrG,MAAM,CAACC,QAAQ,EAAEC,UAAU,CAAC,GAAGC,SAAS,CAACH,aAAa,CAAC;EACvD,MAAMI,OAAgB,GAAGH,QAAQ,KAAK,KAAK,IAAIA,QAAQ,KAAK,KAAK;EACjE,MAAMI,MAAe,GAAGJ,QAAQ,KAAK,KAAK;EAE1C,MAAMK,UAAU,GAAGC,UAAU,CAACN,QAAQ,CAAC,GAAGC,UAAU;EACpD,MAAMM,mBAAmB,GAAGC,yBAAyB,CAACR,QAAQ,EAAEC,UAAU,CAAC;EAC3E,OAAO;IACLD,QAAQ;IACRC,UAAU;IACVM,mBAAmB;IACnBF,UAAU;IACVF,OAAO;IACPC;EACF,CAAC;AACH;AAGA,SAASI,yBAAyBA,CAACR,QAAwB,EAAEC,UAAyB,EAAgB;EACpG,IAAIQ,UAAsB;EAC1B,QAAQT,QAAQ;IACd,KAAK,KAAK;MAAES,UAAU,GAAG,SAAS;MAAE;IACpC,KAAK,KAAK;MAAEA,UAAU,GAAG,QAAQ;MAAE;IACnC,KAAK,KAAK;MAAEA,UAAU,GAAG,QAAQ;MAAE;IACnC,KAAK,KAAK;MACR,OAAOR,UAAU,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW;EACtD;EAEA,IAAIA,UAAU,KAAK,CAAC,EAAE;IACpB,OAAOQ,UAAU;EACnB;EACA,OAAQ,GAAEA,UAAW,IAAGR,UAAW,EAAC;AACtC;AAGA,MAAMC,SAAuE,GAAG;EAC9EQ,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACf,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvBC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACf,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvBC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACf,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvBC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACf,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,MAAMP,UAA0C,GAAG;EACjDI,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE;AAEP,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { DataType, NormalizedDataType } from '../types/vertex-formats';
2
+ export type DecodedVertexType = {
3
+ /** WebGPU data type */
4
+ dataType: DataType;
5
+ /** Length in bytes of the data for one vertex */
6
+ byteLength: number;
7
+ /** Whether this is for integer or float vert */
8
+ integer: boolean;
9
+ /** Whether this data type is signed */
10
+ signed: boolean;
11
+ /** Whether this is a normalized integer (that must be used as float) */
12
+ normalized: boolean;
13
+ };
14
+ /** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */
15
+ export declare function decodeVertexType(type: NormalizedDataType): DecodedVertexType;
16
+ //# sourceMappingURL=decode-data-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-data-type.d.ts","sourceRoot":"","sources":["../../../src/adapter/type-utils/decode-data-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uBAAuB;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAa5E"}
@@ -0,0 +1,43 @@
1
+ export function decodeVertexType(type) {
2
+ const dataType = TYPE_MAP[type];
3
+ const bytes = getDataTypeBytes(dataType);
4
+ const normalized = type.includes('norm');
5
+ const integer = !normalized && !type.startsWith('float');
6
+ const signed = type.startsWith('s');
7
+ return {
8
+ dataType: TYPE_MAP[type],
9
+ byteLength: bytes,
10
+ integer,
11
+ signed,
12
+ normalized
13
+ };
14
+ }
15
+ function getDataTypeBytes(type) {
16
+ const bytes = TYPE_SIZES[type];
17
+ return bytes;
18
+ }
19
+ const TYPE_MAP = {
20
+ uint8: 'uint8',
21
+ sint8: 'sint8',
22
+ unorm8: 'uint8',
23
+ snorm8: 'sint8',
24
+ uint16: 'uint16',
25
+ sint16: 'sint16',
26
+ unorm16: 'uint16',
27
+ snorm16: 'sint16',
28
+ float16: 'float16',
29
+ float32: 'float32',
30
+ uint32: 'uint32',
31
+ sint32: 'sint32'
32
+ };
33
+ const TYPE_SIZES = {
34
+ uint8: 1,
35
+ sint8: 1,
36
+ uint16: 2,
37
+ sint16: 2,
38
+ float16: 2,
39
+ float32: 4,
40
+ uint32: 4,
41
+ sint32: 4
42
+ };
43
+ //# sourceMappingURL=decode-data-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-data-type.js","names":["decodeVertexType","type","dataType","TYPE_MAP","bytes","getDataTypeBytes","normalized","includes","integer","startsWith","signed","byteLength","TYPE_SIZES","uint8","sint8","unorm8","snorm8","uint16","sint16","unorm16","snorm16","float16","float32","uint32","sint32"],"sources":["../../../src/adapter/type-utils/decode-data-type.ts"],"sourcesContent":["import {DataType, NormalizedDataType} from '../types/vertex-formats';\n\nexport type DecodedVertexType = {\n /** WebGPU data type */\n dataType: DataType,\n /** Length in bytes of the data for one vertex */\n byteLength: number;\n /** Whether this is for integer or float vert */\n integer: boolean;\n /** Whether this data type is signed */\n signed: boolean;\n /** Whether this is a normalized integer (that must be used as float) */\n normalized: boolean;\n};\n\n/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */\nexport function decodeVertexType(type: NormalizedDataType): DecodedVertexType {\n const dataType = TYPE_MAP[type];\n const bytes = getDataTypeBytes(dataType);\n const normalized: boolean = type.includes('norm');\n const integer: boolean = !normalized && !type.startsWith('float');\n const signed: boolean = type.startsWith('s');\n return {\n dataType: TYPE_MAP[type],\n byteLength: bytes,\n integer,\n signed,\n normalized\n };\n}\n\nfunction getDataTypeBytes(type: DataType): number {\n const bytes = TYPE_SIZES[type];\n // assert(bytes);\n return bytes;\n}\n\nconst TYPE_MAP: Record<NormalizedDataType, DataType> = {\n uint8: 'uint8',\n sint8: 'sint8',\n unorm8: 'uint8',\n snorm8: 'sint8',\n uint16: 'uint16',\n sint16: 'sint16',\n unorm16: 'uint16',\n snorm16: 'sint16',\n float16: 'float16',\n float32: 'float32',\n uint32: 'uint32',\n sint32: 'sint32'\n};\n\nconst TYPE_SIZES: Record<DataType, number> = {\n uint8: 1,\n sint8: 1,\n uint16: 2,\n sint16: 2,\n float16: 2,\n float32: 4,\n uint32: 4,\n sint32: 4\n};\n"],"mappings":"AAgBA,OAAO,SAASA,gBAAgBA,CAACC,IAAwB,EAAqB;EAC5E,MAAMC,QAAQ,GAAGC,QAAQ,CAACF,IAAI,CAAC;EAC/B,MAAMG,KAAK,GAAGC,gBAAgB,CAACH,QAAQ,CAAC;EACxC,MAAMI,UAAmB,GAAGL,IAAI,CAACM,QAAQ,CAAC,MAAM,CAAC;EACjD,MAAMC,OAAgB,GAAG,CAACF,UAAU,IAAI,CAACL,IAAI,CAACQ,UAAU,CAAC,OAAO,CAAC;EACjE,MAAMC,MAAe,GAAGT,IAAI,CAACQ,UAAU,CAAC,GAAG,CAAC;EAC5C,OAAO;IACLP,QAAQ,EAAEC,QAAQ,CAACF,IAAI,CAAC;IACxBU,UAAU,EAAEP,KAAK;IACjBI,OAAO;IACPE,MAAM;IACNJ;EACF,CAAC;AACH;AAEA,SAASD,gBAAgBA,CAACJ,IAAc,EAAU;EAChD,MAAMG,KAAK,GAAGQ,UAAU,CAACX,IAAI,CAAC;EAE9B,OAAOG,KAAK;AACd;AAEA,MAAMD,QAA8C,GAAG;EACrDU,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE,OAAO;EACfC,MAAM,EAAE,OAAO;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,QAAQ;EACjBC,OAAO,EAAE,QAAQ;EACjBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMZ,UAAoC,GAAG;EAC3CC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAE,CAAC;EACRG,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTG,OAAO,EAAE,CAAC;EACVC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE;AACV,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ShaderUniformType, ShaderDataType } from '../types/shader-types';
2
+ /** Split a uniform type string into type and components */
3
+ export declare function decodeShaderUniformType(format: ShaderUniformType): {
4
+ type: ShaderDataType;
5
+ components: number;
6
+ };
7
+ /** Align offset to 1, 2 or 4 elements (4, 8 or 16 bytes) */
8
+ export declare function alignTo(size: number, count: number): number;
9
+ //# sourceMappingURL=decode-shader-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-shader-types.d.ts","sourceRoot":"","sources":["../../../src/adapter/type-utils/decode-shader-types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,iBAAiB,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AA2BxE,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAI7G;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3D"}
@@ -0,0 +1,103 @@
1
+ import { assert } from "../../utils/assert.js";
2
+ const UNIFORM_FORMATS = {
3
+ 'f32': {
4
+ type: 'f32',
5
+ components: 1
6
+ },
7
+ 'i32': {
8
+ type: 'i32',
9
+ components: 1
10
+ },
11
+ 'u32': {
12
+ type: 'u32',
13
+ components: 1
14
+ },
15
+ 'vec2<f32>': {
16
+ type: 'f32',
17
+ components: 2
18
+ },
19
+ 'vec3<f32>': {
20
+ type: 'f32',
21
+ components: 3
22
+ },
23
+ 'vec4<f32>': {
24
+ type: 'f32',
25
+ components: 4
26
+ },
27
+ 'vec2<i32>': {
28
+ type: 'i32',
29
+ components: 2
30
+ },
31
+ 'vec3<i32>': {
32
+ type: 'i32',
33
+ components: 3
34
+ },
35
+ 'vec4<i32>': {
36
+ type: 'i32',
37
+ components: 4
38
+ },
39
+ 'vec2<u32>': {
40
+ type: 'u32',
41
+ components: 2
42
+ },
43
+ 'vec3<u32>': {
44
+ type: 'u32',
45
+ components: 3
46
+ },
47
+ 'vec4<u32>': {
48
+ type: 'u32',
49
+ components: 4
50
+ },
51
+ 'mat2x2<f32>': {
52
+ type: 'f32',
53
+ components: 4
54
+ },
55
+ 'mat2x3<f32>': {
56
+ type: 'f32',
57
+ components: 6
58
+ },
59
+ 'mat2x4<f32>': {
60
+ type: 'f32',
61
+ components: 8
62
+ },
63
+ 'mat3x2<f32>': {
64
+ type: 'f32',
65
+ components: 6
66
+ },
67
+ 'mat3x3<f32>': {
68
+ type: 'f32',
69
+ components: 9
70
+ },
71
+ 'mat3x4<f32>': {
72
+ type: 'f32',
73
+ components: 12
74
+ },
75
+ 'mat4x2<f32>': {
76
+ type: 'f32',
77
+ components: 8
78
+ },
79
+ 'mat4x3<f32>': {
80
+ type: 'f32',
81
+ components: 12
82
+ },
83
+ 'mat4x4<f32>': {
84
+ type: 'f32',
85
+ components: 16
86
+ }
87
+ };
88
+ export function decodeShaderUniformType(format) {
89
+ const decoded = UNIFORM_FORMATS[format];
90
+ assert(format);
91
+ return decoded;
92
+ }
93
+ export function alignTo(size, count) {
94
+ switch (count) {
95
+ case 1:
96
+ return size;
97
+ case 2:
98
+ return size + size % 2;
99
+ default:
100
+ return size + (4 - size % 4) % 4;
101
+ }
102
+ }
103
+ //# sourceMappingURL=decode-shader-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-shader-types.js","names":["assert","UNIFORM_FORMATS","type","components","decodeShaderUniformType","format","decoded","alignTo","size","count"],"sources":["../../../src/adapter/type-utils/decode-shader-types.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '../../utils/assert';\nimport {ShaderUniformType, ShaderDataType} from '../types/shader-types';\n\nconst UNIFORM_FORMATS: Record<ShaderUniformType, {type: ShaderDataType, components: number}> = {\n 'f32': {type: 'f32', components: 1},\n 'i32': {type: 'i32', components: 1},\n 'u32': {type: 'u32', components: 1},\n // 'bool-webgl': {type: 'bool-webgl', components: 1},\n 'vec2<f32>': {type: 'f32', components: 2},\n 'vec3<f32>': {type: 'f32', components: 3},\n 'vec4<f32>': {type: 'f32', components: 4},\n 'vec2<i32>': {type: 'i32', components: 2},\n 'vec3<i32>': {type: 'i32', components: 3},\n 'vec4<i32>': {type: 'i32', components: 4},\n 'vec2<u32>': {type: 'u32', components: 2},\n 'vec3<u32>': {type: 'u32', components: 3},\n 'vec4<u32>': {type: 'u32', components: 4},\n 'mat2x2<f32>': {type: 'f32', components: 4},\n 'mat2x3<f32>': {type: 'f32', components: 6},\n 'mat2x4<f32>': {type: 'f32', components: 8},\n 'mat3x2<f32>': {type: 'f32', components: 6},\n 'mat3x3<f32>': {type: 'f32', components: 9},\n 'mat3x4<f32>': {type: 'f32', components: 12},\n 'mat4x2<f32>': {type: 'f32', components: 8},\n 'mat4x3<f32>': {type: 'f32', components: 12},\n 'mat4x4<f32>': {type: 'f32', components: 16},\n};\n\n/** Split a uniform type string into type and components */\nexport function decodeShaderUniformType(format: ShaderUniformType): {type: ShaderDataType, components: number} {\n const decoded = UNIFORM_FORMATS[format];\n assert(format);\n return decoded;\n} \n\n/** Align offset to 1, 2 or 4 elements (4, 8 or 16 bytes) */\nexport function alignTo(size: number, count: number): number {\n // prettier-ignore\n switch (count) {\n case 1: return size; // Pad upwards to even multiple of 2\n case 2: return size + (size % 2); // Pad upwards to even multiple of 2\n default: return size + ((4 - (size % 4)) % 4); // Pad upwards to even multiple of 4\n }\n}\n\n"],"mappings":"SAGQA,MAAM;AAGd,MAAMC,eAAsF,GAAG;EAC7F,KAAK,EAAE;IAACC,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACnC,KAAK,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACnC,KAAK,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAEnC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,WAAW,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EACzC,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAE,CAAC;EAC5C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAE,CAAC;EAC5C,aAAa,EAAE;IAACD,IAAI,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAE;AAC7C,CAAC;AAGD,OAAO,SAASC,uBAAuBA,CAACC,MAAyB,EAA8C;EAC7G,MAAMC,OAAO,GAAGL,eAAe,CAACI,MAAM,CAAC;EACvCL,MAAM,CAACK,MAAM,CAAC;EACd,OAAOC,OAAO;AAChB;AAGA,OAAO,SAASC,OAAOA,CAACC,IAAY,EAAEC,KAAa,EAAU;EAE3D,QAAQA,KAAK;IACX,KAAK,CAAC;MAAE,OAAOD,IAAI;IACnB,KAAK,CAAC;MAAE,OAAOA,IAAI,GAAIA,IAAI,GAAG,CAAE;IAChC;MAAS,OAAOA,IAAI,GAAI,CAAC,CAAC,GAAIA,IAAI,GAAG,CAAE,IAAI,CAAE;EAC/C;AACF"}
@@ -0,0 +1,19 @@
1
+ import { TextureFormat } from '../types/texture-formats';
2
+ import { VertexType } from '../types/vertex-formats';
3
+ export type DecodedTextureFormat = {
4
+ format: 'r' | 'rg' | 'rgb' | 'rgba';
5
+ components: 1 | 2 | 3 | 4;
6
+ dataType?: VertexType;
7
+ srgb: boolean;
8
+ webgl: boolean;
9
+ unsized: boolean;
10
+ byteLength: number;
11
+ integer: boolean;
12
+ signed: boolean;
13
+ normalized: boolean;
14
+ };
15
+ /**
16
+ * Decodes a vertex format, returning type, components, byte length and flags (integer, signed, normalized)
17
+ */
18
+ export declare function decodeTextureFormat(format: TextureFormat): DecodedTextureFormat;
19
+ //# sourceMappingURL=decode-texture-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-texture-format.d.ts","sourceRoot":"","sources":["../../../src/adapter/type-utils/decode-texture-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAKnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,oBAAoB,CAoB/E"}