typegpu 0.11.8 → 0.12.0

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 (362) hide show
  1. package/builtin.d.ts +51 -53
  2. package/builtin.js +30 -34
  3. package/common/fullScreenTriangle.d.ts +2 -10
  4. package/common/fullScreenTriangle.js +20 -28
  5. package/common/index.d.ts +2 -9
  6. package/common/index.js +3 -12
  7. package/common/writeSoA.d.ts +11 -12
  8. package/common/writeSoA.js +88 -76
  9. package/core/buffer/buffer.d.ts +79 -62
  10. package/core/buffer/buffer.js +279 -205
  11. package/core/buffer/bufferBinding.d.ts +71 -0
  12. package/core/buffer/bufferBinding.js +154 -0
  13. package/core/buffer/bufferUsage.d.ts +14 -45
  14. package/core/buffer/bufferUsage.js +1 -171
  15. package/core/buffer/laidOutBuffer.d.ts +25 -0
  16. package/core/buffer/laidOutBuffer.js +55 -0
  17. package/core/commandEncoder/attachments.d.ts +125 -0
  18. package/core/commandEncoder/attachments.js +29 -0
  19. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  20. package/core/commandEncoder/commandEncoder.js +56 -0
  21. package/core/commandEncoder/computePass.d.ts +58 -0
  22. package/core/commandEncoder/computePass.js +63 -0
  23. package/core/commandEncoder/renderPass.d.ts +121 -0
  24. package/core/commandEncoder/renderPass.js +196 -0
  25. package/core/constant/tgpuConstant.d.ts +26 -26
  26. package/core/constant/tgpuConstant.js +76 -65
  27. package/core/declare/tgpuDeclare.d.ts +3 -6
  28. package/core/declare/tgpuDeclare.js +37 -38
  29. package/core/function/autoIO.d.ts +61 -33
  30. package/core/function/autoIO.js +68 -73
  31. package/core/function/comptime.d.ts +11 -13
  32. package/core/function/comptime.js +60 -52
  33. package/core/function/createCallableSchema.d.ts +16 -0
  34. package/core/function/createCallableSchema.js +50 -40
  35. package/core/function/dualImpl.d.ts +44 -0
  36. package/core/function/dualImpl.js +71 -50
  37. package/core/function/entryInputRouter.d.ts +26 -0
  38. package/core/function/entryInputRouter.js +31 -33
  39. package/core/function/extractArgs.d.ts +38 -0
  40. package/core/function/extractArgs.js +202 -200
  41. package/core/function/fnCore.d.ts +44 -0
  42. package/core/function/fnCore.js +148 -92
  43. package/core/function/fnTypes.d.ts +31 -29
  44. package/core/function/fnTypes.js +1 -0
  45. package/core/function/ioSchema.d.ts +12 -10
  46. package/core/function/ioSchema.js +65 -47
  47. package/core/function/shelllessImpl.d.ts +9 -12
  48. package/core/function/shelllessImpl.js +18 -20
  49. package/core/function/templateUtils.d.ts +2 -0
  50. package/core/function/templateUtils.js +9 -8
  51. package/core/function/tgpuComputeFn.d.ts +26 -28
  52. package/core/function/tgpuComputeFn.js +47 -48
  53. package/core/function/tgpuFn.d.ts +34 -37
  54. package/core/function/tgpuFn.js +179 -153
  55. package/core/function/tgpuFragmentFn.d.ts +52 -53
  56. package/core/function/tgpuFragmentFn.js +63 -56
  57. package/core/function/tgpuVertexFn.d.ts +36 -39
  58. package/core/function/tgpuVertexFn.js +56 -53
  59. package/core/pipeline/computePipeline.d.ts +141 -53
  60. package/core/pipeline/computePipeline.js +291 -225
  61. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  62. package/core/pipeline/connectAttachmentToShader.js +25 -22
  63. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  64. package/core/pipeline/connectTargetsToShader.js +29 -27
  65. package/core/pipeline/drawState.d.ts +52 -0
  66. package/core/pipeline/drawState.js +225 -0
  67. package/core/pipeline/limitsOverflow.d.ts +2 -0
  68. package/core/pipeline/limitsOverflow.js +13 -10
  69. package/core/pipeline/performanceTracker.d.ts +14 -0
  70. package/core/pipeline/performanceTracker.js +34 -0
  71. package/core/pipeline/pipelineUtils.d.ts +18 -0
  72. package/core/pipeline/pipelineUtils.js +54 -25
  73. package/core/pipeline/priors.d.ts +1 -0
  74. package/core/pipeline/priors.js +12 -0
  75. package/core/pipeline/renderPipeline.d.ts +246 -261
  76. package/core/pipeline/renderPipeline.js +487 -480
  77. package/core/pipeline/timeable.d.ts +28 -18
  78. package/core/pipeline/timeable.js +90 -52
  79. package/core/pipeline/typeGuards.d.ts +17 -0
  80. package/core/pipeline/typeGuards.js +52 -22
  81. package/core/querySet/querySet.d.ts +26 -21
  82. package/core/querySet/querySet.js +127 -103
  83. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +90 -93
  85. package/core/resolve/externals.d.ts +25 -7
  86. package/core/resolve/externals.js +79 -62
  87. package/core/resolve/namespace.d.ts +22 -25
  88. package/core/resolve/namespace.js +16 -21
  89. package/core/resolve/resolvableString.d.ts +7 -0
  90. package/core/resolve/resolvableString.js +13 -0
  91. package/core/resolve/resolveData.d.ts +10 -0
  92. package/core/resolve/resolveData.js +162 -121
  93. package/core/resolve/stitch.d.ts +8 -0
  94. package/core/resolve/stitch.js +23 -21
  95. package/core/resolve/tgpuResolve.d.ts +55 -53
  96. package/core/resolve/tgpuResolve.js +106 -55
  97. package/core/root/configurableImpl.d.ts +10 -0
  98. package/core/root/configurableImpl.js +17 -19
  99. package/core/root/init.d.ts +76 -38
  100. package/core/root/init.js +346 -454
  101. package/core/root/rootTypes.d.ts +461 -627
  102. package/core/root/rootTypes.js +1 -0
  103. package/core/sampler/sampler.d.ts +50 -31
  104. package/core/sampler/sampler.js +120 -113
  105. package/core/simulate/tgpuSimulate.d.ts +9 -12
  106. package/core/simulate/tgpuSimulate.js +68 -71
  107. package/core/slot/accessor.d.ts +36 -13
  108. package/core/slot/accessor.js +138 -91
  109. package/core/slot/internalSlots.d.ts +2 -0
  110. package/core/slot/internalSlots.js +1 -6
  111. package/core/slot/lazy.d.ts +2 -6
  112. package/core/slot/lazy.js +71 -39
  113. package/core/slot/slot.d.ts +2 -6
  114. package/core/slot/slot.js +45 -38
  115. package/core/slot/slotTypes.d.ts +78 -80
  116. package/core/slot/slotTypes.js +11 -16
  117. package/core/texture/externalTexture.d.ts +20 -11
  118. package/core/texture/externalTexture.js +46 -46
  119. package/core/texture/texture.d.ts +152 -97
  120. package/core/texture/texture.js +407 -314
  121. package/core/texture/textureFormats.d.ts +42 -23
  122. package/core/texture/textureFormats.js +104 -75
  123. package/core/texture/textureProps.d.ts +7 -10
  124. package/core/texture/textureProps.js +1 -0
  125. package/core/texture/textureUtils.d.ts +8 -0
  126. package/core/texture/textureUtils.js +185 -179
  127. package/core/texture/usageExtension.d.ts +21 -18
  128. package/core/texture/usageExtension.js +13 -17
  129. package/core/unroll/tgpuUnroll.d.ts +20 -19
  130. package/core/unroll/tgpuUnroll.js +82 -91
  131. package/core/valueProxyUtils.d.ts +3 -0
  132. package/core/valueProxyUtils.js +52 -41
  133. package/core/variable/tgpuVariable.d.ts +26 -27
  134. package/core/variable/tgpuVariable.js +93 -96
  135. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  136. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  137. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  138. package/core/vertexLayout/vertexAttribute.js +1 -0
  139. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  140. package/core/vertexLayout/vertexLayout.js +130 -99
  141. package/core/whitespaces.d.ts +2 -0
  142. package/core/whitespaces.js +16 -0
  143. package/data/alignIO.d.ts +7 -0
  144. package/data/alignIO.js +13 -13
  145. package/data/alignmentOf.d.ts +5 -8
  146. package/data/alignmentOf.js +90 -75
  147. package/data/array.d.ts +6 -9
  148. package/data/array.js +48 -40
  149. package/data/atomic.d.ts +2 -7
  150. package/data/atomic.js +26 -23
  151. package/data/attributes.d.ts +19 -21
  152. package/data/attributes.js +192 -132
  153. package/data/autoStruct.d.ts +36 -3
  154. package/data/autoStruct.js +84 -81
  155. package/data/compiledIO.d.ts +5 -0
  156. package/data/compiledIO.js +231 -214
  157. package/data/dataIO.d.ts +13 -11
  158. package/data/dataIO.js +643 -589
  159. package/data/dataTypes.d.ts +83 -65
  160. package/data/dataTypes.js +66 -68
  161. package/data/deepEqual.d.ts +2 -7
  162. package/data/deepEqual.js +80 -55
  163. package/data/disarray.d.ts +6 -10
  164. package/data/disarray.js +52 -46
  165. package/data/float16Conversion.d.ts +4 -0
  166. package/data/float16Conversion.js +7 -0
  167. package/data/getLongestContiguousPrefix.d.ts +4 -8
  168. package/data/getLongestContiguousPrefix.js +6 -11
  169. package/data/index.d.ts +30 -31
  170. package/data/index.js +39 -172
  171. package/data/instanceToSchema.d.ts +24 -27
  172. package/data/instanceToSchema.js +1 -0
  173. package/data/isContiguous.d.ts +4 -8
  174. package/data/isContiguous.js +6 -11
  175. package/data/matrix.d.ts +21 -21
  176. package/data/matrix.js +513 -505
  177. package/data/numberOps.d.ts +6 -0
  178. package/data/numberOps.js +26 -20
  179. package/data/numeric.d.ts +21 -12
  180. package/data/numeric.js +287 -192
  181. package/data/offsetUtils.d.ts +9 -13
  182. package/data/offsetUtils.js +204 -144
  183. package/data/offsets.d.ts +8 -0
  184. package/data/offsets.js +33 -33
  185. package/data/partialIO.d.ts +13 -8
  186. package/data/partialIO.js +124 -113
  187. package/data/ptr.d.ts +12 -12
  188. package/data/ptr.js +42 -44
  189. package/data/ref.d.ts +40 -27
  190. package/data/ref.js +125 -95
  191. package/data/sampler.d.ts +99 -101
  192. package/data/sampler.js +17 -21
  193. package/data/schemaCallWrapper.d.ts +19 -0
  194. package/data/schemaCallWrapper.js +31 -26
  195. package/data/schemaMemoryLayout.d.ts +8 -0
  196. package/data/schemaMemoryLayout.js +213 -185
  197. package/data/sizeOf.d.ts +4 -8
  198. package/data/sizeOf.js +6 -11
  199. package/data/snippet.d.ts +96 -20
  200. package/data/snippet.js +75 -86
  201. package/data/struct.d.ts +4 -7
  202. package/data/struct.js +51 -39
  203. package/data/texture.d.ts +253 -250
  204. package/data/texture.js +238 -200
  205. package/data/unstruct.d.ts +2 -7
  206. package/data/unstruct.js +43 -37
  207. package/data/vector.d.ts +33 -21
  208. package/data/vector.js +234 -221
  209. package/data/vectorImpl.d.ts +231 -0
  210. package/data/vectorImpl.js +563 -515
  211. package/data/vectorOps.d.ts +63 -0
  212. package/data/vectorOps.js +642 -630
  213. package/data/vertexFormatData.d.ts +181 -184
  214. package/data/vertexFormatData.js +104 -106
  215. package/data/wgslTypes.d.ts +665 -600
  216. package/data/wgslTypes.js +220 -198
  217. package/errors.d.ts +50 -24
  218. package/errors.js +146 -120
  219. package/execMode.d.ts +16 -0
  220. package/execMode.js +47 -40
  221. package/extension.d.ts +13 -8
  222. package/extension.js +10 -16
  223. package/getGPUValue.d.ts +1 -0
  224. package/getGPUValue.js +2 -7
  225. package/index.d.ts +28 -68
  226. package/index.js +8 -28
  227. package/indexNamedExports.d.ts +69 -42
  228. package/indexNamedExports.js +25 -0
  229. package/internal.d.ts +16 -0
  230. package/internal.js +12 -0
  231. package/mathUtils.d.ts +5 -0
  232. package/mathUtils.js +7 -11
  233. package/memo.d.ts +11 -0
  234. package/memo.js +20 -22
  235. package/minify.d.ts +5 -0
  236. package/minify.js +93 -0
  237. package/nameUtils.d.ts +29 -0
  238. package/nameUtils.js +428 -398
  239. package/package.json +9 -3
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -624
  242. package/serial/registry.d.ts +15 -0
  243. package/serial/registry.js +106 -0
  244. package/serial/restore.d.ts +49 -0
  245. package/serial/restore.js +68 -0
  246. package/serial/schema.d.ts +58 -0
  247. package/serial/schema.js +209 -0
  248. package/serial/types.d.ts +5 -0
  249. package/serial/types.js +1 -0
  250. package/shared/env.d.ts +9 -0
  251. package/shared/env.js +9 -12
  252. package/shared/generators.d.ts +4 -0
  253. package/shared/generators.js +10 -12
  254. package/shared/meta.d.ts +29 -14
  255. package/shared/meta.js +71 -55
  256. package/shared/normalizeMetadata.d.ts +32 -27
  257. package/shared/normalizeMetadata.js +23 -36
  258. package/shared/repr.d.ts +73 -55
  259. package/shared/repr.js +1 -0
  260. package/shared/soul.d.ts +17 -0
  261. package/shared/soul.js +1 -0
  262. package/shared/stringify.d.ts +2 -0
  263. package/shared/stringify.js +29 -20
  264. package/shared/symbols.d.ts +26 -20
  265. package/shared/symbols.js +79 -79
  266. package/shared/tseynit.d.ts +2 -0
  267. package/shared/tseynit.js +160 -75
  268. package/shared/utilityTypes.d.ts +30 -14
  269. package/shared/utilityTypes.js +2 -6
  270. package/shared/vertexFormat.d.ts +41 -43
  271. package/shared/vertexFormat.js +59 -62
  272. package/std/array.d.ts +2 -7
  273. package/std/array.js +18 -23
  274. package/std/atomic.d.ts +14 -18
  275. package/std/atomic.js +96 -95
  276. package/std/bitcast.d.ts +193 -10
  277. package/std/bitcast.js +309 -39
  278. package/std/boolean.d.ts +19 -33
  279. package/std/boolean.js +296 -288
  280. package/std/copy.d.ts +2 -7
  281. package/std/copy.js +27 -24
  282. package/std/derivative.d.ts +11 -15
  283. package/std/derivative.js +56 -79
  284. package/std/discard.d.ts +1 -6
  285. package/std/discard.js +7 -14
  286. package/std/environment.d.ts +19 -14
  287. package/std/environment.js +71 -51
  288. package/std/extensions.d.ts +2 -8
  289. package/std/extensions.js +10 -11
  290. package/std/index.d.ts +20 -24
  291. package/std/index.js +32 -187
  292. package/std/matrix.d.ts +6 -12
  293. package/std/matrix.js +60 -69
  294. package/std/numeric.d.ts +143 -146
  295. package/std/numeric.js +858 -749
  296. package/std/operators.d.ts +19 -27
  297. package/std/operators.js +227 -193
  298. package/std/packing.d.ts +5 -11
  299. package/std/packing.js +67 -75
  300. package/std/range.d.ts +6 -11
  301. package/std/range.js +48 -36
  302. package/std/subgroup.d.ts +33 -37
  303. package/std/subgroup.js +180 -217
  304. package/std/texture.d.ts +70 -38
  305. package/std/texture.js +176 -172
  306. package/taskQueue.d.ts +6 -0
  307. package/taskQueue.js +30 -0
  308. package/tgpu.d.ts +16 -0
  309. package/tgpu.js +17 -44
  310. package/tgpuBindGroupLayout.d.ts +132 -152
  311. package/tgpuBindGroupLayout.js +346 -268
  312. package/tgpuLogger.d.ts +34 -0
  313. package/tgpuLogger.js +63 -0
  314. package/tgpuUnstable.d.ts +16 -22
  315. package/tgpuUnstable.js +13 -35
  316. package/tgsl/accessIndex.d.ts +2 -0
  317. package/tgsl/accessIndex.js +76 -33
  318. package/tgsl/accessProp.d.ts +2 -0
  319. package/tgsl/accessProp.js +142 -100
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +18 -0
  322. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  323. package/tgsl/consoleLog/deserializers.js +119 -103
  324. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  325. package/tgsl/consoleLog/logGenerator.js +85 -80
  326. package/tgsl/consoleLog/serializers.d.ts +21 -0
  327. package/tgsl/consoleLog/serializers.js +119 -100
  328. package/tgsl/consoleLog/types.d.ts +40 -39
  329. package/tgsl/consoleLog/types.js +1 -0
  330. package/tgsl/conversion.d.ts +33 -0
  331. package/tgsl/conversion.js +272 -193
  332. package/tgsl/forOfUtils.d.ts +15 -0
  333. package/tgsl/forOfUtils.js +85 -70
  334. package/tgsl/generationHelpers.d.ts +22 -39
  335. package/tgsl/generationHelpers.js +85 -58
  336. package/tgsl/infixDispatch.d.ts +70 -0
  337. package/tgsl/infixDispatch.js +48 -46
  338. package/tgsl/jsPolyfills.d.ts +16 -19
  339. package/tgsl/jsPolyfills.js +44 -42
  340. package/tgsl/makeDereferenceable.d.ts +48 -0
  341. package/tgsl/makeDereferenceable.js +86 -0
  342. package/tgsl/makeResolvable.d.ts +22 -0
  343. package/tgsl/makeResolvable.js +33 -0
  344. package/tgsl/shaderGenerator.d.ts +77 -17
  345. package/tgsl/shaderGenerator.js +1 -0
  346. package/tgsl/shellless.d.ts +6 -9
  347. package/tgsl/shellless.js +73 -43
  348. package/tgsl/wgslGenerator.d.ts +66 -59
  349. package/tgsl/wgslGenerator.js +1344 -747
  350. package/types.d.ts +287 -221
  351. package/types.js +61 -44
  352. package/unwrapper.d.ts +31 -26
  353. package/unwrapper.js +1 -0
  354. package/wgslExtensions.d.ts +3 -5
  355. package/wgslExtensions.js +12 -16
  356. package/_virtual/rolldown_runtime.js +0 -13
  357. package/core/buffer/bufferShorthand.d.ts +0 -50
  358. package/core/buffer/bufferShorthand.js +0 -55
  359. package/core/pipeline/applyPipelineState.js +0 -37
  360. package/package.js +0 -5
  361. package/tgsl/shaderGenerator_members.d.ts +0 -33
  362. package/tgsl/shaderGenerator_members.js +0 -12
