typegpu 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/{chunk-BYypO7fO.js → _virtual/_rolldown/runtime.js} +1 -1
  2. package/builtin.d.ts +50 -0
  3. package/builtin.js +37 -0
  4. package/common/fullScreenTriangle.d.ts +26 -0
  5. package/common/fullScreenTriangle.js +36 -0
  6. package/common/index.d.ts +2 -3
  7. package/common/index.js +3 -4
  8. package/core/buffer/buffer.d.ts +74 -0
  9. package/core/buffer/buffer.js +197 -0
  10. package/core/buffer/bufferShorthand.d.ts +48 -0
  11. package/core/buffer/bufferShorthand.js +49 -0
  12. package/core/buffer/bufferUsage.d.ts +45 -0
  13. package/core/buffer/bufferUsage.js +163 -0
  14. package/core/constant/tgpuConstant.d.ts +28 -0
  15. package/core/constant/tgpuConstant.js +67 -0
  16. package/core/declare/tgpuDeclare.d.ts +18 -0
  17. package/core/declare/tgpuDeclare.js +40 -0
  18. package/core/function/autoIO.d.ts +37 -0
  19. package/core/function/autoIO.js +87 -0
  20. package/core/function/comptime.d.ts +39 -0
  21. package/core/function/comptime.js +51 -0
  22. package/core/function/createCallableSchema.js +42 -0
  23. package/core/function/dualImpl.js +54 -0
  24. package/core/function/extractArgs.js +204 -0
  25. package/core/function/fnCore.js +79 -0
  26. package/core/function/fnTypes.d.ts +34 -0
  27. package/core/function/ioSchema.d.ts +10 -0
  28. package/core/function/ioSchema.js +30 -0
  29. package/core/function/shelllessImpl.d.ts +28 -0
  30. package/core/function/shelllessImpl.js +23 -0
  31. package/core/function/templateUtils.js +13 -0
  32. package/core/function/tgpuComputeFn.d.ts +49 -0
  33. package/core/function/tgpuComputeFn.js +62 -0
  34. package/core/function/tgpuFn.d.ts +52 -0
  35. package/core/function/tgpuFn.js +170 -0
  36. package/core/function/tgpuFragmentFn.d.ts +68 -0
  37. package/core/function/tgpuFragmentFn.js +68 -0
  38. package/core/function/tgpuVertexFn.d.ts +55 -0
  39. package/core/function/tgpuVertexFn.js +65 -0
  40. package/core/pipeline/applyPipelineState.js +37 -0
  41. package/core/pipeline/computePipeline.d.ts +58 -0
  42. package/core/pipeline/computePipeline.js +226 -0
  43. package/core/pipeline/connectAttachmentToShader.js +26 -0
  44. package/core/pipeline/connectTargetsToShader.js +29 -0
  45. package/core/pipeline/limitsOverflow.js +13 -0
  46. package/core/pipeline/renderPipeline.d.ts +266 -0
  47. package/core/pipeline/renderPipeline.js +471 -0
  48. package/core/pipeline/timeable.d.ts +23 -0
  49. package/core/pipeline/timeable.js +61 -0
  50. package/core/pipeline/typeGuards.js +29 -0
  51. package/core/querySet/querySet.d.ts +22 -0
  52. package/core/querySet/querySet.js +103 -0
  53. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +59 -0
  54. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +96 -0
  55. package/core/resolve/externals.d.ts +10 -0
  56. package/core/resolve/externals.js +58 -0
  57. package/core/resolve/namespace.d.ts +38 -0
  58. package/core/resolve/namespace.js +41 -0
  59. package/core/resolve/resolveData.js +146 -0
  60. package/core/resolve/stitch.js +25 -0
  61. package/core/resolve/tgpuResolve.d.ts +151 -0
  62. package/core/resolve/tgpuResolve.js +68 -0
  63. package/core/root/configurableImpl.js +18 -0
  64. package/core/root/init.d.ts +69 -0
  65. package/core/root/init.js +457 -0
  66. package/core/root/rootTypes.d.ts +622 -0
  67. package/core/sampler/sampler.d.ts +35 -0
  68. package/core/sampler/sampler.js +116 -0
  69. package/core/simulate/tgpuSimulate.d.ts +36 -0
  70. package/core/simulate/tgpuSimulate.js +76 -0
  71. package/core/slot/accessor.d.ts +13 -0
  72. package/core/slot/accessor.js +97 -0
  73. package/core/slot/internalSlots.js +7 -0
  74. package/core/slot/lazy.d.ts +6 -0
  75. package/core/slot/lazy.js +42 -0
  76. package/core/slot/slot.d.ts +6 -0
  77. package/core/slot/slot.js +40 -0
  78. package/core/slot/slotTypes.d.ts +92 -0
  79. package/core/slot/slotTypes.js +21 -0
  80. package/core/texture/externalTexture.d.ts +12 -0
  81. package/core/texture/externalTexture.js +48 -0
  82. package/core/texture/texture.d.ts +118 -0
  83. package/core/texture/texture.js +312 -0
  84. package/core/texture/textureFormats.d.ts +29 -0
  85. package/core/texture/textureFormats.js +99 -0
  86. package/core/texture/textureProps.d.ts +11 -0
  87. package/core/texture/textureUtils.js +224 -0
  88. package/core/texture/usageExtension.d.ts +21 -0
  89. package/core/texture/usageExtension.js +21 -0
  90. package/core/unroll/tgpuUnroll.d.ts +13 -0
  91. package/core/unroll/tgpuUnroll.js +36 -0
  92. package/core/valueProxyUtils.js +44 -0
  93. package/core/variable/tgpuVariable.d.ts +38 -0
  94. package/core/variable/tgpuVariable.js +101 -0
  95. package/core/vertexLayout/connectAttributesToShader.js +59 -0
  96. package/core/vertexLayout/vertexAttribute.d.ts +29 -0
  97. package/core/vertexLayout/vertexLayout.d.ts +19 -0
  98. package/core/vertexLayout/vertexLayout.js +103 -0
  99. package/data/alignIO.js +15 -0
  100. package/data/alignmentOf.d.ts +10 -0
  101. package/data/alignmentOf.js +88 -0
  102. package/data/array.d.ts +28 -0
  103. package/data/array.js +48 -0
  104. package/data/atomic.d.ts +15 -0
  105. package/data/atomic.js +25 -0
  106. package/data/attributes.d.ts +121 -0
  107. package/data/attributes.js +145 -0
  108. package/data/autoStruct.d.ts +3 -0
  109. package/data/autoStruct.js +83 -0
  110. package/data/compiledIO.js +231 -0
  111. package/data/dataIO.js +549 -0
  112. package/data/dataTypes.d.ts +115 -0
  113. package/data/dataTypes.js +97 -0
  114. package/data/deepEqual.d.ts +25 -0
  115. package/data/deepEqual.js +58 -0
  116. package/data/disarray.d.ts +34 -0
  117. package/data/disarray.js +52 -0
  118. package/data/getLongestContiguousPrefix.d.ts +10 -0
  119. package/data/getLongestContiguousPrefix.js +15 -0
  120. package/data/index.d.ts +26 -4
  121. package/data/index.js +27 -7
  122. package/data/instanceToSchema.d.ts +33 -0
  123. package/data/isContiguous.d.ts +10 -0
  124. package/data/isContiguous.js +15 -0
  125. package/data/matrix.d.ts +126 -0
  126. package/data/matrix.js +517 -0
  127. package/data/numberOps.js +24 -0
  128. package/data/numeric.d.ts +81 -0
  129. package/data/numeric.js +234 -0
  130. package/data/offsetUtils.d.ts +33 -0
  131. package/data/offsetUtils.js +167 -0
  132. package/data/offsets.js +36 -0
  133. package/data/partialIO.js +68 -0
  134. package/data/ptr.d.ts +12 -0
  135. package/data/ptr.js +46 -0
  136. package/data/ref.d.ts +37 -0
  137. package/data/ref.js +96 -0
  138. package/data/sampler.d.ts +107 -0
  139. package/data/sampler.js +26 -0
  140. package/data/schemaCallWrapper.js +32 -0
  141. package/data/schemaMemoryLayout.js +200 -0
  142. package/data/sizeOf.d.ts +10 -0
  143. package/data/sizeOf.js +15 -0
  144. package/data/snippet.d.ts +26 -0
  145. package/data/snippet.js +61 -0
  146. package/data/struct.d.ts +17 -0
  147. package/data/struct.js +46 -0
  148. package/data/texture.d.ts +292 -0
  149. package/{texture-Dg5ybJro.js → data/texture.js} +6 -3
  150. package/data/unstruct.d.ts +24 -0
  151. package/data/unstruct.js +43 -0
  152. package/data/vector.d.ts +191 -0
  153. package/data/vector.js +247 -0
  154. package/data/vectorImpl.js +516 -0
  155. package/data/vectorOps.js +664 -0
  156. package/data/vertexFormatData.d.ts +190 -0
  157. package/data/vertexFormatData.js +110 -0
  158. package/data/wgslTypes.d.ts +896 -0
  159. package/data/wgslTypes.js +215 -0
  160. package/errors.d.ts +44 -0
  161. package/errors.js +128 -0
  162. package/execMode.js +51 -0
  163. package/extension.d.ts +11 -0
  164. package/extension.js +18 -0
  165. package/getGPUValue.js +9 -0
  166. package/index.d.ts +40 -243
  167. package/index.js +19 -6318
  168. package/indexNamedExports.d.ts +38 -0
  169. package/mathUtils.js +13 -0
  170. package/memo.js +22 -0
  171. package/nameRegistry.d.ts +30 -0
  172. package/nameRegistry.js +449 -0
  173. package/package.js +5 -0
  174. package/package.json +23 -23
  175. package/resolutionCtx.d.ts +29 -0
  176. package/resolutionCtx.js +546 -0
  177. package/shared/env.js +13 -0
  178. package/shared/generators.js +14 -0
  179. package/shared/meta.d.ts +39 -0
  180. package/shared/meta.js +63 -0
  181. package/shared/repr.d.ts +108 -0
  182. package/shared/stringify.js +22 -0
  183. package/shared/symbols.d.ts +61 -0
  184. package/shared/symbols.js +71 -0
  185. package/shared/utilityTypes.d.ts +29 -0
  186. package/shared/utilityTypes.js +7 -0
  187. package/shared/vertexFormat.d.ts +70 -0
  188. package/shared/vertexFormat.js +64 -0
  189. package/std/array.d.ts +7 -0
  190. package/std/array.js +27 -0
  191. package/std/atomic.d.ts +19 -0
  192. package/std/atomic.js +113 -0
  193. package/std/bitcast.d.ts +10 -0
  194. package/std/bitcast.js +43 -0
  195. package/std/boolean.d.ts +127 -0
  196. package/std/boolean.js +274 -0
  197. package/std/derivative.d.ts +16 -0
  198. package/std/derivative.js +89 -0
  199. package/std/discard.d.ts +6 -0
  200. package/std/discard.js +16 -0
  201. package/std/extensions.d.ts +8 -0
  202. package/std/extensions.js +14 -0
  203. package/std/index.d.ts +15 -3
  204. package/std/index.js +16 -5
  205. package/std/matrix.d.ts +41 -0
  206. package/std/matrix.js +87 -0
  207. package/std/numeric.d.ts +254 -0
  208. package/std/numeric.js +847 -0
  209. package/std/operators.d.ts +48 -0
  210. package/std/operators.js +153 -0
  211. package/std/packing.d.ts +26 -0
  212. package/std/packing.js +86 -0
  213. package/std/subgroup.d.ts +47 -0
  214. package/std/subgroup.js +220 -0
  215. package/std/texture.d.ts +108 -0
  216. package/std/texture.js +197 -0
  217. package/tgpu.js +44 -0
  218. package/tgpuBindGroupLayout.d.ts +161 -0
  219. package/tgpuBindGroupLayout.js +271 -0
  220. package/tgpuUnstable.d.ts +48 -0
  221. package/tgpuUnstable.js +66 -0
  222. package/tgsl/accessIndex.js +45 -0
  223. package/tgsl/accessProp.js +113 -0
  224. package/tgsl/consoleLog/deserializers.js +117 -0
  225. package/tgsl/consoleLog/logGenerator.js +86 -0
  226. package/tgsl/consoleLog/serializers.js +225 -0
  227. package/tgsl/consoleLog/types.d.ts +54 -0
  228. package/tgsl/consoleLog/types.js +12 -0
  229. package/tgsl/conversion.js +200 -0
  230. package/tgsl/forOfUtils.js +45 -0
  231. package/tgsl/generationHelpers.d.ts +37 -0
  232. package/tgsl/generationHelpers.js +67 -0
  233. package/tgsl/math.js +45 -0
  234. package/tgsl/shaderGenerator.d.ts +18 -0
  235. package/tgsl/shellless.d.ts +11 -0
  236. package/tgsl/shellless.js +53 -0
  237. package/tgsl/wgslGenerator.js +585 -0
  238. package/types.d.ts +255 -0
  239. package/types.js +43 -0
  240. package/unwrapper.d.ts +27 -0
  241. package/wgslExtensions.d.ts +5 -0
  242. package/wgslExtensions.js +18 -0
  243. package/builtin-ClEnM-Ye.js +0 -818
  244. package/builtin-ClEnM-Ye.js.map +0 -1
  245. package/common/index.d.ts.map +0 -1
  246. package/common/index.js.map +0 -1
  247. package/data/index.d.ts.map +0 -1
  248. package/data/index.js.map +0 -1
  249. package/deepEqual-yZXvaV2C.js +0 -413
  250. package/deepEqual-yZXvaV2C.js.map +0 -1
  251. package/extensions-0SFbU9FH.js +0 -2032
  252. package/extensions-0SFbU9FH.js.map +0 -1
  253. package/fullScreenTriangle-MdLGaAMR.js +0 -543
  254. package/fullScreenTriangle-MdLGaAMR.js.map +0 -1
  255. package/index.d.ts.map +0 -1
  256. package/index.js.map +0 -1
  257. package/indexNamedExports-Cdy7USiY.d.ts +0 -5696
  258. package/indexNamedExports-Cdy7USiY.d.ts.map +0 -1
  259. package/operators-HTxa_0k9.js +0 -4156
  260. package/operators-HTxa_0k9.js.map +0 -1
  261. package/std/index.d.ts.map +0 -1
  262. package/std/index.js.map +0 -1
  263. package/texture-Dg5ybJro.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/std/index.ts"],"mappings":""}
