typegpu 0.11.9 → 0.12.1

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 (366) hide show
  1. package/bin.mjs +28 -6
  2. package/builtin.d.ts +51 -53
  3. package/builtin.js +30 -34
  4. package/common/fullScreenTriangle.d.ts +2 -10
  5. package/common/fullScreenTriangle.js +20 -28
  6. package/common/index.d.ts +2 -9
  7. package/common/index.js +3 -12
  8. package/common/writeSoA.d.ts +11 -12
  9. package/common/writeSoA.js +88 -76
  10. package/core/buffer/buffer.d.ts +79 -62
  11. package/core/buffer/buffer.js +283 -205
  12. package/core/buffer/bufferBinding.d.ts +71 -0
  13. package/core/buffer/bufferBinding.js +154 -0
  14. package/core/buffer/bufferUsage.d.ts +14 -45
  15. package/core/buffer/bufferUsage.js +1 -171
  16. package/core/buffer/laidOutBuffer.d.ts +25 -0
  17. package/core/buffer/laidOutBuffer.js +55 -0
  18. package/core/commandEncoder/attachments.d.ts +125 -0
  19. package/core/commandEncoder/attachments.js +29 -0
  20. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  21. package/core/commandEncoder/commandEncoder.js +56 -0
  22. package/core/commandEncoder/computePass.d.ts +58 -0
  23. package/core/commandEncoder/computePass.js +63 -0
  24. package/core/commandEncoder/renderPass.d.ts +121 -0
  25. package/core/commandEncoder/renderPass.js +196 -0
  26. package/core/constant/tgpuConstant.d.ts +26 -26
  27. package/core/constant/tgpuConstant.js +76 -65
  28. package/core/declare/tgpuDeclare.d.ts +3 -6
  29. package/core/declare/tgpuDeclare.js +36 -36
  30. package/core/function/autoIO.d.ts +61 -33
  31. package/core/function/autoIO.js +68 -73
  32. package/core/function/comptime.d.ts +11 -13
  33. package/core/function/comptime.js +60 -52
  34. package/core/function/createCallableSchema.d.ts +16 -0
  35. package/core/function/createCallableSchema.js +50 -40
  36. package/core/function/dualImpl.d.ts +44 -0
  37. package/core/function/dualImpl.js +71 -50
  38. package/core/function/entryInputRouter.d.ts +26 -0
  39. package/core/function/entryInputRouter.js +31 -33
  40. package/core/function/extractArgs.d.ts +38 -0
  41. package/core/function/extractArgs.js +202 -200
  42. package/core/function/fnCore.d.ts +44 -5
  43. package/core/function/fnCore.js +148 -93
  44. package/core/function/fnTypes.d.ts +31 -29
  45. package/core/function/fnTypes.js +1 -0
  46. package/core/function/ioSchema.d.ts +12 -10
  47. package/core/function/ioSchema.js +65 -47
  48. package/core/function/shelllessImpl.d.ts +9 -12
  49. package/core/function/shelllessImpl.js +17 -22
  50. package/core/function/templateUtils.d.ts +2 -0
  51. package/core/function/templateUtils.js +9 -8
  52. package/core/function/tgpuComputeFn.d.ts +26 -28
  53. package/core/function/tgpuComputeFn.js +47 -48
  54. package/core/function/tgpuFn.d.ts +34 -37
  55. package/core/function/tgpuFn.js +179 -153
  56. package/core/function/tgpuFragmentFn.d.ts +52 -53
  57. package/core/function/tgpuFragmentFn.js +63 -56
  58. package/core/function/tgpuVertexFn.d.ts +36 -39
  59. package/core/function/tgpuVertexFn.js +56 -53
  60. package/core/pipeline/computePipeline.d.ts +141 -53
  61. package/core/pipeline/computePipeline.js +291 -225
  62. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  63. package/core/pipeline/connectAttachmentToShader.js +25 -22
  64. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  65. package/core/pipeline/connectTargetsToShader.js +29 -27
  66. package/core/pipeline/drawState.d.ts +52 -0
  67. package/core/pipeline/drawState.js +225 -0
  68. package/core/pipeline/performanceTracker.d.ts +14 -0
  69. package/core/pipeline/performanceTracker.js +34 -0
  70. package/core/pipeline/pipelineUtils.d.ts +18 -0
  71. package/core/pipeline/pipelineUtils.js +54 -25
  72. package/core/pipeline/priors.d.ts +1 -0
  73. package/core/pipeline/priors.js +12 -0
  74. package/core/pipeline/renderPipeline.d.ts +246 -261
  75. package/core/pipeline/renderPipeline.js +487 -480
  76. package/core/pipeline/timeable.d.ts +28 -18
  77. package/core/pipeline/timeable.js +90 -52
  78. package/core/pipeline/typeGuards.d.ts +17 -0
  79. package/core/pipeline/typeGuards.js +52 -22
  80. package/core/pipeline/webgpuLimitations.d.ts +10 -0
  81. package/core/pipeline/webgpuLimitations.js +81 -0
  82. package/core/querySet/querySet.d.ts +26 -21
  83. package/core/querySet/querySet.js +127 -103
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  85. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
  86. package/core/resolve/externals.d.ts +25 -8
  87. package/core/resolve/externals.js +78 -54
  88. package/core/resolve/namespace.d.ts +22 -25
  89. package/core/resolve/namespace.js +16 -21
  90. package/core/resolve/resolvableString.d.ts +7 -0
  91. package/core/resolve/resolvableString.js +13 -0
  92. package/core/resolve/resolveData.d.ts +10 -0
  93. package/core/resolve/resolveData.js +162 -121
  94. package/core/resolve/stitch.d.ts +8 -0
  95. package/core/resolve/stitch.js +23 -21
  96. package/core/resolve/tgpuResolve.d.ts +55 -53
  97. package/core/resolve/tgpuResolve.js +106 -53
  98. package/core/root/configurableImpl.d.ts +10 -0
  99. package/core/root/configurableImpl.js +17 -19
  100. package/core/root/init.d.ts +76 -38
  101. package/core/root/init.js +346 -455
  102. package/core/root/rootTypes.d.ts +461 -636
  103. package/core/root/rootTypes.js +1 -0
  104. package/core/sampler/sampler.d.ts +50 -31
  105. package/core/sampler/sampler.js +120 -113
  106. package/core/simulate/tgpuSimulate.d.ts +9 -12
  107. package/core/simulate/tgpuSimulate.js +68 -71
  108. package/core/slot/accessor.d.ts +36 -13
  109. package/core/slot/accessor.js +138 -91
  110. package/core/slot/internalSlots.d.ts +2 -0
  111. package/core/slot/internalSlots.js +1 -6
  112. package/core/slot/lazy.d.ts +2 -6
  113. package/core/slot/lazy.js +71 -39
  114. package/core/slot/slot.d.ts +2 -6
  115. package/core/slot/slot.js +45 -38
  116. package/core/slot/slotTypes.d.ts +78 -80
  117. package/core/slot/slotTypes.js +11 -16
  118. package/core/texture/externalTexture.d.ts +20 -11
  119. package/core/texture/externalTexture.js +46 -46
  120. package/core/texture/texture.d.ts +152 -97
  121. package/core/texture/texture.js +407 -314
  122. package/core/texture/textureFormats.d.ts +42 -23
  123. package/core/texture/textureFormats.js +104 -75
  124. package/core/texture/textureProps.d.ts +7 -10
  125. package/core/texture/textureProps.js +1 -0
  126. package/core/texture/textureUtils.d.ts +8 -0
  127. package/core/texture/textureUtils.js +185 -179
  128. package/core/texture/usageExtension.d.ts +21 -18
  129. package/core/texture/usageExtension.js +13 -17
  130. package/core/unroll/tgpuUnroll.d.ts +20 -19
  131. package/core/unroll/tgpuUnroll.js +82 -91
  132. package/core/valueProxyUtils.d.ts +3 -0
  133. package/core/valueProxyUtils.js +52 -41
  134. package/core/variable/tgpuVariable.d.ts +26 -27
  135. package/core/variable/tgpuVariable.js +93 -96
  136. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  137. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  138. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  139. package/core/vertexLayout/vertexAttribute.js +1 -0
  140. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  141. package/core/vertexLayout/vertexLayout.js +130 -99
  142. package/core/whitespaces.d.ts +2 -0
  143. package/core/whitespaces.js +16 -0
  144. package/data/alignIO.d.ts +7 -0
  145. package/data/alignIO.js +13 -13
  146. package/data/alignmentOf.d.ts +5 -8
  147. package/data/alignmentOf.js +90 -75
  148. package/data/array.d.ts +17 -9
  149. package/data/array.js +57 -40
  150. package/data/atomic.d.ts +2 -7
  151. package/data/atomic.js +26 -23
  152. package/data/attributes.d.ts +19 -21
  153. package/data/attributes.js +192 -132
  154. package/data/autoStruct.d.ts +36 -3
  155. package/data/autoStruct.js +84 -81
  156. package/data/compiledIO.d.ts +5 -0
  157. package/data/compiledIO.js +231 -215
  158. package/data/dataIO.d.ts +13 -11
  159. package/data/dataIO.js +643 -589
  160. package/data/dataTypes.d.ts +83 -65
  161. package/data/dataTypes.js +66 -68
  162. package/data/deepEqual.d.ts +2 -7
  163. package/data/deepEqual.js +80 -55
  164. package/data/disarray.d.ts +6 -10
  165. package/data/disarray.js +52 -46
  166. package/data/float16Conversion.d.ts +4 -0
  167. package/data/float16Conversion.js +7 -0
  168. package/data/generalizeFn.d.ts +25 -0
  169. package/data/generalizeFn.js +89 -0
  170. package/data/getLongestContiguousPrefix.d.ts +4 -8
  171. package/data/getLongestContiguousPrefix.js +6 -11
  172. package/data/index.d.ts +30 -31
  173. package/data/index.js +39 -172
  174. package/data/instanceToSchema.d.ts +24 -27
  175. package/data/instanceToSchema.js +1 -0
  176. package/data/isContiguous.d.ts +4 -8
  177. package/data/isContiguous.js +6 -11
  178. package/data/matrix.d.ts +21 -21
  179. package/data/matrix.js +513 -505
  180. package/data/numberOps.d.ts +5 -0
  181. package/data/numberOps.js +21 -21
  182. package/data/numeric.d.ts +21 -12
  183. package/data/numeric.js +287 -197
  184. package/data/offsetUtils.d.ts +9 -13
  185. package/data/offsetUtils.js +204 -144
  186. package/data/offsets.d.ts +8 -0
  187. package/data/offsets.js +33 -33
  188. package/data/partialIO.d.ts +13 -8
  189. package/data/partialIO.js +124 -113
  190. package/data/ptr.d.ts +12 -12
  191. package/data/ptr.js +42 -44
  192. package/data/ref.d.ts +40 -27
  193. package/data/ref.js +125 -95
  194. package/data/sampler.d.ts +99 -101
  195. package/data/sampler.js +17 -21
  196. package/data/schemaCallWrapper.d.ts +19 -0
  197. package/data/schemaCallWrapper.js +31 -26
  198. package/data/schemaMemoryLayout.d.ts +8 -0
  199. package/data/schemaMemoryLayout.js +213 -185
  200. package/data/sizeOf.d.ts +4 -8
  201. package/data/sizeOf.js +6 -11
  202. package/data/snippet.d.ts +96 -20
  203. package/data/snippet.js +75 -86
  204. package/data/struct.d.ts +4 -7
  205. package/data/struct.js +51 -39
  206. package/data/texture.d.ts +253 -250
  207. package/data/texture.js +238 -200
  208. package/data/unstruct.d.ts +2 -7
  209. package/data/unstruct.js +43 -37
  210. package/data/vector.d.ts +33 -21
  211. package/data/vector.js +234 -221
  212. package/data/vectorImpl.d.ts +231 -0
  213. package/data/vectorImpl.js +563 -515
  214. package/data/vectorOps.d.ts +25 -0
  215. package/data/vectorOps.js +118 -669
  216. package/data/vertexFormatData.d.ts +181 -184
  217. package/data/vertexFormatData.js +104 -106
  218. package/data/wgslTypes.d.ts +665 -600
  219. package/data/wgslTypes.js +220 -198
  220. package/errors.d.ts +50 -24
  221. package/errors.js +146 -126
  222. package/execMode.d.ts +16 -0
  223. package/execMode.js +47 -40
  224. package/extension.d.ts +13 -8
  225. package/extension.js +10 -16
  226. package/getGPUValue.d.ts +1 -0
  227. package/getGPUValue.js +2 -7
  228. package/index.d.ts +28 -68
  229. package/index.js +8 -28
  230. package/indexNamedExports.d.ts +69 -42
  231. package/indexNamedExports.js +25 -0
  232. package/internal.d.ts +16 -0
  233. package/internal.js +12 -0
  234. package/mathUtils.d.ts +5 -0
  235. package/mathUtils.js +7 -11
  236. package/memo.d.ts +11 -0
  237. package/memo.js +20 -22
  238. package/minify.d.ts +5 -0
  239. package/minify.js +93 -0
  240. package/nameUtils.d.ts +29 -0
  241. package/nameUtils.js +427 -394
  242. package/package.json +5 -1
  243. package/resolutionCtx.d.ts +162 -22
  244. package/resolutionCtx.js +911 -629
  245. package/serial/registry.d.ts +15 -0
  246. package/serial/registry.js +106 -0
  247. package/serial/restore.d.ts +49 -0
  248. package/serial/restore.js +68 -0
  249. package/serial/schema.d.ts +58 -0
  250. package/serial/schema.js +209 -0
  251. package/serial/types.d.ts +5 -0
  252. package/serial/types.js +1 -0
  253. package/shared/env.d.ts +9 -0
  254. package/shared/env.js +9 -12
  255. package/shared/generators.d.ts +4 -0
  256. package/shared/generators.js +10 -12
  257. package/shared/meta.d.ts +29 -14
  258. package/shared/meta.js +71 -55
  259. package/shared/normalizeMetadata.d.ts +32 -27
  260. package/shared/normalizeMetadata.js +23 -36
  261. package/shared/repr.d.ts +73 -55
  262. package/shared/repr.js +1 -0
  263. package/shared/soul.d.ts +17 -0
  264. package/shared/soul.js +1 -0
  265. package/shared/stringify.d.ts +2 -0
  266. package/shared/stringify.js +29 -20
  267. package/shared/symbols.d.ts +26 -20
  268. package/shared/symbols.js +79 -79
  269. package/shared/tseynit.d.ts +2 -0
  270. package/shared/tseynit.js +160 -75
  271. package/shared/utilityTypes.d.ts +30 -14
  272. package/shared/utilityTypes.js +2 -6
  273. package/shared/vertexFormat.d.ts +41 -43
  274. package/shared/vertexFormat.js +59 -62
  275. package/std/array.d.ts +2 -7
  276. package/std/array.js +18 -23
  277. package/std/atomic.d.ts +14 -18
  278. package/std/atomic.js +96 -95
  279. package/std/bitcast.d.ts +193 -10
  280. package/std/bitcast.js +309 -39
  281. package/std/boolean.d.ts +19 -33
  282. package/std/boolean.js +296 -292
  283. package/std/copy.d.ts +2 -7
  284. package/std/copy.js +27 -24
  285. package/std/derivative.d.ts +11 -15
  286. package/std/derivative.js +56 -79
  287. package/std/discard.d.ts +1 -6
  288. package/std/discard.js +7 -14
  289. package/std/environment.d.ts +19 -14
  290. package/std/environment.js +71 -51
  291. package/std/extensions.d.ts +2 -8
  292. package/std/extensions.js +10 -11
  293. package/std/index.d.ts +20 -24
  294. package/std/index.js +32 -187
  295. package/std/matrix.d.ts +6 -12
  296. package/std/matrix.js +60 -69
  297. package/std/numeric.d.ts +150 -146
  298. package/std/numeric.js +771 -727
  299. package/std/operators.d.ts +19 -27
  300. package/std/operators.js +195 -194
  301. package/std/packing.d.ts +5 -11
  302. package/std/packing.js +67 -75
  303. package/std/range.d.ts +6 -11
  304. package/std/range.js +48 -36
  305. package/std/subgroup.d.ts +33 -37
  306. package/std/subgroup.js +180 -217
  307. package/std/texture.d.ts +70 -38
  308. package/std/texture.js +176 -172
  309. package/taskQueue.d.ts +6 -0
  310. package/taskQueue.js +30 -0
  311. package/tgpu.d.ts +16 -0
  312. package/tgpu.js +17 -44
  313. package/tgpuBindGroupLayout.d.ts +132 -152
  314. package/tgpuBindGroupLayout.js +346 -268
  315. package/tgpuLogger.d.ts +34 -0
  316. package/tgpuLogger.js +64 -0
  317. package/tgpuUnstable.d.ts +16 -22
  318. package/tgpuUnstable.js +13 -35
  319. package/tgsl/accessIndex.d.ts +2 -0
  320. package/tgsl/accessIndex.js +76 -33
  321. package/tgsl/accessProp.d.ts +2 -0
  322. package/tgsl/accessProp.js +142 -101
  323. package/tgsl/accessStructProp.d.ts +5 -0
  324. package/tgsl/accessStructProp.js +13 -15
  325. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  326. package/tgsl/consoleLog/deserializers.js +119 -103
  327. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  328. package/tgsl/consoleLog/logGenerator.js +85 -80
  329. package/tgsl/consoleLog/serializers.d.ts +21 -0
  330. package/tgsl/consoleLog/serializers.js +119 -100
  331. package/tgsl/consoleLog/types.d.ts +40 -39
  332. package/tgsl/consoleLog/types.js +1 -0
  333. package/tgsl/conversion.d.ts +33 -0
  334. package/tgsl/conversion.js +271 -216
  335. package/tgsl/forOfUtils.d.ts +15 -0
  336. package/tgsl/forOfUtils.js +85 -70
  337. package/tgsl/generationHelpers.d.ts +22 -39
  338. package/tgsl/generationHelpers.js +85 -58
  339. package/tgsl/infixDispatch.d.ts +70 -0
  340. package/tgsl/infixDispatch.js +48 -46
  341. package/tgsl/jsPolyfills.d.ts +16 -19
  342. package/tgsl/jsPolyfills.js +44 -42
  343. package/tgsl/makeDereferenceable.d.ts +48 -0
  344. package/tgsl/makeDereferenceable.js +86 -0
  345. package/tgsl/makeResolvable.d.ts +22 -0
  346. package/tgsl/makeResolvable.js +33 -0
  347. package/tgsl/shaderGenerator.d.ts +77 -17
  348. package/tgsl/shaderGenerator.js +1 -0
  349. package/tgsl/shellless.d.ts +6 -9
  350. package/tgsl/shellless.js +73 -43
  351. package/tgsl/wgslGenerator.d.ts +66 -59
  352. package/tgsl/wgslGenerator.js +1345 -760
  353. package/types.d.ts +287 -222
  354. package/types.js +61 -44
  355. package/unwrapper.d.ts +31 -26
  356. package/unwrapper.js +1 -0
  357. package/wgslExtensions.d.ts +3 -5
  358. package/wgslExtensions.js +12 -16
  359. package/_virtual/rolldown_runtime.js +0 -13
  360. package/core/buffer/bufferShorthand.d.ts +0 -50
  361. package/core/buffer/bufferShorthand.js +0 -55
  362. package/core/pipeline/applyPipelineState.js +0 -37
  363. package/core/pipeline/limitsOverflow.js +0 -13
  364. package/package.js +0 -5
  365. package/tgsl/shaderGenerator_members.d.ts +0 -33
  366. package/tgsl/shaderGenerator_members.js +0 -12
