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/data/wgslTypes.js
CHANGED
|
@@ -1,224 +1,246 @@
|
|
|
1
|
+
// We import tsover-runtime, then use Symbol.* types, because tsdown strips the imported `Operator`
|
|
2
|
+
// type no matter what. Seems like a bug in tsdown.
|
|
3
|
+
// oxlint-disable-next-line no-unassigned-import
|
|
4
|
+
import 'tsover-runtime';
|
|
1
5
|
import { $internal, isMarkedInternal } from "../shared/symbols.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
toString() {
|
|
9
|
-
return "void";
|
|
10
|
-
}
|
|
6
|
+
export const Void = {
|
|
7
|
+
[$internal]: {},
|
|
8
|
+
type: 'void',
|
|
9
|
+
toString() {
|
|
10
|
+
return 'void';
|
|
11
|
+
},
|
|
11
12
|
};
|
|
12
|
-
const wgslTypeLiterals = [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
13
|
+
export const wgslTypeLiterals = [
|
|
14
|
+
'bool',
|
|
15
|
+
'f32',
|
|
16
|
+
'f16',
|
|
17
|
+
'i32',
|
|
18
|
+
'u32',
|
|
19
|
+
'u16',
|
|
20
|
+
'vec2f',
|
|
21
|
+
'vec2h',
|
|
22
|
+
'vec2i',
|
|
23
|
+
'vec2u',
|
|
24
|
+
'vec2<bool>',
|
|
25
|
+
'vec3f',
|
|
26
|
+
'vec3h',
|
|
27
|
+
'vec3i',
|
|
28
|
+
'vec3u',
|
|
29
|
+
'vec3<bool>',
|
|
30
|
+
'vec4f',
|
|
31
|
+
'vec4h',
|
|
32
|
+
'vec4i',
|
|
33
|
+
'vec4u',
|
|
34
|
+
'vec4<bool>',
|
|
35
|
+
'mat2x2f',
|
|
36
|
+
'mat3x3f',
|
|
37
|
+
'mat4x4f',
|
|
38
|
+
'struct',
|
|
39
|
+
'array',
|
|
40
|
+
'ptr',
|
|
41
|
+
'atomic',
|
|
42
|
+
'decorated',
|
|
43
|
+
'abstractInt',
|
|
44
|
+
'abstractFloat',
|
|
45
|
+
'void',
|
|
46
|
+
'texture_1d',
|
|
47
|
+
'texture_storage_1d',
|
|
48
|
+
'texture_2d',
|
|
49
|
+
'texture_storage_2d',
|
|
50
|
+
'texture_multisampled_2d',
|
|
51
|
+
'texture_depth_2d',
|
|
52
|
+
'texture_depth_multisampled_2d',
|
|
53
|
+
'texture_2d_array',
|
|
54
|
+
'texture_storage_2d_array',
|
|
55
|
+
'texture_depth_2d_array',
|
|
56
|
+
'texture_cube',
|
|
57
|
+
'texture_depth_cube',
|
|
58
|
+
'texture_cube_array',
|
|
59
|
+
'texture_depth_cube_array',
|
|
60
|
+
'texture_3d',
|
|
61
|
+
'texture_storage_3d',
|
|
62
|
+
'texture_external',
|
|
63
|
+
'sampler',
|
|
64
|
+
'sampler_comparison',
|
|
64
65
|
];
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
// #endregion
|
|
67
|
+
export function isVecInstance(value) {
|
|
68
|
+
const v = value;
|
|
69
|
+
return isMarkedInternal(v) && typeof v.kind === 'string' && v.kind.startsWith('vec');
|
|
68
70
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
return isMarkedInternal(v) && typeof v.type === "string" && v.type.startsWith("vec2");
|
|
71
|
+
export function isVecBoolInstance(value) {
|
|
72
|
+
return isVecInstance(value) && value.kind.includes('b');
|
|
72
73
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
export function isVec2(value) {
|
|
75
|
+
const v = value;
|
|
76
|
+
return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec2');
|
|
76
77
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
export function isVec3(value) {
|
|
79
|
+
const v = value;
|
|
80
|
+
return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec3');
|
|
80
81
|
}
|
|
81
|
-
function
|
|
82
|
-
|
|
82
|
+
export function isVec4(value) {
|
|
83
|
+
const v = value;
|
|
84
|
+
return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec4');
|
|
83
85
|
}
|
|
84
|
-
function
|
|
85
|
-
|
|
86
|
+
export function isVec(value) {
|
|
87
|
+
return isVec2(value) || isVec3(value) || isVec4(value);
|
|
86
88
|
}
|
|
87
|
-
function
|
|
88
|
-
|
|
89
|
-
return isMarkedInternal(v) && typeof v.kind?.startsWith === "function" && v.kind.startsWith("mat");
|
|
89
|
+
export function isVecBool(value) {
|
|
90
|
+
return isVec(value) && value.type.includes('b');
|
|
90
91
|
}
|
|
91
|
-
function
|
|
92
|
-
|
|
92
|
+
export function isMatInstance(value) {
|
|
93
|
+
const v = value;
|
|
94
|
+
return (isMarkedInternal(v) && typeof v.kind?.startsWith === 'function' && v.kind.startsWith('mat'));
|
|
93
95
|
}
|
|
94
|
-
function
|
|
95
|
-
|
|
96
|
+
export function isMat2x2f(value) {
|
|
97
|
+
return isMarkedInternal(value) && value?.type === 'mat2x2f';
|
|
96
98
|
}
|
|
97
|
-
function
|
|
98
|
-
|
|
99
|
+
export function isMat3x3f(value) {
|
|
100
|
+
return isMarkedInternal(value) && value?.type === 'mat3x3f';
|
|
99
101
|
}
|
|
100
|
-
function
|
|
101
|
-
|
|
102
|
+
export function isMat4x4f(value) {
|
|
103
|
+
return isMarkedInternal(value) && value?.type === 'mat4x4f';
|
|
102
104
|
}
|
|
103
|
-
function
|
|
104
|
-
|
|
105
|
-
"vec2f",
|
|
106
|
-
"vec3f",
|
|
107
|
-
"vec4f"
|
|
108
|
-
].includes(element.kind);
|
|
105
|
+
export function isMat(value) {
|
|
106
|
+
return isMat2x2f(value) || isMat3x3f(value) || isMat4x4f(value);
|
|
109
107
|
}
|
|
110
|
-
function
|
|
111
|
-
|
|
108
|
+
export function isInteger(value) {
|
|
109
|
+
return (isMarkedInternal(value) && ['abstractInt', 'i32', 'u32'].includes(value?.type));
|
|
112
110
|
}
|
|
113
|
-
function
|
|
114
|
-
|
|
111
|
+
export function isIntegerVec(value) {
|
|
112
|
+
return isVec(value) && isInteger(value.primitive);
|
|
115
113
|
}
|
|
116
|
-
function
|
|
117
|
-
|
|
114
|
+
export function isFloat32VecInstance(element) {
|
|
115
|
+
return isVecInstance(element) && ['vec2f', 'vec3f', 'vec4f'].includes(element.kind);
|
|
116
|
+
}
|
|
117
|
+
export function isInteger32VecInstance(value) {
|
|
118
|
+
return isVecInstance(value) && /[iu]$/.test(value.kind);
|
|
119
|
+
}
|
|
120
|
+
export function isUint32VecInstance(value) {
|
|
121
|
+
return isVecInstance(value) && /[u]$/.test(value.kind);
|
|
122
|
+
}
|
|
123
|
+
export function isWgslData(value) {
|
|
124
|
+
return isMarkedInternal(value) && wgslTypeLiterals.includes(value?.type);
|
|
118
125
|
}
|
|
119
126
|
/**
|
|
120
|
-
* Checks whether passed in value is an array schema,
|
|
121
|
-
* as opposed to, e.g., a disarray schema.
|
|
122
|
-
*
|
|
123
|
-
* Array schemas can be used to describe uniform and storage buffers,
|
|
124
|
-
* whereas disarray schemas cannot.
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* isWgslArray(d.arrayOf(d.u32, 4)) // true
|
|
128
|
-
* isWgslArray(d.disarray(d.u32, 4)) // false
|
|
129
|
-
* isWgslArray(d.vec3f) // false
|
|
130
|
-
*/
|
|
131
|
-
function isWgslArray(schema) {
|
|
132
|
-
|
|
127
|
+
* Checks whether passed in value is an array schema,
|
|
128
|
+
* as opposed to, e.g., a disarray schema.
|
|
129
|
+
*
|
|
130
|
+
* Array schemas can be used to describe uniform and storage buffers,
|
|
131
|
+
* whereas disarray schemas cannot.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* isWgslArray(d.arrayOf(d.u32, 4)) // true
|
|
135
|
+
* isWgslArray(d.disarray(d.u32, 4)) // false
|
|
136
|
+
* isWgslArray(d.vec3f) // false
|
|
137
|
+
*/
|
|
138
|
+
export function isWgslArray(schema) {
|
|
139
|
+
return isMarkedInternal(schema) && schema?.type === 'array';
|
|
133
140
|
}
|
|
134
141
|
/**
|
|
135
|
-
* Checks whether passed in value is a struct schema,
|
|
136
|
-
* as opposed to, e.g., an unstruct schema.
|
|
137
|
-
*
|
|
138
|
-
* Struct schemas can be used to describe uniform and storage buffers,
|
|
139
|
-
* whereas unstruct schemas cannot.
|
|
140
|
-
*
|
|
141
|
-
* @example
|
|
142
|
-
* isWgslStruct(d.struct({ a: d.u32 })) // true
|
|
143
|
-
* isWgslStruct(d.unstruct({ a: d.u32 })) // false
|
|
144
|
-
* isWgslStruct(d.vec3f) // false
|
|
145
|
-
*/
|
|
146
|
-
function isWgslStruct(schema) {
|
|
147
|
-
|
|
142
|
+
* Checks whether passed in value is a struct schema,
|
|
143
|
+
* as opposed to, e.g., an unstruct schema.
|
|
144
|
+
*
|
|
145
|
+
* Struct schemas can be used to describe uniform and storage buffers,
|
|
146
|
+
* whereas unstruct schemas cannot.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* isWgslStruct(d.struct({ a: d.u32 })) // true
|
|
150
|
+
* isWgslStruct(d.unstruct({ a: d.u32 })) // false
|
|
151
|
+
* isWgslStruct(d.vec3f) // false
|
|
152
|
+
*/
|
|
153
|
+
export function isWgslStruct(schema) {
|
|
154
|
+
return isMarkedInternal(schema) && schema?.type === 'struct';
|
|
148
155
|
}
|
|
149
156
|
/**
|
|
150
|
-
* Checks whether passed in value is a pointer schema.
|
|
151
|
-
*
|
|
152
|
-
* @example
|
|
153
|
-
* isPtr(d.ptrFn(d.f32)) // true
|
|
154
|
-
* isPtr(d.ptrPrivate(d.f32)) // true
|
|
155
|
-
* isPtr(d.f32) // false
|
|
156
|
-
*/
|
|
157
|
-
function isPtr(schema) {
|
|
158
|
-
|
|
157
|
+
* Checks whether passed in value is a pointer schema.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* isPtr(d.ptrFn(d.f32)) // true
|
|
161
|
+
* isPtr(d.ptrPrivate(d.f32)) // true
|
|
162
|
+
* isPtr(d.f32) // false
|
|
163
|
+
*/
|
|
164
|
+
export function isPtr(schema) {
|
|
165
|
+
return isMarkedInternal(schema) && schema?.type === 'ptr';
|
|
159
166
|
}
|
|
160
167
|
/**
|
|
161
|
-
* Checks whether the passed in value is an atomic schema.
|
|
162
|
-
*
|
|
163
|
-
* @example
|
|
164
|
-
* isAtomic(d.atomic(d.u32)) // true
|
|
165
|
-
* isAtomic(d.u32) // false
|
|
166
|
-
*/
|
|
167
|
-
function isAtomic(schema) {
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
function isAlignAttrib(value) {
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
function isSizeAttrib(value) {
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
function isLocationAttrib(value) {
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
function isInterpolateAttrib(value) {
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
function isBuiltinAttrib(value) {
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
function
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
function
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
function
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
function
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
168
|
+
* Checks whether the passed in value is an atomic schema.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* isAtomic(d.atomic(d.u32)) // true
|
|
172
|
+
* isAtomic(d.u32) // false
|
|
173
|
+
*/
|
|
174
|
+
export function isAtomic(schema) {
|
|
175
|
+
return isMarkedInternal(schema) && schema?.type === 'atomic';
|
|
176
|
+
}
|
|
177
|
+
export function isAlignAttrib(value) {
|
|
178
|
+
return isMarkedInternal(value) && value?.type === '@align';
|
|
179
|
+
}
|
|
180
|
+
export function isSizeAttrib(value) {
|
|
181
|
+
return isMarkedInternal(value) && value?.type === '@size';
|
|
182
|
+
}
|
|
183
|
+
export function isLocationAttrib(value) {
|
|
184
|
+
return isMarkedInternal(value) && value?.type === '@location';
|
|
185
|
+
}
|
|
186
|
+
export function isInterpolateAttrib(value) {
|
|
187
|
+
return isMarkedInternal(value) && value?.type === '@interpolate';
|
|
188
|
+
}
|
|
189
|
+
export function isBuiltinAttrib(value) {
|
|
190
|
+
return isMarkedInternal(value) && value?.type === '@builtin';
|
|
191
|
+
}
|
|
192
|
+
export function isInvariantAttrib(value) {
|
|
193
|
+
return isMarkedInternal(value) && value?.type === '@invariant';
|
|
194
|
+
}
|
|
195
|
+
export function isDecorated(value) {
|
|
196
|
+
return isMarkedInternal(value) && value?.type === 'decorated';
|
|
197
|
+
}
|
|
198
|
+
export function isAbstractFloat(value) {
|
|
199
|
+
return isMarkedInternal(value) && value.type === 'abstractFloat';
|
|
200
|
+
}
|
|
201
|
+
export function isAbstractInt(value) {
|
|
202
|
+
return isMarkedInternal(value) && value.type === 'abstractInt';
|
|
203
|
+
}
|
|
204
|
+
export function isAbstract(value) {
|
|
205
|
+
return isAbstractFloat(value) || isAbstractInt(value);
|
|
206
|
+
}
|
|
207
|
+
export function isConcrete(value) {
|
|
208
|
+
return !isAbstract(value);
|
|
209
|
+
}
|
|
210
|
+
export function isVoid(value) {
|
|
211
|
+
return isMarkedInternal(value) && value.type === 'void';
|
|
212
|
+
}
|
|
213
|
+
export function isBool(value) {
|
|
214
|
+
return isMarkedInternal(value) && value.type === 'bool';
|
|
215
|
+
}
|
|
216
|
+
export function isNumericSchema(schema) {
|
|
217
|
+
const type = schema?.type;
|
|
218
|
+
return (isMarkedInternal(schema) &&
|
|
219
|
+
(type === 'abstractInt' ||
|
|
220
|
+
type === 'abstractFloat' ||
|
|
221
|
+
type === 'f32' ||
|
|
222
|
+
type === 'f16' ||
|
|
223
|
+
type === 'i32' ||
|
|
224
|
+
type === 'u32'));
|
|
225
|
+
}
|
|
226
|
+
export function isHalfPrecisionSchema(schema) {
|
|
227
|
+
const type = schema?.type;
|
|
228
|
+
return (isMarkedInternal(schema) &&
|
|
229
|
+
(type === 'f16' || type === 'vec2h' || type === 'vec3h' || type === 'vec4h'));
|
|
230
|
+
}
|
|
231
|
+
const ephemeralTypes = ['abstractInt', 'abstractFloat', 'f32', 'f16', 'i32', 'u32', 'bool'];
|
|
211
232
|
/**
|
|
212
|
-
* Returns true for schemas that are not naturally referential in JS (primitives).
|
|
213
|
-
* @param schema
|
|
214
|
-
* @returns
|
|
215
|
-
*/
|
|
216
|
-
function isNaturallyEphemeral(schema) {
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
function WORKAROUND_getSchema(vec) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
233
|
+
* Returns true for schemas that are not naturally referential in JS (primitives).
|
|
234
|
+
* @param schema
|
|
235
|
+
* @returns
|
|
236
|
+
*/
|
|
237
|
+
export function isNaturallyEphemeral(schema) {
|
|
238
|
+
return !isMarkedInternal(schema) || ephemeralTypes.includes(schema?.type);
|
|
239
|
+
}
|
|
240
|
+
export function WORKAROUND_getSchema(vec) {
|
|
241
|
+
// TODO: Remove workaround
|
|
242
|
+
// it's a workaround for circular dependencies caused by us using schemas in the shader generator
|
|
243
|
+
// these schema properties are assigned on the prototype of vector and matrix instances
|
|
244
|
+
// oxlint-disable-next-line typescript/no-explicit-any -- explained above
|
|
245
|
+
return vec.schema;
|
|
246
|
+
}
|
package/errors.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { TgpuBuffer } from './core/buffer/buffer.ts';
|
|
2
|
+
import type { TgpuSlot } from './core/slot/slotTypes.ts';
|
|
3
|
+
import type { TgpuVertexLayout } from './core/vertexLayout/vertexLayout.ts';
|
|
4
|
+
import type { BaseData } from './data/wgslTypes.ts';
|
|
5
|
+
import type { TgpuBindGroupLayout } from './tgpuBindGroupLayout.ts';
|
|
6
|
+
/**
|
|
7
|
+
* Inspired by: https://github.com/alexreardon/tiny-invariant/blob/master/src/tiny-invariant.ts
|
|
8
|
+
*/
|
|
9
|
+
export declare function invariant(condition: unknown, message?: string | (() => string)): asserts condition;
|
|
9
10
|
/**
|
|
10
11
|
* An error that happens during resolution of WGSL code.
|
|
11
12
|
* Contains a trace of all ancestor resolvables in
|
|
@@ -13,30 +14,55 @@ import { BaseData } from "./data/wgslTypes.js";
|
|
|
13
14
|
*
|
|
14
15
|
* @category Errors
|
|
15
16
|
*/
|
|
16
|
-
declare class ResolutionError extends Error {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
export declare class ResolutionError extends Error {
|
|
18
|
+
readonly cause: unknown;
|
|
19
|
+
readonly trace: unknown[];
|
|
20
|
+
constructor(cause: unknown, trace: unknown[]);
|
|
21
|
+
appendToTrace(ancestor: unknown): ResolutionError;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* An error that happens during execution of TypeGPU functions.
|
|
25
|
+
* Contains a trace of all TypeGPU functions called along the way.
|
|
26
|
+
*
|
|
27
|
+
* @category Errors
|
|
28
|
+
*/
|
|
29
|
+
export declare class ExecutionError extends Error {
|
|
30
|
+
readonly cause: unknown;
|
|
31
|
+
readonly trace: unknown[];
|
|
32
|
+
constructor(cause: unknown, trace: unknown[]);
|
|
33
|
+
appendToTrace(ancestor: unknown): ExecutionError;
|
|
21
34
|
}
|
|
22
35
|
/**
|
|
23
36
|
* @category Errors
|
|
24
37
|
*/
|
|
25
|
-
declare class MissingSlotValueError extends Error {
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
export declare class MissingSlotValueError extends Error {
|
|
39
|
+
readonly slot: TgpuSlot<unknown>;
|
|
40
|
+
constructor(slot: TgpuSlot<unknown>);
|
|
28
41
|
}
|
|
29
42
|
/**
|
|
30
43
|
* @category Errors
|
|
31
44
|
*/
|
|
32
|
-
declare class NotUniformError extends Error {
|
|
33
|
-
|
|
45
|
+
export declare class NotUniformError extends Error {
|
|
46
|
+
constructor(value: TgpuBuffer<BaseData>);
|
|
47
|
+
}
|
|
48
|
+
export declare class MissingBindGroupsError extends Error {
|
|
49
|
+
constructor(layouts: Iterable<TgpuBindGroupLayout>);
|
|
50
|
+
}
|
|
51
|
+
export declare class MissingVertexBuffersError extends Error {
|
|
52
|
+
constructor(layouts: Iterable<TgpuVertexLayout>);
|
|
53
|
+
}
|
|
54
|
+
export declare class IllegalVarAccessError extends Error {
|
|
55
|
+
constructor(msg: string);
|
|
56
|
+
}
|
|
57
|
+
export declare class IllegalBufferAccessError extends Error {
|
|
58
|
+
constructor(msg: string);
|
|
59
|
+
}
|
|
60
|
+
export declare class WgslTypeError extends Error {
|
|
61
|
+
constructor(msg: string);
|
|
34
62
|
}
|
|
35
|
-
declare class
|
|
36
|
-
|
|
63
|
+
export declare class SignatureNotSupportedError extends Error {
|
|
64
|
+
constructor(actual: BaseData[], candidates: BaseData[]);
|
|
37
65
|
}
|
|
38
|
-
declare class
|
|
39
|
-
|
|
66
|
+
export declare class FiniteMathAssumptionError extends Error {
|
|
67
|
+
constructor(value: number, type: BaseData);
|
|
40
68
|
}
|
|
41
|
-
//#endregion
|
|
42
|
-
export { MissingBindGroupsError, MissingSlotValueError, MissingVertexBuffersError, NotUniformError, ResolutionError };
|