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
@@ -1,29 +1,48 @@
1
- import { F32, I32, U32, Vec4f, Vec4i, Vec4u } from "../../data/wgslTypes.js";
2
-
3
- //#region src/core/texture/textureFormats.d.ts
4
- type ViewDimensionToDimension = {
5
- '1d': '1d';
6
- '2d': '2d';
7
- '2d-array': '2d';
8
- '3d': '3d';
9
- cube: '2d';
10
- 'cube-array': '2d';
1
+ import type { F32, I32, U32, Vec4f, Vec4i, Vec4u } from '../../data/wgslTypes.ts';
2
+ export type ViewDimensionToDimension = {
3
+ '1d': '1d';
4
+ '2d': '2d';
5
+ '2d-array': '2d';
6
+ '3d': '3d';
7
+ cube: '2d';
8
+ 'cube-array': '2d';
11
9
  };
12
- type StorageTextureFormats = 'rgba8unorm' | 'rgba8snorm' | 'rgba8uint' | 'rgba8sint' | 'rgba16unorm' | 'rgba16snorm' | 'rgba16uint' | 'rgba16sint' | 'rgba16float' | 'rg8unorm' | 'rg8snorm' | 'rg8uint' | 'rg8sint' | 'rg16unorm' | 'rg16snorm' | 'rg16uint' | 'rg16sint' | 'rg16float' | 'r32uint' | 'r32sint' | 'r32float' | 'rg32uint' | 'rg32sint' | 'rg32float' | 'rgba32uint' | 'rgba32sint' | 'rgba32float' | 'bgra8unorm' | 'r8unorm' | 'r8snorm' | 'r8uint' | 'r8sint' | 'r16unorm' | 'r16snorm' | 'r16uint' | 'r16sint' | 'r16float' | 'rgb10a2unorm' | 'rgb10a2uint' | 'rg11b10ufloat';
10
+ export type StorageTextureFormats = 'rgba8unorm' | 'rgba8snorm' | 'rgba8uint' | 'rgba8sint' | 'rgba16unorm' | 'rgba16snorm' | 'rgba16uint' | 'rgba16sint' | 'rgba16float' | 'rg8unorm' | 'rg8snorm' | 'rg8uint' | 'rg8sint' | 'rg16unorm' | 'rg16snorm' | 'rg16uint' | 'rg16sint' | 'rg16float' | 'r32uint' | 'r32sint' | 'r32float' | 'rg32uint' | 'rg32sint' | 'rg32float' | 'rgba32uint' | 'rgba32sint' | 'rgba32float' | 'bgra8unorm' | 'r8unorm' | 'r8snorm' | 'r8uint' | 'r8sint' | 'r16unorm' | 'r16snorm' | 'r16uint' | 'r16sint' | 'r16float' | 'rgb10a2unorm' | 'rgb10a2uint' | 'rg11b10ufloat';
13
11
  type ParseChannelType<T extends GPUTextureFormat> = T extends `${string}uint${string}` ? 'u32' : T extends `${string}sint${string}` ? 'i32' : 'f32';
14
12
  type ChannelTypeToSampleType<T extends 'f32' | 'i32' | 'u32'> = {
15
- f32: F32;
16
- i32: I32;
17
- u32: U32;
13
+ f32: F32;
14
+ i32: I32;
15
+ u32: U32;
18
16
  }[T];
19
17
  type ChannelTypeToVectorType<T extends 'f32' | 'i32' | 'u32'> = {
20
- f32: Vec4f;
21
- i32: Vec4i;
22
- u32: Vec4u;
18
+ f32: Vec4f;
19
+ i32: Vec4i;
20
+ u32: Vec4u;
23
21
  }[T];
24
- type TextureFormats = { [K in GPUTextureFormat]: {
25
- channelType: ChannelTypeToSampleType<ParseChannelType<K>>;
26
- vectorType: ChannelTypeToVectorType<ParseChannelType<K>>;
27
- } };
28
- //#endregion
29
- export { StorageTextureFormats, TextureFormats, ViewDimensionToDimension };
22
+ export type TextureFormats = {
23
+ [K in GPUTextureFormat]: {
24
+ channelType: ChannelTypeToSampleType<ParseChannelType<K>>;
25
+ vectorType: ChannelTypeToVectorType<ParseChannelType<K>>;
26
+ };
27
+ };
28
+ export type AspectInfo = {
29
+ readonly channelType: F32 | I32 | U32;
30
+ readonly vectorType: Vec4f | Vec4i | Vec4u;
31
+ readonly sampleTypes: readonly GPUTextureSampleType[];
32
+ };
33
+ export type TextureFormatInfo = {
34
+ readonly channelType: F32 | I32 | U32;
35
+ readonly vectorType: Vec4f | Vec4i | Vec4u;
36
+ readonly texelSize: number | 'non-copyable';
37
+ readonly sampleTypes: readonly GPUTextureSampleType[];
38
+ readonly canRenderAttachment: boolean;
39
+ readonly depthAspect?: AspectInfo & {
40
+ readonly texelSize: number | 'non-copyable';
41
+ };
42
+ readonly stencilAspect?: AspectInfo & {
43
+ readonly texelSize: number;
44
+ };
45
+ };
46
+ export declare function getTextureFormatInfo(format: GPUTextureFormat): TextureFormatInfo;
47
+ export declare function getEffectiveSampleTypes(device: GPUDevice, format: GPUTextureFormat): readonly GPUTextureSampleType[];
48
+ export {};
@@ -1,99 +1,128 @@
1
1
  import { f32, i32, u32 } from "../../data/numeric.js";
2
2
  import { vec4f, vec4i, vec4u } from "../../data/vector.js";
3
-
4
- //#region src/core/texture/textureFormats.ts
5
3
  const DEPTH_ASPECT_NON_COPYABLE = {
6
- channelType: f32,
7
- vectorType: vec4f,
8
- sampleTypes: ["depth", "unfilterable-float"],
9
- texelSize: "non-copyable"
4
+ channelType: f32,
5
+ vectorType: vec4f,
6
+ sampleTypes: ['depth', 'unfilterable-float'],
7
+ texelSize: 'non-copyable',
10
8
  };
11
9
  const DEPTH_ASPECT_16 = {
12
- channelType: f32,
13
- vectorType: vec4f,
14
- sampleTypes: ["depth", "unfilterable-float"],
15
- texelSize: 2
10
+ channelType: f32,
11
+ vectorType: vec4f,
12
+ sampleTypes: ['depth', 'unfilterable-float'],
13
+ texelSize: 2,
16
14
  };
17
15
  const DEPTH_ASPECT_32 = {
18
- channelType: f32,
19
- vectorType: vec4f,
20
- sampleTypes: ["depth", "unfilterable-float"],
21
- texelSize: 4
16
+ channelType: f32,
17
+ vectorType: vec4f,
18
+ sampleTypes: ['depth', 'unfilterable-float'],
19
+ texelSize: 4,
22
20
  };
23
21
  const STENCIL_ASPECT = {
24
- channelType: u32,
25
- vectorType: vec4u,
26
- sampleTypes: ["uint"],
27
- texelSize: 1
22
+ channelType: u32,
23
+ vectorType: vec4u,
24
+ sampleTypes: ['uint'],
25
+ texelSize: 1,
28
26
  };
29
- const formatInfoCache = /* @__PURE__ */ new Map();
30
- function getTextureFormatInfo(format) {
31
- let info = formatInfoCache.get(format);
32
- if (info === void 0) {
33
- info = createFormatInfo(format);
34
- formatInfoCache.set(format, info);
35
- }
36
- return info;
27
+ const formatInfoCache = new Map();
28
+ export function getTextureFormatInfo(format) {
29
+ let info = formatInfoCache.get(format);
30
+ if (info === undefined) {
31
+ info = createFormatInfo(format);
32
+ formatInfoCache.set(format, info);
33
+ }
34
+ return info;
37
35
  }
38
36
  function createFormatInfo(format) {
39
- const channelType = parseChannelType(format);
40
- const depthAspect = getDepthAspect(format);
41
- const hasStencil = format.includes("stencil");
42
- return {
43
- channelType,
44
- vectorType: channelType === u32 ? vec4u : channelType === i32 ? vec4i : vec4f,
45
- texelSize: parseTexelSize(format),
46
- sampleTypes: parseSampleTypes(format),
47
- canRenderAttachment: canRenderAttachment(format),
48
- ...depthAspect && { depthAspect },
49
- ...hasStencil && { stencilAspect: STENCIL_ASPECT }
50
- };
37
+ const channelType = parseChannelType(format);
38
+ const depthAspect = getDepthAspect(format);
39
+ const hasStencil = format.includes('stencil');
40
+ return {
41
+ channelType,
42
+ vectorType: channelType === u32 ? vec4u : channelType === i32 ? vec4i : vec4f,
43
+ texelSize: parseTexelSize(format),
44
+ sampleTypes: parseSampleTypes(format),
45
+ canRenderAttachment: canRenderAttachment(format),
46
+ ...(depthAspect && { depthAspect }),
47
+ ...(hasStencil && { stencilAspect: STENCIL_ASPECT }),
48
+ };
51
49
  }
52
50
  function getDepthAspect(format) {
53
- if (format === "depth16unorm") return DEPTH_ASPECT_16;
54
- if (format === "depth32float" || format === "depth32float-stencil8") return DEPTH_ASPECT_32;
55
- if (format === "depth24plus" || format === "depth24plus-stencil8") return DEPTH_ASPECT_NON_COPYABLE;
51
+ if (format === 'depth16unorm')
52
+ return DEPTH_ASPECT_16;
53
+ if (format === 'depth32float' || format === 'depth32float-stencil8') {
54
+ return DEPTH_ASPECT_32;
55
+ }
56
+ if (format === 'depth24plus' || format === 'depth24plus-stencil8') {
57
+ return DEPTH_ASPECT_NON_COPYABLE;
58
+ }
59
+ return undefined;
56
60
  }
57
61
  function canRenderAttachment(format) {
58
- if (format.startsWith("bc") || format.startsWith("etc2") || format.startsWith("eac") || format.startsWith("astc")) return false;
59
- if (format === "rgb9e5ufloat") return false;
60
- return true;
62
+ if (format.startsWith('bc') ||
63
+ format.startsWith('etc2') ||
64
+ format.startsWith('eac') ||
65
+ format.startsWith('astc')) {
66
+ return false;
67
+ }
68
+ if (format === 'rgb9e5ufloat')
69
+ return false;
70
+ return true;
61
71
  }
62
72
  function parseChannelType(format) {
63
- if (format === "stencil8") return u32;
64
- if (format.includes("uint")) return u32;
65
- if (format.includes("sint")) return i32;
66
- return f32;
73
+ if (format === 'stencil8')
74
+ return u32;
75
+ if (format.includes('uint'))
76
+ return u32;
77
+ if (format.includes('sint'))
78
+ return i32;
79
+ return f32;
67
80
  }
68
81
  function parseTexelSize(format) {
69
- const [, channels, bits] = format.match(/^(rgba|bgra|rg|r)(8|16|32)/) ?? [];
70
- if (channels && bits) return channels.length * Number(bits) / 8;
71
- if (format === "stencil8") return 1;
72
- if (format === "depth16unorm") return 2;
73
- if (format === "depth32float") return 4;
74
- if (format === "depth32float-stencil8") return 5;
75
- if (format === "depth24plus" || format === "depth24plus-stencil8") return "non-copyable";
76
- if (/^(bc[14]-|etc2-rgb8|eac-r11)/.test(format)) return 8;
77
- if (/^(bc|astc-|etc2-rgba|eac-rg)/.test(format)) return 16;
78
- return 4;
82
+ // Standard formats: channel count encoded in prefix length (r=1, rg=2, rgba/bgra=4)
83
+ const [, channels, bits] = format.match(/^(rgba|bgra|rg|r)(8|16|32)/) ?? [];
84
+ if (channels && bits) {
85
+ return (channels.length * Number(bits)) / 8;
86
+ }
87
+ // Depth/stencil
88
+ if (format === 'stencil8')
89
+ return 1;
90
+ if (format === 'depth16unorm')
91
+ return 2;
92
+ if (format === 'depth32float')
93
+ return 4;
94
+ if (format === 'depth32float-stencil8')
95
+ return 5;
96
+ // depth24plus formats have undefined copy size
97
+ if (format === 'depth24plus' || format === 'depth24plus-stencil8') {
98
+ return 'non-copyable';
99
+ }
100
+ // Compressed: 8-byte blocks (bc1, bc4, etc2-rgb8*, eac-r11*)
101
+ if (/^(bc[14]-|etc2-rgb8|eac-r11)/.test(format))
102
+ return 8;
103
+ // Compressed: 16-byte blocks (bc2-7, astc, etc2-rgba8*, eac-rg11*)
104
+ if (/^(bc|astc-|etc2-rgba|eac-rg)/.test(format))
105
+ return 16;
106
+ // Packed 32-bit (rgb9e5ufloat, rgb10a2unorm, rgb10a2uint, rg11b10ufloat)
107
+ return 4;
79
108
  }
80
109
  function parseSampleTypes(format) {
81
- if (format === "stencil8") return ["uint"];
82
- if (format.includes("uint")) return ["uint"];
83
- if (format.includes("sint")) return ["sint"];
84
- if (format.includes("depth")) return ["depth", "unfilterable-float"];
85
- if (/^(r|rg|rgba)16(u|s)norm$/.test(format)) return ["unfilterable-float"];
86
- return ["float", "unfilterable-float"];
110
+ if (format === 'stencil8')
111
+ return ['uint'];
112
+ if (format.includes('uint'))
113
+ return ['uint'];
114
+ if (format.includes('sint'))
115
+ return ['sint'];
116
+ if (format.includes('depth'))
117
+ return ['depth', 'unfilterable-float'];
118
+ if (/^(r|rg|rgba)16(u|s)norm$/.test(format))
119
+ return ['unfilterable-float'];
120
+ return ['float', 'unfilterable-float'];
87
121
  }
88
- const FLOAT32_FORMATS = new Set([
89
- "r32float",
90
- "rg32float",
91
- "rgba32float"
92
- ]);
93
- function getEffectiveSampleTypes(device, format) {
94
- if (FLOAT32_FORMATS.has(format) && !device.features.has("float32-filterable")) return ["unfilterable-float"];
95
- return getTextureFormatInfo(format).sampleTypes;
122
+ const FLOAT32_FORMATS = new Set(['r32float', 'rg32float', 'rgba32float']);
123
+ export function getEffectiveSampleTypes(device, format) {
124
+ if (FLOAT32_FORMATS.has(format) && !device.features.has('float32-filterable')) {
125
+ return ['unfilterable-float'];
126
+ }
127
+ return getTextureFormatInfo(format).sampleTypes;
96
128
  }
97
-
98
- //#endregion
99
- export { getEffectiveSampleTypes, getTextureFormatInfo };
@@ -1,11 +1,8 @@
1
- //#region src/core/texture/textureProps.d.ts
2
- type TextureProps = {
3
- size: readonly number[];
4
- format: GPUTextureFormat;
5
- viewFormats?: GPUTextureFormat[] | undefined;
6
- dimension?: GPUTextureDimension | undefined;
7
- mipLevelCount?: number | undefined;
8
- sampleCount?: number | undefined;
1
+ export type TextureProps = {
2
+ size: readonly number[];
3
+ format: GPUTextureFormat;
4
+ viewFormats?: GPUTextureFormat[] | undefined;
5
+ dimension?: GPUTextureDimension | undefined;
6
+ mipLevelCount?: number | undefined;
7
+ sampleCount?: number | undefined;
9
8
  };
10
- //#endregion
11
- export { TextureProps };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ExternalImageSource } from './texture.ts';
2
+ export declare function getImageSourceDimensions(source: ExternalImageSource): {
3
+ width: number;
4
+ height: number;
5
+ };
6
+ export declare function clearTextureUtilsCache(device: GPUDevice): void;
7
+ export declare function generateTextureMipmaps(device: GPUDevice, texture: GPUTexture, baseMipLevel?: number, mipLevels?: number): void;
8
+ export declare function resampleImage(device: GPUDevice, targetTexture: GPUTexture, image: ExternalImageSource, layer?: number): void;