package/std/subgroup.js CHANGED
@@ -1,220 +1,183 @@
1
+ import { dualImpl } from "../core/function/dualImpl.js";
1
2
  import { stitch } from "../core/resolve/stitch.js";
2
- import { unify } from "../tgsl/conversion.js";
3
3
  import { bool, i32, u32 } from "../data/numeric.js";
4
4
  import { vec4u } from "../data/vector.js";
5
- import { dualImpl } from "../core/function/dualImpl.js";
6
-
7
- //#region src/std/subgroup.ts
8
- const errorMessage = "Subgroup operations can only be used in the GPU context.";
9
- const subgroupAdd = dualImpl({
10
- name: "subgroupAdd",
11
- signature: (arg) => ({
12
- argTypes: [arg],
13
- returnType: arg
14
- }),
15
- normalImpl: errorMessage,
16
- codegenImpl: (_ctx, [arg]) => stitch`subgroupAdd(${arg})`
17
- });
18
- const subgroupExclusiveAdd = dualImpl({
19
- name: "subgroupExclusiveAdd",
20
- signature: (arg) => ({
21
- argTypes: [arg],
22
- returnType: arg
23
- }),
24
- normalImpl: errorMessage,
25
- codegenImpl: (_ctx, [arg]) => stitch`subgroupExclusiveAdd(${arg})`
26
- });
27
- const subgroupInclusiveAdd = dualImpl({
28
- name: "subgroupInclusiveAdd",
29
- signature: (arg) => ({
30
- argTypes: [arg],
31
- returnType: arg
32
- }),
33
- normalImpl: errorMessage,
34
- codegenImpl: (_ctx, [arg]) => stitch`subgroupInclusiveAdd(${arg})`
35
- });
36
- const subgroupAll = dualImpl({
37
- name: "subgroupAll",
38
- signature: {
39
- argTypes: [bool],
40
- returnType: bool
41
- },
42
- normalImpl: errorMessage,
43
- codegenImpl: (_ctx, [e]) => stitch`subgroupAll(${e})`
44
- });
45
- const subgroupAnd = dualImpl({
46
- name: "subgroupAnd",
47
- signature: (arg) => ({
48
- argTypes: [arg],
49
- returnType: arg
50
- }),
51
- normalImpl: errorMessage,
52
- codegenImpl: (_ctx, [e]) => stitch`subgroupAnd(${e})`
53
- });
54
- const subgroupAny = dualImpl({
55
- name: "subgroupAny",
56
- signature: {
57
- argTypes: [bool],
58
- returnType: bool
59
- },
60
- normalImpl: errorMessage,
61
- codegenImpl: (_ctx, [e]) => stitch`subgroupAny(${e})`
62
- });
63
- const subgroupBallot = dualImpl({
64
- name: "subgroupBallot",
65
- signature: {
66
- argTypes: [bool],
67
- returnType: vec4u
68
- },
69
- normalImpl: errorMessage,
70
- codegenImpl: (_ctx, [e]) => stitch`subgroupBallot(${e})`
71
- });
72
- const subgroupBroadcast = dualImpl({
73
- name: "subgroupBroadcast",
74
- signature: (...args) => {
75
- const id = unify([args[1]], [i32, u32]);
76
- if (!id) throw new Error(`subgroupBroadcast's second argument has to be compatible with i32 or u32. Got: ${args[1].type}`);
77
- return {
78
- argTypes: [args[0], id[0]],
79
- returnType: args[0]
80
- };
81
- },
82
- normalImpl: errorMessage,
83
- codegenImpl: (_ctx, [e, index]) => stitch`subgroupBroadcast(${e}, ${index})`
84
- });
85
- const subgroupBroadcastFirst = dualImpl({
86
- name: "subgroupBroadcastFirst",
87
- signature: (arg) => ({
88
- argTypes: [arg],
89
- returnType: arg
90
- }),
91
- normalImpl: errorMessage,
92
- codegenImpl: (_ctx, [e]) => stitch`subgroupBroadcastFirst(${e})`
93
- });
94
- const subgroupElect = dualImpl({
95
- name: "subgroupElect",
96
- signature: {
97
- argTypes: [],
98
- returnType: bool
99
- },
100
- normalImpl: errorMessage,
101
- codegenImpl: () => stitch`subgroupElect()`
102
- });
103
- const subgroupMax = dualImpl({
104
- name: "subgroupMax",
105
- signature: (arg) => ({
106
- argTypes: [arg],
107
- returnType: arg
108
- }),
109
- normalImpl: errorMessage,
110
- codegenImpl: (_ctx, [arg]) => stitch`subgroupMax(${arg})`
111
- });
112
- const subgroupMin = dualImpl({
113
- name: "subgroupMin",
114
- signature: (arg) => ({
115
- argTypes: [arg],
116
- returnType: arg
117
- }),
118
- normalImpl: errorMessage,
119
- codegenImpl: (_ctx, [arg]) => stitch`subgroupMin(${arg})`
120
- });
121
- const subgroupMul = dualImpl({
122
- name: "subgroupMul",
123
- signature: (arg) => ({
124
- argTypes: [arg],
125
- returnType: arg
126
- }),
127
- normalImpl: errorMessage,
128
- codegenImpl: (_ctx, [arg]) => stitch`subgroupMul(${arg})`
129
- });
130
- const subgroupExclusiveMul = dualImpl({
131
- name: "subgroupExclusiveMul",
132
- signature: (arg) => ({
133
- argTypes: [arg],
134
- returnType: arg
135
- }),
136
- normalImpl: errorMessage,
137
- codegenImpl: (_ctx, [arg]) => stitch`subgroupExclusiveMul(${arg})`
138
- });
139
- const subgroupInclusiveMul = dualImpl({
140
- name: "subgroupInclusiveMul",
141
- signature: (arg) => ({
142
- argTypes: [arg],
143
- returnType: arg
144
- }),
145
- normalImpl: errorMessage,
146
- codegenImpl: (_ctx, [arg]) => stitch`subgroupInclusiveMul(${arg})`
147
- });
148
- const subgroupOr = dualImpl({
149
- name: "subgroupOr",
150
- signature: (arg) => ({
151
- argTypes: [arg],
152
- returnType: arg
153
- }),
154
- normalImpl: errorMessage,
155
- codegenImpl: (_ctx, [e]) => stitch`subgroupOr(${e})`
156
- });
157
- const subgroupShuffle = dualImpl({
158
- name: "subgroupShuffle",
159
- signature: (...args) => {
160
- const id = unify([args[1]], [i32, u32]);
161
- if (!id) throw new Error(`subgroupShuffle's second argument has to be compatible with i32 or u32. Got: ${args[1].type}`);
162
- return {
163
- argTypes: [args[0], id[0]],
164
- returnType: args[0]
165
- };
166
- },
167
- normalImpl: errorMessage,
168
- codegenImpl: (_ctx, [e, index]) => stitch`subgroupShuffle(${e}, ${index})`
169
- });
170
- const subgroupShuffleDown = dualImpl({
171
- name: "subgroupShuffleDown",
172
- signature: (...args) => {
173
- const delta = unify([args[1]], [u32]);
174
- if (!delta) throw new Error(`subgroupShuffleDown's second argument has to be compatible with u32. Got: ${args[1].type}`);
175
- return {
176
- argTypes: [args[0], delta[0]],
177
- returnType: args[0]
178
- };
179
- },
180
- normalImpl: errorMessage,
181
- codegenImpl: (_ctx, [e, delta]) => stitch`subgroupShuffleDown(${e}, ${delta})`
182
- });
183
- const subgroupShuffleUp = dualImpl({
184
- name: "subgroupShuffleUp",
185
- signature: (...args) => {
186
- const delta = unify([args[1]], [u32]);
187
- if (!delta) throw new Error(`subgroupShuffleUp's second argument has to be compatible with u32. Got: ${args[1].type}`);
188
- return {
189
- argTypes: [args[0], delta[0]],
190
- returnType: args[0]
191
- };
192
- },
193
- normalImpl: errorMessage,
194
- codegenImpl: (_ctx, [e, delta]) => stitch`subgroupShuffleUp(${e}, ${delta})`
195
- });
196
- const subgroupShuffleXor = dualImpl({
197
- name: "subgroupShuffleXor",
198
- signature: (...args) => {
199
- const mask = unify([args[1]], [u32]);
200
- if (!mask) throw new Error(`subgroupShuffleXor's second argument has to be compatible with u32. Got: ${args[1].type}`);
201
- return {
202
- argTypes: [args[0], mask[0]],
203
- returnType: args[0]
204
- };
205
- },
206
- normalImpl: errorMessage,
207
- codegenImpl: (_ctx, [e, mask]) => stitch`subgroupShuffleXor(${e}, ${mask})`
208
- });
209
- const subgroupXor = dualImpl({
210
- name: "subgroupXor",
211
- signature: (arg) => ({
212
- argTypes: [arg],
213
- returnType: arg
214
- }),
215
- normalImpl: errorMessage,
216
- codegenImpl: (_ctx, [e]) => stitch`subgroupXor(${e})`
217
- });
218
-
219
- //#endregion
220
- export { subgroupAdd, subgroupAll, subgroupAnd, subgroupAny, subgroupBallot, subgroupBroadcast, subgroupBroadcastFirst, subgroupElect, subgroupExclusiveAdd, subgroupExclusiveMul, subgroupInclusiveAdd, subgroupInclusiveMul, subgroupMax, subgroupMin, subgroupMul, subgroupOr, subgroupShuffle, subgroupShuffleDown, subgroupShuffleUp, subgroupShuffleXor, subgroupXor };
5
+ import { unify } from "../tgsl/conversion.js";
6
+ const errorMessage = 'Subgroup operations can only be used in the GPU context.';
7
+ export const subgroupAdd = dualImpl({
8
+ name: 'subgroupAdd',
9
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
10
+ normalImpl: errorMessage,
11
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupAdd(${arg})`,
12
+ sideEffects: false,
13
+ });
14
+ export const subgroupExclusiveAdd = dualImpl({
15
+ name: 'subgroupExclusiveAdd',
16
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
17
+ normalImpl: errorMessage,
18
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupExclusiveAdd(${arg})`,
19
+ sideEffects: false,
20
+ });
21
+ export const subgroupInclusiveAdd = dualImpl({
22
+ name: 'subgroupInclusiveAdd',
23
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
24
+ normalImpl: errorMessage,
25
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupInclusiveAdd(${arg})`,
26
+ sideEffects: false,
27
+ });
28
+ export const subgroupAll = dualImpl({
29
+ name: 'subgroupAll',
30
+ signature: { argTypes: [bool], returnType: bool },
31
+ normalImpl: errorMessage,
32
+ codegenImpl: (_ctx, [e]) => stitch `subgroupAll(${e})`,
33
+ sideEffects: false,
34
+ });
35
+ export const subgroupAnd = dualImpl({
36
+ name: 'subgroupAnd',
37
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
38
+ normalImpl: errorMessage,
39
+ codegenImpl: (_ctx, [e]) => stitch `subgroupAnd(${e})`,
40
+ sideEffects: false,
41
+ });
42
+ export const subgroupAny = dualImpl({
43
+ name: 'subgroupAny',
44
+ signature: { argTypes: [bool], returnType: bool },
45
+ normalImpl: errorMessage,
46
+ codegenImpl: (_ctx, [e]) => stitch `subgroupAny(${e})`,
47
+ sideEffects: false,
48
+ });
49
+ export const subgroupBallot = dualImpl({
50
+ name: 'subgroupBallot',
51
+ signature: { argTypes: [bool], returnType: vec4u },
52
+ normalImpl: errorMessage,
53
+ codegenImpl: (_ctx, [e]) => stitch `subgroupBallot(${e})`,
54
+ sideEffects: false,
55
+ });
56
+ export const subgroupBroadcast = dualImpl({
57
+ name: 'subgroupBroadcast',
58
+ signature: (...args) => {
59
+ const id = unify([args[1]], [i32, u32]);
60
+ if (!id) {
61
+ throw new Error(`subgroupBroadcast's second argument has to be compatible with i32 or u32. Got: ${args[1].type}`);
62
+ }
63
+ return { argTypes: [args[0], id[0]], returnType: args[0] };
64
+ },
65
+ normalImpl: errorMessage,
66
+ codegenImpl: (_ctx, [e, index]) => stitch `subgroupBroadcast(${e}, ${index})`,
67
+ sideEffects: false,
68
+ });
69
+ export const subgroupBroadcastFirst = dualImpl({
70
+ name: 'subgroupBroadcastFirst',
71
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
72
+ normalImpl: errorMessage,
73
+ codegenImpl: (_ctx, [e]) => stitch `subgroupBroadcastFirst(${e})`,
74
+ sideEffects: false,
75
+ });
76
+ export const subgroupElect = dualImpl({
77
+ name: 'subgroupElect',
78
+ signature: { argTypes: [], returnType: bool },
79
+ normalImpl: errorMessage,
80
+ codegenImpl: () => stitch `subgroupElect()`,
81
+ sideEffects: false,
82
+ });
83
+ export const subgroupMax = dualImpl({
84
+ name: 'subgroupMax',
85
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
86
+ normalImpl: errorMessage,
87
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupMax(${arg})`,
88
+ sideEffects: false,
89
+ });
90
+ export const subgroupMin = dualImpl({
91
+ name: 'subgroupMin',
92
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
93
+ normalImpl: errorMessage,
94
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupMin(${arg})`,
95
+ sideEffects: false,
96
+ });
97
+ export const subgroupMul = dualImpl({
98
+ name: 'subgroupMul',
99
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
100
+ normalImpl: errorMessage,
101
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupMul(${arg})`,
102
+ sideEffects: false,
103
+ });
104
+ export const subgroupExclusiveMul = dualImpl({
105
+ name: 'subgroupExclusiveMul',
106
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
107
+ normalImpl: errorMessage,
108
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupExclusiveMul(${arg})`,
109
+ sideEffects: false,
110
+ });
111
+ export const subgroupInclusiveMul = dualImpl({
112
+ name: 'subgroupInclusiveMul',
113
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
114
+ normalImpl: errorMessage,
115
+ codegenImpl: (_ctx, [arg]) => stitch `subgroupInclusiveMul(${arg})`,
116
+ sideEffects: false,
117
+ });
118
+ export const subgroupOr = dualImpl({
119
+ name: 'subgroupOr',
120
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
121
+ normalImpl: errorMessage,
122
+ codegenImpl: (_ctx, [e]) => stitch `subgroupOr(${e})`,
123
+ sideEffects: false,
124
+ });
125
+ export const subgroupShuffle = dualImpl({
126
+ name: 'subgroupShuffle',
127
+ signature: (...args) => {
128
+ const id = unify([args[1]], [i32, u32]);
129
+ if (!id) {
130
+ throw new Error(`subgroupShuffle's second argument has to be compatible with i32 or u32. Got: ${args[1].type}`);
131
+ }
132
+ return { argTypes: [args[0], id[0]], returnType: args[0] };
133
+ },
134
+ normalImpl: errorMessage,
135
+ codegenImpl: (_ctx, [e, index]) => stitch `subgroupShuffle(${e}, ${index})`,
136
+ sideEffects: false,
137
+ });
138
+ export const subgroupShuffleDown = dualImpl({
139
+ name: 'subgroupShuffleDown',
140
+ signature: (...args) => {
141
+ const delta = unify([args[1]], [u32]);
142
+ if (!delta) {
143
+ throw new Error(`subgroupShuffleDown's second argument has to be compatible with u32. Got: ${args[1].type}`);
144
+ }
145
+ return { argTypes: [args[0], delta[0]], returnType: args[0] };
146
+ },
147
+ normalImpl: errorMessage,
148
+ codegenImpl: (_ctx, [e, delta]) => stitch `subgroupShuffleDown(${e}, ${delta})`,
149
+ sideEffects: false,
150
+ });
151
+ export const subgroupShuffleUp = dualImpl({
152
+ name: 'subgroupShuffleUp',
153
+ signature: (...args) => {
154
+ const delta = unify([args[1]], [u32]);
155
+ if (!delta) {
156
+ throw new Error(`subgroupShuffleUp's second argument has to be compatible with u32. Got: ${args[1].type}`);
157
+ }
158
+ return { argTypes: [args[0], delta[0]], returnType: args[0] };
159
+ },
160
+ normalImpl: errorMessage,
161
+ codegenImpl: (_ctx, [e, delta]) => stitch `subgroupShuffleUp(${e}, ${delta})`,
162
+ sideEffects: false,
163
+ });
164
+ export const subgroupShuffleXor = dualImpl({
165
+ name: 'subgroupShuffleXor',
166
+ signature: (...args) => {
167
+ const mask = unify([args[1]], [u32]);
168
+ if (!mask) {
169
+ throw new Error(`subgroupShuffleXor's second argument has to be compatible with u32. Got: ${args[1].type}`);
170
+ }
171
+ return { argTypes: [args[0], mask[0]], returnType: args[0] };
172
+ },
173
+ normalImpl: errorMessage,
174
+ codegenImpl: (_ctx, [e, mask]) => stitch `subgroupShuffleXor(${e}, ${mask})`,
175
+ sideEffects: false,
176
+ });
177
+ export const subgroupXor = dualImpl({
178
+ name: 'subgroupXor',
179
+ signature: (arg) => ({ argTypes: [arg], returnType: arg }),
180
+ normalImpl: errorMessage,
181
+ codegenImpl: (_ctx, [e]) => stitch `subgroupXor(${e})`,
182
+ sideEffects: false,
183
+ });
package/std/texture.d.ts CHANGED
@@ -1,11 +1,8 @@
1
- import { $internal, $repr } from "../shared/symbols.js";
2
- import { comparisonSampler, sampler } from "../data/sampler.js";
3
- import { DualFn } from "../types.js";
4
- import { v2f, v2i, v2u, v3f, v3i, v3u, v4f, v4i, v4u } from "../data/wgslTypes.js";
5
- import { StorageTextureFormats, TextureFormats } from "../core/texture/textureFormats.js";
6
- import { texture1d, texture2d, texture2dArray, texture3d, textureCube, textureCubeArray, textureDepth2d, textureDepth2dArray, textureDepthCube, textureDepthCubeArray, textureDepthMultisampled2d, textureExternal, textureMultisampled2d, textureStorage1d, textureStorage2d, textureStorage2dArray, textureStorage3d } from "../data/texture.js";
7
-
8
- //#region src/std/texture.d.ts
1
+ import { type v2f, type v2i, type v2u, type v3f, type v3i, type v3u, type v4f, type v4i, type v4u } from '../data/wgslTypes.ts';
2
+ import { type StorageTextureFormats, type TextureFormats } from '../core/texture/textureFormats.ts';
3
+ import type { $internal, $repr } from '../shared/symbols.ts';
4
+ import type { texture1d, texture2d, texture2dArray, texture3d, textureCube, textureCubeArray, textureDepth2d, textureDepth2dArray, textureDepthCube, textureDepthCubeArray, textureDepthMultisampled2d, textureExternal, textureMultisampled2d, textureStorage1d, textureStorage2d, textureStorage2dArray, textureStorage3d } from '../data/texture.ts';
5
+ import type { comparisonSampler, sampler } from '../data/sampler.ts';
9
6
  declare function sampleCpu<T extends texture1d>(texture: T, sampler: sampler, coords: number): v4f;