package/std/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/std/index.ts"],"sourcesContent":["/**\n * @module typegpu/std\n */\n\n// NOTE: This is a barrel file, internal files should not import things from this file\n\nexport { discard } from './discard.ts';\n\nexport {\n abs,\n acos,\n acosh,\n asin,\n asinh,\n atan,\n atan2,\n atanh,\n ceil,\n clamp,\n cos,\n cosh,\n countLeadingZeros,\n countOneBits,\n countTrailingZeros,\n cross,\n degrees,\n determinant,\n distance,\n dot,\n dot4I8Packed,\n dot4U8Packed,\n exp,\n exp2,\n extractBits,\n faceForward,\n firstLeadingBit,\n firstTrailingBit,\n floor,\n fma,\n fract,\n frexp,\n insertBits,\n inverseSqrt,\n ldexp,\n length,\n log,\n log2,\n max,\n min,\n mix,\n modf,\n normalize,\n pow,\n quantizeToF16,\n radians,\n reflect,\n refract,\n reverseBits,\n round,\n saturate,\n sign,\n sin,\n sinh,\n smoothstep,\n sqrt,\n step,\n tan,\n tanh,\n transpose,\n trunc,\n} from './numeric.ts';\n\nexport { add, div, mod, mul, neg, sub } from './operators.ts';\n\n// deno-fmt-ingore\nexport { rotateX4, rotateY4, rotateZ4, scale4, translate4 } from './matrix.ts';\n\n// deno-fmt-ingore\nexport {\n identity2,\n identity3,\n identity4,\n rotationX4,\n rotationY4,\n rotationZ4,\n scaling4,\n translation4,\n} from '../data/matrix.ts';\n\n// deno-fmt-ignore\nexport {\n // comparison\n allEq,\n eq,\n ne,\n lt,\n le,\n gt,\n ge,\n // logical ops\n not,\n or,\n and,\n // logical aggregation\n all,\n any,\n // other\n isCloseTo,\n select,\n} from './boolean.ts';\n\n// deno-fmt-ignore\nexport {\n atomicAdd,\n atomicAnd,\n atomicLoad,\n atomicMax,\n atomicMin,\n atomicOr,\n atomicStore,\n atomicSub,\n atomicXor,\n // synchronization\n workgroupBarrier,\n storageBarrier,\n textureBarrier,\n} from './atomic.ts';\n\nexport {\n dpdx,\n dpdxCoarse,\n dpdxFine,\n dpdy,\n dpdyCoarse,\n dpdyFine,\n fwidth,\n fwidthCoarse,\n fwidthFine,\n} from './derivative.ts';\n\nexport { arrayLength } from './array.ts';\n\n// deno-fmt-ignore\nexport {\n pack4x8unorm,\n pack2x16float,\n unpack4x8unorm,\n unpack2x16float,\n} from './packing.ts';\n\nexport {\n textureDimensions,\n textureGather,\n textureLoad,\n textureSample,\n textureSampleBaseClampToEdge,\n textureSampleBias,\n textureSampleCompare,\n textureSampleCompareLevel,\n textureSampleLevel,\n textureStore,\n} from './texture.ts';\n\nexport {\n subgroupAdd,\n subgroupAll,\n subgroupAnd,\n subgroupAny,\n subgroupBallot,\n subgroupBroadcast,\n subgroupBroadcastFirst,\n subgroupElect,\n subgroupExclusiveAdd,\n subgroupExclusiveMul,\n subgroupInclusiveAdd,\n subgroupInclusiveMul,\n subgroupMax,\n subgroupMin,\n subgroupMul,\n subgroupOr,\n subgroupShuffle,\n subgroupShuffleDown,\n subgroupShuffleUp,\n subgroupShuffleXor,\n subgroupXor,\n} from './subgroup.ts';\n\nexport { extensionEnabled } from './extensions.ts';\n\nexport { bitcastU32toF32, bitcastU32toI32 } from './bitcast.ts';\n"],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"texture-Dg5ybJro.js","names":[],"sources":["../src/data/texture.ts"],"sourcesContent":["import type { StorageTextureFormats } from '../core/texture/textureFormats.ts';\nimport { $internal, $repr } from '../shared/symbols.ts';\nimport type { Default, WithDefaults } from '../shared/utilityTypes.ts';\nimport { f32 } from './numeric.ts';\nimport type { F32 } from './wgslTypes.ts';\nimport type { BaseData, TextureSampleTypes } from './wgslTypes.ts';\n\nexport type StorageTextureDimension = '1d' | '2d' | '2d-array' | '3d';\n\nexport type WgslTextureProps = {\n dimension: GPUTextureViewDimension;\n sampleType: TextureSampleTypes;\n multisampled: boolean;\n};\n\nexport type WgslStorageTextureProps = {\n dimension: StorageTextureDimension;\n format: StorageTextureFormats;\n access: GPUStorageTextureAccess;\n};\n\ntype ResolvedTextureProps<\n TProps extends Partial<WgslTextureProps>,\n> = WithDefaults<TProps, WgslTextureProps>;\n\ntype ResolvedStorageTextureProps<\n TProps extends Partial<WgslStorageTextureProps>,\n> = WithDefaults<TProps, WgslStorageTextureProps>;\n\ntype SampledTextureLiteral = `texture_${\n | '1d'\n | '2d'\n | '2d_array'\n | '3d'\n | 'cube'\n | 'cube_array'\n | 'multisampled_2d'\n | 'depth_multisampled_2d'\n | 'depth_2d'\n | 'depth_2d_array'\n | 'depth_cube'\n | 'depth_cube_array'}`;\ntype StorageTextureLiteral = `texture_storage_${\n | '1d'\n | '2d'\n | '2d_array'\n | '3d'}`;\n\nexport interface WgslTexture<\n TProps extends Partial<WgslTextureProps> = WgslTextureProps,\n> extends BaseData {\n readonly [$repr]: unknown;\n readonly type: SampledTextureLiteral;\n\n readonly sampleType: ResolvedTextureProps<TProps>['sampleType'];\n readonly dimension: ResolvedTextureProps<TProps>['dimension'];\n readonly multisampled: ResolvedTextureProps<TProps>['multisampled'];\n readonly bindingSampleType: [GPUTextureSampleType, ...GPUTextureSampleType[]];\n}\n\nexport interface WgslStorageTexture<\n TProps extends Partial<WgslStorageTextureProps> = WgslStorageTextureProps,\n> extends BaseData {\n readonly [$repr]: unknown;\n readonly type: StorageTextureLiteral;\n\n readonly format: ResolvedStorageTextureProps<TProps>['format'];\n readonly dimension: ResolvedStorageTextureProps<TProps>['dimension'];\n readonly access: ResolvedStorageTextureProps<TProps>['access'];\n}\n\nexport interface WgslExternalTexture extends BaseData {\n readonly [$repr]: textureExternal;\n readonly type: 'texture_external';\n\n readonly dimension: '2d';\n}\n\nexport interface WgslTexture1d<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: '1d';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_1d';\n readonly [$repr]: texture1d<TSample>;\n}\n\nexport interface WgslTexture2d<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: '2d';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_2d';\n readonly [$repr]: texture2d<TSample>;\n}\n\nexport interface WgslTextureMultisampled2d<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: '2d';\n sampleType: TSample;\n multisampled: true;\n }> {\n readonly type: 'texture_multisampled_2d';\n readonly [$repr]: textureMultisampled2d<TSample>;\n}\n\nexport interface WgslTexture2dArray<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: '2d-array';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_2d_array';\n readonly [$repr]: texture2dArray<TSample>;\n}\n\nexport interface WgslTextureCube<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: 'cube';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_cube';\n readonly [$repr]: textureCube<TSample>;\n}\n\nexport interface WgslTextureCubeArray<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: 'cube-array';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_cube_array';\n readonly [$repr]: textureCubeArray<TSample>;\n}\n\nexport interface WgslTexture3d<\n TSample extends TextureSampleTypes = TextureSampleTypes,\n> extends\n WgslTexture<{\n dimension: '3d';\n sampleType: TSample;\n multisampled: false;\n }> {\n readonly type: 'texture_3d';\n readonly [$repr]: texture3d<TSample>;\n}\n\n// Depth textures (sample type is always f32)\nexport interface WgslTextureDepth2d extends\n WgslTexture<{\n dimension: '2d';\n sampleType: F32;\n multisampled: false;\n }> {\n readonly type: 'texture_depth_2d';\n readonly [$repr]: textureDepth2d;\n}\n\nexport interface WgslTextureDepthMultisampled2d extends\n WgslTexture<{\n dimension: '2d';\n sampleType: F32;\n multisampled: true;\n }> {\n readonly type: 'texture_depth_multisampled_2d';\n readonly [$repr]: textureDepthMultisampled2d;\n}\n\nexport interface WgslTextureDepth2dArray extends\n WgslTexture<{\n dimension: '2d-array';\n sampleType: F32;\n multisampled: false;\n }> {\n readonly type: 'texture_depth_2d_array';\n readonly [$repr]: textureDepth2dArray;\n}\n\nexport interface WgslTextureDepthCube extends\n WgslTexture<{\n dimension: 'cube';\n sampleType: F32;\n multisampled: false;\n }> {\n readonly type: 'texture_depth_cube';\n readonly [$repr]: textureDepthCube;\n}\n\nexport interface WgslTextureDepthCubeArray extends\n WgslTexture<{\n dimension: 'cube-array';\n sampleType: F32;\n multisampled: false;\n }> {\n readonly type: 'texture_depth_cube_array';\n readonly [$repr]: textureDepthCubeArray;\n}\n\n// Storage textures\nexport interface WgslStorageTexture1d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> extends\n WgslStorageTexture<{\n dimension: '1d';\n format: TFormat;\n access: TAccess;\n }> {\n readonly type: 'texture_storage_1d';\n readonly [$repr]: textureStorage1d<TFormat, TAccess>;\n}\n\nexport interface WgslStorageTexture2d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> extends\n WgslStorageTexture<{\n dimension: '2d';\n format: TFormat;\n access: TAccess;\n }> {\n readonly type: 'texture_storage_2d';\n readonly [$repr]: textureStorage2d<TFormat, TAccess>;\n}\n\nexport interface WgslStorageTexture2dArray<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> extends\n WgslStorageTexture<{\n dimension: '2d-array';\n format: TFormat;\n access: TAccess;\n }> {\n readonly type: 'texture_storage_2d_array';\n readonly [$repr]: textureStorage2dArray<TFormat, TAccess>;\n}\n\nexport interface WgslStorageTexture3d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> extends\n WgslStorageTexture<{\n dimension: '3d';\n format: TFormat;\n access: TAccess;\n }> {\n readonly type: 'texture_storage_3d';\n readonly [$repr]: textureStorage3d<TFormat, TAccess>;\n}\n\ntype SampledTextureSchemaMap<T extends WgslTextureProps> = {\n multisampled: {\n '1d': never;\n '2d': WgslTextureMultisampled2d<T['sampleType']>;\n '2d-array': never;\n '3d': never;\n cube: never;\n 'cube-array': never;\n };\n sampled: {\n '1d': WgslTexture1d<T['sampleType']>;\n '2d': WgslTexture2d<T['sampleType']>;\n '2d-array': WgslTexture2dArray<T['sampleType']>;\n '3d': WgslTexture3d<T['sampleType']>;\n cube: WgslTextureCube<T['sampleType']>;\n 'cube-array': WgslTextureCubeArray<T['sampleType']>;\n };\n};\n\ntype StorageTextureSchemaMap<T extends WgslStorageTextureProps> = {\n '1d': WgslStorageTexture1d<T['format'], T['access']>;\n '2d': WgslStorageTexture2d<T['format'], T['access']>;\n '2d-array': WgslStorageTexture2dArray<T['format'], T['access']>;\n '3d': WgslStorageTexture3d<T['format'], T['access']>;\n};\n\nexport type TextureSchemaForDescriptor<\n T extends WgslTextureProps | WgslStorageTextureProps,\n> = T extends WgslTextureProps\n ? T['multisampled'] extends true\n ? SampledTextureSchemaMap<T>['multisampled'][T['dimension']]\n : SampledTextureSchemaMap<T>['sampled'][T['dimension']]\n : T extends WgslStorageTextureProps\n ? StorageTextureSchemaMap<T>[T['dimension']]\n : never;\n\nexport function textureDescriptorToSchema<\n T extends WgslTextureProps | WgslStorageTextureProps,\n>(desc: T): TextureSchemaForDescriptor<T> {\n if ('multisampled' in desc) {\n if (desc.multisampled) {\n if (desc.dimension === '2d') {\n return textureMultisampled2d(\n desc.sampleType,\n ) as TextureSchemaForDescriptor<T>;\n }\n throw new Error(\n `Multisampled textures only support '2d' dimension, got '${desc.dimension}'`,\n );\n }\n\n switch (desc.dimension) {\n case '1d':\n return texture1d(desc.sampleType) as TextureSchemaForDescriptor<T>;\n case '2d':\n return texture2d(desc.sampleType) as TextureSchemaForDescriptor<T>;\n case '2d-array':\n return texture2dArray(\n desc.sampleType,\n ) as TextureSchemaForDescriptor<T>;\n case '3d':\n return texture3d(desc.sampleType) as TextureSchemaForDescriptor<T>;\n case 'cube':\n return textureCube(\n desc.sampleType,\n ) as TextureSchemaForDescriptor<T>;\n case 'cube-array':\n return textureCubeArray(\n desc.sampleType,\n ) as TextureSchemaForDescriptor<T>;\n default:\n throw new Error(\n // @ts-expect-error\n `Unsupported texture dimension: '${desc.dimension}'`,\n );\n }\n }\n if (!('access' in desc)) {\n throw new Error('Descriptor is neither a sampled nor a storage texture');\n }\n\n switch (desc.dimension) {\n case '1d':\n return textureStorage1d(\n desc.format,\n desc.access,\n ) as TextureSchemaForDescriptor<T>;\n case '2d':\n return textureStorage2d(\n desc.format,\n desc.access,\n ) as TextureSchemaForDescriptor<T>;\n case '2d-array':\n return textureStorage2dArray(\n desc.format,\n desc.access,\n ) as TextureSchemaForDescriptor<T>;\n case '3d':\n return textureStorage3d(\n desc.format,\n desc.access,\n ) as TextureSchemaForDescriptor<T>;\n default:\n throw new Error(\n // @ts-expect-error\n `Unsupported storage texture dimension: '${desc.dimension}'`,\n );\n }\n}\n\nfunction createTexture<TProps extends WgslTextureProps>(\n type: SampledTextureLiteral,\n props: TProps,\n): WgslTexture<TProps> {\n const isDepth = type.startsWith('texture_depth');\n const sampleTypes: [GPUTextureSampleType, ...GPUTextureSampleType[]] = isDepth\n ? ['depth', 'float', 'unfilterable-float']\n : props.sampleType.type === 'i32'\n ? ['sint']\n : props.sampleType.type === 'u32'\n ? ['uint']\n : ['float', 'unfilterable-float'];\n\n return {\n [$internal]: {},\n [$repr]: undefined as unknown as WgslTexture<TProps>,\n type,\n bindingSampleType: sampleTypes,\n ...props,\n };\n}\n\nfunction createStorageTexture<TProps extends WgslStorageTextureProps>(\n type: StorageTextureLiteral,\n props: TProps,\n): WgslStorageTexture<TProps> {\n return {\n [$internal]: {},\n [$repr]: undefined as unknown as WgslStorageTexture<TProps>,\n type,\n ...props,\n };\n}\n\nconst textureCache = new Map<\n string,\n WgslTexture | WgslStorageTexture | WgslExternalTexture\n>();\n\nexport const accessModeMap: Record<GPUStorageTextureAccess, string> = {\n 'write-only': 'write',\n 'read-only': 'read',\n 'read-write': 'read_write',\n};\n\nfunction getOrCreate<\n T extends WgslTexture | WgslStorageTexture | WgslExternalTexture,\n>(key: string, factory: () => T): T {\n let cached = textureCache.get(key) as T | undefined;\n if (!cached) {\n cached = factory();\n textureCache.set(key, cached);\n }\n return cached;\n}\n\nexport interface texture1d<T extends TextureSampleTypes = TextureSampleTypes> {\n readonly kind: `texture_1d<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function texture1d<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTexture1d<T>;\nexport function texture1d(): WgslTexture1d<F32>;\nexport function texture1d<T extends TextureSampleTypes>(sampleType?: T) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_1d<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_1d', {\n dimension: '1d',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface texture2d<T extends TextureSampleTypes = TextureSampleTypes> {\n readonly kind: `texture_2d<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function texture2d<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTexture2d<T>;\nexport function texture2d(): WgslTexture2d<F32>;\nexport function texture2d<T extends TextureSampleTypes>(sampleType?: T) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_2d<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_2d', {\n dimension: '2d',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface textureMultisampled2d<\n T extends TextureSampleTypes = TextureSampleTypes,\n> {\n readonly kind: `texture_multisampled_2d<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function textureMultisampled2d<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTextureMultisampled2d<T>;\nexport function textureMultisampled2d(): WgslTextureMultisampled2d<F32>;\nexport function textureMultisampled2d<T extends TextureSampleTypes>(\n sampleType?: T,\n) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_multisampled_2d<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_multisampled_2d', {\n dimension: '2d',\n sampleType: actualSampleType,\n multisampled: true,\n }));\n}\n\nexport interface texture2dArray<\n T extends TextureSampleTypes = TextureSampleTypes,\n> {\n readonly kind: `texture_2d_array<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function texture2dArray<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTexture2dArray<T>;\nexport function texture2dArray(): WgslTexture2dArray<F32>;\nexport function texture2dArray<T extends TextureSampleTypes>(sampleType?: T) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_2d_array<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_2d_array', {\n dimension: '2d-array',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface textureCube<\n T extends TextureSampleTypes = TextureSampleTypes,\n> {\n readonly kind: `texture_cube<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function textureCube<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTextureCube<T>;\nexport function textureCube(): WgslTextureCube<F32>;\nexport function textureCube<T extends TextureSampleTypes>(sampleType?: T) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_cube<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_cube', {\n dimension: 'cube',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface textureCubeArray<\n T extends TextureSampleTypes = TextureSampleTypes,\n> {\n readonly kind: `texture_cube_array<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function textureCubeArray<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTextureCubeArray<T>;\nexport function textureCubeArray(): WgslTextureCubeArray<F32>;\nexport function textureCubeArray<T extends TextureSampleTypes>(\n sampleType?: T,\n) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_cube_array<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_cube_array', {\n dimension: 'cube-array',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface texture3d<T extends TextureSampleTypes = TextureSampleTypes> {\n readonly kind: `texture_3d<${T['type']}>`;\n [$internal]: T;\n}\n\nexport function texture3d<T extends TextureSampleTypes>(\n sampleType: T,\n): WgslTexture3d<T>;\nexport function texture3d(): WgslTexture3d<F32>;\nexport function texture3d<T extends TextureSampleTypes>(sampleType?: T) {\n const actualSampleType = (sampleType || f32) as Default<T, F32>;\n const key = `texture_3d<${actualSampleType.type}>`;\n return getOrCreate(key, () =>\n createTexture('texture_3d', {\n dimension: '3d',\n sampleType: actualSampleType,\n multisampled: false,\n }));\n}\n\nexport interface textureStorage1d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> {\n readonly kind: `texture_storage_1d<${TFormat}, ${TAccess}>`;\n [$internal]: [TFormat, TAccess];\n}\n\nexport function textureStorage1d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access: TAccess): WgslStorageTexture1d<TFormat, TAccess>;\nexport function textureStorage1d<TFormat extends StorageTextureFormats>(\n format: TFormat,\n): WgslStorageTexture1d<TFormat, 'write-only'>;\nexport function textureStorage1d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access?: TAccess) {\n const actualAccess = (access || 'write-only') as Default<\n TAccess,\n 'write-only'\n >;\n const key = `texture_storage_1d<${format}, ${accessModeMap[actualAccess]}>`;\n return getOrCreate(key, () =>\n createStorageTexture('texture_storage_1d', {\n dimension: '1d',\n format,\n access: actualAccess,\n }));\n}\n\nexport interface textureStorage2d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> {\n readonly kind: `texture_storage_2d<${TFormat}, ${TAccess}>`;\n [$internal]: [TFormat, TAccess];\n}\n\nexport function textureStorage2d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access: TAccess): WgslStorageTexture2d<TFormat, TAccess>;\nexport function textureStorage2d<TFormat extends StorageTextureFormats>(\n format: TFormat,\n): WgslStorageTexture2d<TFormat, 'write-only'>;\nexport function textureStorage2d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access?: TAccess) {\n const actualAccess = (access || 'write-only') as Default<\n TAccess,\n 'write-only'\n >;\n const key = `texture_storage_2d<${format}, ${accessModeMap[actualAccess]}>`;\n return getOrCreate(key, () =>\n createStorageTexture('texture_storage_2d', {\n dimension: '2d',\n format,\n access: actualAccess,\n }));\n}\n\nexport interface textureStorage2dArray<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> {\n readonly kind: `texture_storage_2d_array<${TFormat}, ${TAccess}>`;\n [$internal]: [TFormat, TAccess];\n}\n\nexport function textureStorage2dArray<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(\n format: TFormat,\n access: TAccess,\n): WgslStorageTexture2dArray<TFormat, TAccess>;\nexport function textureStorage2dArray<TFormat extends StorageTextureFormats>(\n format: TFormat,\n): WgslStorageTexture2dArray<TFormat, 'write-only'>;\nexport function textureStorage2dArray<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access?: TAccess) {\n const actualAccess = (access || 'write-only') as Default<\n TAccess,\n 'write-only'\n >;\n const key = `texture_storage_2d_array<${format}, ${\n accessModeMap[actualAccess]\n }>`;\n return getOrCreate(\n key,\n () =>\n createStorageTexture('texture_storage_2d_array', {\n dimension: '2d-array',\n format,\n access: actualAccess,\n }),\n );\n}\n\nexport interface textureStorage3d<\n TFormat extends StorageTextureFormats = StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess,\n> {\n readonly kind: `texture_storage_3d<${TFormat}, ${TAccess}>`;\n [$internal]: [TFormat, TAccess];\n}\n\nexport function textureStorage3d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access: TAccess): WgslStorageTexture3d<TFormat, TAccess>;\nexport function textureStorage3d<TFormat extends StorageTextureFormats>(\n format: TFormat,\n): WgslStorageTexture3d<TFormat, 'write-only'>;\nexport function textureStorage3d<\n TFormat extends StorageTextureFormats,\n TAccess extends GPUStorageTextureAccess,\n>(format: TFormat, access?: TAccess) {\n const actualAccess = (access || 'write-only') as Default<\n TAccess,\n 'write-only'\n >;\n const key = `texture_storage_3d<${format}, ${accessModeMap[actualAccess]}>`;\n return getOrCreate(key, () =>\n createStorageTexture('texture_storage_3d', {\n dimension: '3d',\n format,\n access: actualAccess,\n }));\n}\n\nexport interface textureDepth2d {\n readonly kind: 'texture_depth_2d';\n [$internal]: F32;\n}\n\nexport function textureDepth2d() {\n const key = 'texture_depth_2d';\n return getOrCreate(key, () =>\n createTexture('texture_depth_2d', {\n dimension: '2d',\n sampleType: f32,\n multisampled: false,\n })) as WgslTextureDepth2d;\n}\n\nexport interface textureDepthMultisampled2d {\n readonly kind: 'texture_depth_multisampled_2d';\n [$internal]: F32;\n}\n\nexport function textureDepthMultisampled2d() {\n const key = 'texture_depth_multisampled_2d';\n return getOrCreate(key, () =>\n createTexture('texture_depth_multisampled_2d', {\n dimension: '2d',\n sampleType: f32,\n multisampled: true,\n })) as WgslTextureDepthMultisampled2d;\n}\n\nexport interface textureDepth2dArray {\n readonly kind: 'texture_depth_2d_array';\n [$internal]: F32;\n}\n\nexport function textureDepth2dArray() {\n const key = 'texture_depth_2d_array';\n return getOrCreate(key, () =>\n createTexture('texture_depth_2d_array', {\n dimension: '2d-array',\n sampleType: f32,\n multisampled: false,\n })) as WgslTextureDepth2dArray;\n}\n\nexport interface textureDepthCube {\n readonly kind: 'texture_depth_cube';\n [$internal]: F32;\n}\n\nexport function textureDepthCube() {\n const key = 'texture_depth_cube';\n return getOrCreate(key, () =>\n createTexture('texture_depth_cube', {\n dimension: 'cube',\n sampleType: f32,\n multisampled: false,\n })) as WgslTextureDepthCube;\n}\n\nexport interface textureDepthCubeArray {\n readonly kind: 'texture_depth_cube_array';\n [$internal]: F32;\n}\n\nexport function textureDepthCubeArray() {\n const key = 'texture_depth_cube_array';\n return getOrCreate(key, () =>\n createTexture('texture_depth_cube_array', {\n dimension: 'cube-array',\n sampleType: f32,\n multisampled: false,\n })) as WgslTextureDepthCubeArray;\n}\n\nexport interface textureExternal {\n readonly kind: 'texture_external';\n [$internal]: true;\n}\n\nexport function textureExternal() {\n const key = 'texture_external';\n return getOrCreate(key, () => ({\n [$internal]: {},\n [$repr]: undefined as unknown as textureExternal,\n type: 'texture_external',\n dimension: '2d',\n })) as WgslExternalTexture;\n}\n\nexport function isWgslTexture(value: unknown): value is WgslTexture {\n return (\n !!(value as WgslTexture)[$internal] &&\n typeof (value as WgslTexture).multisampled === 'boolean'\n );\n}\n\nexport function isWgslStorageTexture(\n value: unknown,\n): value is WgslStorageTexture {\n return (\n !!(value as WgslStorageTexture)[$internal] &&\n typeof (value as WgslStorageTexture).format === 'string' &&\n typeof (value as WgslStorageTexture).access === 'string'\n );\n}\n\nexport function isWgslExternalTexture(\n value: unknown,\n): value is WgslExternalTexture {\n return (\n !!(value as WgslExternalTexture)[$internal] &&\n (value as WgslExternalTexture).type === 'texture_external'\n );\n}\n"],"mappings":"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"}