package/data/vector.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- import { Vec2b, Vec2f, Vec2h, Vec2i, Vec2u, Vec3b, Vec3f, Vec3h, Vec3i, Vec3u, Vec4b, Vec4f, Vec4h, Vec4i, Vec4u } from "./wgslTypes.js";
2
-
3
- //#region src/data/vector.d.ts
4
-
1
+ import type { Vec2b, Vec2f, Vec2h, Vec2i, Vec2u, Vec3b, Vec3f, Vec3h, Vec3i, Vec3u, Vec4b, Vec4f, Vec4h, Vec4i, Vec4u } from './wgslTypes.ts';
5
2
  /**
6
3
  * Schema representing vec2f - a vector with 2 elements of type f32.
7
4
  * Also a constructor function for this vector value.
@@ -14,7 +11,7 @@ import { Vec2b, Vec2f, Vec2h, Vec2i, Vec2u, Vec3b, Vec3f, Vec3h, Vec3i, Vec3u, V
14
11
  * @example
15
12
  * const buffer = root.createBuffer(d.vec2f, d.vec2f(0, 1)); // buffer holding a d.vec2f value, with an initial value of vec2f(0, 1);
16
13
  */
17
- declare const vec2f: Vec2f;
14
+ export declare const vec2f: Vec2f;
18
15
  /**
19
16
  * Schema representing vec2h - a vector with 2 elements of type f16.
20
17
  * Also a constructor function for this vector value.
@@ -27,7 +24,7 @@ declare const vec2f: Vec2f;
27
24
  * @example
28
25
  * const buffer = root.createBuffer(d.vec2h, d.vec2h(0, 1)); // buffer holding a d.vec2h value, with an initial value of vec2h(0, 1);
29
26
  */
