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.
- 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 +37 -38
- 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 -0
- package/core/function/fnCore.js +148 -92
- 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 +18 -20
- 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 +90 -93
- package/core/resolve/externals.d.ts +25 -7
- package/core/resolve/externals.js +79 -62
- 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 -55
- 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 -454
- package/core/root/rootTypes.d.ts +461 -627
- 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 -214
- 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 -192
- 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 -120
- 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 +428 -398
- package/package.json +9 -3
- package/resolutionCtx.d.ts +162 -22
- package/resolutionCtx.js +911 -624
- 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 -100
- package/tgsl/accessStructProp.d.ts +5 -0
- package/tgsl/accessStructProp.js +18 -0
- 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 +272 -193
- 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 -747
- package/types.d.ts +287 -221
- 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
package/tgpuBindGroupLayout.d.ts
CHANGED
|
@@ -1,165 +1,145 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
type TgpuLayoutStorage = TgpuLayoutEntryBase & {
|
|
37
|
-
storage: BaseData | ((arrayLength: number) => BaseData);
|
|
38
|
-
/** @default 'readonly' */
|
|
39
|
-
access?: 'mutable' | 'readonly';
|
|
40
|
-
};
|
|
41
|
-
type TgpuLayoutSampler = TgpuLayoutEntryBase & {
|
|
42
|
-
sampler: 'filtering' | 'non-filtering';
|
|
43
|
-
};
|
|
44
|
-
type TgpuLayoutComparisonSampler = TgpuLayoutEntryBase & {
|
|
45
|
-
sampler: 'comparison';
|
|
46
|
-
};
|
|
47
|
-
type TgpuLayoutTexture<TSchema$1 extends WgslTexture = WgslTexture> = TgpuLayoutEntryBase & {
|
|
48
|
-
texture: TSchema$1;
|
|
49
|
-
sampleType?: GPUTextureSampleType;
|
|
1
|
+
import { type TgpuBuffer, type UniformFlag } from './core/buffer/buffer.ts';
|
|
2
|
+
import { type TgpuComparisonSampler, type TgpuSampler } from './core/sampler/sampler.ts';
|
|
3
|
+
import { type PropsForSchema, type TgpuTexture, type TgpuTextureView } from './core/texture/texture.ts';
|
|
4
|
+
import { type SampledFlag } from './core/texture/usageExtension.ts';
|
|
5
|
+
import { type WgslExternalTexture, type WgslStorageTexture, type WgslTexture } from './data/texture.ts';
|
|
6
|
+
import type { TgpuRoot } from './core/root/rootTypes.ts';
|
|
7
|
+
import type { RestoreContext } from './serial/types.ts';
|
|
8
|
+
import type { BaseData } from './data/wgslTypes.ts';
|
|
9
|
+
import { type StorageFlag } from './extension.ts';
|
|
10
|
+
import type { TgpuNamable } from './shared/meta.ts';
|
|
11
|
+
import type { InferGPU, MemIdentity } from './shared/repr.ts';
|
|
12
|
+
import type { TgpuDeviceOwningSoul, TgpuSoul } from './shared/soul.ts';
|
|
13
|
+
import { $gpuValueOf, $internal, $soul } from './shared/symbols.ts';
|
|
14
|
+
import type { NullableToOptional, Prettify } from './shared/utilityTypes.ts';
|
|
15
|
+
import type { ResolvableObject, ShaderStage } from './types.ts';
|
|
16
|
+
import type { Unwrapper } from './unwrapper.ts';
|
|
17
|
+
import type { WgslComparisonSampler, WgslSampler } from './data/sampler.ts';
|
|
18
|
+
import { type TgpuBufferBinding, type TgpuMutable, type TgpuReadonly, type TgpuUniform } from './core/buffer/bufferBinding.ts';
|
|
19
|
+
export interface LayoutMembership {
|
|
20
|
+
layout: TgpuBindGroupLayout;
|
|
21
|
+
key: string;
|
|
22
|
+
idx: number;
|
|
23
|
+
}
|
|
24
|
+
export type TgpuLayoutEntryBase = {
|
|
25
|
+
/**
|
|
26
|
+
* Limits this resource's visibility to specific shader stages.
|
|
27
|
+
*
|
|
28
|
+
* By default, each resource is visible to all shader stage types, but
|
|
29
|
+
* depending on the underlying implementation, this may have performance implications.
|
|
30
|
+
*
|
|
31
|
+
* @default ['compute','fragment'] for mutable resources
|
|
32
|
+
* @default ['compute','vertex','fragment'] for everything else
|
|
33
|
+
*/
|
|
34
|
+
visibility?: ShaderStage[];
|
|
50
35
|
};
|
|
51
|
-
type
|
|
52
|
-
|
|
36
|
+
export type TgpuLayoutUniform = TgpuLayoutEntryBase & {
|
|
37
|
+
uniform: BaseData;
|
|
53
38
|
};
|
|
54
|
-
type
|
|
55
|
-
|
|
39
|
+
export type TgpuLayoutStorage = TgpuLayoutEntryBase & {
|
|
40
|
+
storage: BaseData | ((arrayLength: number) => BaseData);
|
|
41
|
+
/** @default 'readonly' */
|
|
42
|
+
access?: 'mutable' | 'readonly';
|
|
56
43
|
};
|
|
57
|
-
type
|
|
58
|
-
|
|
59
|
-
* - 'float' - f32
|
|
60
|
-
* - 'unfilterable-float' - f32, cannot be used with filtering samplers
|
|
61
|
-
* - 'depth' - f32
|
|
62
|
-
* - 'sint' - i32
|
|
63
|
-
* - 'uint' - u32
|
|
64
|
-
*/
|
|
65
|
-
texture: TSampleType;
|
|
66
|
-
/**
|
|
67
|
-
* @default '2d'
|
|
68
|
-
*/
|
|
69
|
-
viewDimension?: GPUTextureViewDimension;
|
|
70
|
-
/**
|
|
71
|
-
* @default false
|
|
72
|
-
*/
|
|
73
|
-
multisampled?: boolean;
|
|
44
|
+
export type TgpuLayoutSampler = TgpuLayoutEntryBase & {
|
|
45
|
+
sampler: 'filtering' | 'non-filtering';
|
|
74
46
|
};
|
|
75
|
-
type
|
|
76
|
-
|
|
77
|
-
/** @default 'writeonly' */
|
|
78
|
-
access?: 'readonly' | 'writeonly' | 'mutable';
|
|
79
|
-
/** @default '2d' */
|
|
80
|
-
viewDimension?: StorageTextureDimension;
|
|
47
|
+
export type TgpuLayoutComparisonSampler = TgpuLayoutEntryBase & {
|
|
48
|
+
sampler: 'comparison';
|
|
81
49
|
};
|
|
82
|
-
type
|
|
83
|
-
|
|
50
|
+
export type TgpuLayoutTexture<TSchema extends WgslTexture = WgslTexture> = TgpuLayoutEntryBase & {
|
|
51
|
+
texture: TSchema;
|
|
52
|
+
sampleType?: GPUTextureSampleType;
|
|
84
53
|
};
|
|
85
|
-
type
|
|
86
|
-
|
|
87
|
-
type SampleTypeToPrimitive = {
|
|
88
|
-
float: F32;
|
|
89
|
-
'unfilterable-float': F32;
|
|
90
|
-
depth: F32;
|
|
91
|
-
sint: I32;
|
|
92
|
-
uint: U32;
|
|
54
|
+
export type TgpuLayoutStorageTexture<TSchema extends WgslStorageTexture = WgslStorageTexture> = TgpuLayoutEntryBase & {
|
|
55
|
+
storageTexture: TSchema;
|
|
93
56
|
};
|
|
94
|
-
type
|
|
95
|
-
|
|
96
|
-
readonly: 'read-only';
|
|
97
|
-
mutable: 'read-write';
|
|
57
|
+
export type TgpuLayoutExternalTexture = TgpuLayoutEntryBase & {
|
|
58
|
+
externalTexture: WgslExternalTexture;
|
|
98
59
|
};
|
|
99
|
-
type
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
format: Format;
|
|
106
|
-
dimension: Default<T[K]['viewDimension'], '2d'>;
|
|
107
|
-
}>> : T[K] extends TgpuLegacyLayoutExternalTexture ? TgpuLayoutExternalTexture : never };
|
|
108
|
-
type UnwrapRuntimeConstructorInner<T extends BaseData | ((_: number) => BaseData)> = T extends ((_: number) => BaseData) ? ReturnType<T> : T;
|
|
109
|
-
type UnwrapRuntimeConstructor<T extends BaseData | ((_: number) => BaseData)> = T extends unknown ? UnwrapRuntimeConstructorInner<T> : never;
|
|
110
|
-
interface BindGroupLayoutInternals<Entries extends Record<string, TgpuLayoutEntry | null>> {
|
|
111
|
-
bound: { [K in keyof Entries]: BindLayoutEntry<Entries[K]> };
|
|
60
|
+
export type TgpuLayoutEntry = TgpuLayoutUniform | TgpuLayoutStorage | TgpuLayoutSampler | TgpuLayoutComparisonSampler | TgpuLayoutTexture | TgpuLayoutStorageTexture | TgpuLayoutExternalTexture;
|
|
61
|
+
type UnwrapRuntimeConstructorInner<T extends BaseData | ((_: number) => BaseData)> = T extends (_: number) => BaseData ? ReturnType<T> : T;
|
|
62
|
+
export type UnwrapRuntimeConstructor<T extends BaseData | ((_: number) => BaseData)> = T extends unknown ? UnwrapRuntimeConstructorInner<T> : never;
|
|
63
|
+
export interface TgpuBindGroupLayoutSoul extends TgpuSoul<'bind-group-layout'> {
|
|
64
|
+
readonly entries: Record<string, TgpuLayoutEntry | null>;
|
|
65
|
+
index?: number | undefined;
|
|
112
66
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
67
|
+
/**
|
|
68
|
+
* A residue soul: entries may hold runtime-local resources (texture views), so
|
|
69
|
+
* the soul holds the layout and the created bind group instead of the recipe.
|
|
70
|
+
* It is completed by `[$internal].materialize()`.
|
|
71
|
+
*/
|
|
72
|
+
export interface TgpuBindGroupSoul<Entries extends Record<string, TgpuLayoutEntry | null> = Record<string, TgpuLayoutEntry | null>> extends TgpuDeviceOwningSoul<'bind-group', GPUBindGroup> {
|
|
73
|
+
readonly layout: TgpuBindGroupLayout<Entries>;
|
|
74
|
+
}
|
|
75
|
+
export interface TgpuBindGroupLayout<Entries extends Record<string, TgpuLayoutEntry | null> = Record<string, TgpuLayoutEntry | null>> extends TgpuNamable {
|
|
76
|
+
readonly [$internal]: ResolvableObject[];
|
|
77
|
+
readonly [$soul]: TgpuBindGroupLayoutSoul;
|
|
78
|
+
readonly resourceType: 'bind-group-layout';
|
|
79
|
+
readonly entries: Entries;
|
|
80
|
+
readonly [$gpuValueOf]: {
|
|
81
|
+
[K in keyof Entries]: InferLayoutEntry<Entries[K]>;
|
|
82
|
+
};
|
|
83
|
+
readonly $: {
|
|
84
|
+
[K in keyof Entries]: InferLayoutEntry<Entries[K]>;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* An explicit numeric index assigned to this bind group layout. If undefined, a unique
|
|
88
|
+
* index is assigned automatically during resolution. This can be changed with the
|
|
89
|
+
* `.$idx()` method.
|
|
90
|
+
*/
|
|
91
|
+
readonly index: number | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Associates this bind group layout with an explicit numeric index. When a call to this
|
|
94
|
+
* method is omitted, a unique numeric index is assigned to it automatically.
|
|
95
|
+
*
|
|
96
|
+
* Used when generating WGSL code: `@group(${index}) @binding(...) ...;`
|
|
97
|
+
*/
|
|
98
|
+
$idx(index?: number): this;
|
|
99
|
+
/**
|
|
100
|
+
* Creates a raw WebGPU resource based on the typed descriptor.
|
|
101
|
+
* NOTE: This creates a new resource every time, better to use `root.unwrap(...)` instead.
|
|
102
|
+
* @param unwrapper Used to unwrap any resources that this resource depends on.
|
|
103
|
+
*/
|
|
104
|
+
unwrap(unwrapper: Unwrapper): GPUBindGroupLayout;
|
|
146
105
|
}
|
|
147
|
-
type
|
|
148
|
-
|
|
149
|
-
} ?
|
|
150
|
-
type
|
|
151
|
-
type
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
type TgpuBindGroup<Entries extends Record<string, TgpuLayoutEntry | null> = Record<string, TgpuLayoutEntry | null>> = {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
106
|
+
export type LayoutEntryToInput<T extends TgpuLayoutEntry | null> = TgpuLayoutEntry | null extends T ? TgpuBuffer<BaseData> | TgpuBufferBinding<BaseData> | GPUBuffer | TgpuSampler | GPUSampler | TgpuComparisonSampler | TgpuTexture | GPUTextureView | GPUExternalTexture : T extends TgpuLayoutUniform ? (TgpuBuffer<MemIdentity<UnwrapRuntimeConstructor<T['uniform']>>> & UniformFlag) | TgpuUniform<MemIdentity<UnwrapRuntimeConstructor<T['uniform']>>> | GPUBuffer : T extends TgpuLayoutStorage ? (TgpuBuffer<MemIdentity<UnwrapRuntimeConstructor<T['storage']>>> & StorageFlag) | (T extends {
|
|
107
|
+
access: 'mutable';
|
|
108
|
+
} ? TgpuMutable<MemIdentity<UnwrapRuntimeConstructor<T['storage']>>> : TgpuReadonly<MemIdentity<UnwrapRuntimeConstructor<T['storage']>>>) | GPUBuffer : T extends TgpuLayoutSampler ? TgpuSampler | GPUSampler : T extends TgpuLayoutComparisonSampler ? TgpuComparisonSampler | GPUSampler : T extends TgpuLayoutTexture ? GPUTextureView | GPUTexture | (SampledFlag & TgpuTexture<Prettify<PropsForSchema<T['texture']>>>) | TgpuTextureView<WgslTexture> : T extends TgpuLayoutStorageTexture ? GPUTextureView | GPUTexture | (StorageFlag & TgpuTexture<Prettify<PropsForSchema<T['storageTexture']>>>) | TgpuTextureView<WgslStorageTexture> : T extends TgpuLayoutExternalTexture ? GPUExternalTexture : never;
|
|
109
|
+
export type InferLayoutEntry<T extends TgpuLayoutEntry | null> = T extends TgpuLayoutUniform ? InferGPU<T['uniform']> : T extends TgpuLayoutStorage ? InferGPU<UnwrapRuntimeConstructor<T['storage']>> : T extends TgpuLayoutSampler ? InferGPU<WgslSampler> : T extends TgpuLayoutComparisonSampler ? InferGPU<WgslComparisonSampler> : T extends TgpuLayoutTexture<infer TSchema> ? InferGPU<TSchema> : T extends TgpuLayoutStorageTexture<infer TSchema> ? InferGPU<TSchema> : T extends TgpuLayoutExternalTexture ? InferGPU<T['externalTexture']> : never;
|
|
110
|
+
export type ExtractBindGroupInputFromLayout<T extends Record<string, TgpuLayoutEntry | null>> = NullableToOptional<{
|
|
111
|
+
[K in keyof T]: LayoutEntryToInput<T[K]>;
|
|
112
|
+
}>;
|
|
113
|
+
export type TgpuBindGroup<Entries extends Record<string, TgpuLayoutEntry | null> = Record<string, TgpuLayoutEntry | null>> = {
|
|
114
|
+
readonly [$internal]: {
|
|
115
|
+
readonly materialize: () => GPUBindGroup;
|
|
116
|
+
};
|
|
117
|
+
readonly [$soul]: TgpuBindGroupSoul<Entries>;
|
|
118
|
+
readonly resourceType: 'bind-group';
|
|
119
|
+
readonly layout: TgpuBindGroupLayout<Entries>;
|
|
120
|
+
unwrap(unwrapper: Unwrapper): GPUBindGroup;
|
|
158
121
|
};
|
|
159
|
-
declare function bindGroupLayout<Entries extends Record<string, TgpuLayoutEntry | null>>(entries: Entries): TgpuBindGroupLayout<Prettify<Entries>>;
|
|
122
|
+
export declare function bindGroupLayout<Entries extends Record<string, TgpuLayoutEntry | null>>(entries: Entries): TgpuBindGroupLayout<Prettify<Entries>>;
|
|
123
|
+
export declare function INTERNAL_restoreBindGroupLayout(soul: TgpuBindGroupLayoutSoul): TgpuBindGroupLayout;
|
|
124
|
+
export declare function INTERNAL_restoreBindGroup(soul: TgpuBindGroupSoul, ctx: RestoreContext): TgpuBindGroup;
|
|
125
|
+
export declare function isBindGroupLayout(value: unknown): value is TgpuBindGroupLayout;
|
|
126
|
+
export declare function isBindGroup(value: unknown): value is TgpuBindGroup;
|
|
160
127
|
/**
|
|
161
|
-
* @
|
|
128
|
+
* @category Errors
|
|
162
129
|
*/
|
|
163
|
-
declare
|
|
164
|
-
|
|
165
|
-
|
|
130
|
+
export declare class MissingBindingError extends Error {
|
|
131
|
+
constructor(groupLabel: string | undefined, key: string);
|
|
132
|
+
}
|
|
133
|
+
export declare class TgpuBindGroupImpl<Entries extends Record<string, TgpuLayoutEntry | null> = Record<string, TgpuLayoutEntry | null>> implements TgpuBindGroup<Entries> {
|
|
134
|
+
#private;
|
|
135
|
+
readonly [$internal]: {
|
|
136
|
+
readonly materialize: () => GPUBindGroup;
|
|
137
|
+
};
|
|
138
|
+
readonly [$soul]: TgpuBindGroupSoul<Entries>;
|
|
139
|
+
readonly resourceType: "bind-group";
|
|
140
|
+
constructor(root: TgpuRoot | undefined, layout: TgpuBindGroupLayout<Entries>, entries: ExtractBindGroupInputFromLayout<Entries>, raw?: GPUBindGroup);
|
|
141
|
+
get layout(): TgpuBindGroupLayout<Entries>;
|
|
142
|
+
get entries(): ExtractBindGroupInputFromLayout<Entries>;
|
|
143
|
+
unwrap(unwrapper: Unwrapper): GPUBindGroup;
|
|
144
|
+
}
|
|
145
|
+
export {};
|