typegpu 0.11.9 → 0.12.1
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/bin.mjs +28 -6
- 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 +283 -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/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/pipeline/webgpuLimitations.d.ts +10 -0
- package/core/pipeline/webgpuLimitations.js +81 -0
- 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 +17 -9
- package/data/array.js +57 -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/generalizeFn.d.ts +25 -0
- package/data/generalizeFn.js +89 -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 +5 -0
- package/data/numberOps.js +21 -21
- 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 +25 -0
- package/data/vectorOps.js +118 -669
- 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 -292
- 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 +150 -146
- package/std/numeric.js +771 -727
- package/std/operators.d.ts +19 -27
- package/std/operators.js +195 -194
- 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 +64 -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 +1345 -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/core/pipeline/limitsOverflow.js +0 -13
- package/package.js +0 -5
- package/tgsl/shaderGenerator_members.d.ts +0 -33
- package/tgsl/shaderGenerator_members.js +0 -12
package/shared/vertexFormat.d.ts
CHANGED
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly vec4i: "sint32x4";
|
|
1
|
+
export declare const vertexFormats: readonly ["uint8", "uint8x2", "uint8x4", "sint8", "sint8x2", "sint8x4", "unorm8", "unorm8x2", "unorm8x4", "snorm8", "snorm8x2", "snorm8x4", "uint16", "uint16x2", "uint16x4", "sint16", "sint16x2", "sint16x4", "unorm16", "unorm16x2", "unorm16x4", "snorm16", "snorm16x2", "snorm16x4", "float16", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2", "unorm8x4-bgra"];
|
|
2
|
+
export type VertexFormat = (typeof vertexFormats)[number];
|
|
3
|
+
export declare const kindToDefaultFormatMap: {
|
|
4
|
+
readonly f32: "float32";
|
|
5
|
+
readonly vec2f: "float32x2";
|
|
6
|
+
readonly vec3f: "float32x3";
|
|
7
|
+
readonly vec4f: "float32x4";
|
|
8
|
+
readonly f16: "float16";
|
|
9
|
+
readonly vec2h: "float16x2";
|
|
10
|
+
readonly vec4h: "float16x4";
|
|
11
|
+
readonly u32: "uint32";
|
|
12
|
+
readonly vec2u: "uint32x2";
|
|
13
|
+
readonly vec3u: "uint32x3";
|
|
14
|
+
readonly vec4u: "uint32x4";
|
|
15
|
+
readonly i32: "sint32";
|
|
16
|
+
readonly vec2i: "sint32x2";
|
|
17
|
+
readonly vec3i: "sint32x3";
|
|
18
|
+
readonly vec4i: "sint32x4";
|
|
20
19
|
};
|
|
21
|
-
type KindToDefaultFormatMap = typeof kindToDefaultFormatMap;
|
|
22
|
-
interface TgpuVertexAttrib<TFormat extends VertexFormat = VertexFormat> {
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
export type KindToDefaultFormatMap = typeof kindToDefaultFormatMap;
|
|
21
|
+
export interface TgpuVertexAttrib<TFormat extends VertexFormat = VertexFormat> {
|
|
22
|
+
readonly format: TFormat;
|
|
23
|
+
readonly offset: number;
|
|
25
24
|
}
|
|
26
|
-
type AnyVertexAttribs = Record<string, TgpuVertexAttrib> | TgpuVertexAttrib;
|
|
25
|
+
export type AnyVertexAttribs = Record<string, TgpuVertexAttrib> | TgpuVertexAttrib;
|
|
27
26
|
/**
|
|
28
27
|
* All vertex attribute formats that can be interpreted as
|
|
29
28
|
* an single or multi component u32 in a shader.
|
|
@@ -48,23 +47,22 @@ type F32CompatibleFormats = TgpuVertexAttrib<'unorm8'> | TgpuVertexAttrib<'unorm
|
|
|
48
47
|
* https://www.w3.org/TR/webgpu/#vertex-formats
|
|
49
48
|
*/
|
|
50
49
|
type F16CompatibleFormats = F32CompatibleFormats;
|
|
51
|
-
type KindToAcceptedAttribMap = {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
50
|
+
export type KindToAcceptedAttribMap = {
|
|
51
|
+
u32: U32CompatibleFormats;
|
|
52
|
+
vec2u: U32CompatibleFormats;
|
|
53
|
+
vec3u: U32CompatibleFormats;
|
|
54
|
+
vec4u: U32CompatibleFormats;
|
|
55
|
+
i32: I32CompatibleFormats;
|
|
56
|
+
vec2i: I32CompatibleFormats;
|
|
57
|
+
vec3i: I32CompatibleFormats;
|
|
58
|
+
vec4i: I32CompatibleFormats;
|
|
59
|
+
f16: F16CompatibleFormats;
|
|
60
|
+
vec2h: F16CompatibleFormats;
|
|
61
|
+
vec3h: F16CompatibleFormats;
|
|
62
|
+
vec4h: F16CompatibleFormats;
|
|
63
|
+
f32: F32CompatibleFormats;
|
|
64
|
+
vec2f: F32CompatibleFormats;
|
|
65
|
+
vec3f: F32CompatibleFormats;
|
|
66
|
+
vec4f: F32CompatibleFormats;
|
|
68
67
|
};
|
|
69
|
-
|
|
70
|
-
export { AnyVertexAttribs, KindToAcceptedAttribMap, KindToDefaultFormatMap, TgpuVertexAttrib, VertexFormat };
|
|
68
|
+
export {};
|
package/shared/vertexFormat.js
CHANGED
|
@@ -1,64 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
"unorm8x4-bgra"
|
|
1
|
+
export const vertexFormats = [
|
|
2
|
+
'uint8',
|
|
3
|
+
'uint8x2',
|
|
4
|
+
'uint8x4',
|
|
5
|
+
'sint8',
|
|
6
|
+
'sint8x2',
|
|
7
|
+
'sint8x4',
|
|
8
|
+
'unorm8',
|
|
9
|
+
'unorm8x2',
|
|
10
|
+
'unorm8x4',
|
|
11
|
+
'snorm8',
|
|
12
|
+
'snorm8x2',
|
|
13
|
+
'snorm8x4',
|
|
14
|
+
'uint16',
|
|
15
|
+
'uint16x2',
|
|
16
|
+
'uint16x4',
|
|
17
|
+
'sint16',
|
|
18
|
+
'sint16x2',
|
|
19
|
+
'sint16x4',
|
|
20
|
+
'unorm16',
|
|
21
|
+
'unorm16x2',
|
|
22
|
+
'unorm16x4',
|
|
23
|
+
'snorm16',
|
|
24
|
+
'snorm16x2',
|
|
25
|
+
'snorm16x4',
|
|
26
|
+
'float16',
|
|
27
|
+
'float16x2',
|
|
28
|
+
'float16x4',
|
|
29
|
+
'float32',
|
|
30
|
+
'float32x2',
|
|
31
|
+
'float32x3',
|
|
32
|
+
'float32x4',
|
|
33
|
+
'uint32',
|
|
34
|
+
'uint32x2',
|
|
35
|
+
'uint32x3',
|
|
36
|
+
'uint32x4',
|
|
37
|
+
'sint32',
|
|
38
|
+
'sint32x2',
|
|
39
|
+
'sint32x3',
|
|
40
|
+
'sint32x4',
|
|
41
|
+
'unorm10-10-10-2',
|
|
42
|
+
'unorm8x4-bgra',
|
|
44
43
|
];
|
|
45
|
-
const kindToDefaultFormatMap = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
44
|
+
export const kindToDefaultFormatMap = {
|
|
45
|
+
f32: 'float32',
|
|
46
|
+
vec2f: 'float32x2',
|
|
47
|
+
vec3f: 'float32x3',
|
|
48
|
+
vec4f: 'float32x4',
|
|
49
|
+
f16: 'float16',
|
|
50
|
+
vec2h: 'float16x2',
|
|
51
|
+
// vec3h has no direct equivalent in the spec
|
|
52
|
+
vec4h: 'float16x4',
|
|
53
|
+
u32: 'uint32',
|
|
54
|
+
vec2u: 'uint32x2',
|
|
55
|
+
vec3u: 'uint32x3',
|
|
56
|
+
vec4u: 'uint32x4',
|
|
57
|
+
i32: 'sint32',
|
|
58
|
+
vec2i: 'sint32x2',
|
|
59
|
+
vec3i: 'sint32x3',
|
|
60
|
+
vec4i: 'sint32x4',
|
|
61
61
|
};
|
|
62
|
-
|
|
63
|
-
//#endregion
|
|
64
|
-
export { kindToDefaultFormatMap, vertexFormats };
|
package/std/array.d.ts
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//#region src/std/array.d.ts
|
|
5
|
-
declare const arrayLength: DualFn<(a: unknown[] | _ref<unknown[]>) => number>;
|
|
6
|
-
//#endregion
|
|
7
|
-
export { arrayLength };
|
|
1
|
+
import { type _ref as ref } from '../data/ref.ts';
|
|
2
|
+
export declare const arrayLength: import("../types.ts").DualFn<(a: unknown[] | ref<unknown[]>) => number>;
|
package/std/array.js
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { dualImpl } from "../core/function/dualImpl.js";
|
|
2
|
+
import { abstractInt, u32 } from "../data/numeric.js";
|
|
3
3
|
import { ptrFn } from "../data/ptr.js";
|
|
4
4
|
import { isRef } from "../data/ref.js";
|
|
5
|
-
import {
|
|
6
|
-
import { dualImpl } from "../core/function/dualImpl.js";
|
|
7
|
-
|
|
8
|
-
//#region src/std/array.ts
|
|
5
|
+
import { isPtr, isWgslArray } from "../data/wgslTypes.js";
|
|
9
6
|
const sizeOfPointedToArray = (dataType) => isPtr(dataType) && isWgslArray(dataType.inner) ? dataType.inner.elementCount : 0;
|
|
10
|
-
const arrayLength = dualImpl({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
export const arrayLength = dualImpl({
|
|
8
|
+
name: 'arrayLength',
|
|
9
|
+
signature: (arg) => {
|
|
10
|
+
const ptrArg = isPtr(arg) ? arg : ptrFn(arg);
|
|
11
|
+
return {
|
|
12
|
+
argTypes: [ptrArg],
|
|
13
|
+
returnType: sizeOfPointedToArray(ptrArg) > 0 ? abstractInt : u32,
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
normalImpl: (a) => (isRef(a) ? a.$.length : a.length),
|
|
17
|
+
codegenImpl(ctx, [a]) {
|
|
18
|
+
const length = sizeOfPointedToArray(a.dataType);
|
|
19
|
+
return length > 0 ? `${length}` : ctx.gen.emitCall('arrayLength', [], [a]);
|
|
20
|
+
},
|
|
21
|
+
sideEffects: false,
|
|
24
22
|
});
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
export { arrayLength };
|
package/std/atomic.d.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { atomicI32, atomicU32 } from "../data/wgslTypes.js";
|
|
3
|
-
|
|
4
|
-
//#region src/std/atomic.d.ts
|
|
1
|
+
import { type atomicI32, type atomicU32 } from '../data/wgslTypes.ts';
|
|
5
2
|
type AnyAtomic = atomicI32 | atomicU32;
|
|
6
|
-
declare const workgroupBarrier: DualFn<(...args: never[]) => unknown>;
|
|
7
|
-
declare const storageBarrier: DualFn<(...args: never[]) => unknown>;
|
|
8
|
-
declare const textureBarrier: DualFn<(...args: never[]) => unknown>;
|
|
9
|
-
declare const atomicLoad: DualFn<(<T extends AnyAtomic>(a: T) => number)>;
|
|
10
|
-
declare const atomicStore: DualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
|
|
11
|
-
declare const atomicAdd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
12
|
-
declare const atomicSub: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
13
|
-
declare const atomicMax: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
14
|
-
declare const atomicMin: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
15
|
-
declare const atomicAnd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
16
|
-
declare const atomicOr: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
17
|
-
declare const atomicXor: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
18
|
-
|
|
19
|
-
export { atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, storageBarrier, textureBarrier, workgroupBarrier };
|
|
3
|
+
export declare const workgroupBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
|
|
4
|
+
export declare const storageBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
|
|
5
|
+
export declare const textureBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
|
|
6
|
+
export declare const atomicLoad: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T) => number)>;
|
|
7
|
+
export declare const atomicStore: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
|
|
8
|
+
export declare const atomicAdd: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
9
|
+
export declare const atomicSub: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
10
|
+
export declare const atomicMax: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
11
|
+
export declare const atomicMin: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
12
|
+
export declare const atomicAnd: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
13
|
+
export declare const atomicOr: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
14
|
+
export declare const atomicXor: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
|
|
15
|
+
export {};
|
package/std/atomic.js
CHANGED
|
@@ -1,113 +1,114 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { safeStringify } from "../shared/stringify.js";
|
|
1
|
+
import { dualImpl } from "../core/function/dualImpl.js";
|
|
3
2
|
import { stitch } from "../core/resolve/stitch.js";
|
|
4
3
|
import { i32, u32 } from "../data/numeric.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
returnType: Void
|
|
14
|
-
},
|
|
15
|
-
codegenImpl: () => "workgroupBarrier()"
|
|
4
|
+
import { isAtomic, Void, } from "../data/wgslTypes.js";
|
|
5
|
+
import { safeStringify } from "../shared/stringify.js";
|
|
6
|
+
export const workgroupBarrier = dualImpl({
|
|
7
|
+
name: 'workgroupBarrier',
|
|
8
|
+
normalImpl: 'workgroupBarrier is a no-op outside of CODEGEN mode.',
|
|
9
|
+
signature: { argTypes: [], returnType: Void },
|
|
10
|
+
codegenImpl: () => 'workgroupBarrier()',
|
|
11
|
+
sideEffects: true,
|
|
16
12
|
});
|
|
17
|
-
const storageBarrier = dualImpl({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
codegenImpl: () => "storageBarrier()"
|
|
13
|
+
export const storageBarrier = dualImpl({
|
|
14
|
+
name: 'storageBarrier',
|
|
15
|
+
normalImpl: 'storageBarrier is a no-op outside of CODEGEN mode.',
|
|
16
|
+
signature: { argTypes: [], returnType: Void },
|
|
17
|
+
codegenImpl: () => 'storageBarrier()',
|
|
18
|
+
sideEffects: true,
|
|
25
19
|
});
|
|
26
|
-
const textureBarrier = dualImpl({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
codegenImpl: () => "textureBarrier()"
|
|
20
|
+
export const textureBarrier = dualImpl({
|
|
21
|
+
name: 'textureBarrier',
|
|
22
|
+
normalImpl: 'textureBarrier is a no-op outside of CODEGEN mode.',
|
|
23
|
+
signature: { argTypes: [], returnType: Void },
|
|
24
|
+
codegenImpl: () => 'textureBarrier()',
|
|
25
|
+
sideEffects: true,
|
|
34
26
|
});
|
|
35
|
-
const atomicNormalError =
|
|
36
|
-
const atomicLoad = dualImpl({
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
27
|
+
const atomicNormalError = 'Atomic operations are not supported outside of CODEGEN mode.';
|
|
28
|
+
export const atomicLoad = dualImpl({
|
|
29
|
+
name: 'atomicLoad',
|
|
30
|
+
normalImpl: atomicNormalError,
|
|
31
|
+
signature: (a) => {
|
|
32
|
+
if (!isAtomic(a)) {
|
|
33
|
+
throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
|
|
34
|
+
}
|
|
35
|
+
return { argTypes: [a], returnType: a.inner };
|
|
36
|
+
},
|
|
37
|
+
codegenImpl: (_ctx, [a]) => stitch `atomicLoad(&${a})`,
|
|
38
|
+
sideEffects: true,
|
|
47
39
|
});
|
|
48
40
|
const atomicActionSignature = (a) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
if (!isAtomic(a)) {
|
|
42
|
+
throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
argTypes: [a, a.inner.type === 'u32' ? u32 : i32],
|
|
46
|
+
returnType: Void,
|
|
47
|
+
};
|
|
54
48
|
};
|
|
55
49
|
const atomicOpSignature = (a) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
if (!isAtomic(a)) {
|
|
51
|
+
throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
|
|
52
|
+
}
|
|
53
|
+
const paramType = a.inner.type === 'u32' ? u32 : i32;
|
|
54
|
+
return {
|
|
55
|
+
argTypes: [a, paramType],
|
|
56
|
+
returnType: paramType,
|
|
57
|
+
};
|
|
62
58
|
};
|
|
63
|
-
const atomicStore = dualImpl({
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
export const atomicStore = dualImpl({
|
|
60
|
+
name: 'atomicStore',
|
|
61
|
+
normalImpl: atomicNormalError,
|
|
62
|
+
signature: atomicActionSignature,
|
|
63
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicStore(&${a}, ${value})`,
|
|
64
|
+
sideEffects: true,
|
|
68
65
|
});
|
|
69
|
-
const atomicAdd = dualImpl({
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
export const atomicAdd = dualImpl({
|
|
67
|
+
name: 'atomicAdd',
|
|
68
|
+
normalImpl: atomicNormalError,
|
|
69
|
+
signature: atomicOpSignature,
|
|
70
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicAdd(&${a}, ${value})`,
|
|
71
|
+
sideEffects: true,
|
|
74
72
|
});
|
|
75
|
-
const atomicSub = dualImpl({
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
export const atomicSub = dualImpl({
|
|
74
|
+
name: 'atomicSub',
|
|
75
|
+
normalImpl: atomicNormalError,
|
|
76
|
+
signature: atomicOpSignature,
|
|
77
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicSub(&${a}, ${value})`,
|
|
78
|
+
sideEffects: true,
|
|
80
79
|
});
|
|
81
|
-
const atomicMax = dualImpl({
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
export const atomicMax = dualImpl({
|
|
81
|
+
name: 'atomicMax',
|
|
82
|
+
normalImpl: atomicNormalError,
|
|
83
|
+
signature: atomicOpSignature,
|
|
84
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicMax(&${a}, ${value})`,
|
|
85
|
+
sideEffects: true,
|
|
86
86
|
});
|
|
87
|
-
const atomicMin = dualImpl({
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
export const atomicMin = dualImpl({
|
|
88
|
+
name: 'atomicMin',
|
|
89
|
+
normalImpl: atomicNormalError,
|
|
90
|
+
signature: atomicOpSignature,
|
|
91
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicMin(&${a}, ${value})`,
|
|
92
|
+
sideEffects: true,
|
|
92
93
|
});
|
|
93
|
-
const atomicAnd = dualImpl({
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
export const atomicAnd = dualImpl({
|
|
95
|
+
name: 'atomicAnd',
|
|
96
|
+
normalImpl: atomicNormalError,
|
|
97
|
+
signature: atomicOpSignature,
|
|
98
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicAnd(&${a}, ${value})`,
|
|
99
|
+
sideEffects: true,
|
|
98
100
|
});
|
|
99
|
-
const atomicOr = dualImpl({
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
export const atomicOr = dualImpl({
|
|
102
|
+
name: 'atomicOr',
|
|
103
|
+
normalImpl: atomicNormalError,
|
|
104
|
+
signature: atomicOpSignature,
|
|
105
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicOr(&${a}, ${value})`,
|
|
106
|
+
sideEffects: true,
|
|
104
107
|
});
|
|
105
|
-
const atomicXor = dualImpl({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
export const atomicXor = dualImpl({
|
|
109
|
+
name: 'atomicXor',
|
|
110
|
+
normalImpl: atomicNormalError,
|
|
111
|
+
signature: atomicOpSignature,
|
|
112
|
+
codegenImpl: (_ctx, [a, value]) => stitch `atomicXor(&${a}, ${value})`,
|
|
113
|
+
sideEffects: true,
|
|
110
114
|
});
|
|
111
|
-
|
|
112
|
-
//#endregion
|
|
113
|
-
export { atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, storageBarrier, textureBarrier, workgroupBarrier };
|