30
- declare const vec2h: Vec2h;
27
+ export declare const vec2h: Vec2h;
31
28
  /**
32
29
  * Schema representing vec2i - a vector with 2 elements of type i32.
33
30
  * Also a constructor function for this vector value.
@@ -40,7 +37,7 @@ declare const vec2h: Vec2h;
40
37
  * @example
41
38
  * const buffer = root.createBuffer(d.vec2i, d.vec2i(0, 1)); // buffer holding a d.vec2i value, with an initial value of vec2i(0, 1);
42
39
  */
43
- declare const vec2i: Vec2i;
40
+ export declare const vec2i: Vec2i;
44
41
  /**
45
42
  * Schema representing vec2u - a vector with 2 elements of type u32.
46
43
  * Also a constructor function for this vector value.
@@ -53,7 +50,7 @@ declare const vec2i: Vec2i;
53
50
  * @example
54
51
  * const buffer = root.createBuffer(d.vec2u, d.vec2u(0, 1)); // buffer holding a d.vec2u value, with an initial value of vec2u(0, 1);
55
52
  */
56
- declare const vec2u: Vec2u;
53
+ export declare const vec2u: Vec2u;
57
54
  /**
58
55
  * Schema representing `vec2<bool>` - a vector with 2 elements of type `bool`.
59
56
  * Also a constructor function for this vector value.
@@ -63,7 +60,7 @@ declare const vec2u: Vec2u;
63
60
  * const vector = d.vec2b(true); // (true, true)
64
61
  * const vector = d.vec2b(false, true); // (false, true)
65
62
  */
