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
|
@@ -1,68 +1,119 @@
|
|
|
1
|
-
import { $internal, $resolve } from "../../shared/symbols.js";
|
|
2
|
-
import { Void } from "../../data/wgslTypes.js";
|
|
3
1
|
import { snip } from "../../data/snippet.js";
|
|
4
|
-
import {
|
|
2
|
+
import { Void } from "../../data/wgslTypes.js";
|
|
3
|
+
import { getName } from "../../internal.js";
|
|
4
|
+
import { resolve as resolveImpl } from "../../resolutionCtx.js";
|
|
5
|
+
import { $internal, $resolve, $soul } from "../../shared/symbols.js";
|
|
5
6
|
import { isBindGroupLayout } from "../../tgpuBindGroupLayout.js";
|
|
6
|
-
import {
|
|
7
|
+
import { logger } from "../../tgpuLogger.js";
|
|
8
|
+
import { isBuffer } from "../../types.js";
|
|
9
|
+
import { isBufferBinding } from "../buffer/bufferBinding.js";
|
|
7
10
|
import { isPipeline } from "../pipeline/typeGuards.js";
|
|
11
|
+
import { isComparisonSampler, isSampler } from "../sampler/sampler.js";
|
|
12
|
+
import { isTexture, isTextureView } from "../texture/texture.js";
|
|
13
|
+
import { replaceExternalsInWgsl } from "./externals.js";
|
|
8
14
|
import { namespace } from "./namespace.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
export function resolveWithContext(arg0, options) {
|
|
16
|
+
if (Array.isArray(arg0)) {
|
|
17
|
+
return resolveFromArray(arg0, options);
|
|
18
|
+
}
|
|
19
|
+
return resolveFromTemplate(arg0);
|
|
14
20
|
}
|
|
15
|
-
function resolve
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
export function resolve(arg, options) {
|
|
22
|
+
if (Array.isArray(arg)) {
|
|
23
|
+
return resolveWithContext(arg, options).code;
|
|
24
|
+
}
|
|
25
|
+
return resolveWithContext(arg).code;
|
|
18
26
|
}
|
|
19
27
|
function resolveFromTemplate(options) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
const { template, externals, unstable_shaderGenerator: shaderGenerator, names = 'strict', unstable_minify, config, enableExtensions, } = options;
|
|
29
|
+
if (!template) {
|
|
30
|
+
logger.warn('deprecated', "Calling resolve with an empty template is deprecated and will soon return an empty string. Consider using the 'tgpu.resolve(resolvableArray, options)' API instead.");
|
|
31
|
+
}
|
|
32
|
+
const resolutionObj = {
|
|
33
|
+
[$internal]: true,
|
|
34
|
+
[$resolve](ctx) {
|
|
35
|
+
return snip(replaceExternalsInWgsl(ctx, externals, template ?? ''), Void,
|
|
36
|
+
/* origin */ 'runtime');
|
|
37
|
+
},
|
|
38
|
+
toString: () => '<root>',
|
|
39
|
+
};
|
|
40
|
+
const maybeRoot = tryFindRoot(Object.values(externals));
|
|
41
|
+
return resolveImpl(resolutionObj, {
|
|
42
|
+
namespace: typeof names === 'string' ? namespace({ names }) : names,
|
|
43
|
+
minify: unstable_minify ?? maybeRoot?.minify ?? false,
|
|
44
|
+
enableExtensions,
|
|
45
|
+
shaderGenerator,
|
|
46
|
+
config,
|
|
47
|
+
root: maybeRoot,
|
|
48
|
+
});
|
|
37
49
|
}
|
|
38
50
|
function resolveFromArray(items, options) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
const { unstable_shaderGenerator: shaderGenerator, names = 'strict', unstable_minify, config, enableExtensions, } = options ?? {};
|
|
52
|
+
const resolutionObj = {
|
|
53
|
+
[$internal]: true,
|
|
54
|
+
[$resolve](ctx) {
|
|
55
|
+
for (const item of items) {
|
|
56
|
+
// Support for: tgpu.resolve([layout])
|
|
57
|
+
if (isBindGroupLayout(item)) {
|
|
58
|
+
for (const binding of Object.values(item[$internal])) {
|
|
59
|
+
ctx.resolve(binding);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
ctx.resolve(item);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return snip('', Void, 'runtime');
|
|
67
|
+
},
|
|
68
|
+
toString: () => '<root>',
|
|
69
|
+
};
|
|
70
|
+
const maybeRoot = tryFindRoot(items);
|
|
71
|
+
return resolveImpl(resolutionObj, {
|
|
72
|
+
namespace: typeof names === 'string' ? namespace({ names }) : names,
|
|
73
|
+
minify: unstable_minify ?? maybeRoot?.minify ?? false,
|
|
74
|
+
enableExtensions,
|
|
75
|
+
shaderGenerator,
|
|
76
|
+
config,
|
|
77
|
+
root: maybeRoot,
|
|
78
|
+
});
|
|
55
79
|
}
|
|
56
80
|
/**
|
|
57
|
-
* Attempts to locate a
|
|
58
|
-
* Does not check recursively.
|
|
59
|
-
* Throws an error if multiple
|
|
60
|
-
*/
|
|
81
|
+
* Attempts to locate a root in a list of items that may hold it.
|
|
82
|
+
* Does not check recursively.
|
|
83
|
+
* Throws an error if multiple roots are found.
|
|
84
|
+
*/
|
|
61
85
|
function tryFindRoot(items) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
86
|
+
const buckets = new Map();
|
|
87
|
+
for (const item of items) {
|
|
88
|
+
const root = extractRoot(item);
|
|
89
|
+
if (root) {
|
|
90
|
+
const bucket = buckets.get(root) ?? new Set();
|
|
91
|
+
buckets.set(root, bucket);
|
|
92
|
+
bucket.add(item);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (buckets.size > 1) {
|
|
96
|
+
const bucketsString = [...buckets.values()]
|
|
97
|
+
.map((bucket, i) => `root ${i + 1}: ${[...bucket].map((item) => getName(item) ?? '<unnamed>').join(', ')}`)
|
|
98
|
+
.join('; ');
|
|
99
|
+
throw new Error(`Found resources originating from different roots in a single resolve (${bucketsString}).`);
|
|
100
|
+
}
|
|
101
|
+
return [...buckets.keys()][0];
|
|
102
|
+
}
|
|
103
|
+
function extractRoot(item) {
|
|
104
|
+
if (isPipeline(item) ||
|
|
105
|
+
isBuffer(item) ||
|
|
106
|
+
isTexture(item) ||
|
|
107
|
+
isSampler(item) ||
|
|
108
|
+
isComparisonSampler(item)) {
|
|
109
|
+
return item[$internal].root;
|
|
110
|
+
}
|
|
111
|
+
if (isBufferBinding(item)) {
|
|
112
|
+
return extractRoot(item.buffer);
|
|
113
|
+
}
|
|
114
|
+
if (isTextureView(item)) {
|
|
115
|
+
// laid out texture view should never appear here, but still passes this type guard
|
|
116
|
+
return extractRoot(item?.[$soul]?.texture);
|
|
117
|
+
}
|
|
118
|
+
return undefined;
|
|
65
119
|
}
|
|
66
|
-
|
|
67
|
-
//#endregion
|
|
68
|
-
export { resolve$1 as resolve, resolveWithContext };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BaseData } from '../../data/wgslTypes.ts';
|
|
2
|
+
import type { Infer } from '../../shared/repr.ts';
|
|
3
|
+
import { type TgpuAccessor, type TgpuMutableAccessor, type TgpuSlot } from '../slot/slotTypes.ts';
|
|
4
|
+
import type { Configurable } from './rootTypes.ts';
|
|
5
|
+
export declare class ConfigurableImpl implements Configurable {
|
|
6
|
+
readonly bindings: [TgpuSlot<unknown>, unknown][];
|
|
7
|
+
constructor(bindings: [TgpuSlot<unknown>, unknown][]);
|
|
8
|
+
with<T extends BaseData>(slot: TgpuSlot<T> | TgpuAccessor<T> | TgpuMutableAccessor<T>, value: TgpuAccessor.In<T> | TgpuMutableAccessor.In<T> | Infer<T>): Configurable;
|
|
9
|
+
pipe(transform: (cfg: Configurable) => Configurable): Configurable;
|
|
10
|
+
}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { isAccessor, isMutableAccessor } from "../slot/slotTypes.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
//#endregion
|
|
19
|
-
export { ConfigurableImpl };
|
|
1
|
+
import { isAccessor, isMutableAccessor, } from "../slot/slotTypes.js";
|
|
2
|
+
export class ConfigurableImpl {
|
|
3
|
+
bindings;
|
|
4
|
+
constructor(bindings) {
|
|
5
|
+
this.bindings = bindings;
|
|
6
|
+
}
|
|
7
|
+
with(slot, value) {
|
|
8
|
+
return new ConfigurableImpl([
|
|
9
|
+
...this.bindings,
|
|
10
|
+
[isAccessor(slot) || isMutableAccessor(slot) ? slot.slot : slot, value],
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
pipe(transform) {
|
|
14
|
+
const newCfg = transform(this);
|
|
15
|
+
return new ConfigurableImpl([...this.bindings, ...newCfg.bindings]);
|
|
16
|
+
}
|
|
17
|
+
}
|
package/core/root/init.d.ts
CHANGED
|
@@ -1,44 +1,84 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { type TgpuQuerySet } from '../querySet/querySet.ts';
|
|
2
|
+
import type { v3u, Vec3u } from '../../data/wgslTypes.ts';
|
|
3
|
+
import { $getNameForward, $internal, $soul } from '../../shared/symbols.ts';
|
|
4
|
+
import type { TgpuBindGroup } from '../../tgpuBindGroupLayout.ts';
|
|
5
|
+
import type { LogGeneratorOptions } from '../../tgsl/consoleLog/types.ts';
|
|
6
|
+
import type { WgslGeneratorClass } from '../../tgsl/shaderGenerator.ts';
|
|
7
|
+
import { type TgpuUniform } from '../buffer/bufferBinding.ts';
|
|
8
|
+
import { type TgpuComputePipeline } from '../pipeline/computePipeline.ts';
|
|
9
|
+
import type { ExperimentalTgpuRoot, TgpuGuardedComputePipeline, TgpuGuardedComputePipelineSoul, TgpuRootSoul, TgpuRoot } from './rootTypes.ts';
|
|
10
|
+
import type { RestoreContext } from '../../serial/types.ts';
|
|
11
|
+
export declare class TgpuGuardedComputePipelineImpl<TArgs extends number[]> implements TgpuGuardedComputePipeline<TArgs> {
|
|
12
|
+
#private;
|
|
13
|
+
readonly resourceType = "guarded-compute-pipeline";
|
|
14
|
+
readonly [$soul]: TgpuGuardedComputePipelineSoul;
|
|
15
|
+
constructor(root: ExperimentalTgpuRoot, pipeline: TgpuComputePipeline, sizeUniform: TgpuUniform<Vec3u>, workgroupSize: v3u);
|
|
16
|
+
with(bindGroup: TgpuBindGroup): TgpuGuardedComputePipeline<TArgs>;
|
|
17
|
+
withPerformanceCallback(callback: (start: bigint, end: bigint) => void | Promise<void>): TgpuGuardedComputePipeline<TArgs>;
|
|
18
|
+
withTimestampWrites(options: {
|
|
19
|
+
querySet: TgpuQuerySet<'timestamp'> | GPUQuerySet;
|
|
20
|
+
beginningOfPassWriteIndex?: number;
|
|
21
|
+
endOfPassWriteIndex?: number;
|
|
22
|
+
}): TgpuGuardedComputePipeline<TArgs>;
|
|
23
|
+
dispatchThreads(...threads: TArgs): void;
|
|
24
|
+
initAsync(): Promise<void>;
|
|
25
|
+
initSync(): void;
|
|
26
|
+
get pipeline(): TgpuComputePipeline;
|
|
27
|
+
get sizeUniform(): TgpuUniform<Vec3u>;
|
|
28
|
+
[$internal]: boolean;
|
|
29
|
+
get [$getNameForward](): TgpuComputePipeline;
|
|
30
|
+
$name(label: string): this;
|
|
31
|
+
}
|
|
32
|
+
export declare function INTERNAL_restoreRoot(soul: TgpuRootSoul, ctx: RestoreContext): TgpuRoot;
|
|
33
|
+
export declare function INTERNAL_restoreGuardedComputePipeline(soul: TgpuGuardedComputePipelineSoul, ctx: RestoreContext): TgpuGuardedComputePipeline;
|
|
12
34
|
/**
|
|
13
35
|
* Options passed into {@link init}.
|
|
14
36
|
*/
|
|
15
|
-
type InitOptions = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
export type InitOptions = {
|
|
38
|
+
adapter?: GPURequestAdapterOptions | undefined;
|
|
39
|
+
device?: (GPUDeviceDescriptor & {
|
|
40
|
+
optionalFeatures?: Iterable<GPUFeatureName>;
|
|
41
|
+
}) | undefined;
|
|
42
|
+
/** @default 'strict' */
|
|
43
|
+
unstable_names?: 'random' | 'strict' | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* If set to true, rooted resolves will be stripped of all excessive spaces.
|
|
46
|
+
* Rooted resolves include pipelines and all their transitive dependencies,
|
|
47
|
+
* but not, for example, `tgpu.resolve([MyStruct])`,
|
|
48
|
+
* as there may be multiple roots with different settings in one program.
|
|
49
|
+
*
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
unstable_minify?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* A custom shader code generator, used when resolving TypeGPU functions.
|
|
55
|
+
* If not provided, the default WGSL generator will be used.
|
|
56
|
+
*/
|
|
57
|
+
unstable_shaderGeneratorClass?: WgslGeneratorClass | undefined;
|
|
58
|
+
unstable_logOptions?: LogGeneratorOptions;
|
|
28
59
|
};
|
|
29
60
|
/**
|
|
30
61
|
* Options passed into {@link initFromDevice}.
|
|
31
62
|
*/
|
|
32
|
-
type InitFromDeviceOptions = {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
63
|
+
export type InitFromDeviceOptions = {
|
|
64
|
+
device: GPUDevice;
|
|
65
|
+
/** @default 'strict' */
|
|
66
|
+
unstable_names?: 'random' | 'strict' | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* If set to true, rooted resolves will be stripped of all excessive spaces.
|
|
69
|
+
* Rooted resolves include pipelines and all their transitive dependencies,
|
|
70
|
+
* but not, for example, `tgpu.resolve([MyStruct])`,
|
|
71
|
+
* as there may be multiple roots with different settings in one program.
|
|
72
|
+
*
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
unstable_minify?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* A custom shader code generator, used when resolving TypeGPU functions.
|
|
78
|
+
* If not provided, the default WGSL generator will be used.
|
|
79
|
+
*/
|
|
80
|
+
unstable_shaderGeneratorClass?: WgslGeneratorClass | undefined;
|
|
81
|
+
unstable_logOptions?: LogGeneratorOptions;
|
|
42
82
|
};
|
|
43
83
|
/**
|
|
44
84
|
* Requests a new GPU device and creates a root around it.
|
|
@@ -58,7 +98,7 @@ type InitFromDeviceOptions = {
|
|
|
58
98
|
* const root = await tgpu.init({ adapter: adapterOptions, device: deviceDescriptor });
|
|
59
99
|
* ```
|
|
60
100
|
*/
|
|
61
|
-
declare function init(options?: InitOptions): Promise<TgpuRoot>;
|
|
101
|
+
export declare function init(options?: InitOptions): Promise<TgpuRoot>;
|
|
62
102
|
/**
|
|
63
103
|
* Creates a root from the given device, instead of requesting it like @see init.
|
|
64
104
|
*
|
|
@@ -68,6 +108,4 @@ declare function init(options?: InitOptions): Promise<TgpuRoot>;
|
|
|
68
108
|
* const root = tgpu.initFromDevice({ device });
|
|
69
109
|
* ```
|
|
70
110
|
*/
|
|
71
|
-
declare function initFromDevice(options: InitFromDeviceOptions): TgpuRoot;
|
|
72
|
-
//#endregion
|
|
73
|
-
export { InitFromDeviceOptions, InitOptions, init, initFromDevice };
|
|
111
|
+
export declare function initFromDevice(options: InitFromDeviceOptions): TgpuRoot;
|