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/core/slot/slotTypes.js
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import { $providing } from "../../shared/symbols.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function isSlot(value) {
|
|
5
|
-
return value?.resourceType === "slot";
|
|
1
|
+
import { $gpuValueOf, $internal, $providing, $soul } from "../../shared/symbols.js";
|
|
2
|
+
export function isSlot(value) {
|
|
3
|
+
return value?.resourceType === 'slot';
|
|
6
4
|
}
|
|
7
|
-
function isLazy(value) {
|
|
8
|
-
|
|
5
|
+
export function isLazy(value) {
|
|
6
|
+
return value?.resourceType === 'lazy';
|
|
9
7
|
}
|
|
10
|
-
function isProviding(value) {
|
|
11
|
-
|
|
8
|
+
export function isProviding(value) {
|
|
9
|
+
return value?.[$providing] !== undefined;
|
|
12
10
|
}
|
|
13
|
-
function isAccessor(value) {
|
|
14
|
-
|
|
11
|
+
export function isAccessor(value) {
|
|
12
|
+
return value?.resourceType === 'accessor';
|
|
15
13
|
}
|
|
16
|
-
function isMutableAccessor(value) {
|
|
17
|
-
|
|
14
|
+
export function isMutableAccessor(value) {
|
|
15
|
+
return value?.resourceType === 'mutable-accessor';
|
|
18
16
|
}
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { isAccessor, isLazy, isMutableAccessor, isProviding, isSlot };
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { $gpuValueOf, $internal, $resolve } from '../../shared/symbols.ts';
|
|
2
|
+
import type { LayoutMembership } from '../../tgpuBindGroupLayout.ts';
|
|
3
|
+
import { type WgslExternalTexture } from '../../data/texture.ts';
|
|
4
|
+
import type { ResolutionCtx, SelfResolvable } from '../../types.ts';
|
|
5
|
+
import { type ResolvedSnippet } from '../../data/snippet.ts';
|
|
6
|
+
import type { Infer } from '../../shared/repr.ts';
|
|
7
|
+
export interface TgpuExternalTexture {
|
|
8
|
+
readonly resourceType: 'external-texture';
|
|
9
|
+
}
|
|
10
|
+
export declare function isExternalTexture(value: unknown): value is TgpuExternalTexture;
|
|
11
|
+
export declare class TgpuExternalTextureImpl implements TgpuExternalTexture, SelfResolvable {
|
|
12
|
+
#private;
|
|
13
|
+
readonly resourceType = "external-texture";
|
|
14
|
+
readonly [$internal] = true;
|
|
15
|
+
readonly schema: WgslExternalTexture;
|
|
16
|
+
constructor(schema: WgslExternalTexture, membership: LayoutMembership);
|
|
17
|
+
[$resolve](ctx: ResolutionCtx): ResolvedSnippet;
|
|
18
|
+
get [$gpuValueOf](): Infer<WgslExternalTexture>;
|
|
19
|
+
get $(): Infer<WgslExternalTexture>;
|
|
20
|
+
toString(): string;
|
|
10
21
|
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { TgpuExternalTexture };
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
import { $gpuValueOf, $internal, $ownSnippet, $resolve } from "../../shared/symbols.js";
|
|
2
2
|
import { getName, setName } from "../../shared/meta.js";
|
|
3
|
-
import { snip } from "../../data/snippet.js";
|
|
4
|
-
import { inCodegenMode } from "../../execMode.js";
|
|
5
|
-
import { valueProxyHandler } from "../valueProxyUtils.js";
|
|
6
3
|
import { textureExternal } from "../../data/texture.js";
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
4
|
+
import { valueProxyHandler } from "../valueProxyUtils.js";
|
|
5
|
+
import { inCodegenMode } from "../../execMode.js";
|
|
6
|
+
import { snip } from "../../data/snippet.js";
|
|
7
|
+
export function isExternalTexture(value) {
|
|
8
|
+
return value?.resourceType === 'external-texture';
|
|
9
|
+
}
|
|
10
|
+
// --------------
|
|
11
|
+
// Implementation
|
|
12
|
+
// --------------
|
|
13
|
+
export class TgpuExternalTextureImpl {
|
|
14
|
+
resourceType = 'external-texture';
|
|
15
|
+
[$internal] = true;
|
|
16
|
+
schema;
|
|
17
|
+
#membership;
|
|
18
|
+
constructor(schema, membership) {
|
|
19
|
+
this.schema = schema;
|
|
20
|
+
this.#membership = membership;
|
|
21
|
+
setName(this, membership.key);
|
|
22
|
+
}
|
|
23
|
+
[$resolve](ctx) {
|
|
24
|
+
const id = ctx.makeUniqueIdentifier(getName(this), 'global');
|
|
25
|
+
const group = ctx.allocateLayoutEntry(this.#membership.layout);
|
|
26
|
+
ctx.addDeclaration(`@group(${group}) @binding(${this.#membership.idx}) var ${id}: ${ctx.resolve(this.schema).value};`, id);
|
|
27
|
+
return snip(id, textureExternal(), 'handle');
|
|
28
|
+
}
|
|
29
|
+
get [$gpuValueOf]() {
|
|
30
|
+
const schema = this.schema;
|
|
31
|
+
return new Proxy({
|
|
32
|
+
[$internal]: true,
|
|
33
|
+
get [$ownSnippet]() {
|
|
34
|
+
return snip(this, schema, 'handle', false);
|
|
35
|
+
},
|
|
36
|
+
[$resolve]: (ctx) => ctx.resolve(this),
|
|
37
|
+
toString: () => `textureExternal:${getName(this) ?? '<unnamed>'}.$`,
|
|
38
|
+
}, valueProxyHandler);
|
|
39
|
+
}
|
|
40
|
+
get $() {
|
|
41
|
+
if (inCodegenMode()) {
|
|
42
|
+
return this[$gpuValueOf];
|
|
43
|
+
}
|
|
44
|
+
throw new Error('Direct access to texture views values is possible only as part of a compute dispatch or draw call. Try .read() or .write() instead');
|
|
45
|
+
}
|
|
46
|
+
toString() {
|
|
47
|
+
return `textureExternal:${getName(this) ?? '<unnamed>'}`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,118 +1,173 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
type TextureInternals = {
|
|
17
|
-
|
|
1
|
+
import { type TextureSchemaForDescriptor, type WgslStorageTexture, type WgslTexture } from '../../data/texture.ts';
|
|
2
|
+
import type { StorageFlag } from '../../extension.ts';
|
|
3
|
+
import { type ResolvedSnippet } from '../../data/snippet.ts';
|
|
4
|
+
import type { F32, Vec4f, Vec4i, Vec4u } from '../../data/wgslTypes.ts';
|
|
5
|
+
import type { TgpuNamable } from '../../shared/meta.ts';
|
|
6
|
+
import type { Infer, ValidateTextureViewSchema } from '../../shared/repr.ts';
|
|
7
|
+
import { type TextureFormats, type ViewDimensionToDimension } from './textureFormats.ts';
|
|
8
|
+
import type { TgpuDeviceOwningSoul, TgpuSoul } from '../../shared/soul.ts';
|
|
9
|
+
import { $gpuValueOf, $internal, $repr, $resolve, $soul } from '../../shared/symbols.ts';
|
|
10
|
+
import type { Default, TypedArray, UnionToIntersection } from '../../shared/utilityTypes.ts';
|
|
11
|
+
import type { LayoutMembership } from '../../tgpuBindGroupLayout.ts';
|
|
12
|
+
import type { ResolutionCtx, SelfResolvable } from '../../types.ts';
|
|
13
|
+
import type { ExperimentalTgpuRoot } from '../root/rootTypes.ts';
|
|
14
|
+
import type { TextureProps } from './textureProps.ts';
|
|
15
|
+
import type { AllowedUsages, LiteralToExtensionMap, RenderFlag, SampledFlag } from './usageExtension.ts';
|
|
16
|
+
export type TextureInternals = {
|
|
17
|
+
root: ExperimentalTgpuRoot;
|
|
18
|
+
materialize(): GPUTexture;
|
|
18
19
|
};
|
|
20
|
+
export type TextureUsageLiteral = 'sampled' | 'storage' | 'render' | 'transient';
|
|
21
|
+
export interface TgpuTextureSoul<TProps extends TextureProps = TextureProps> extends TgpuDeviceOwningSoul<'texture', GPUTexture> {
|
|
22
|
+
readonly props: TProps;
|
|
23
|
+
flags: GPUTextureUsageFlags;
|
|
24
|
+
flagsOverridden: boolean;
|
|
25
|
+
readonly usages: TextureUsageLiteral[];
|
|
26
|
+
}
|
|
27
|
+
export interface TgpuTextureViewSoul<T extends WgslTexture | WgslStorageTexture | 'render' = WgslTexture | WgslStorageTexture | 'render'> extends TgpuSoul<'texture-view'> {
|
|
28
|
+
readonly texture: TgpuTexture;
|
|
29
|
+
readonly schema: T;
|
|
30
|
+
readonly descriptor: (TgpuTextureViewDescriptor & {
|
|
31
|
+
sampleType?: T extends WgslTexture ? 'float' | 'unfilterable-float' : never;
|
|
32
|
+
}) | undefined;
|
|
33
|
+
raw?: GPUTextureView | undefined;
|
|
34
|
+
}
|
|
19
35
|
type TextureViewInternals = {
|
|
20
|
-
|
|
36
|
+
readonly unwrap: (() => GPUTextureView) | undefined;
|
|
37
|
+
readonly format?: GPUTextureFormat | undefined;
|
|
38
|
+
readonly aspect?: GPUTextureAspect | undefined;
|
|
39
|
+
};
|
|
40
|
+
export type TexelData = Vec4u | Vec4i | Vec4f;
|
|
41
|
+
export type ExternalImageSource = HTMLCanvasElement | HTMLImageElement | HTMLVideoElement | ImageBitmap | ImageData | OffscreenCanvas | VideoFrame;
|
|
42
|
+
export type TextureWriteFit = 'stretch';
|
|
43
|
+
export type TextureWriteOptions = {
|
|
44
|
+
/**
|
|
45
|
+
* How to handle a source whose dimensions do not match the texture.
|
|
46
|
+
*
|
|
47
|
+
* By default, mismatched writes throw. Use `'stretch'` to resample the
|
|
48
|
+
* source to the texture's dimensions.
|
|
49
|
+
*/
|
|
50
|
+
fit?: TextureWriteFit;
|
|
21
51
|
};
|
|
22
|
-
type ExternalImageSource = HTMLCanvasElement | HTMLImageElement | HTMLVideoElement | ImageBitmap | ImageData | OffscreenCanvas | VideoFrame;
|
|
23
52
|
type TgpuTextureViewDescriptor = {
|
|
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
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Which {@link GPUTextureAspect | aspect(s)} of the texture are accessible to the texture view.
|
|
55
|
+
*/
|
|
56
|
+
aspect?: GPUTextureAspect;
|
|
57
|
+
/**
|
|
58
|
+
* The first (most detailed) mipmap level accessible to the texture view.
|
|
59
|
+
*/
|
|
60
|
+
baseMipLevel?: GPUIntegerCoordinate;
|
|
61
|
+
/**
|
|
62
|
+
* How many mipmap levels, starting with {@link GPUTextureViewDescriptor#baseMipLevel}, are accessible to
|
|
63
|
+
* the texture view.
|
|
64
|
+
*/
|
|
65
|
+
mipLevelCount?: GPUIntegerCoordinate;
|
|
66
|
+
/**
|
|
67
|
+
* The index of the first array layer accessible to the texture view.
|
|
68
|
+
*/
|
|
69
|
+
baseArrayLayer?: GPUIntegerCoordinate;
|
|
70
|
+
/**
|
|
71
|
+
* How many array layers, starting with {@link GPUTextureViewDescriptor#baseArrayLayer}, are accessible
|
|
72
|
+
* to the texture view.
|
|
73
|
+
*/
|
|
74
|
+
arrayLayerCount?: GPUIntegerCoordinate;
|
|
75
|
+
/**
|
|
76
|
+
* The format of the texture view. Must be either the {@link GPUTextureDescriptor#format} of the
|
|
77
|
+
* texture or one of the {@link GPUTextureDescriptor#viewFormats} specified during its creation.
|
|
78
|
+
*/
|
|
79
|
+
format?: GPUTextureFormat;
|
|
51
80
|
};
|
|
52
81
|
type DefaultViewSchema<T extends Partial<TextureProps>> = TextureSchemaForDescriptor<{
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
82
|
+
dimension: Default<T['dimension'], '2d'>;
|
|
83
|
+
sampleType: T['format'] extends keyof TextureFormats ? TextureFormats[T['format']]['channelType'] : TextureFormats[keyof TextureFormats]['channelType'];
|
|
84
|
+
multisampled: Default<T['sampleCount'], 1> extends 1 ? false : true;
|
|
56
85
|
}>;
|
|
57
86
|
type BaseDimension<T extends string> = T extends keyof ViewDimensionToDimension ? ViewDimensionToDimension[T] : never;
|
|
58
87
|
type OptionalDimension<T extends string> = T extends '2d' | '2d-array' | 'cube' | 'cube-array' ? {
|
|
59
|
-
|
|
88
|
+
dimension?: BaseDimension<T>;
|
|
60
89
|
} : {
|
|
61
|
-
|
|
90
|
+
dimension: BaseDimension<T>;
|
|
62
91
|
};
|
|
63
92
|
type MultisampledProps<T extends WgslTexture> = T['multisampled'] extends true ? OptionalDimension<T['dimension']> & {
|
|
64
|
-
|
|
93
|
+
sampleCount: 4;
|
|
65
94
|
} : OptionalDimension<T['dimension']> & {
|
|
66
|
-
|
|
95
|
+
sampleCount?: 1;
|
|
67
96
|
};
|
|
68
|
-
type PropsForSchema<T extends WgslTexture | WgslStorageTexture> = T extends WgslTexture ? {
|
|
69
|
-
|
|
70
|
-
|
|
97
|
+
export type PropsForSchema<T extends WgslTexture | WgslStorageTexture> = T extends WgslTexture ? {
|
|
98
|
+
size: readonly number[];
|
|
99
|
+
format: GPUTextureFormat;
|
|
71
100
|
} & MultisampledProps<T> : T extends WgslStorageTexture ? {
|
|
72
|
-
|
|
73
|
-
|
|
101
|
+
size: readonly number[];
|
|
102
|
+
format: T['format'];
|
|
74
103
|
} & OptionalDimension<T['dimension']> : never;
|
|
75
104
|
type CopyCompatibleTexture<T extends TextureProps> = TgpuTexture<{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
105
|
+
size: T['size'];
|
|
106
|
+
format: T['format'];
|
|
107
|
+
sampleCount?: T['sampleCount'];
|
|
79
108
|
}>;
|
|
80
|
-
interface TgpuTexture<TProps extends TextureProps = any> extends TgpuNamable {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
109
|
+
export interface TgpuTexture<TProps extends TextureProps = any> extends TgpuNamable {
|
|
110
|
+
readonly [$internal]: TextureInternals;
|
|
111
|
+
readonly [$soul]: TgpuTextureSoul<TProps>;
|
|
112
|
+
readonly resourceType: 'texture';
|
|
113
|
+
readonly props: TProps;
|
|
114
|
+
readonly destroyed: boolean;
|
|
115
|
+
readonly usableAsStorage: boolean;
|
|
116
|
+
readonly usableAsSampled: boolean;
|
|
117
|
+
readonly usableAsRender: boolean;
|
|
118
|
+
$usage<T extends AllowedUsages<TProps>[]>(...usages: T): this & UnionToIntersection<LiteralToExtensionMap[T[number]]>;
|
|
119
|
+
$overrideFlags(flags: GPUTextureUsageFlags): this & StorageFlag & SampledFlag & RenderFlag;
|
|
120
|
+
createView(...args: this['usableAsSampled'] extends true ? [] : [ValidateTextureViewSchema<this, WgslTexture>]): TgpuTextureView<DefaultViewSchema<TProps>>;
|
|
121
|
+
createView(schema: 'render', viewDescriptor?: TgpuTextureViewDescriptor): TgpuTextureRenderView;
|
|
122
|
+
createView<T extends WgslTexture>(schema: ValidateTextureViewSchema<this, T>, viewDescriptor?: TgpuTextureViewDescriptor & {
|
|
123
|
+
sampleType?: T['sampleType'] extends F32 ? 'float' | 'unfilterable-float' : never;
|
|
124
|
+
}): TgpuTextureView<T>;
|
|
125
|
+
createView<T extends WgslStorageTexture>(schema: ValidateTextureViewSchema<this, T>, viewDescriptor?: TgpuTextureViewDescriptor): TgpuTextureView<T>;
|
|
126
|
+
clear(mipLevel?: number | 'all'): void;
|
|
127
|
+
generateMipmaps(baseMipLevel?: number, mipLevels?: number): void;
|
|
128
|
+
write(source: ExternalImageSource | ExternalImageSource[], options?: TextureWriteOptions): void;
|
|
129
|
+
write(source: ArrayBuffer | TypedArray | DataView, mipLevel?: number): void;
|
|
130
|
+
copyFrom<T extends CopyCompatibleTexture<TProps>>(source: T): void;
|
|
131
|
+
destroy(): void;
|
|
132
|
+
}
|
|
133
|
+
export interface TgpuTextureView<TSchema extends WgslStorageTexture | WgslTexture = WgslStorageTexture | WgslTexture> extends TgpuNamable {
|
|
134
|
+
readonly [$internal]: TextureViewInternals;
|
|
135
|
+
readonly resourceType: 'texture-view';
|
|
136
|
+
readonly schema: TSchema;
|
|
137
|
+
readonly size?: number[] | undefined;
|
|
138
|
+
readonly [$gpuValueOf]: Infer<TSchema>;
|
|
139
|
+
$: Infer<TSchema>;
|
|
140
|
+
toString(): string;
|
|
141
|
+
}
|
|
142
|
+
export interface TgpuTextureRenderView {
|
|
143
|
+
readonly [$internal]: TextureViewInternals;
|
|
144
|
+
readonly resourceType: 'texture-view';
|
|
145
|
+
readonly descriptor: TgpuTextureViewDescriptor;
|
|
101
146
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
147
|
+
export declare function INTERNAL_createTexture(props: TextureProps, root: ExperimentalTgpuRoot, rawTexture?: GPUTexture): TgpuTexture<TextureProps>;
|
|
148
|
+
export declare function isTexture(value: unknown): value is TgpuTexture;
|
|
149
|
+
export declare function isTextureView(value: unknown): value is TgpuTextureView;
|
|
150
|
+
export declare class TgpuLaidOutTextureViewImpl<T extends WgslTexture | WgslStorageTexture> implements TgpuTextureView<T>, SelfResolvable {
|
|
151
|
+
#private;
|
|
152
|
+
/** Type-token, not available at runtime */
|
|
153
|
+
readonly [$repr]: Infer<T>;
|
|
154
|
+
readonly [$internal]: {
|
|
155
|
+
unwrap: undefined;
|
|
156
|
+
};
|
|
157
|
+
readonly resourceType: "texture-view";
|
|
158
|
+
readonly schema: T;
|
|
159
|
+
constructor(schema: T, membership: LayoutMembership);
|
|
160
|
+
toString(): string;
|
|
161
|
+
[$resolve](ctx: ResolutionCtx): ResolvedSnippet;
|
|
162
|
+
get [$gpuValueOf](): Infer<T>;
|
|
163
|
+
get $(): Infer<T>;
|
|
164
|
+
$name(label: string): this;
|
|
110
165
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
166
|
+
export declare class TgpuTextureRenderViewImpl implements TgpuTextureRenderView {
|
|
167
|
+
readonly [$internal]: TextureViewInternals;
|
|
168
|
+
readonly [$soul]: TgpuTextureViewSoul<'render'>;
|
|
169
|
+
readonly resourceType: "texture-view";
|
|
170
|
+
constructor(baseTexture: TgpuTexture, descriptor?: TgpuTextureViewDescriptor);
|
|
171
|
+
get descriptor(): TgpuTextureViewDescriptor;
|
|
115
172
|
}
|
|
116
|
-
|
|
117
|
-
//#endregion
|
|
118
|
-
export { PropsForSchema, TextureInternals, TgpuTexture, TgpuTextureRenderView, TgpuTextureView, isTexture };
|
|
173
|
+
export {};
|