10
7
  declare function sampleCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, offset?: v2i): v4f;
11
8
  declare function sampleCpu<T extends texture2dArray>(texture: T, sampler: sampler, coords: v2f, arrayIndex: number, offset?: v2i): v4f;
@@ -15,13 +12,13 @@ declare function sampleCpu<T extends textureCubeArray>(texture: T, sampler: samp
15
12
  declare function sampleCpu<T extends textureDepth2d>(texture: T, sampler: sampler, coords: v2f, offset?: v2i): number;
16
13
  declare function sampleCpu<T extends textureDepth2dArray>(texture: T, sampler: sampler, coords: v2f, arrayIndex: number, offset?: v2i): number;
17
14
  declare function sampleCpu<T extends textureDepthCube>(texture: T, sampler: sampler, coords: v3f, arrayIndex?: number): number;
18
- declare const textureSample: DualFn<typeof sampleCpu>;
15
+ export declare const textureSample: import("../types.ts").DualFn<typeof sampleCpu>;
19
16
  declare function sampleBiasCpu<T extends texture1d>(texture: T, sampler: sampler, coords: number, bias: number): v4f;
20
17
  declare function sampleBiasCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, bias: number, offset?: v2i): v4f;
21
18
  declare function sampleBiasCpu<T extends texture2dArray>(texture: T, sampler: sampler, coords: v2f, arrayIndex: number, bias: number, offset?: v2i): v4f;
