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
package/types.d.ts
CHANGED
|
@@ -1,120 +1,121 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { TgpuComputeFn } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { TgpuRenderPipeline } from
|
|
12
|
-
import { TgpuSampler } from
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
type
|
|
29
|
-
type
|
|
30
|
-
type
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
1
|
+
import type { Block, FuncParameter } from 'tinyest';
|
|
2
|
+
import type { IndexFlag, TgpuBuffer, UniformFlag, VertexFlag } from './core/buffer/buffer.ts';
|
|
3
|
+
import type { TgpuConst } from './core/constant/tgpuConstant.ts';
|
|
4
|
+
import type { TgpuDeclare } from './core/declare/tgpuDeclare.ts';
|
|
5
|
+
import type { TgpuComputeFn } from './core/function/tgpuComputeFn.ts';
|
|
6
|
+
import type { TgpuFn } from './core/function/tgpuFn.ts';
|
|
7
|
+
import type { TgpuFragmentFn } from './core/function/tgpuFragmentFn.ts';
|
|
8
|
+
import type { SeparatedEntryArgs } from './core/function/fnTypes.ts';
|
|
9
|
+
import type { TgpuVertexFn } from './core/function/tgpuVertexFn.ts';
|
|
10
|
+
import type { TgpuComputePipeline } from './core/pipeline/computePipeline.ts';
|
|
11
|
+
import type { TgpuRenderPipeline } from './core/pipeline/renderPipeline.ts';
|
|
12
|
+
import type { TgpuSampler } from './core/sampler/sampler.ts';
|
|
13
|
+
import { type Eventual, type SlotValuePair, type TgpuAccessor, type TgpuLazy, type TgpuSlot } from './core/slot/slotTypes.ts';
|
|
14
|
+
import type { TgpuExternalTexture } from './core/texture/externalTexture.ts';
|
|
15
|
+
import type { TgpuTexture, TgpuTextureView } from './core/texture/texture.ts';
|
|
16
|
+
import type { TgpuVar } from './core/variable/tgpuVariable.ts';
|
|
17
|
+
import { type AnyData, UnknownData } from './data/dataTypes.ts';
|
|
18
|
+
import type { MapValueToSnippet, ResolvedSnippet, Snippet } from './data/snippet.ts';
|
|
19
|
+
import { type AnyMatInstance, type AnyVecInstance, type BaseData } from './data/wgslTypes.ts';
|
|
20
|
+
import { $cast, $gpuCallable, $gpuValueOf, $internal, $ownSnippet, $resolve } from './shared/symbols.ts';
|
|
21
|
+
import type { TgpuBindGroupLayout, TgpuLayoutEntry } from './tgpuBindGroupLayout.ts';
|
|
22
|
+
import type { WgslEnableExtension } from './wgslExtensions.ts';
|
|
23
|
+
import type { Infer } from './shared/repr.ts';
|
|
24
|
+
import type { ShaderGenerator } from './tgsl/shaderGenerator.ts';
|
|
25
|
+
import type { StorageFlag } from './extension.ts';
|
|
26
|
+
import type { TgpuBufferBinding } from './core/buffer/bufferBinding.ts';
|
|
27
|
+
import type { ShelllessRepository } from './tgsl/shellless.ts';
|
|
28
|
+
import type { SupportedLogOp } from './tgsl/consoleLog/types.ts';
|
|
29
|
+
export type ResolvableObject = SelfResolvable | TgpuLazy<unknown> | TgpuConst | TgpuDeclare | TgpuBindGroupLayout | TgpuFn | TgpuComputeFn | TgpuFragmentFn | TgpuComputePipeline | TgpuRenderPipeline | TgpuVertexFn | TgpuSampler | TgpuAccessor | TgpuExternalTexture | TgpuTexture | TgpuTextureView | TgpuBufferBinding<BaseData> | TgpuVar | AnyVecInstance | AnyMatInstance | AnyData | ((...args: never[]) => unknown);
|
|
30
|
+
export type Wgsl = Eventual<number | boolean | ResolvableObject>;
|
|
31
|
+
export type ShaderStage = 'compute' | 'vertex' | 'fragment';
|
|
32
|
+
export interface ResolveFunctionOptions {
|
|
33
|
+
functionType: 'normal' | ShaderStage;
|
|
34
|
+
workgroupSize?: readonly number[] | undefined;
|
|
35
|
+
name: string;
|
|
36
|
+
argTypes: BaseData[];
|
|
37
|
+
/**
|
|
38
|
+
* The return type of the function. If undefined, the type should be inferred
|
|
39
|
+
* from the implementation (relevant for shellless functions).
|
|
40
|
+
*/
|
|
41
|
+
returnType: BaseData | undefined;
|
|
42
|
+
body: Block;
|
|
43
|
+
params: FuncParameter[];
|
|
44
|
+
externalMap: Record<string, unknown>;
|
|
45
|
+
/**
|
|
46
|
+
* For entry functions: positional args and optional data struct.
|
|
47
|
+
* When provided, takes precedence over `argTypes` for WGSL header generation.
|
|
48
|
+
*/
|
|
49
|
+
entryInput?: SeparatedEntryArgs | undefined;
|
|
49
50
|
}
|
|
50
|
-
type ItemLayer = {
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
export type ItemLayer = {
|
|
52
|
+
type: 'item';
|
|
53
|
+
usedSlots: Set<TgpuSlot<unknown>>;
|
|
53
54
|
};
|
|
54
|
-
type FunctionArgumentAccess = () => Snippet | undefined;
|
|
55
|
-
interface FunctionArgument {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
export type FunctionArgumentAccess = () => Snippet | undefined;
|
|
56
|
+
export interface FunctionArgument {
|
|
57
|
+
name: string;
|
|
58
|
+
access: FunctionArgumentAccess;
|
|
59
|
+
decoratedType: BaseData;
|
|
60
|
+
used: boolean;
|
|
60
61
|
}
|
|
61
|
-
type FunctionScopeLayer = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
62
|
+
export type FunctionScopeLayer = {
|
|
63
|
+
type: 'functionScope';
|
|
64
|
+
functionType: 'normal' | 'compute' | 'vertex' | 'fragment';
|
|
65
|
+
argAccess: Record<string, FunctionArgumentAccess>;
|
|
66
|
+
externalMap: Record<string, unknown>;
|
|
67
|
+
/**
|
|
68
|
+
* The return type of the function. If undefined, the type should be inferred
|
|
69
|
+
* from the implementation (relevant for shellless functions).
|
|
70
|
+
*/
|
|
71
|
+
returnType: BaseData | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* All types used in `return` statements.
|
|
74
|
+
*/
|
|
75
|
+
reportedReturnTypes: Set<BaseData>;
|
|
76
|
+
/**
|
|
77
|
+
* Maps variables to their modifier placeholders
|
|
78
|
+
*/
|
|
79
|
+
placeholderForVariable: Map<Snippet, string>;
|
|
80
|
+
/**
|
|
81
|
+
* Local variables that need `var` modifier.
|
|
82
|
+
*/
|
|
83
|
+
modifiedVariables: Set<Snippet>;
|
|
83
84
|
};
|
|
84
|
-
type SlotBindingLayer = {
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
export type SlotBindingLayer = {
|
|
86
|
+
type: 'slotBinding';
|
|
87
|
+
bindingMap: WeakMap<TgpuSlot<unknown>, unknown>;
|
|
87
88
|
};
|
|
88
|
-
type BlockScopeLayer = {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
export type BlockScopeLayer = {
|
|
90
|
+
type: 'blockScope';
|
|
91
|
+
takenLocalIdentifiers: Set<string>;
|
|
92
|
+
declarations: Map<string, Snippet>;
|
|
93
|
+
externals: Map<string, Snippet>;
|
|
93
94
|
};
|
|
94
|
-
type StackLayer = ItemLayer | SlotBindingLayer | FunctionScopeLayer | BlockScopeLayer;
|
|
95
|
-
interface ItemStateStack {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
95
|
+
export type StackLayer = ItemLayer | SlotBindingLayer | FunctionScopeLayer | BlockScopeLayer;
|
|
96
|
+
export interface ItemStateStack {
|
|
97
|
+
readonly itemDepth: number;
|
|
98
|
+
readonly topItem: ItemLayer;
|
|
99
|
+
readonly topBlockScope: BlockScopeLayer | undefined;
|
|
100
|
+
readonly topFunctionScope: FunctionScopeLayer | undefined;
|
|
101
|
+
pushItem(): void;
|
|
102
|
+
pushSlotBindings(pairs: SlotValuePair[]): void;
|
|
103
|
+
pushFunctionScope(functionType: 'normal' | ShaderStage, argAccess: Record<string, FunctionArgumentAccess>,
|
|
104
|
+
/**
|
|
105
|
+
* The return type of the function. If undefined, the type should be inferred
|
|
106
|
+
* from the implementation (relevant for shellless functions).
|
|
107
|
+
*/
|
|
108
|
+
returnType: BaseData | undefined, externalMap: Record<string, unknown>): FunctionScopeLayer;
|
|
109
|
+
pushBlockScope(): void;
|
|
110
|
+
setBlockExternals(externals: Record<string, Snippet>): void;
|
|
111
|
+
clearBlockExternals(): void;
|
|
112
|
+
pop<T extends StackLayer['type']>(type: T): Extract<StackLayer, {
|
|
113
|
+
type: T;
|
|
114
|
+
}>;
|
|
115
|
+
pop(): StackLayer | undefined;
|
|
116
|
+
readSlot<T>(slot: TgpuSlot<T>): T | undefined;
|
|
117
|
+
getSnippetById(id: string): Snippet | undefined;
|
|
118
|
+
defineBlockVariable(id: string, snippet: Snippet): void;
|
|
118
119
|
}
|
|
119
120
|
/**
|
|
120
121
|
* # What are execution modes/states? 🤷
|
|
@@ -168,132 +169,196 @@ interface ItemStateStack {
|
|
|
168
169
|
* console.log(result.value); // Prints 1
|
|
169
170
|
* ```
|
|
170
171
|
*/
|
|
171
|
-
type ExecMode = 'normal' | 'codegen' | 'simulate';
|
|
172
|
-
declare class NormalState {
|
|
173
|
-
|
|
172
|
+
export type ExecMode = 'normal' | 'codegen' | 'simulate';
|
|
173
|
+
export declare class NormalState {
|
|
174
|
+
readonly type: "normal";
|
|
174
175
|
}
|
|
175
|
-
declare class CodegenState {
|
|
176
|
-
|
|
176
|
+
export declare class CodegenState {
|
|
177
|
+
readonly type: "codegen";
|
|
177
178
|
}
|
|
178
|
-
declare class SimulationState {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
179
|
+
export declare class SimulationState {
|
|
180
|
+
readonly type: "simulate";
|
|
181
|
+
readonly buffers: Map<TgpuBuffer<BaseData>, unknown>;
|
|
182
|
+
readonly vars: {
|
|
183
|
+
private: Map<TgpuVar, unknown>;
|
|
184
|
+
workgroup: Map<TgpuVar, unknown>;
|
|
185
|
+
};
|
|
186
|
+
constructor(buffers: Map<TgpuBuffer<BaseData>, unknown>, vars: {
|
|
187
|
+
private: Map<TgpuVar, unknown>;
|
|
188
|
+
workgroup: Map<TgpuVar, unknown>;
|
|
189
|
+
});
|
|
189
190
|
}
|
|
190
|
-
type ExecState = NormalState | CodegenState | SimulationState;
|
|
191
|
+
export type ExecState = NormalState | CodegenState | SimulationState;
|
|
191
192
|
/**
|
|
192
193
|
* Passed into each resolvable item. All items in a tree share a resolution ctx,
|
|
193
194
|
* but there can be layers added and removed from the item stack when going down
|
|
194
195
|
* and up the tree.
|
|
195
196
|
*/
|
|
196
|
-
interface ResolutionCtx {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
197
|
+
export interface ResolutionCtx {
|
|
198
|
+
[$internal]: {
|
|
199
|
+
itemStateStack: ItemStateStack;
|
|
200
|
+
};
|
|
201
|
+
readonly pre: string;
|
|
202
|
+
readonly mode: ExecState;
|
|
203
|
+
readonly enableExtensions: WgslEnableExtension[] | undefined;
|
|
204
|
+
readonly gen: ShaderGenerator;
|
|
205
|
+
/**
|
|
206
|
+
* Used by `typedExpression` to signal downstream
|
|
207
|
+
* expression resolution what type is expected of them.
|
|
208
|
+
*
|
|
209
|
+
* It is used exclusively for inferring the types of structs and arrays.
|
|
210
|
+
* It is modified exclusively by `typedExpression` function.
|
|
211
|
+
*/
|
|
212
|
+
expectedType: (BaseData | BaseData[]) | undefined;
|
|
213
|
+
readonly topFunctionScope: FunctionScopeLayer | undefined;
|
|
214
|
+
readonly topFunctionReturnType: BaseData | undefined;
|
|
215
|
+
readonly blockDepth: number;
|
|
216
|
+
readonly shelllessRepo: ShelllessRepository;
|
|
217
|
+
/**
|
|
218
|
+
* Adds a module-scope declaration to the resolution output.
|
|
219
|
+
* @param declaration - The WGSL code of the declaration.
|
|
220
|
+
* @param name - The identifier the declaration declares (a fn, struct, var,
|
|
221
|
+
* const or alias name), if it declares one. Reported back to the caller
|
|
222
|
+
* through `ResolutionResult.declarations`.
|
|
223
|
+
*/
|
|
224
|
+
addDeclaration(declaration: string, name?: string): void;
|
|
225
|
+
withResetIndentLevel<T>(callback: () => T): T;
|
|
226
|
+
/**
|
|
227
|
+
* Reserves a bind group number, and returns a placeholder that will be replaced
|
|
228
|
+
* with a concrete number at the end of the resolution process.
|
|
229
|
+
*/
|
|
230
|
+
allocateLayoutEntry(layout: TgpuBindGroupLayout): string;
|
|
231
|
+
/**
|
|
232
|
+
* Reserves a spot in the catch-all bind group, without the indirection of a bind-group.
|
|
233
|
+
* This means the resource is 'fixed', and cannot be swapped between code execution.
|
|
234
|
+
*/
|
|
235
|
+
allocateFixedEntry(layoutEntry: TgpuLayoutEntry, resource: object): {
|
|
236
|
+
group: string;
|
|
237
|
+
binding: number;
|
|
238
|
+
};
|
|
239
|
+
withSlots<T>(pairs: SlotValuePair[], callback: () => T): T;
|
|
240
|
+
pushMode(state: ExecState): void;
|
|
241
|
+
popMode(expected?: ExecMode): void;
|
|
242
|
+
/**
|
|
243
|
+
* Unwraps all layers of slot/lazy indirection and returns the concrete value if available.
|
|
244
|
+
* @throws {MissingSlotValueError}
|
|
245
|
+
*/
|
|
246
|
+
unwrap<T>(eventual: Eventual<T>): T;
|
|
247
|
+
/**
|
|
248
|
+
* Returns the snippet representing `item`.
|
|
249
|
+
*
|
|
250
|
+
* @param item The value to resolve
|
|
251
|
+
* @param schema Additional information about the item's data type
|
|
252
|
+
*/
|
|
253
|
+
resolve(item: unknown, schema?: BaseData | UnknownData): ResolvedSnippet;
|
|
254
|
+
/**
|
|
255
|
+
* Equivalent to `snip(ctx.resolve(snippet.value, snippet.dataType).value, snippet.dataType, snippet.origin, snippet.possibleSideEffects)`.
|
|
256
|
+
*/
|
|
257
|
+
resolveSnippet(snippet: Snippet): ResolvedSnippet;
|
|
258
|
+
resolveFunction(options: ResolveFunctionOptions): {
|
|
259
|
+
code: string;
|
|
260
|
+
returnType: BaseData;
|
|
261
|
+
};
|
|
262
|
+
withVaryingLocations<T>(locations: Record<string, number>, callback: () => T): T;
|
|
263
|
+
get varyingLocations(): Record<string, number> | undefined;
|
|
264
|
+
/**
|
|
265
|
+
* Temporarily renames the item.
|
|
266
|
+
* Useful for resolutions with slots,
|
|
267
|
+
* since functions with different slots should have different names,
|
|
268
|
+
* and all hold the same inner function that is being resolved multiple times.
|
|
269
|
+
* @param item the item to rename
|
|
270
|
+
* @param name the temporary name to assign to the item (if missing, just returns `callback()`)
|
|
271
|
+
*/
|
|
272
|
+
withRenamed<T>(item: object, name: string | undefined, callback: () => T): T;
|
|
273
|
+
/**
|
|
274
|
+
* @param primer The basis for the unique identifier. Depending on the strategy, or
|
|
275
|
+
* the names already taken, this may be modified to ensure uniqueness.
|
|
276
|
+
* @param scope The scope in which to generate the identifier. 'global' means
|
|
277
|
+
* the identifier is meant to be unique across the entire program, while
|
|
278
|
+
* 'block' means it cannot shadow any existing identifiers visible from
|
|
279
|
+
* within the current block. After the block is popped, any identifiers
|
|
280
|
+
* defined within it are no longer visible.
|
|
281
|
+
* @returns an identifier that is unique within the given scope
|
|
282
|
+
*/
|
|
283
|
+
makeUniqueIdentifier(primer: string | undefined, scope: 'global' | 'block'): string;
|
|
284
|
+
isIdentifierBanned(name: string): boolean;
|
|
285
|
+
/**
|
|
286
|
+
* @param name The name to check.
|
|
287
|
+
* @param scope The scope in which we want to place the identifier.
|
|
288
|
+
*/
|
|
289
|
+
isIdentifierTaken(name: string, scope: 'global' | 'block'): boolean;
|
|
290
|
+
/**
|
|
291
|
+
* Makes sure the given identifier cannot be generated by {@link makeUniqueIdentifier}
|
|
292
|
+
* within the given scope.
|
|
293
|
+
* @param name The name to reserve
|
|
294
|
+
* @param scope See {@link makeUniqueIdentifier} for a description of the scope parameter.
|
|
295
|
+
*/
|
|
296
|
+
reserveIdentifier(name: string, scope: 'global' | 'block'): void;
|
|
297
|
+
indent(): string;
|
|
298
|
+
dedent(): string;
|
|
299
|
+
/**
|
|
300
|
+
* Returns a version of `code` with one level of indentation less.
|
|
301
|
+
*
|
|
302
|
+
* @note If a line has no indentation, it will be kept as is, which
|
|
303
|
+
* can cause some lines to dedent and some to be left as they are.
|
|
304
|
+
*/
|
|
305
|
+
getDedented(code: string): string;
|
|
306
|
+
pushBlockScope(): void;
|
|
307
|
+
popBlockScope(): void;
|
|
308
|
+
generateLog(op: SupportedLogOp, args: Snippet[]): Snippet;
|
|
309
|
+
getById(id: string): Snippet | null;
|
|
310
|
+
defineVariable(id: string, snippet: Snippet): void;
|
|
311
|
+
setBlockExternals(externals: Record<string, Snippet>): void;
|
|
312
|
+
clearBlockExternals(): void;
|
|
313
|
+
/**
|
|
314
|
+
* Types that are used in `return` statements are
|
|
315
|
+
* reported using this function, and used to infer
|
|
316
|
+
* the return type of the owning function.
|
|
317
|
+
*/
|
|
318
|
+
reportReturnType(dataType: BaseData): void;
|
|
272
319
|
}
|
|
273
320
|
/**
|
|
274
321
|
* Houses a method on the symbol '$resolve` that returns a
|
|
275
322
|
* code string representing it, as opposed to offloading the
|
|
276
323
|
* resolution to another mechanism.
|
|
277
324
|
*/
|
|
278
|
-
interface SelfResolvable {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
325
|
+
export interface SelfResolvable {
|
|
326
|
+
[$internal]: unknown;
|
|
327
|
+
[$resolve](ctx: ResolutionCtx): ResolvedSnippet;
|
|
328
|
+
toString(): string;
|
|
282
329
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
argTypes: (BaseData | BaseData[])[];
|
|
287
|
-
returnType: BaseData;
|
|
288
|
-
} | undefined;
|
|
289
|
-
call(ctx: ResolutionCtx, args: MapValueToSnippet<TArgs>): Snippet;
|
|
290
|
-
};
|
|
330
|
+
export declare function isSelfResolvable(value: unknown): value is SelfResolvable;
|
|
331
|
+
export interface WithGPUValue<T> {
|
|
332
|
+
readonly [$gpuValueOf]: T;
|
|
291
333
|
}
|
|
292
|
-
|
|
293
|
-
|
|
334
|
+
export interface WithOwnSnippet {
|
|
335
|
+
readonly [$ownSnippet]: Snippet;
|
|
336
|
+
}
|
|
337
|
+
export declare function getOwnSnippet(value: unknown): Snippet | undefined;
|
|
338
|
+
export interface GPUCallable<TArgs extends unknown[] = unknown[]> {
|
|
339
|
+
[$gpuCallable]: {
|
|
340
|
+
strictSignature?: {
|
|
341
|
+
argTypes: (BaseData | BaseData[])[];
|
|
342
|
+
returnType: BaseData;
|
|
343
|
+
} | undefined;
|
|
344
|
+
call(ctx: ResolutionCtx, args: MapValueToSnippet<TArgs>): Snippet;
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
export declare function isGPUCallable(value: unknown): value is GPUCallable;
|
|
348
|
+
export type WithCast<T = BaseData> = GPUCallable<[v?: Infer<T>]> & {
|
|
349
|
+
readonly [$cast]: (v?: Infer<T>) => Infer<T>;
|
|
294
350
|
};
|
|
351
|
+
export declare function hasCast(value: unknown): value is WithCast;
|
|
295
352
|
type AnyFn = (...args: never[]) => unknown;
|
|
296
|
-
type DualFn<T extends AnyFn> = T & GPUCallable<Parameters<T>>;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
export
|
|
353
|
+
export type DualFn<T extends AnyFn> = T & GPUCallable<Parameters<T>>;
|
|
354
|
+
export declare function isKnownAtComptime(snippet: Snippet): boolean;
|
|
355
|
+
export declare function isWgsl(value: unknown): value is Wgsl;
|
|
356
|
+
export type BindableBufferUsage = 'uniform' | 'readonly' | 'mutable';
|
|
357
|
+
export type BufferUsage = 'uniform' | 'readonly' | 'mutable' | 'vertex';
|
|
358
|
+
export declare function isGPUBuffer(value: unknown): value is GPUBuffer;
|
|
359
|
+
export declare function isBuffer(value: unknown): value is TgpuBuffer<BaseData>;
|
|
360
|
+
export declare function isUsableAsVertex<T extends TgpuBuffer<BaseData>>(buffer: T): buffer is T & VertexFlag;
|
|
361
|
+
export declare function isUsableAsIndex<T extends TgpuBuffer<BaseData>>(buffer: T): buffer is T & IndexFlag;
|
|
362
|
+
export declare function isUsableAsUniform<T extends TgpuBuffer<BaseData>>(buffer: T): buffer is T & UniformFlag;
|
|
363
|
+
export declare function isUsableAsStorage<T>(value: T): value is T & StorageFlag;
|
|
364
|
+
export {};
|