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/std/packing.js
CHANGED
|
@@ -1,86 +1,78 @@
|
|
|
1
|
+
import * as TB from 'typed-binary';
|
|
2
|
+
import { dualImpl } from "../core/function/dualImpl.js";
|
|
1
3
|
import { stitch } from "../core/resolve/stitch.js";
|
|
2
4
|
import { u32 } from "../data/numeric.js";
|
|
3
5
|
import { vec2f, vec4f } from "../data/vector.js";
|
|
4
|
-
import {
|
|
5
|
-
import * as TB from "typed-binary";
|
|
6
|
-
|
|
7
|
-
//#region src/std/packing.ts
|
|
6
|
+
import { readFloat16, writeFloat16 } from "../data/float16Conversion.js";
|
|
8
7
|
/**
|
|
9
|
-
* @privateRemarks
|
|
10
|
-
* https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
|
|
11
|
-
*/
|
|
12
|
-
const unpack2x16float = dualImpl({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
codegenImpl: (_ctx, [e]) => stitch`unpack2x16float(${e})`
|
|
8
|
+
* @privateRemarks
|
|
9
|
+
* https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
|
|
10
|
+
*/
|
|
11
|
+
export const unpack2x16float = dualImpl({
|
|
12
|
+
name: 'unpack2x16float',
|
|
13
|
+
normalImpl: (e) => {
|
|
14
|
+
const buffer = new ArrayBuffer(4);
|
|
15
|
+
const writer = new TB.BufferWriter(buffer);
|
|
16
|
+
writer.writeUint32(e);
|
|
17
|
+
const reader = new TB.BufferReader(buffer);
|
|
18
|
+
return vec2f(readFloat16(reader), readFloat16(reader));
|
|
19
|
+
},
|
|
20
|
+
signature: { argTypes: [u32], returnType: vec2f },
|
|
21
|
+
codegenImpl: (_ctx, [e]) => stitch `unpack2x16float(${e})`,
|
|
22
|
+
sideEffects: false,
|
|
25
23
|
});
|
|
26
24
|
/**
|
|
27
|
-
* @privateRemarks
|
|
28
|
-
* https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
|
|
29
|
-
*/
|
|
30
|
-
const pack2x16float = dualImpl({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
codegenImpl: (_ctx, [e]) => stitch`pack2x16float(${e})`
|
|
25
|
+
* @privateRemarks
|
|
26
|
+
* https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
|
|
27
|
+
*/
|
|
28
|
+
export const pack2x16float = dualImpl({
|
|
29
|
+
name: 'pack2x16float',
|
|
30
|
+
normalImpl: (e) => {
|
|
31
|
+
const buffer = new ArrayBuffer(4);
|
|
32
|
+
const writer = new TB.BufferWriter(buffer);
|
|
33
|
+
writeFloat16(writer, e.x);
|
|
34
|
+
writeFloat16(writer, e.y);
|
|
35
|
+
const reader = new TB.BufferReader(buffer);
|
|
36
|
+
return u32(reader.readUint32());
|
|
37
|
+
},
|
|
38
|
+
signature: { argTypes: [vec2f], returnType: u32 },
|
|
39
|
+
codegenImpl: (_ctx, [e]) => stitch `pack2x16float(${e})`,
|
|
40
|
+
sideEffects: false,
|
|
44
41
|
});
|
|
45
42
|
/**
|
|
46
|
-
* @privateRemarks
|
|
47
|
-
* https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
|
|
48
|
-
*/
|
|
49
|
-
const unpack4x8unorm = dualImpl({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
codegenImpl: (_ctx, [e]) => stitch`unpack4x8unorm(${e})`
|
|
43
|
+
* @privateRemarks
|
|
44
|
+
* https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
|
|
45
|
+
*/
|
|
46
|
+
export const unpack4x8unorm = dualImpl({
|
|
47
|
+
name: 'unpack4x8unorm',
|
|
48
|
+
normalImpl: (e) => {
|
|
49
|
+
const buffer = new ArrayBuffer(4);
|
|
50
|
+
const writer = new TB.BufferWriter(buffer);
|
|
51
|
+
writer.writeUint32(e);
|
|
52
|
+
const reader = new TB.BufferReader(buffer);
|
|
53
|
+
return vec4f(reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255);
|
|
54
|
+
},
|
|
55
|
+
signature: { argTypes: [u32], returnType: vec4f },
|
|
56
|
+
codegenImpl: (_ctx, [e]) => stitch `unpack4x8unorm(${e})`,
|
|
57
|
+
sideEffects: false,
|
|
62
58
|
});
|
|
63
59
|
/**
|
|
64
|
-
* @privateRemarks
|
|
65
|
-
* https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
|
|
66
|
-
*/
|
|
67
|
-
const pack4x8unorm = dualImpl({
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
codegenImpl: (_ctx, [e]) => stitch`pack4x8unorm(${e})`
|
|
60
|
+
* @privateRemarks
|
|
61
|
+
* https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
|
|
62
|
+
*/
|
|
63
|
+
export const pack4x8unorm = dualImpl({
|
|
64
|
+
name: 'pack4x8unorm',
|
|
65
|
+
normalImpl: (e) => {
|
|
66
|
+
const buffer = new ArrayBuffer(4);
|
|
67
|
+
const writer = new TB.BufferWriter(buffer);
|
|
68
|
+
writer.writeUint8(e.x * 255);
|
|
69
|
+
writer.writeUint8(e.y * 255);
|
|
70
|
+
writer.writeUint8(e.z * 255);
|
|
71
|
+
writer.writeUint8(e.w * 255);
|
|
72
|
+
const reader = new TB.BufferReader(buffer);
|
|
73
|
+
return u32(reader.readUint32());
|
|
74
|
+
},
|
|
75
|
+
signature: { argTypes: [vec4f], returnType: u32 },
|
|
76
|
+
codegenImpl: (_ctx, [e]) => stitch `pack4x8unorm(${e})`,
|
|
77
|
+
sideEffects: false,
|
|
83
78
|
});
|
|
84
|
-
|
|
85
|
-
//#endregion
|
|
86
|
-
export { pack2x16float, pack4x8unorm, unpack2x16float, unpack4x8unorm };
|
package/std/range.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
interface TgpuRange extends Array<number> {
|
|
6
|
-
start: number;
|
|
7
|
-
end: number;
|
|
8
|
-
step: number;
|
|
1
|
+
export interface TgpuRange extends Array<number> {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
step: number;
|
|
9
5
|
}
|
|
10
6
|
/**
|
|
11
7
|
* Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
|
|
@@ -21,6 +17,5 @@ interface TgpuRange extends Array<number> {
|
|
|
21
17
|
*
|
|
22
18
|
* Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
|
|
23
19
|
*/
|
|
24
|
-
declare const range: TgpuComptime<((end: number) => TgpuRange) & ((start: number, end?: number, step?: number) => TgpuRange)>;
|
|
25
|
-
|
|
26
|
-
export { range };
|
|
20
|
+
export declare const range: import("../indexNamedExports.ts").TgpuComptime<((end: number) => TgpuRange) & ((start: number, end?: number, step?: number) => TgpuRange)>;
|
|
21
|
+
export declare function isTgpuRange(value: unknown): value is TgpuRange;
|
package/std/range.js
CHANGED
|
@@ -1,40 +1,52 @@
|
|
|
1
1
|
import { comptime } from "../core/function/comptime.js";
|
|
2
|
-
|
|
3
|
-
//#region src/std/range.ts
|
|
4
2
|
/**
|
|
5
|
-
* Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
|
|
6
|
-
*
|
|
7
|
-
* If only one argument is provided, it is interpreted as `end`, with `start=0` and `step=1`.
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* let result = d.f32(1);
|
|
11
|
-
* for (const i of std.range(5)) {
|
|
12
|
-
* result *= i + 1;
|
|
13
|
-
* }
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
|
|
17
|
-
*/
|
|
18
|
-
const range = comptime((start, end, step = 1) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
3
|
+
* Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
|
|
4
|
+
*
|
|
5
|
+
* If only one argument is provided, it is interpreted as `end`, with `start=0` and `step=1`.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* let result = d.f32(1);
|
|
9
|
+
* for (const i of std.range(5)) {
|
|
10
|
+
* result *= i + 1;
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
|
|
15
|
+
*/
|
|
16
|
+
export const range = comptime((start, end, step = 1) => {
|
|
17
|
+
if (end === undefined) {
|
|
18
|
+
// range(n)
|
|
19
|
+
end = start;
|
|
20
|
+
start = 0;
|
|
21
|
+
}
|
|
22
|
+
if (!Number.isInteger(start)) {
|
|
23
|
+
throw new Error(`'start' must be an integer, got ${start}`);
|
|
24
|
+
}
|
|
25
|
+
if (!Number.isInteger(end)) {
|
|
26
|
+
throw new Error(`'end' must be an integer, got ${end}`);
|
|
27
|
+
}
|
|
28
|
+
if (!Number.isInteger(step) || step === 0) {
|
|
29
|
+
throw new Error(`'step' must be a non-zero integer, got ${step}`);
|
|
30
|
+
}
|
|
31
|
+
const result = [];
|
|
32
|
+
result.start = start;
|
|
33
|
+
result.end = end;
|
|
34
|
+
result.step = step;
|
|
35
|
+
if (Math.sign(step) !== Math.sign(end - start)) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
if (step > 0) {
|
|
39
|
+
for (let i = start; i < end; i += step) {
|
|
40
|
+
result.push(i);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (step < 0) {
|
|
44
|
+
for (let i = start; i > end; i += step) {
|
|
45
|
+
result.push(i);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
34
49
|
});
|
|
35
|
-
function isTgpuRange(value) {
|
|
36
|
-
|
|
50
|
+
export function isTgpuRange(value) {
|
|
51
|
+
return Array.isArray(value) && 'start' in value && 'end' in value && 'step' in value;
|
|
37
52
|
}
|
|
38
|
-
|
|
39
|
-
//#endregion
|
|
40
|
-
export { isTgpuRange, range };
|
package/std/subgroup.d.ts
CHANGED
|
@@ -1,47 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AnyIntegerVecInstance, AnyNumericVecInstance, v4u } from "../data/wgslTypes.js";
|
|
3
|
-
|
|
4
|
-
//#region src/std/subgroup.d.ts
|
|
1
|
+
import type { AnyIntegerVecInstance, AnyNumericVecInstance, v4u } from '../data/wgslTypes.ts';
|
|
5
2
|
interface IdentityNumOrVec {
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
(e: number): number;
|
|
4
|
+
<T extends AnyNumericVecInstance>(e: T): T;
|
|
8
5
|
}
|
|
9
6
|
interface IdentityIntNumOrVec {
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
(e: number): number;
|
|
8
|
+
<T extends AnyIntegerVecInstance>(e: T): T;
|
|
12
9
|
}
|
|
13
10
|
interface IdentityNumOrVecWithIdx {
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
(e: number, index: number): number;
|
|
12
|
+
<T extends AnyNumericVecInstance>(e: T, index: number): T;
|
|
16
13
|
}
|
|
17
14
|
interface IdentityNumOrVecWithDelta {
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
(e: number, delta: number): number;
|
|
16
|
+
<T extends AnyNumericVecInstance>(e: T, delta: number): T;
|
|
20
17
|
}
|
|
21
18
|
interface IdentityNumOrVecWithMask {
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
(e: number, mask: number): number;
|
|
20
|
+
<T extends AnyNumericVecInstance>(e: T, mask: number): T;
|
|
24
21
|
}
|
|
25
|
-
declare const subgroupAdd: DualFn<IdentityNumOrVec>;
|
|
26
|
-
declare const subgroupExclusiveAdd: DualFn<IdentityNumOrVec>;
|
|
27
|
-
declare const subgroupInclusiveAdd: DualFn<IdentityNumOrVec>;
|
|
28
|
-
declare const subgroupAll: DualFn<(e: boolean) => boolean>;
|
|
29
|
-
declare const subgroupAnd: DualFn<IdentityIntNumOrVec>;
|
|
30
|
-
declare const subgroupAny: DualFn<(e: boolean) => boolean>;
|
|
31
|
-
declare const subgroupBallot: DualFn<(e: boolean) => v4u>;
|
|
32
|
-
declare const subgroupBroadcast: DualFn<IdentityNumOrVecWithIdx>;
|
|
33
|
-
declare const subgroupBroadcastFirst: DualFn<IdentityNumOrVec>;
|
|
34
|
-
declare const subgroupElect: DualFn<() => boolean>;
|
|
35
|
-
declare const subgroupMax: DualFn<IdentityNumOrVec>;
|
|
36
|
-
declare const subgroupMin: DualFn<IdentityNumOrVec>;
|
|
37
|
-
declare const subgroupMul: DualFn<IdentityNumOrVec>;
|
|
38
|
-
declare const subgroupExclusiveMul: DualFn<IdentityNumOrVec>;
|
|
39
|
-
declare const subgroupInclusiveMul: DualFn<IdentityNumOrVec>;
|
|
40
|
-
declare const subgroupOr: DualFn<IdentityIntNumOrVec>;
|
|
41
|
-
declare const subgroupShuffle: DualFn<IdentityNumOrVecWithIdx>;
|
|
42
|
-
declare const subgroupShuffleDown: DualFn<IdentityNumOrVecWithDelta>;
|
|
43
|
-
declare const subgroupShuffleUp: DualFn<IdentityNumOrVecWithDelta>;
|
|
44
|
-
declare const subgroupShuffleXor: DualFn<IdentityNumOrVecWithMask>;
|
|
45
|
-
declare const subgroupXor: DualFn<IdentityIntNumOrVec>;
|
|
46
|
-
|
|
47
|
-
export { subgroupAdd, subgroupAll, subgroupAnd, subgroupAny, subgroupBallot, subgroupBroadcast, subgroupBroadcastFirst, subgroupElect, subgroupExclusiveAdd, subgroupExclusiveMul, subgroupInclusiveAdd, subgroupInclusiveMul, subgroupMax, subgroupMin, subgroupMul, subgroupOr, subgroupShuffle, subgroupShuffleDown, subgroupShuffleUp, subgroupShuffleXor, subgroupXor };
|
|
22
|
+
export declare const subgroupAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
23
|
+
export declare const subgroupExclusiveAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
24
|
+
export declare const subgroupInclusiveAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
25
|
+
export declare const subgroupAll: import("../types.ts").DualFn<(e: boolean) => boolean>;
|
|
26
|
+
export declare const subgroupAnd: import("../types.ts").DualFn<IdentityIntNumOrVec>;
|
|
27
|
+
export declare const subgroupAny: import("../types.ts").DualFn<(e: boolean) => boolean>;
|
|
28
|
+
export declare const subgroupBallot: import("../types.ts").DualFn<(e: boolean) => v4u>;
|
|
29
|
+
export declare const subgroupBroadcast: import("../types.ts").DualFn<IdentityNumOrVecWithIdx>;
|
|
30
|
+
export declare const subgroupBroadcastFirst: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
31
|
+
export declare const subgroupElect: import("../types.ts").DualFn<() => boolean>;
|
|
32
|
+
export declare const subgroupMax: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
33
|
+
export declare const subgroupMin: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
34
|
+
export declare const subgroupMul: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
35
|
+
export declare const subgroupExclusiveMul: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
36
|
+
export declare const subgroupInclusiveMul: import("../types.ts").DualFn<IdentityNumOrVec>;
|
|
37
|
+
export declare const subgroupOr: import("../types.ts").DualFn<IdentityIntNumOrVec>;
|
|
38
|
+
export declare const subgroupShuffle: import("../types.ts").DualFn<IdentityNumOrVecWithIdx>;
|
|
39
|
+
export declare const subgroupShuffleDown: import("../types.ts").DualFn<IdentityNumOrVecWithDelta>;
|
|
40
|
+
export declare const subgroupShuffleUp: import("../types.ts").DualFn<IdentityNumOrVecWithDelta>;
|
|
41
|
+
export declare const subgroupShuffleXor: import("../types.ts").DualFn<IdentityNumOrVecWithMask>;
|
|
42
|
+
export declare const subgroupXor: import("../types.ts").DualFn<IdentityIntNumOrVec>;
|
|
43
|
+
export {};
|