22
19
  declare function sampleBiasCpu<T extends texture3d | textureCube>(texture: T, sampler: sampler, coords: v3f, bias: number, offset?: v3i): v4f;
23
20
  declare function sampleBiasCpu<T extends textureCubeArray>(texture: T, sampler: sampler, coords: v3f, arrayIndex: number, bias: number): v4f;
24
- declare const textureSampleBias: DualFn<typeof sampleBiasCpu>;
21
+ export declare const textureSampleBias: import("../types.ts").DualFn<typeof sampleBiasCpu>;
25
22
  declare function sampleLevelCpu<T extends texture1d>(texture: T, sampler: sampler, coords: number, level: number): v4f;
26
23
  declare function sampleLevelCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, level: number): v4f;
27
24
  declare function sampleLevelCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, level: number, offset: v2i): v4f;
@@ -36,11 +33,11 @@ declare function sampleLevelCpu<T extends textureDepth2dArray>(texture: T, sampl
36
33
  declare function sampleLevelCpu<T extends textureDepth2dArray>(texture: T, sampler: sampler, coords: v2f, arrayIndex: number, level: number, offset: v2i): number;
37
34
  declare function sampleLevelCpu<T extends textureDepthCube>(texture: T, sampler: sampler, coords: v3f, level: number): number;
38
35
  declare function sampleLevelCpu<T extends textureCubeArray>(texture: T, sampler: sampler, coords: v3f, arrayIndex: number, level: number): number;
39
- declare const textureSampleLevel: DualFn<typeof sampleLevelCpu>;
36
+ export declare const textureSampleLevel: import("../types.ts").DualFn<typeof sampleLevelCpu>;
40
37
  type PrimitiveToLoadedType = {
41
- f32: v4f;
42
- i32: v4i;
43
- u32: v4u;
38
+ f32: v4f;
39
+ i32: v4i;
40
+ u32: v4u;
44
41
  };
45
42
  type TexelFormatToInstanceType<T extends StorageTextureFormats> = TextureFormats[T]['vectorType'][typeof $repr];
46
43
  declare function textureLoadCpu<T extends texture1d>(texture: T, coords: number, level: number): PrimitiveToLoadedType[T[typeof $internal]['type']];
@@ -56,52 +53,88 @@ declare function textureLoadCpu<T extends textureStorage1d>(texture: T, coords:
56
53
  declare function textureLoadCpu<T extends textureStorage2d>(texture: T, coords: v2i | v2u): TexelFormatToInstanceType<T[typeof $internal][0]>;
57
54
  declare function textureLoadCpu<T extends textureStorage2dArray>(texture: T, coords: v2i | v2u, arrayIndex: number): TexelFormatToInstanceType<T[typeof $internal][0]>;
58
55
  declare function textureLoadCpu<T extends textureStorage3d>(texture: T, coords: v3i | v3u): TexelFormatToInstanceType<T[typeof $internal][0]>;
59
- declare const textureLoad: DualFn<typeof textureLoadCpu>;
56
+ export declare const textureLoad: import("../types.ts").DualFn<typeof textureLoadCpu>;
60
57
  declare function textureStoreCpu<T extends textureStorage1d>(texture: T, coords: number, value: TexelFormatToInstanceType<T[typeof $internal][0]>): void;
61
58
  declare function textureStoreCpu<T extends textureStorage2d>(texture: T, coords: v2i | v2u, value: TexelFormatToInstanceType<T[typeof $internal][0]>): void;
62
59
  declare function textureStoreCpu<T extends textureStorage2dArray>(texture: T, coords: v2i | v2u, arrayIndex: number, value: TexelFormatToInstanceType<T[typeof $internal][0]>): void;
63
60
  declare function textureStoreCpu<T extends textureStorage3d>(texture: T, coords: v3i | v3u, value: TexelFormatToInstanceType<T[typeof $internal][0]>): void;
64
- declare const textureStore: DualFn<typeof textureStoreCpu>;
61
+ export declare const textureStore: import("../types.ts").DualFn<typeof textureStoreCpu>;
65
62
  declare function textureDimensionsCpu<T extends texture1d | textureStorage1d>(texture: T): number;
66
63
  declare function textureDimensionsCpu<T extends texture1d>(texture: T, level: number): number;
67
64
  declare function textureDimensionsCpu<T extends texture2d | texture2dArray | textureCube | textureCubeArray | textureStorage2d | textureStorage2dArray | textureExternal>(texture: T): v2u;
68
65
  declare function textureDimensionsCpu<T extends texture2d | texture2dArray | textureCube | textureCubeArray>(texture: T, level: number): v2u;
69
66
  declare function textureDimensionsCpu<T extends texture3d | textureStorage3d>(texture: T): v3u;
70
67
  declare function textureDimensionsCpu<T extends texture3d>(texture: T, level: number): v3u;
71
- declare const textureDimensions: DualFn<typeof textureDimensionsCpu>;
72
- type Gather2dArgs<T extends texture2d = texture2d> = [component: number, texture: T, sampler: sampler, coords: v2f, offset?: v2i];
73
- type Gather2dArrayArgs<T extends texture2dArray = texture2dArray> = [component: number, texture: T, sampler: sampler, coords: v2f, arrayIndex: number, offset?: v2i];
74
- type GatherCubeArgs<T extends textureCube = textureCube> = [component: number, texture: T, sampler: sampler, coords: v3f];
75
- type GatherCubeArrayArgs<T extends textureCubeArray = textureCubeArray> = [component: number, texture: T, sampler: sampler, coords: v3f, arrayIndex: number];
68
+ export declare const textureDimensions: import("../types.ts").DualFn<typeof textureDimensionsCpu>;
69
+ type Gather2dArgs<T extends texture2d = texture2d> = [
70
+ component: number,
71
+ texture: T,
72
+ sampler: sampler,
73
+ coords: v2f,
74
+ offset?: v2i
75
+ ];
76
+ type Gather2dArrayArgs<T extends texture2dArray = texture2dArray> = [
77
+ component: number,
78
+ texture: T,
79
+ sampler: sampler,
80
+ coords: v2f,
81
+ arrayIndex: number,
82
+ offset?: v2i
83
+ ];
84
+ type GatherCubeArgs<T extends textureCube = textureCube> = [
85
+ component: number,
86
+ texture: T,
87
+ sampler: sampler,
88
+ coords: v3f
89
+ ];
90
+ type GatherCubeArrayArgs<T extends textureCubeArray = textureCubeArray> = [
91
+ component: number,
92
+ texture: T,
93
+ sampler: sampler,
94
+ coords: v3f,
95
+ arrayIndex: number
96
+ ];
76
97
  type GatherDepth2dArgs = [texture: textureDepth2d, sampler: sampler, coords: v2f, offset?: v2i];
77
- type GatherDepth2dArrayArgs = [texture: textureDepth2dArray, sampler: sampler, coords: v2f, arrayIndex: number, offset?: v2i];
98
+ type GatherDepth2dArrayArgs = [
99
+ texture: textureDepth2dArray,
100
+ sampler: sampler,
101
+ coords: v2f,
102
+ arrayIndex: number,
103
+ offset?: v2i
104
+ ];
78
105
  type GatherDepthCubeArgs = [texture: textureDepthCube, sampler: sampler, coords: v3f];
79
- type GatherDepthCubeArrayArgs = [texture: textureDepthCubeArray, sampler: sampler, coords: v3f, arrayIndex: number];
106
+ type GatherDepthCubeArrayArgs = [
107
+ texture: textureDepthCubeArray,
108
+ sampler: sampler,
109
+ coords: v3f,
110
+ arrayIndex: number
111
+ ];
80
112
  type TextureGatherCpuFn = {
81
- <T extends texture2d>(...args: Gather2dArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
82
- <T extends texture2dArray>(...args: Gather2dArrayArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
83
- <T extends textureCube>(...args: GatherCubeArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
84
- <T extends textureCubeArray>(...args: GatherCubeArrayArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
85
- (...args: GatherDepth2dArgs): v4f;
86
- (...args: GatherDepth2dArrayArgs): v4f;
87
- (...args: GatherDepthCubeArgs): v4f;
88
- (...args: GatherDepthCubeArrayArgs): v4f;
113
+ <T extends texture2d>(...args: Gather2dArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
114
+ <T extends texture2dArray>(...args: Gather2dArrayArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
115
+ <T extends textureCube>(...args: GatherCubeArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
116
+ <T extends textureCubeArray>(...args: GatherCubeArrayArgs<T>): PrimitiveToLoadedType[T[typeof $internal]['type']];
117
+ (...args: GatherDepth2dArgs): v4f;
118
+ (...args: GatherDepth2dArrayArgs): v4f;
119
+ (...args: GatherDepthCubeArgs): v4f;
120
+ (...args: GatherDepthCubeArrayArgs): v4f;
89
121
  };
90
- declare const textureGather: DualFn<TextureGatherCpuFn>;
122
+ export declare const textureGatherCpu: TextureGatherCpuFn;
123
+ export declare const textureGather: import("../types.ts").DualFn<TextureGatherCpuFn>;
91
124
  declare function textureSampleCompareCpu<T extends textureDepth2d>(texture: T, sampler: comparisonSampler, coords: v2f, depthRef: number): number;
92
125
  declare function textureSampleCompareCpu<T extends textureDepth2d>(texture: T, sampler: comparisonSampler, coords: v2f, depthRef: number, offset: v2i): number;
93
126
  declare function textureSampleCompareCpu<T extends textureDepth2dArray>(texture: T, sampler: comparisonSampler, coords: v2f, arrayIndex: number, depthRef: number): number;
94
127
  declare function textureSampleCompareCpu<T extends textureDepth2dArray>(texture: T, sampler: comparisonSampler, coords: v2f, arrayIndex: number, depthRef: number, offset: v2i): number;
95
128
  declare function textureSampleCompareCpu<T extends textureDepthCube>(texture: T, sampler: comparisonSampler, coords: v3f, depthRef: number): number;
96
129
  declare function textureSampleCompareCpu<T extends textureDepthCubeArray>(texture: T, sampler: comparisonSampler, coords: v3f, arrayIndex: number, depthRef: number): number;
97
- declare const textureSampleCompare: DualFn<typeof textureSampleCompareCpu>;
130
+ export declare const textureSampleCompare: import("../types.ts").DualFn<typeof textureSampleCompareCpu>;
98
131
  declare function textureSampleCompareLevelCpu<T extends textureDepth2d>(texture: T, sampler: comparisonSampler, coords: v2f, depthRef: number): number;
99
132
  declare function textureSampleCompareLevelCpu<T extends textureDepth2d>(texture: T, sampler: comparisonSampler, coords: v2f, depthRef: number, offset: v2i): number;
100
133
  declare function textureSampleCompareLevelCpu<T extends textureDepth2dArray>(texture: T, sampler: comparisonSampler, coords: v2f, arrayIndex: number, depthRef: number): number;
101
134
  declare function textureSampleCompareLevelCpu<T extends textureDepth2dArray>(texture: T, sampler: comparisonSampler, coords: v2f, arrayIndex: number, depthRef: number, offset: v2i): number;
102
135
  declare function textureSampleCompareLevelCpu<T extends textureDepthCube>(texture: T, sampler: comparisonSampler, coords: v3f, depthRef: number): number;
103
136
  declare function textureSampleCompareLevelCpu<T extends textureDepthCubeArray>(texture: T, sampler: comparisonSampler, coords: v3f, arrayIndex: number, depthRef: number): number;
104
- declare const textureSampleCompareLevel: DualFn<typeof textureSampleCompareLevelCpu>;
137
+ export declare const textureSampleCompareLevel: import("../types.ts").DualFn<typeof textureSampleCompareLevelCpu>;
105
138
  declare function textureSampleBaseClampToEdgeCpu<T extends texture2d | textureExternal>(_texture: T, _sampler: sampler, _coords: v2f): v4f;
106
139
  declare function sampleGradCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, ddx: v2f, ddy: v2f): v4f;
107
140
  declare function sampleGradCpu<T extends texture2d>(texture: T, sampler: sampler, coords: v2f, ddx: v2f, ddy: v2f, offset: v2i): v4f;
@@ -111,7 +144,6 @@ declare function sampleGradCpu<T extends texture3d>(texture: T, sampler: sampler
111
144
  declare function sampleGradCpu<T extends texture3d>(texture: T, sampler: sampler, coords: v3f, ddx: v3f, ddy: v3f, offset: v3i): v4f;
112
145
  declare function sampleGradCpu<T extends textureCube>(texture: T, sampler: sampler, coords: v3f, ddx: v3f, ddy: v3f): v4f;
113
146
  declare function sampleGradCpu<T extends textureCubeArray>(texture: T, sampler: sampler, coords: v3f, arrayIndex: number, ddx: v3f, ddy: v3f): v4f;
114
- declare const textureSampleGrad: DualFn<typeof sampleGradCpu>;
115
- declare const textureSampleBaseClampToEdge: DualFn<typeof textureSampleBaseClampToEdgeCpu>;
116
- //#endregion
117
- export { textureDimensions, textureGather, textureLoad, textureSample, textureSampleBaseClampToEdge, textureSampleBias, textureSampleCompare, textureSampleCompareLevel, textureSampleGrad, textureSampleLevel, textureStore };
147
+ export declare const textureSampleGrad: import("../types.ts").DualFn<typeof sampleGradCpu>;
148
+ export declare const textureSampleBaseClampToEdge: import("../types.ts").DualFn<typeof textureSampleBaseClampToEdgeCpu>;
149
+ export {};