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
@@ -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;