66
- declare const vec2b: Vec2b;
63
+ export declare const vec2b: Vec2b;
67
64
  /**
68
65
  * Schema representing vec3f - a vector with 3 elements of type f32.
69
66
  * Also a constructor function for this vector value.
@@ -76,7 +73,7 @@ declare const vec2b: Vec2b;
76
73
  * @example
77
74
  * const buffer = root.createBuffer(d.vec3f, d.vec3f(0, 1, 2)); // buffer holding a d.vec3f value, with an initial value of vec3f(0, 1, 2);
78
75
  */
79
- declare const vec3f: Vec3f;
76
+ export declare const vec3f: Vec3f;
80
77
  /**
81
78
  * Schema representing vec3h - a vector with 3 elements of type f16.
82
79
  * Also a constructor function for this vector value.
@@ -89,7 +86,7 @@ declare const vec3f: Vec3f;
89
86
  * @example
90
87
  * const buffer = root.createBuffer(d.vec3h, d.vec3h(0, 1, 2)); // buffer holding a d.vec3h value, with an initial value of vec3h(0, 1, 2);
91
88
  */
92
- declare const vec3h: Vec3h;
89
+ export declare const vec3h: Vec3h;
93
90
  /**
94
91
  * Schema representing vec3i - a vector with 3 elements of type i32.
95
92
  * Also a constructor function for this vector value.
@@ -102,7 +99,7 @@ declare const vec3h: Vec3h;
102
99
  * @example
103
100
  * const buffer = root.createBuffer(d.vec3i, d.vec3i(0, 1, 2)); // buffer holding a d.vec3i value, with an initial value of vec3i(0, 1, 2);
104
101
  */
105
- declare const vec3i: Vec3i;
102
+ export declare const vec3i: Vec3i;
106
103
  /**
107
104
  * Schema representing vec3u - a vector with 3 elements of type u32.
108
105
  * Also a constructor function for this vector value.
@@ -115,7 +112,7 @@ declare const vec3i: Vec3i;
115
112
  * @example
116
113
  * const buffer = root.createBuffer(d.vec3u, d.vec3u(0, 1, 2)); // buffer holding a d.vec3u value, with an initial value of vec3u(0, 1, 2);
117
114
  */
118
- declare const vec3u: Vec3u;
115
+ export declare const vec3u: Vec3u;
119
116
  /**
120
117
  * Schema representing `vec3<bool>` - a vector with 3 elements of type `bool`.
121
118
  * Also a constructor function for this vector value.
@@ -125,7 +122,7 @@ declare const vec3u: Vec3u;
125
122
  * const vector = d.vec3b(true); // (true, true, true)
126
123
  * const vector = d.vec3b(false, true, false); // (false, true, false)
127
124
  */
128
- declare const vec3b: Vec3b;
125
+ export declare const vec3b: Vec3b;
129
126
  /**
130
127
  * Schema representing vec4f - a vector with 4 elements of type f32.
131
128
  * Also a constructor function for this vector value.
@@ -138,7 +135,7 @@ declare const vec3b: Vec3b;
138
135
  * @example
139
136
  * const buffer = root.createBuffer(d.vec4f, d.vec4f(0, 1, 2, 3)); // buffer holding a d.vec4f value, with an initial value of vec4f(0, 1, 2, 3);
140
137
  */
141
- declare const vec4f: Vec4f;
138
+ export declare const vec4f: Vec4f;
142
139
  /**
143
140
  * Schema representing vec4h - a vector with 4 elements of type f16.
144
141
  * Also a constructor function for this vector value.
@@ -151,7 +148,7 @@ declare const vec4f: Vec4f;
151
148
  * @example
152
149
  * const buffer = root.createBuffer(d.vec4h, d.vec4h(0, 1, 2, 3)); // buffer holding a d.vec4h value, with an initial value of vec4h(0, 1, 2, 3);
153
150
  */
154
- declare const vec4h: Vec4h;
151
+ export declare const vec4h: Vec4h;
155
152
  /**
156
153
  * Schema representing vec4i - a vector with 4 elements of type i32.
157
154
  * Also a constructor function for this vector value.
@@ -164,7 +161,7 @@ declare const vec4h: Vec4h;
164
161
  * @example
165
162
  * const buffer = root.createBuffer(d.vec4i, d.vec4i(0, 1, 2, 3)); // buffer holding a d.vec4i value, with an initial value of vec4i(0, 1, 2, 3);
166
163
  */
