typegpu 0.11.9 → 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.
- package/builtin.d.ts +51 -53
- package/builtin.js +30 -34
- package/common/fullScreenTriangle.d.ts +2 -10
- package/common/fullScreenTriangle.js +20 -28
- package/common/index.d.ts +2 -9
- package/common/index.js +3 -12
- package/common/writeSoA.d.ts +11 -12
- package/common/writeSoA.js +88 -76
- package/core/buffer/buffer.d.ts +79 -62
- package/core/buffer/buffer.js +279 -205
- package/core/buffer/bufferBinding.d.ts +71 -0
- package/core/buffer/bufferBinding.js +154 -0
- package/core/buffer/bufferUsage.d.ts +14 -45
- package/core/buffer/bufferUsage.js +1 -171
- package/core/buffer/laidOutBuffer.d.ts +25 -0
- package/core/buffer/laidOutBuffer.js +55 -0
- package/core/commandEncoder/attachments.d.ts +125 -0
- package/core/commandEncoder/attachments.js +29 -0
- package/core/commandEncoder/commandEncoder.d.ts +53 -0
- package/core/commandEncoder/commandEncoder.js +56 -0
- package/core/commandEncoder/computePass.d.ts +58 -0
- package/core/commandEncoder/computePass.js +63 -0
- package/core/commandEncoder/renderPass.d.ts +121 -0
- package/core/commandEncoder/renderPass.js +196 -0
- package/core/constant/tgpuConstant.d.ts +26 -26
- package/core/constant/tgpuConstant.js +76 -65
- package/core/declare/tgpuDeclare.d.ts +3 -6
- package/core/declare/tgpuDeclare.js +36 -36
- package/core/function/autoIO.d.ts +61 -33
- package/core/function/autoIO.js +68 -73
- package/core/function/comptime.d.ts +11 -13
- package/core/function/comptime.js +60 -52
- package/core/function/createCallableSchema.d.ts +16 -0
- package/core/function/createCallableSchema.js +50 -40
- package/core/function/dualImpl.d.ts +44 -0
- package/core/function/dualImpl.js +71 -50
- package/core/function/entryInputRouter.d.ts +26 -0
- package/core/function/entryInputRouter.js +31 -33
- package/core/function/extractArgs.d.ts +38 -0
- package/core/function/extractArgs.js +202 -200
- package/core/function/fnCore.d.ts +44 -5
- package/core/function/fnCore.js +148 -93
- package/core/function/fnTypes.d.ts +31 -29
- package/core/function/fnTypes.js +1 -0
- package/core/function/ioSchema.d.ts +12 -10
- package/core/function/ioSchema.js +65 -47
- package/core/function/shelllessImpl.d.ts +9 -12
- package/core/function/shelllessImpl.js +17 -22
- package/core/function/templateUtils.d.ts +2 -0
- package/core/function/templateUtils.js +9 -8
- package/core/function/tgpuComputeFn.d.ts +26 -28
- package/core/function/tgpuComputeFn.js +47 -48
- package/core/function/tgpuFn.d.ts +34 -37
- package/core/function/tgpuFn.js +179 -153
- package/core/function/tgpuFragmentFn.d.ts +52 -53
- package/core/function/tgpuFragmentFn.js +63 -56
- package/core/function/tgpuVertexFn.d.ts +36 -39
- package/core/function/tgpuVertexFn.js +56 -53
- package/core/pipeline/computePipeline.d.ts +141 -53
- package/core/pipeline/computePipeline.js +291 -225
- package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
- package/core/pipeline/connectAttachmentToShader.js +25 -22
- package/core/pipeline/connectTargetsToShader.d.ts +3 -0
- package/core/pipeline/connectTargetsToShader.js +29 -27
- package/core/pipeline/drawState.d.ts +52 -0
- package/core/pipeline/drawState.js +225 -0
- package/core/pipeline/limitsOverflow.d.ts +2 -0
- package/core/pipeline/limitsOverflow.js +13 -10
- package/core/pipeline/performanceTracker.d.ts +14 -0
- package/core/pipeline/performanceTracker.js +34 -0
- package/core/pipeline/pipelineUtils.d.ts +18 -0
- package/core/pipeline/pipelineUtils.js +54 -25
- package/core/pipeline/priors.d.ts +1 -0
- package/core/pipeline/priors.js +12 -0
- package/core/pipeline/renderPipeline.d.ts +246 -261
- package/core/pipeline/renderPipeline.js +487 -480
- package/core/pipeline/timeable.d.ts +28 -18
- package/core/pipeline/timeable.js +90 -52
- package/core/pipeline/typeGuards.d.ts +17 -0
- package/core/pipeline/typeGuards.js +52 -22
- package/core/querySet/querySet.d.ts +26 -21
- package/core/querySet/querySet.js +127 -103
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
- package/core/resolve/externals.d.ts +25 -8
- package/core/resolve/externals.js +78 -54
- package/core/resolve/namespace.d.ts +22 -25
- package/core/resolve/namespace.js +16 -21
- package/core/resolve/resolvableString.d.ts +7 -0
- package/core/resolve/resolvableString.js +13 -0
- package/core/resolve/resolveData.d.ts +10 -0
- package/core/resolve/resolveData.js +162 -121
- package/core/resolve/stitch.d.ts +8 -0
- package/core/resolve/stitch.js +23 -21
- package/core/resolve/tgpuResolve.d.ts +55 -53
- package/core/resolve/tgpuResolve.js +106 -53
- package/core/root/configurableImpl.d.ts +10 -0
- package/core/root/configurableImpl.js +17 -19
- package/core/root/init.d.ts +76 -38
- package/core/root/init.js +346 -455
- package/core/root/rootTypes.d.ts +461 -636
- package/core/root/rootTypes.js +1 -0
- package/core/sampler/sampler.d.ts +50 -31
- package/core/sampler/sampler.js +120 -113
- package/core/simulate/tgpuSimulate.d.ts +9 -12
- package/core/simulate/tgpuSimulate.js +68 -71
- package/core/slot/accessor.d.ts +36 -13
- package/core/slot/accessor.js +138 -91
- package/core/slot/internalSlots.d.ts +2 -0
- package/core/slot/internalSlots.js +1 -6
- package/core/slot/lazy.d.ts +2 -6
- package/core/slot/lazy.js +71 -39
- package/core/slot/slot.d.ts +2 -6
- package/core/slot/slot.js +45 -38
- package/core/slot/slotTypes.d.ts +78 -80
- package/core/slot/slotTypes.js +11 -16
- package/core/texture/externalTexture.d.ts +20 -11
- package/core/texture/externalTexture.js +46 -46
- package/core/texture/texture.d.ts +152 -97
- package/core/texture/texture.js +407 -314
- package/core/texture/textureFormats.d.ts +42 -23
- package/core/texture/textureFormats.js +104 -75
- package/core/texture/textureProps.d.ts +7 -10
- package/core/texture/textureProps.js +1 -0
- package/core/texture/textureUtils.d.ts +8 -0
- package/core/texture/textureUtils.js +185 -179
- package/core/texture/usageExtension.d.ts +21 -18
- package/core/texture/usageExtension.js +13 -17
- package/core/unroll/tgpuUnroll.d.ts +20 -19
- package/core/unroll/tgpuUnroll.js +82 -91
- package/core/valueProxyUtils.d.ts +3 -0
- package/core/valueProxyUtils.js +52 -41
- package/core/variable/tgpuVariable.d.ts +26 -27
- package/core/variable/tgpuVariable.js +93 -96
- package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
- package/core/vertexLayout/connectAttributesToShader.js +61 -56
- package/core/vertexLayout/vertexAttribute.d.ts +21 -17
- package/core/vertexLayout/vertexAttribute.js +1 -0
- package/core/vertexLayout/vertexLayout.d.ts +24 -18
- package/core/vertexLayout/vertexLayout.js +130 -99
- package/core/whitespaces.d.ts +2 -0
- package/core/whitespaces.js +16 -0
- package/data/alignIO.d.ts +7 -0
- package/data/alignIO.js +13 -13
- package/data/alignmentOf.d.ts +5 -8
- package/data/alignmentOf.js +90 -75
- package/data/array.d.ts +6 -9
- package/data/array.js +48 -40
- package/data/atomic.d.ts +2 -7
- package/data/atomic.js +26 -23
- package/data/attributes.d.ts +19 -21
- package/data/attributes.js +192 -132
- package/data/autoStruct.d.ts +36 -3
- package/data/autoStruct.js +84 -81
- package/data/compiledIO.d.ts +5 -0
- package/data/compiledIO.js +231 -215
- package/data/dataIO.d.ts +13 -11
- package/data/dataIO.js +643 -589
- package/data/dataTypes.d.ts +83 -65
- package/data/dataTypes.js +66 -68
- package/data/deepEqual.d.ts +2 -7
- package/data/deepEqual.js +80 -55
- package/data/disarray.d.ts +6 -10
- package/data/disarray.js +52 -46
- package/data/float16Conversion.d.ts +4 -0
- package/data/float16Conversion.js +7 -0
- package/data/getLongestContiguousPrefix.d.ts +4 -8
- package/data/getLongestContiguousPrefix.js +6 -11
- package/data/index.d.ts +30 -31
- package/data/index.js +39 -172
- package/data/instanceToSchema.d.ts +24 -27
- package/data/instanceToSchema.js +1 -0
- package/data/isContiguous.d.ts +4 -8
- package/data/isContiguous.js +6 -11
- package/data/matrix.d.ts +21 -21
- package/data/matrix.js +513 -505
- package/data/numberOps.d.ts +6 -0
- package/data/numberOps.js +26 -20
- package/data/numeric.d.ts +21 -12
- package/data/numeric.js +287 -197
- package/data/offsetUtils.d.ts +9 -13
- package/data/offsetUtils.js +204 -144
- package/data/offsets.d.ts +8 -0
- package/data/offsets.js +33 -33
- package/data/partialIO.d.ts +13 -8
- package/data/partialIO.js +124 -113
- package/data/ptr.d.ts +12 -12
- package/data/ptr.js +42 -44
- package/data/ref.d.ts +40 -27
- package/data/ref.js +125 -95
- package/data/sampler.d.ts +99 -101
- package/data/sampler.js +17 -21
- package/data/schemaCallWrapper.d.ts +19 -0
- package/data/schemaCallWrapper.js +31 -26
- package/data/schemaMemoryLayout.d.ts +8 -0
- package/data/schemaMemoryLayout.js +213 -185
- package/data/sizeOf.d.ts +4 -8
- package/data/sizeOf.js +6 -11
- package/data/snippet.d.ts +96 -20
- package/data/snippet.js +75 -86
- package/data/struct.d.ts +4 -7
- package/data/struct.js +51 -39
- package/data/texture.d.ts +253 -250
- package/data/texture.js +238 -200
- package/data/unstruct.d.ts +2 -7
- package/data/unstruct.js +43 -37
- package/data/vector.d.ts +33 -21
- package/data/vector.js +234 -221
- package/data/vectorImpl.d.ts +231 -0
- package/data/vectorImpl.js +563 -515
- package/data/vectorOps.d.ts +63 -0
- package/data/vectorOps.js +642 -630
- package/data/vertexFormatData.d.ts +181 -184
- package/data/vertexFormatData.js +104 -106
- package/data/wgslTypes.d.ts +665 -600
- package/data/wgslTypes.js +220 -198
- package/errors.d.ts +50 -24
- package/errors.js +146 -126
- package/execMode.d.ts +16 -0
- package/execMode.js +47 -40
- package/extension.d.ts +13 -8
- package/extension.js +10 -16
- package/getGPUValue.d.ts +1 -0
- package/getGPUValue.js +2 -7
- package/index.d.ts +28 -68
- package/index.js +8 -28
- package/indexNamedExports.d.ts +69 -42
- package/indexNamedExports.js +25 -0
- package/internal.d.ts +16 -0
- package/internal.js +12 -0
- package/mathUtils.d.ts +5 -0
- package/mathUtils.js +7 -11
- package/memo.d.ts +11 -0
- package/memo.js +20 -22
- package/minify.d.ts +5 -0
- package/minify.js +93 -0
- package/nameUtils.d.ts +29 -0
- package/nameUtils.js +427 -394
- package/package.json +5 -1
- package/resolutionCtx.d.ts +162 -22
- package/resolutionCtx.js +911 -629
- package/serial/registry.d.ts +15 -0
- package/serial/registry.js +106 -0
- package/serial/restore.d.ts +49 -0
- package/serial/restore.js +68 -0
- package/serial/schema.d.ts +58 -0
- package/serial/schema.js +209 -0
- package/serial/types.d.ts +5 -0
- package/serial/types.js +1 -0
- package/shared/env.d.ts +9 -0
- package/shared/env.js +9 -12
- package/shared/generators.d.ts +4 -0
- package/shared/generators.js +10 -12
- package/shared/meta.d.ts +29 -14
- package/shared/meta.js +71 -55
- package/shared/normalizeMetadata.d.ts +32 -27
- package/shared/normalizeMetadata.js +23 -36
- package/shared/repr.d.ts +73 -55
- package/shared/repr.js +1 -0
- package/shared/soul.d.ts +17 -0
- package/shared/soul.js +1 -0
- package/shared/stringify.d.ts +2 -0
- package/shared/stringify.js +29 -20
- package/shared/symbols.d.ts +26 -20
- package/shared/symbols.js +79 -79
- package/shared/tseynit.d.ts +2 -0
- package/shared/tseynit.js +160 -75
- package/shared/utilityTypes.d.ts +30 -14
- package/shared/utilityTypes.js +2 -6
- package/shared/vertexFormat.d.ts +41 -43
- package/shared/vertexFormat.js +59 -62
- package/std/array.d.ts +2 -7
- package/std/array.js +18 -23
- package/std/atomic.d.ts +14 -18
- package/std/atomic.js +96 -95
- package/std/bitcast.d.ts +193 -10
- package/std/bitcast.js +309 -39
- package/std/boolean.d.ts +19 -33
- package/std/boolean.js +296 -288
- package/std/copy.d.ts +2 -7
- package/std/copy.js +27 -24
- package/std/derivative.d.ts +11 -15
- package/std/derivative.js +56 -79
- package/std/discard.d.ts +1 -6
- package/std/discard.js +7 -14
- package/std/environment.d.ts +19 -14
- package/std/environment.js +71 -51
- package/std/extensions.d.ts +2 -8
- package/std/extensions.js +10 -11
- package/std/index.d.ts +20 -24
- package/std/index.js +32 -187
- package/std/matrix.d.ts +6 -12
- package/std/matrix.js +60 -69
- package/std/numeric.d.ts +143 -146
- package/std/numeric.js +858 -749
- package/std/operators.d.ts +19 -27
- package/std/operators.js +227 -193
- package/std/packing.d.ts +5 -11
- package/std/packing.js +67 -75
- package/std/range.d.ts +6 -11
- package/std/range.js +48 -36
- package/std/subgroup.d.ts +33 -37
- package/std/subgroup.js +180 -217
- package/std/texture.d.ts +70 -38
- package/std/texture.js +176 -172
- package/taskQueue.d.ts +6 -0
- package/taskQueue.js +30 -0
- package/tgpu.d.ts +16 -0
- package/tgpu.js +17 -44
- package/tgpuBindGroupLayout.d.ts +132 -152
- package/tgpuBindGroupLayout.js +346 -268
- package/tgpuLogger.d.ts +34 -0
- package/tgpuLogger.js +63 -0
- package/tgpuUnstable.d.ts +16 -22
- package/tgpuUnstable.js +13 -35
- package/tgsl/accessIndex.d.ts +2 -0
- package/tgsl/accessIndex.js +76 -33
- package/tgsl/accessProp.d.ts +2 -0
- package/tgsl/accessProp.js +142 -101
- package/tgsl/accessStructProp.d.ts +5 -0
- package/tgsl/accessStructProp.js +13 -15
- package/tgsl/consoleLog/deserializers.d.ts +13 -0
- package/tgsl/consoleLog/deserializers.js +119 -103
- package/tgsl/consoleLog/logGenerator.d.ts +21 -0
- package/tgsl/consoleLog/logGenerator.js +85 -80
- package/tgsl/consoleLog/serializers.d.ts +21 -0
- package/tgsl/consoleLog/serializers.js +119 -100
- package/tgsl/consoleLog/types.d.ts +40 -39
- package/tgsl/consoleLog/types.js +1 -0
- package/tgsl/conversion.d.ts +33 -0
- package/tgsl/conversion.js +271 -216
- package/tgsl/forOfUtils.d.ts +15 -0
- package/tgsl/forOfUtils.js +85 -70
- package/tgsl/generationHelpers.d.ts +22 -39
- package/tgsl/generationHelpers.js +85 -58
- package/tgsl/infixDispatch.d.ts +70 -0
- package/tgsl/infixDispatch.js +48 -46
- package/tgsl/jsPolyfills.d.ts +16 -19
- package/tgsl/jsPolyfills.js +44 -42
- package/tgsl/makeDereferenceable.d.ts +48 -0
- package/tgsl/makeDereferenceable.js +86 -0
- package/tgsl/makeResolvable.d.ts +22 -0
- package/tgsl/makeResolvable.js +33 -0
- package/tgsl/shaderGenerator.d.ts +77 -17
- package/tgsl/shaderGenerator.js +1 -0
- package/tgsl/shellless.d.ts +6 -9
- package/tgsl/shellless.js +73 -43
- package/tgsl/wgslGenerator.d.ts +66 -59
- package/tgsl/wgslGenerator.js +1344 -760
- package/types.d.ts +287 -222
- package/types.js +61 -44
- package/unwrapper.d.ts +31 -26
- package/unwrapper.js +1 -0
- package/wgslExtensions.d.ts +3 -5
- package/wgslExtensions.js +12 -16
- package/_virtual/rolldown_runtime.js +0 -13
- package/core/buffer/bufferShorthand.d.ts +0 -50
- package/core/buffer/bufferShorthand.js +0 -55
- package/core/pipeline/applyPipelineState.js +0 -37
- package/package.js +0 -5
- package/tgsl/shaderGenerator_members.d.ts +0 -33
- package/tgsl/shaderGenerator_members.js +0 -12
|
@@ -1,29 +1,48 @@
|
|
|
1
|
-
import { F32, I32, U32, Vec4f, Vec4i, Vec4u } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
f32: F32;
|
|
14
|
+
i32: I32;
|
|
15
|
+
u32: U32;
|
|
18
16
|
}[T];
|
|
19
17
|
type ChannelTypeToVectorType<T extends 'f32' | 'i32' | 'u32'> = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
f32: Vec4f;
|
|
19
|
+
i32: Vec4i;
|
|
20
|
+
u32: Vec4u;
|
|
23
21
|
}[T];
|
|
24
|
-
type TextureFormats = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
channelType: f32,
|
|
5
|
+
vectorType: vec4f,
|
|
6
|
+
sampleTypes: ['depth', 'unfilterable-float'],
|
|
7
|
+
texelSize: 'non-copyable',
|
|
10
8
|
};
|
|
11
9
|
const DEPTH_ASPECT_16 = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
channelType: f32,
|
|
11
|
+
vectorType: vec4f,
|
|
12
|
+
sampleTypes: ['depth', 'unfilterable-float'],
|
|
13
|
+
texelSize: 2,
|
|
16
14
|
};
|
|
17
15
|
const DEPTH_ASPECT_32 = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
channelType: f32,
|
|
17
|
+
vectorType: vec4f,
|
|
18
|
+
sampleTypes: ['depth', 'unfilterable-float'],
|
|
19
|
+
texelSize: 4,
|
|
22
20
|
};
|
|
23
21
|
const STENCIL_ASPECT = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
channelType: u32,
|
|
23
|
+
vectorType: vec4u,
|
|
24
|
+
sampleTypes: ['uint'],
|
|
25
|
+
texelSize: 1,
|
|
28
26
|
};
|
|
29
|
-
const formatInfoCache =
|
|
30
|
-
function getTextureFormatInfo(format) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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;
|