167
- declare const vec4i: Vec4i;
164
+ export declare const vec4i: Vec4i;
168
165
  /**
169
166
  * Schema representing vec4u - a vector with 4 elements of type u32.
170
167
  * Also a constructor function for this vector value.
@@ -177,7 +174,7 @@ declare const vec4i: Vec4i;
177
174
  * @example
178
175
  * const buffer = root.createBuffer(d.vec4u, d.vec4u(0, 1, 2, 3)); // buffer holding a d.vec4u value, with an initial value of vec4u(0, 1, 2, 3);
179
176
  */
180
- declare const vec4u: Vec4u;
177
+ export declare const vec4u: Vec4u;
181
178
  /**
182
179
  * Schema representing `vec4<bool>` - a vector with 4 elements of type `bool`.
183
180
  * Also a constructor function for this vector value.
@@ -187,6 +184,21 @@ declare const vec4u: Vec4u;
187
184
  * const vector = d.vec4b(true); // (true, true, true, true)
188
185
  * const vector = d.vec4b(false, true, false, true); // (false, true, false, true)
189
186
  */
190
- declare const vec4b: Vec4b;
191
- //#endregion
192
- export { vec2b, vec2f, vec2h, vec2i, vec2u, vec3b, vec3f, vec3h, vec3i, vec3u, vec4b, vec4f, vec4h, vec4i, vec4u };
187
+ export declare const vec4b: Vec4b;
188
+ export declare const vecTypeToConstructor: {
189
+ readonly vec2f: Vec2f;
190
+ readonly vec2h: Vec2h;
191
+ readonly vec2i: Vec2i;
192
+ readonly vec2u: Vec2u;
193
+ readonly 'vec2<bool>': Vec2b;
194
+ readonly vec3f: Vec3f;
195
+ readonly vec3h: Vec3h;
196
+ readonly vec3i: Vec3i;
197
+ readonly vec3u: Vec3u;
198
+ readonly 'vec3<bool>': Vec3b;
199
+ readonly vec4f: Vec4f;
200
+ readonly vec4h: Vec4h;
201
+ readonly vec4i: Vec4i;
202
+ readonly vec4u: Vec4u;
203
+ readonly 'vec4<bool>': Vec4b;
204
+ };
package/data/vector.js CHANGED
@@ -1,241 +1,254 @@
1
- import { $internal, $repr } from "../shared/symbols.js";
2
- import { isVec } from "./wgslTypes.js";
3
1
  import { callableSchema } from "../core/function/createCallableSchema.js";
2
+ import { $internal, $repr } from "../shared/symbols.js";
4
3
  import { bool, f16, f32, i32, u32 } from "./numeric.js";
5
- import { Vec2bImpl, Vec2fImpl, Vec2hImpl, Vec2iImpl, Vec2uImpl, Vec3bImpl, Vec3fImpl, Vec3hImpl, Vec3iImpl, Vec3uImpl, Vec4bImpl, Vec4fImpl, Vec4hImpl, Vec4iImpl, Vec4uImpl } from "./vectorImpl.js";
6
-
7
- //#region src/data/vector.ts
4
+ import { Vec2bImpl, Vec2fImpl, Vec2hImpl, Vec2iImpl, Vec2uImpl, Vec3bImpl, Vec3fImpl, Vec3hImpl, Vec3iImpl, Vec3uImpl, Vec4bImpl, Vec4fImpl, Vec4hImpl, Vec4iImpl, Vec4uImpl, } from "./vectorImpl.js";
5
+ import { isVec } from "./wgslTypes.js";
6
+ // ----------
7
+ // Public API
8
+ // ----------
8
9
  /**
9
- * Schema representing vec2f - a vector with 2 elements of type f32.
10
- * Also a constructor function for this vector value.
11
- *
12
- * @example
13
- * const vector = d.vec2f(); // (0.0, 0.0)
14
- * const vector = d.vec2f(1); // (1.0, 1.0)
15
- * const vector = d.vec2f(0.5, 0.1); // (0.5, 0.1)
16
- *
17
- * @example
18
- * const buffer = root.createBuffer(d.vec2f, d.vec2f(0, 1)); // buffer holding a d.vec2f value, with an initial value of vec2f(0, 1);
19
- */
20
- const vec2f = makeVecSchema(Vec2fImpl, f32);
10
+ * Schema representing vec2f - a vector with 2 elements of type f32.
11
+ * Also a constructor function for this vector value.
12
+ *
13
+ * @example
14
+ * const vector = d.vec2f(); // (0.0, 0.0)
15
+ * const vector = d.vec2f(1); // (1.0, 1.0)
16
+ * const vector = d.vec2f(0.5, 0.1); // (0.5, 0.1)
17
+ *
18
+ * @example
19
+ * const buffer = root.createBuffer(d.vec2f, d.vec2f(0, 1)); // buffer holding a d.vec2f value, with an initial value of vec2f(0, 1);
20
+ */
21
+ export const vec2f = makeVecSchema(Vec2fImpl, f32);
21
22
  /**
22
- * Schema representing vec2h - a vector with 2 elements of type f16.
23
- * Also a constructor function for this vector value.
24
- *
25
- * @example
26
- * const vector = d.vec2h(); // (0.0, 0.0)
27
- * const vector = d.vec2h(1); // (1.0, 1.0)
28
- * const vector = d.vec2h(0.5, 0.1); // (0.5, 0.1)
29
- *
30
- * @example
31
- * const buffer = root.createBuffer(d.vec2h, d.vec2h(0, 1)); // buffer holding a d.vec2h value, with an initial value of vec2h(0, 1);
32
- */
33
- const vec2h = makeVecSchema(Vec2hImpl, f16);
23
+ * Schema representing vec2h - a vector with 2 elements of type f16.
24
+ * Also a constructor function for this vector value.
25
+ *
26
+ * @example
27
+ * const vector = d.vec2h(); // (0.0, 0.0)
28
+ * const vector = d.vec2h(1); // (1.0, 1.0)
29
+ * const vector = d.vec2h(0.5, 0.1); // (0.5, 0.1)
30
+ *
31
+ * @example
32
+ * const buffer = root.createBuffer(d.vec2h, d.vec2h(0, 1)); // buffer holding a d.vec2h value, with an initial value of vec2h(0, 1);
33
+ */
34
+ export const vec2h = makeVecSchema(Vec2hImpl, f16);
34
35
  /**
35
- * Schema representing vec2i - a vector with 2 elements of type i32.
36
- * Also a constructor function for this vector value.
37
- *
38
- * @example
39
- * const vector = d.vec2i(); // (0, 0)
40
- * const vector = d.vec2i(1); // (1, 1)
41
- * const vector = d.vec2i(-1, 1); // (-1, 1)
42
- *
43
- * @example
44
- * const buffer = root.createBuffer(d.vec2i, d.vec2i(0, 1)); // buffer holding a d.vec2i value, with an initial value of vec2i(0, 1);
45
- */
46
- const vec2i = makeVecSchema(Vec2iImpl, i32);
36
+ * Schema representing vec2i - a vector with 2 elements of type i32.
37
+ * Also a constructor function for this vector value.
38
+ *
39
+ * @example
40
+ * const vector = d.vec2i(); // (0, 0)
41
+ * const vector = d.vec2i(1); // (1, 1)
42
+ * const vector = d.vec2i(-1, 1); // (-1, 1)
43
+ *
44
+ * @example
45
+ * const buffer = root.createBuffer(d.vec2i, d.vec2i(0, 1)); // buffer holding a d.vec2i value, with an initial value of vec2i(0, 1);
46
+ */
47
+ export const vec2i = makeVecSchema(Vec2iImpl, i32);
47
48
  /**
48
- * Schema representing vec2u - a vector with 2 elements of type u32.
49
- * Also a constructor function for this vector value.
50
- *
51
- * @example
52
- * const vector = d.vec2u(); // (0, 0)
53
- * const vector = d.vec2u(1); // (1, 1)
54
- * const vector = d.vec2u(1, 2); // (1, 2)
55
- *
56
- * @example
57
- * const buffer = root.createBuffer(d.vec2u, d.vec2u(0, 1)); // buffer holding a d.vec2u value, with an initial value of vec2u(0, 1);
58
- */
59
- const vec2u = makeVecSchema(Vec2uImpl, u32);
49
+ * Schema representing vec2u - a vector with 2 elements of type u32.
50
+ * Also a constructor function for this vector value.
51
+ *
52
+ * @example
53
+ * const vector = d.vec2u(); // (0, 0)
54
+ * const vector = d.vec2u(1); // (1, 1)
55
+ * const vector = d.vec2u(1, 2); // (1, 2)
56
+ *
57
+ * @example
58
+ * const buffer = root.createBuffer(d.vec2u, d.vec2u(0, 1)); // buffer holding a d.vec2u value, with an initial value of vec2u(0, 1);
59
+ */
60
+ export const vec2u = makeVecSchema(Vec2uImpl, u32);
60
61
  /**
61
- * Schema representing `vec2<bool>` - a vector with 2 elements of type `bool`.
62
- * Also a constructor function for this vector value.
63
- *
64
- * @example
65
- * const vector = d.vec2b(); // (false, false)
66
- * const vector = d.vec2b(true); // (true, true)
67
- * const vector = d.vec2b(false, true); // (false, true)
68
- */
69
- const vec2b = makeVecSchema(Vec2bImpl, bool);
62
+ * Schema representing `vec2<bool>` - a vector with 2 elements of type `bool`.
63
+ * Also a constructor function for this vector value.
64
+ *
65
+ * @example
66
+ * const vector = d.vec2b(); // (false, false)
67
+ * const vector = d.vec2b(true); // (true, true)
68
+ * const vector = d.vec2b(false, true); // (false, true)
69
+ */
70
+ export const vec2b = makeVecSchema(Vec2bImpl, bool);
70
71
  /**
71
- * Schema representing vec3f - a vector with 3 elements of type f32.
72
- * Also a constructor function for this vector value.
73
- *
74
- * @example
75
- * const vector = d.vec3f(); // (0.0, 0.0, 0.0)
76
- * const vector = d.vec3f(1); // (1.0, 1.0, 1.0)
77
- * const vector = d.vec3f(1, 2, 3.5); // (1.0, 2.0, 3.5)
78
- *
79
- * @example
80
- * const buffer = root.createBuffer(d.vec3f, d.vec3f(0, 1, 2)); // buffer holding a d.vec3f value, with an initial value of vec3f(0, 1, 2);
81
- */
82
- const vec3f = makeVecSchema(Vec3fImpl, f32);
72
+ * Schema representing vec3f - a vector with 3 elements of type f32.
73
+ * Also a constructor function for this vector value.
74
+ *
75
+ * @example
76
+ * const vector = d.vec3f(); // (0.0, 0.0, 0.0)
77
+ * const vector = d.vec3f(1); // (1.0, 1.0, 1.0)
78
+ * const vector = d.vec3f(1, 2, 3.5); // (1.0, 2.0, 3.5)
79
+ *
80
+ * @example
81
+ * const buffer = root.createBuffer(d.vec3f, d.vec3f(0, 1, 2)); // buffer holding a d.vec3f value, with an initial value of vec3f(0, 1, 2);
82
+ */
83
+ export const vec3f = makeVecSchema(Vec3fImpl, f32);
83
84
  /**
84
- * Schema representing vec3h - a vector with 3 elements of type f16.
85
- * Also a constructor function for this vector value.
86
- *
87
- * @example
88
- * const vector = d.vec3h(); // (0.0, 0.0, 0.0)
89
- * const vector = d.vec3h(1); // (1.0, 1.0, 1.0)
90
- * const vector = d.vec3h(1, 2, 3.5); // (1.0, 2.0, 3.5)
91
- *
92
- * @example
93
- * const buffer = root.createBuffer(d.vec3h, d.vec3h(0, 1, 2)); // buffer holding a d.vec3h value, with an initial value of vec3h(0, 1, 2);
94
- */
95
- const vec3h = makeVecSchema(Vec3hImpl, f16);
85
+ * Schema representing vec3h - a vector with 3 elements of type f16.
86
+ * Also a constructor function for this vector value.
87
+ *
88
+ * @example
89
+ * const vector = d.vec3h(); // (0.0, 0.0, 0.0)
90
+ * const vector = d.vec3h(1); // (1.0, 1.0, 1.0)
91
+ * const vector = d.vec3h(1, 2, 3.5); // (1.0, 2.0, 3.5)
92
+ *
93
+ * @example
94
+ * const buffer = root.createBuffer(d.vec3h, d.vec3h(0, 1, 2)); // buffer holding a d.vec3h value, with an initial value of vec3h(0, 1, 2);
95
+ */
96
+ export const vec3h = makeVecSchema(Vec3hImpl, f16);
96
97
  /**
97
- * Schema representing vec3i - a vector with 3 elements of type i32.
98
- * Also a constructor function for this vector value.
99
- *
100
- * @example
101
- * const vector = d.vec3i(); // (0, 0, 0)
102
- * const vector = d.vec3i(1); // (1, 1, 1)
103
- * const vector = d.vec3i(1, 2, -3); // (1, 2, -3)
104
- *
105
- * @example
106
- * const buffer = root.createBuffer(d.vec3i, d.vec3i(0, 1, 2)); // buffer holding a d.vec3i value, with an initial value of vec3i(0, 1, 2);
107
- */
108
- const vec3i = makeVecSchema(Vec3iImpl, i32);
98
+ * Schema representing vec3i - a vector with 3 elements of type i32.
99
+ * Also a constructor function for this vector value.
100
+ *
101
+ * @example
102
+ * const vector = d.vec3i(); // (0, 0, 0)
103
+ * const vector = d.vec3i(1); // (1, 1, 1)
104
+ * const vector = d.vec3i(1, 2, -3); // (1, 2, -3)
105
+ *
106
+ * @example
107
+ * const buffer = root.createBuffer(d.vec3i, d.vec3i(0, 1, 2)); // buffer holding a d.vec3i value, with an initial value of vec3i(0, 1, 2);
108
+ */
109
+ export const vec3i = makeVecSchema(Vec3iImpl, i32);
109
110
  /**
110
- * Schema representing vec3u - a vector with 3 elements of type u32.
111
- * Also a constructor function for this vector value.
112
- *
113
- * @example
114
- * const vector = d.vec3u(); // (0, 0, 0)
115
- * const vector = d.vec3u(1); // (1, 1, 1)
116
- * const vector = d.vec3u(1, 2, 3); // (1, 2, 3)
117
- *
118
- * @example
119
- * const buffer = root.createBuffer(d.vec3u, d.vec3u(0, 1, 2)); // buffer holding a d.vec3u value, with an initial value of vec3u(0, 1, 2);
120
- */
121
- const vec3u = makeVecSchema(Vec3uImpl, u32);
111
+ * Schema representing vec3u - a vector with 3 elements of type u32.
112
+ * Also a constructor function for this vector value.
113
+ *
114
+ * @example
115
+ * const vector = d.vec3u(); // (0, 0, 0)
116
+ * const vector = d.vec3u(1); // (1, 1, 1)
117
+ * const vector = d.vec3u(1, 2, 3); // (1, 2, 3)
118
+ *
119
+ * @example
120
+ * const buffer = root.createBuffer(d.vec3u, d.vec3u(0, 1, 2)); // buffer holding a d.vec3u value, with an initial value of vec3u(0, 1, 2);
121
+ */
122
+ export const vec3u = makeVecSchema(Vec3uImpl, u32);
122
123
  /**
123
- * Schema representing `vec3<bool>` - a vector with 3 elements of type `bool`.
124
- * Also a constructor function for this vector value.
125
- *
126
- * @example
127
- * const vector = d.vec3b(); // (false, false, false)
128
- * const vector = d.vec3b(true); // (true, true, true)
129
- * const vector = d.vec3b(false, true, false); // (false, true, false)
130
- */
131
- const vec3b = makeVecSchema(Vec3bImpl, bool);
124
+ * Schema representing `vec3<bool>` - a vector with 3 elements of type `bool`.
125
+ * Also a constructor function for this vector value.
126
+ *
127
+ * @example
128
+ * const vector = d.vec3b(); // (false, false, false)
129
+ * const vector = d.vec3b(true); // (true, true, true)
130
+ * const vector = d.vec3b(false, true, false); // (false, true, false)
131
+ */
132
+ export const vec3b = makeVecSchema(Vec3bImpl, bool);
132
133
  /**
133
- * Schema representing vec4f - a vector with 4 elements of type f32.
134
- * Also a constructor function for this vector value.
135
- *
136
- * @example
137
- * const vector = d.vec4f(); // (0.0, 0.0, 0.0, 0.0)
138
- * const vector = d.vec4f(1); // (1.0, 1.0, 1.0, 1.0)
139
- * const vector = d.vec4f(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)
140
- *
141
- * @example
142
- * const buffer = root.createBuffer(d.vec4f, d.vec4f(0, 1, 2, 3)); // buffer holding a d.vec4f value, with an initial value of vec4f(0, 1, 2, 3);
143
- */
144
- const vec4f = makeVecSchema(Vec4fImpl, f32);
134
+ * Schema representing vec4f - a vector with 4 elements of type f32.
135
+ * Also a constructor function for this vector value.
136
+ *
137
+ * @example
138
+ * const vector = d.vec4f(); // (0.0, 0.0, 0.0, 0.0)
139
+ * const vector = d.vec4f(1); // (1.0, 1.0, 1.0, 1.0)
140
+ * const vector = d.vec4f(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)
141
+ *
142
+ * @example
143
+ * const buffer = root.createBuffer(d.vec4f, d.vec4f(0, 1, 2, 3)); // buffer holding a d.vec4f value, with an initial value of vec4f(0, 1, 2, 3);
144
+ */
145
+ export const vec4f = makeVecSchema(Vec4fImpl, f32);
145
146
  /**
146
- * Schema representing vec4h - a vector with 4 elements of type f16.
147
- * Also a constructor function for this vector value.
148
- *
149
- * @example
150
- * const vector = d.vec4h(); // (0.0, 0.0, 0.0, 0.0)
151
- * const vector = d.vec4h(1); // (1.0, 1.0, 1.0, 1.0)
152
- * const vector = d.vec4h(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)
153
- *
154
- * @example
155
- * const buffer = root.createBuffer(d.vec4h, d.vec4h(0, 1, 2, 3)); // buffer holding a d.vec4h value, with an initial value of vec4h(0, 1, 2, 3);
156
- */
157
- const vec4h = makeVecSchema(Vec4hImpl, f16);
147
+ * Schema representing vec4h - a vector with 4 elements of type f16.
148
+ * Also a constructor function for this vector value.
149
+ *
150
+ * @example
151
+ * const vector = d.vec4h(); // (0.0, 0.0, 0.0, 0.0)
152
+ * const vector = d.vec4h(1); // (1.0, 1.0, 1.0, 1.0)
153
+ * const vector = d.vec4h(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)
154
+ *
155
+ * @example
156
+ * const buffer = root.createBuffer(d.vec4h, d.vec4h(0, 1, 2, 3)); // buffer holding a d.vec4h value, with an initial value of vec4h(0, 1, 2, 3);
157
+ */
158
+ export const vec4h = makeVecSchema(Vec4hImpl, f16);
158
159
  /**
159
- * Schema representing vec4i - a vector with 4 elements of type i32.
160
- * Also a constructor function for this vector value.
161
- *
162
- * @example
163
- * const vector = d.vec4i(); // (0, 0, 0, 0)
164
- * const vector = d.vec4i(1); // (1, 1, 1, 1)
165
- * const vector = d.vec4i(1, 2, 3, -4); // (1, 2, 3, -4)
166
- *
167
- * @example
168
- * const buffer = root.createBuffer(d.vec4i, d.vec4i(0, 1, 2, 3)); // buffer holding a d.vec4i value, with an initial value of vec4i(0, 1, 2, 3);
169
- */
170
- const vec4i = makeVecSchema(Vec4iImpl, i32);
160
+ * Schema representing vec4i - a vector with 4 elements of type i32.
161
+ * Also a constructor function for this vector value.
162
+ *
163
+ * @example
164
+ * const vector = d.vec4i(); // (0, 0, 0, 0)
165
+ * const vector = d.vec4i(1); // (1, 1, 1, 1)
166
+ * const vector = d.vec4i(1, 2, 3, -4); // (1, 2, 3, -4)
167
+ *
168
+ * @example
169
+ * const buffer = root.createBuffer(d.vec4i, d.vec4i(0, 1, 2, 3)); // buffer holding a d.vec4i value, with an initial value of vec4i(0, 1, 2, 3);
170
+ */
171
+ export const vec4i = makeVecSchema(Vec4iImpl, i32);
171
172
  /**
172
- * Schema representing vec4u - a vector with 4 elements of type u32.
173
- * Also a constructor function for this vector value.
174
- *
175
- * @example
176
- * const vector = d.vec4u(); // (0, 0, 0, 0)
177
- * const vector = d.vec4u(1); // (1, 1, 1, 1)
178
- * const vector = d.vec4u(1, 2, 3, 4); // (1, 2, 3, 4)
179
- *
180
- * @example
181
- * const buffer = root.createBuffer(d.vec4u, d.vec4u(0, 1, 2, 3)); // buffer holding a d.vec4u value, with an initial value of vec4u(0, 1, 2, 3);
182
- */
183
- const vec4u = makeVecSchema(Vec4uImpl, u32);
173
+ * Schema representing vec4u - a vector with 4 elements of type u32.
174
+ * Also a constructor function for this vector value.
175
+ *
176
+ * @example
177
+ * const vector = d.vec4u(); // (0, 0, 0, 0)
178
+ * const vector = d.vec4u(1); // (1, 1, 1, 1)
179
+ * const vector = d.vec4u(1, 2, 3, 4); // (1, 2, 3, 4)
180
+ *
181
+ * @example
182
+ * const buffer = root.createBuffer(d.vec4u, d.vec4u(0, 1, 2, 3)); // buffer holding a d.vec4u value, with an initial value of vec4u(0, 1, 2, 3);
183
+ */
184
+ export const vec4u = makeVecSchema(Vec4uImpl, u32);
184
185
  /**
185
- * Schema representing `vec4<bool>` - a vector with 4 elements of type `bool`.
186
- * Also a constructor function for this vector value.
187
- *
188
- * @example
189
- * const vector = d.vec4b(); // (false, false, false, false)
190
- * const vector = d.vec4b(true); // (true, true, true, true)
191
- * const vector = d.vec4b(false, true, false, true); // (false, true, false, true)
192
- */
193
- const vec4b = makeVecSchema(Vec4bImpl, bool);
194
- const vecTypeToConstructor = {
195
- vec2f,
196
- vec2h,
197
- vec2i,
198
- vec2u,
199
- "vec2<bool>": vec2b,
200
- vec3f,
201
- vec3h,
202
- vec3i,
203
- vec3u,
204
- "vec3<bool>": vec3b,
205
- vec4f,
206
- vec4h,
207
- vec4i,
208
- vec4u,
209
- "vec4<bool>": vec4b
186
+ * Schema representing `vec4<bool>` - a vector with 4 elements of type `bool`.
187
+ * Also a constructor function for this vector value.
188
+ *
189
+ * @example
190
+ * const vector = d.vec4b(); // (false, false, false, false)
191
+ * const vector = d.vec4b(true); // (true, true, true, true)
192
+ * const vector = d.vec4b(false, true, false, true); // (false, true, false, true)
193
+ */
194
+ export const vec4b = makeVecSchema(Vec4bImpl, bool);
195
+ // --------------
196
+ // Implementation
197
+ // --------------
198
+ export const vecTypeToConstructor = {
199
+ vec2f,
200
+ vec2h,
201
+ vec2i,
202
+ vec2u,
203
+ 'vec2<bool>': vec2b,
204
+ vec3f,
205
+ vec3h,
206
+ vec3i,
207
+ vec3u,
208
+ 'vec3<bool>': vec3b,
209
+ vec4f,
210
+ vec4h,
211
+ vec4i,
212
+ vec4u,
213
+ 'vec4<bool>': vec4b,
210
214
  };
211
215
  function makeVecSchema(VecImpl, primitive) {
212
- const { kind: type, length } = new VecImpl();
213
- const componentCount = length;
214
- const cpuConstruct = (...args) => {
215
- const values = Array.from({ length: args.length });
216
- let j = 0;
217
- for (const arg of args) if (typeof arg === "number" || typeof arg === "boolean") values[j++] = arg;
218
- else for (let c = 0; c < arg.length; ++c) values[j++] = arg[c];
219
- if (values.length <= 1 || values.length === componentCount) return new VecImpl(...values);
220
- throw new Error(`'${type}' constructor called with invalid number of arguments.`);
221
- };
222
- const construct = callableSchema({
223
- name: type,
224
- schema: () => schema,
225
- argTypes: (...args) => args.map((arg) => isVec(arg) ? arg : primitive),
226
- normalImpl: cpuConstruct,
227
- codegenImpl: (ctx, args) => ctx.gen.typeInstantiation(schema, args)
228
- });
229
- const schema = Object.assign(construct, {
230
- [$internal]: {},
231
- type,
232
- primitive,
233
- componentCount,
234
- [$repr]: void 0
235
- });
236
- VecImpl.prototype.schema = schema;
237
- return schema;
216
+ const { kind: type, length } = new VecImpl();
217
+ const componentCount = length;
218
+ const cpuConstruct = (...args) => {
219
+ const values = Array.from({ length: args.length });
220
+ let j = 0;
221
+ for (const arg of args) {
222
+ if (typeof arg === 'number' || typeof arg === 'boolean') {
223
+ values[j++] = arg;
224
+ }
225
+ else {
226
+ for (let c = 0; c < arg.length; ++c) {
227
+ values[j++] = arg[c];
228
+ }
229
+ }
230
+ }
231
+ if (values.length <= 1 || values.length === componentCount) {
232
+ return new VecImpl(...values);
233
+ }
234
+ throw new Error(`'${type}' constructor called with invalid number of arguments.`);
235
+ };
236
+ const construct = callableSchema({
237
+ name: type,
238
+ schema: () => schema,
239
+ argTypes: (...args) => args.map((arg) => (isVec(arg) ? arg : primitive)),
240
+ normalImpl: cpuConstruct,
241
+ codegenImpl: (ctx, args) => ctx.gen.typeInstantiation(schema, args),
242
+ });
243
+ const schema = Object.assign(construct, {
244
+ [$internal]: {},
245
+ type,
246
+ primitive,
247
+ componentCount,
248
+ [$repr]: undefined,
249
+ });
250
+ // TODO: Remove workaround
251
+ // it's a workaround for circular dependencies caused by us using schemas in the shader generator
252
+ VecImpl.prototype.schema = schema;
253
+ return schema;
238
254
  }
239
-
240
- //#endregion
241
- export { vec2b, vec2f, vec2h, vec2i, vec2u, vec3b, vec3f, vec3h, vec3i, vec3u, vec4b, vec4f, vec4h, vec4i, vec4u, vecTypeToConstructor };