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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { $internal, $soul } from "../../shared/symbols.js";
|
|
@@ -1,35 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
//#region src/core/sampler/sampler.d.ts
|
|
1
|
+
import type { WgslComparisonSamplerProps, WgslSamplerProps } from '../../data/sampler.ts';
|
|
2
|
+
import type { TgpuNamable } from '../../shared/meta.ts';
|
|
3
|
+
import type { Infer, InferGPU } from '../../shared/repr.ts';
|
|
4
|
+
import type { TgpuDeviceOwningSoul } from '../../shared/soul.ts';
|
|
5
|
+
import { $gpuValueOf, $internal, $repr, $resolve, $soul } from '../../shared/symbols.ts';
|
|
6
|
+
import type { LayoutMembership } from '../../tgpuBindGroupLayout.ts';
|
|
7
|
+
import { type WgslComparisonSampler, type WgslSampler } from '../../data/sampler.ts';
|
|
8
|
+
import type { SelfResolvable } from '../../types.ts';
|
|
9
|
+
import type { ExperimentalTgpuRoot } from '../root/rootTypes.ts';
|
|
11
10
|
interface SamplerInternals {
|
|
12
|
-
|
|
11
|
+
readonly root?: ExperimentalTgpuRoot;
|
|
12
|
+
readonly materialize?: (() => GPUSampler) | undefined;
|
|
13
13
|
}
|
|
14
|
-
interface
|
|
15
|
-
|
|
16
|
-
readonly resourceType: 'sampler';
|
|
17
|
-
readonly schema: WgslSampler;
|
|
18
|
-
readonly [$gpuValueOf]: Infer<WgslSampler>;
|
|
19
|
-
value: Infer<WgslSampler>;
|
|
20
|
-
$: Infer<WgslSampler>;
|
|
14
|
+
export interface TgpuSamplerSoul extends TgpuDeviceOwningSoul<'sampler' | 'sampler-comparison', GPUSampler> {
|
|
15
|
+
readonly props: WgslSamplerProps | WgslComparisonSamplerProps;
|
|
21
16
|
}
|
|
22
|
-
interface
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
export interface TgpuSampler {
|
|
18
|
+
readonly [$internal]: SamplerInternals;
|
|
19
|
+
readonly resourceType: 'sampler';
|
|
20
|
+
readonly schema: WgslSampler;
|
|
21
|
+
readonly [$gpuValueOf]: InferGPU<WgslSampler>;
|
|
22
|
+
$: InferGPU<WgslSampler>;
|
|
23
|
+
toString(): string;
|
|
29
24
|
}
|
|
30
|
-
interface
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
export interface TgpuComparisonSampler {
|
|
26
|
+
readonly [$internal]: SamplerInternals;
|
|
27
|
+
readonly resourceType: 'sampler-comparison';
|
|
28
|
+
readonly schema: WgslComparisonSampler;
|
|
29
|
+
readonly [$gpuValueOf]: InferGPU<WgslComparisonSampler>;
|
|
30
|
+
$: InferGPU<WgslComparisonSampler>;
|
|
31
|
+
toString(): string;
|
|
32
|
+
}
|
|
33
|
+
export interface TgpuFixedSampler extends TgpuSampler, TgpuNamable {
|
|
34
|
+
readonly [$soul]: TgpuSamplerSoul;
|
|
35
|
+
}
|
|
36
|
+
export interface TgpuFixedComparisonSampler extends TgpuComparisonSampler, TgpuNamable {
|
|
37
|
+
readonly [$soul]: TgpuSamplerSoul;
|
|
38
|
+
}
|
|
39
|
+
export declare function INTERNAL_createSampler(props: WgslSamplerProps, root: ExperimentalTgpuRoot): TgpuFixedSampler;
|
|
40
|
+
export declare function INTERNAL_createComparisonSampler(props: WgslComparisonSamplerProps, root: ExperimentalTgpuRoot): TgpuFixedComparisonSampler;
|
|
41
|
+
export declare function isSampler(resource: unknown): resource is TgpuSampler;
|
|
42
|
+
export declare function isComparisonSampler(resource: unknown): resource is TgpuComparisonSampler;
|
|
43
|
+
export declare class TgpuLaidOutSamplerImpl<T extends WgslSampler | WgslComparisonSampler> implements SelfResolvable {
|
|
44
|
+
#private;
|
|
45
|
+
readonly [$repr]: Infer<T>;
|
|
46
|
+
readonly [$internal]: SamplerInternals;
|
|
47
|
+
readonly resourceType: T extends WgslComparisonSampler ? 'sampler-comparison' : 'sampler';
|
|
48
|
+
readonly schema: T;
|
|
49
|
+
[$resolve]: SelfResolvable[typeof $resolve];
|
|
50
|
+
$: InferGPU<WgslSampler>;
|
|
51
|
+
readonly [$gpuValueOf]: InferGPU<WgslSampler>;
|
|
52
|
+
constructor(schema: T, membership: LayoutMembership);
|
|
53
|
+
}
|
|
54
|
+
export {};
|
package/core/sampler/sampler.js
CHANGED
|
@@ -1,118 +1,125 @@
|
|
|
1
|
-
import { $gpuValueOf, $internal, $ownSnippet, $resolve } from "../../shared/symbols.js";
|
|
2
|
-
import { getName, setName } from "../../shared/meta.js";
|
|
3
1
|
import { snip } from "../../data/snippet.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { comparisonSampler, sampler } from "../../data/sampler.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function INTERNAL_createSampler(props,
|
|
10
|
-
|
|
2
|
+
import { getName, setName } from "../../shared/meta.js";
|
|
3
|
+
import { $gpuValueOf, $internal, $repr, $resolve, $soul } from "../../shared/symbols.js";
|
|
4
|
+
import { comparisonSampler as wgslComparisonSampler, sampler as wgslSampler, } from "../../data/sampler.js";
|
|
5
|
+
import { makeDereferenceable } from "../../tgsl/makeDereferenceable.js";
|
|
6
|
+
import { makeResolvable } from "../../tgsl/makeResolvable.js";
|
|
7
|
+
export function INTERNAL_createSampler(props, root) {
|
|
8
|
+
return new TgpuFixedSamplerImpl(wgslSampler(), props, root);
|
|
9
|
+
}
|
|
10
|
+
export function INTERNAL_createComparisonSampler(props, root) {
|
|
11
|
+
return new TgpuFixedSamplerImpl(wgslComparisonSampler(), props, root);
|
|
12
|
+
}
|
|
13
|
+
export function isSampler(resource) {
|
|
14
|
+
const maybe = resource;
|
|
15
|
+
return maybe?.resourceType === 'sampler' && !!maybe[$internal];
|
|
11
16
|
}
|
|
12
|
-
function
|
|
13
|
-
|
|
17
|
+
export function isComparisonSampler(resource) {
|
|
18
|
+
const maybe = resource;
|
|
19
|
+
return maybe?.resourceType === 'sampler-comparison' && !!maybe[$internal];
|
|
14
20
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
// --------------
|
|
22
|
+
// Implementation
|
|
23
|
+
// --------------
|
|
24
|
+
export class TgpuLaidOutSamplerImpl {
|
|
25
|
+
[$internal] = { materialize: undefined };
|
|
26
|
+
resourceType;
|
|
27
|
+
schema;
|
|
28
|
+
#membership;
|
|
29
|
+
static {
|
|
30
|
+
makeDereferenceable(makeResolvable(TgpuLaidOutSamplerImpl.prototype, {
|
|
31
|
+
asString() {
|
|
32
|
+
return `${this.resourceType}:${getName(this) ?? '<unnamed>'}`;
|
|
33
|
+
},
|
|
34
|
+
resolve(ctx) {
|
|
35
|
+
const id = ctx.makeUniqueIdentifier(getName(this), 'global');
|
|
36
|
+
const group = ctx.allocateLayoutEntry(this.#membership.layout);
|
|
37
|
+
ctx.addDeclaration(`@group(${group}) @binding(${this.#membership.idx}) var ${id}: ${ctx.resolve(this.schema).value};`, id);
|
|
38
|
+
return snip(id, this.schema, /* origin */ 'handle');
|
|
39
|
+
},
|
|
40
|
+
}), {
|
|
41
|
+
codegenMode: {
|
|
42
|
+
getBaseSnippet(trackingProxy) {
|
|
43
|
+
return snip(trackingProxy, this.schema, /* origin */ 'handle', false);
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
normalMode: {
|
|
47
|
+
get() {
|
|
48
|
+
throw new Error('Direct access to sampler values is possible only as part of a compute dispatch or draw call.');
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
constructor(schema, membership) {
|
|
54
|
+
this.schema = schema;
|
|
55
|
+
this.#membership = membership;
|
|
56
|
+
this.resourceType = (schema.type === 'sampler_comparison' ? 'sampler-comparison' : 'sampler');
|
|
57
|
+
setName(this, membership.key);
|
|
58
|
+
}
|
|
18
59
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
60
|
+
class TgpuFixedSamplerImpl {
|
|
61
|
+
[$internal];
|
|
62
|
+
[$soul];
|
|
63
|
+
resourceType;
|
|
64
|
+
schema;
|
|
65
|
+
#filtering;
|
|
66
|
+
static {
|
|
67
|
+
makeDereferenceable(makeResolvable(TgpuFixedSamplerImpl.prototype, {
|
|
68
|
+
asString() {
|
|
69
|
+
return `${this.resourceType}:${getName(this) ?? '<unnamed>'}`;
|
|
70
|
+
},
|
|
71
|
+
resolve(ctx) {
|
|
72
|
+
const id = ctx.makeUniqueIdentifier(getName(this), 'global');
|
|
73
|
+
const { group, binding } = ctx.allocateFixedEntry(this.schema.type === 'sampler_comparison'
|
|
74
|
+
? { sampler: 'comparison' }
|
|
75
|
+
: { sampler: this.#filtering ? 'filtering' : 'non-filtering' }, this);
|
|
76
|
+
ctx.addDeclaration(`@group(${group}) @binding(${binding}) var ${id}: ${ctx.resolve(this.schema).value};`, id);
|
|
77
|
+
return snip(id, this.schema, /* origin */ 'handle');
|
|
78
|
+
},
|
|
79
|
+
}), {
|
|
80
|
+
codegenMode: {
|
|
81
|
+
getBaseSnippet(trackingProxy) {
|
|
82
|
+
return snip(trackingProxy, this.schema, /* origin */ 'handle', false);
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
normalMode: {
|
|
86
|
+
get() {
|
|
87
|
+
throw new Error('Direct access to sampler values is possible only as part of a compute dispatch or draw call.');
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
constructor(schema, props, root) {
|
|
93
|
+
this.schema = schema;
|
|
94
|
+
this.resourceType = (schema.type === 'sampler_comparison' ? 'sampler-comparison' : 'sampler');
|
|
95
|
+
this[$soul] = {
|
|
96
|
+
type: this.resourceType,
|
|
97
|
+
device: root.device,
|
|
98
|
+
props,
|
|
99
|
+
raw: undefined,
|
|
100
|
+
label: undefined,
|
|
101
|
+
};
|
|
102
|
+
this[$internal] = {
|
|
103
|
+
root,
|
|
104
|
+
materialize: () => {
|
|
105
|
+
const soul = this[$soul];
|
|
106
|
+
if (!soul.raw) {
|
|
107
|
+
soul.raw = soul.device.createSampler({
|
|
108
|
+
...soul.props,
|
|
109
|
+
label: getName(this) ?? '<unnamed>',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return soul.raw;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
// Based on https://www.w3.org/TR/webgpu/#sampler-creation
|
|
116
|
+
this.#filtering =
|
|
117
|
+
props.minFilter === 'linear' ||
|
|
118
|
+
props.magFilter === 'linear' ||
|
|
119
|
+
props.mipmapFilter === 'linear';
|
|
120
|
+
}
|
|
121
|
+
$name(label) {
|
|
122
|
+
setName(this, label);
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
22
125
|
}
|
|
23
|
-
var TgpuLaidOutSamplerImpl = class {
|
|
24
|
-
[$internal] = { unwrap: void 0 };
|
|
25
|
-
resourceType;
|
|
26
|
-
schema;
|
|
27
|
-
#membership;
|
|
28
|
-
constructor(schema, membership) {
|
|
29
|
-
this.schema = schema;
|
|
30
|
-
this.#membership = membership;
|
|
31
|
-
this.resourceType = schema.type === "sampler_comparison" ? "sampler-comparison" : "sampler";
|
|
32
|
-
setName(this, membership.key);
|
|
33
|
-
}
|
|
34
|
-
[$resolve](ctx) {
|
|
35
|
-
const id = ctx.makeUniqueIdentifier(getName(this), "global");
|
|
36
|
-
const group = ctx.allocateLayoutEntry(this.#membership.layout);
|
|
37
|
-
ctx.addDeclaration(`@group(${group}) @binding(${this.#membership.idx}) var ${id}: ${ctx.resolve(this.schema).value};`);
|
|
38
|
-
return snip(id, this.schema, "handle");
|
|
39
|
-
}
|
|
40
|
-
get [$gpuValueOf]() {
|
|
41
|
-
const schema = this.schema;
|
|
42
|
-
return new Proxy({
|
|
43
|
-
[$internal]: true,
|
|
44
|
-
get [$ownSnippet]() {
|
|
45
|
-
return snip(this, schema, "handle");
|
|
46
|
-
},
|
|
47
|
-
[$resolve]: (ctx) => ctx.resolve(this),
|
|
48
|
-
toString: () => `${this.toString()}.$`
|
|
49
|
-
}, valueProxyHandler);
|
|
50
|
-
}
|
|
51
|
-
get $() {
|
|
52
|
-
if (inCodegenMode()) return this[$gpuValueOf];
|
|
53
|
-
throw new Error("Direct access to sampler values is possible only as part of a compute dispatch or draw call.");
|
|
54
|
-
}
|
|
55
|
-
get value() {
|
|
56
|
-
return this.$;
|
|
57
|
-
}
|
|
58
|
-
toString() {
|
|
59
|
-
return `${this.resourceType}:${getName(this) ?? "<unnamed>"}`;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
var TgpuFixedSamplerImpl = class {
|
|
63
|
-
[$internal];
|
|
64
|
-
resourceType;
|
|
65
|
-
schema;
|
|
66
|
-
#filtering;
|
|
67
|
-
#sampler = null;
|
|
68
|
-
#props;
|
|
69
|
-
#branch;
|
|
70
|
-
constructor(schema, props, branch) {
|
|
71
|
-
this.schema = schema;
|
|
72
|
-
this.#props = props;
|
|
73
|
-
this.#branch = branch;
|
|
74
|
-
this.resourceType = schema.type === "sampler_comparison" ? "sampler-comparison" : "sampler";
|
|
75
|
-
this[$internal] = { unwrap: () => {
|
|
76
|
-
if (!this.#sampler) this.#sampler = this.#branch.device.createSampler({
|
|
77
|
-
...this.#props,
|
|
78
|
-
label: getName(this) ?? "<unnamed>"
|
|
79
|
-
});
|
|
80
|
-
return this.#sampler;
|
|
81
|
-
} };
|
|
82
|
-
this.#filtering = props.minFilter === "linear" || props.magFilter === "linear" || props.mipmapFilter === "linear";
|
|
83
|
-
}
|
|
84
|
-
[$resolve](ctx) {
|
|
85
|
-
const id = ctx.makeUniqueIdentifier(getName(this), "global");
|
|
86
|
-
const { group, binding } = ctx.allocateFixedEntry(this.schema.type === "sampler_comparison" ? { sampler: "comparison" } : { sampler: this.#filtering ? "filtering" : "non-filtering" }, this);
|
|
87
|
-
ctx.addDeclaration(`@group(${group}) @binding(${binding}) var ${id}: ${ctx.resolve(this.schema).value};`);
|
|
88
|
-
return snip(id, this.schema, "handle");
|
|
89
|
-
}
|
|
90
|
-
get [$gpuValueOf]() {
|
|
91
|
-
const schema = this.schema;
|
|
92
|
-
return new Proxy({
|
|
93
|
-
[$internal]: true,
|
|
94
|
-
get [$ownSnippet]() {
|
|
95
|
-
return snip(this, schema, "handle");
|
|
96
|
-
},
|
|
97
|
-
[$resolve]: (ctx) => ctx.resolve(this),
|
|
98
|
-
toString: () => `${this.toString()}.$`
|
|
99
|
-
}, valueProxyHandler);
|
|
100
|
-
}
|
|
101
|
-
get $() {
|
|
102
|
-
if (inCodegenMode()) return this[$gpuValueOf];
|
|
103
|
-
throw new Error("Direct access to sampler values is possible only as part of a compute dispatch or draw call.");
|
|
104
|
-
}
|
|
105
|
-
get value() {
|
|
106
|
-
return this.$;
|
|
107
|
-
}
|
|
108
|
-
$name(label) {
|
|
109
|
-
setName(this, label);
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
toString() {
|
|
113
|
-
return `${this.resourceType}:${getName(this) ?? "<unnamed>"}`;
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
//#endregion
|
|
118
|
-
export { INTERNAL_createComparisonSampler, INTERNAL_createSampler, TgpuLaidOutSamplerImpl, isComparisonSampler, isSampler };
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TgpuBuffer } from
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
//#region src/core/simulate/tgpuSimulate.d.ts
|
|
1
|
+
import type { BaseData } from '../../data/wgslTypes.ts';
|
|
2
|
+
import type { TgpuBuffer } from '../buffer/buffer.ts';
|
|
3
|
+
import type { TgpuVar } from '../variable/tgpuVariable.ts';
|
|
6
4
|
interface SimulationResult<T> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
value: T;
|
|
6
|
+
buffers: Map<TgpuBuffer<BaseData>, unknown>;
|
|
7
|
+
privateVars: Map<TgpuVar<'private'>, unknown>[][][];
|
|
8
|
+
workgroupVars: Map<TgpuVar<'workgroup'>, unknown>[][][];
|
|
11
9
|
}
|
|
12
10
|
/**
|
|
13
11
|
* Runs the provided callback in a simulated environment, giving
|
|
@@ -31,6 +29,5 @@ interface SimulationResult<T> {
|
|
|
31
29
|
*
|
|
32
30
|
* console.log(result.value); // 3
|
|
33
31
|
*/
|
|
34
|
-
declare function simulate<T>(callback: () => T): SimulationResult<T>;
|
|
35
|
-
|
|
36
|
-
export { simulate };
|
|
32
|
+
export declare function simulate<T>(callback: () => T): SimulationResult<T>;
|
|
33
|
+
export {};
|
|
@@ -1,76 +1,73 @@
|
|
|
1
|
-
import { SimulationState } from "../../types.js";
|
|
2
1
|
import { getResolutionCtx, provideCtx } from "../../execMode.js";
|
|
3
|
-
import wgslGenerator_default from "../../tgsl/wgslGenerator.js";
|
|
4
2
|
import { ResolutionCtxImpl } from "../../resolutionCtx.js";
|
|
3
|
+
import { SimulationState } from "../../types.js";
|
|
5
4
|
import { namespace } from "../resolve/namespace.js";
|
|
6
|
-
|
|
7
|
-
//#region src/core/simulate/tgpuSimulate.ts
|
|
8
5
|
/**
|
|
9
|
-
* Runs the provided callback in a simulated environment, giving
|
|
10
|
-
* it access to buffers and variables as if it were running on the GPU.
|
|
11
|
-
*
|
|
12
|
-
* The result of the simulation is returned, and does not affect the actual GPU state,
|
|
13
|
-
* nor does it carry over to other simulations.
|
|
14
|
-
*
|
|
15
|
-
* @param callback The callback to run in the simulated environment.
|
|
16
|
-
* @returns An object containing the result of the simulation, and
|
|
17
|
-
* the final state of the environment.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* const counter = tgpu.privateVar(d.u32);
|
|
21
|
-
*
|
|
22
|
-
* const result = tgpu.simulate(() => {
|
|
23
|
-
* counter.$ += 1;
|
|
24
|
-
* counter.$ += 2;
|
|
25
|
-
* return counter.$;
|
|
26
|
-
* });
|
|
27
|
-
*
|
|
28
|
-
* console.log(result.value); // 3
|
|
29
|
-
*/
|
|
30
|
-
function simulate(callback) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
6
|
+
* Runs the provided callback in a simulated environment, giving
|
|
7
|
+
* it access to buffers and variables as if it were running on the GPU.
|
|
8
|
+
*
|
|
9
|
+
* The result of the simulation is returned, and does not affect the actual GPU state,
|
|
10
|
+
* nor does it carry over to other simulations.
|
|
11
|
+
*
|
|
12
|
+
* @param callback The callback to run in the simulated environment.
|
|
13
|
+
* @returns An object containing the result of the simulation, and
|
|
14
|
+
* the final state of the environment.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const counter = tgpu.privateVar(d.u32);
|
|
18
|
+
*
|
|
19
|
+
* const result = tgpu.simulate(() => {
|
|
20
|
+
* counter.$ += 1;
|
|
21
|
+
* counter.$ += 2;
|
|
22
|
+
* return counter.$;
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* console.log(result.value); // 3
|
|
26
|
+
*/
|
|
27
|
+
export function simulate(callback) {
|
|
28
|
+
// We could already be inside a resolution context, for example
|
|
29
|
+
// during lazy computation, where users would like to precompute
|
|
30
|
+
// something that happens to require simulation.
|
|
31
|
+
const ctx = getResolutionCtx() ??
|
|
32
|
+
new ResolutionCtxImpl({
|
|
33
|
+
// Not relevant
|
|
34
|
+
minify: false,
|
|
35
|
+
namespace: namespace(),
|
|
36
|
+
});
|
|
37
|
+
// Statically locked to one "thread" for now
|
|
38
|
+
const workgroups = [1, 1, 1];
|
|
39
|
+
const workgroupSize = [1, 1, 1];
|
|
40
|
+
const threads = [
|
|
41
|
+
workgroups[0] * workgroupSize[0],
|
|
42
|
+
workgroups[1] * workgroupSize[1],
|
|
43
|
+
workgroups[2] * workgroupSize[2],
|
|
44
|
+
];
|
|
45
|
+
const buffers = new Map();
|
|
46
|
+
const workgroupVars = Array.from({ length: workgroups[0] }, () => Array.from({ length: workgroups[1] }, () => Array.from({ length: workgroups[2] }, () => new Map())));
|
|
47
|
+
const privateVars = Array.from({ length: threads[0] }, () => Array.from({ length: threads[1] }, () => Array.from({ length: threads[2] }, () => new Map())));
|
|
48
|
+
const simStates = Array.from({ length: threads[0] }, (_, i) => Array.from({ length: threads[1] }, (_, j) => Array.from({ length: threads[2] }, (_, k) => {
|
|
49
|
+
const wi = Math.floor(i / workgroupSize[0]);
|
|
50
|
+
const wj = Math.floor(j / workgroupSize[1]);
|
|
51
|
+
const wk = Math.floor(k / workgroupSize[2]);
|
|
52
|
+
return new SimulationState(buffers, {
|
|
53
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion -- it's there, trust me
|
|
54
|
+
private: privateVars[i][j][k],
|
|
55
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion -- it's there, trust me
|
|
56
|
+
workgroup: workgroupVars[wi][wj][wk],
|
|
57
|
+
});
|
|
58
|
+
})));
|
|
59
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion -- it's there, trust me
|
|
60
|
+
ctx.pushMode(simStates[0][0][0]);
|
|
61
|
+
try {
|
|
62
|
+
const value = provideCtx(ctx, callback);
|
|
63
|
+
return {
|
|
64
|
+
value,
|
|
65
|
+
buffers,
|
|
66
|
+
privateVars,
|
|
67
|
+
workgroupVars,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
ctx.popMode('simulate');
|
|
72
|
+
}
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
//#endregion
|
|
76
|
-
export { simulate };
|
package/core/slot/accessor.d.ts
CHANGED
|
@@ -1,13 +1,36 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
declare function
|
|
11
|
-
declare function mutableAccessor<T extends
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { type AnyData } from '../../data/dataTypes.ts';
|
|
2
|
+
import type { BaseData } from '../../data/wgslTypes.ts';
|
|
3
|
+
import type { InferGPU } from '../../shared/repr.ts';
|
|
4
|
+
import { $getNameForward, $gpuValueOf, $internal, $resolve, $soul } from '../../shared/symbols.ts';
|
|
5
|
+
import type { UnwrapRuntimeConstructor } from '../../tgpuBindGroupLayout.ts';
|
|
6
|
+
import { type SelfResolvable } from '../../types.ts';
|
|
7
|
+
import type { TgpuAccessor, TgpuAccessorSoul, TgpuMutableAccessor, TgpuSlot } from './slotTypes.ts';
|
|
8
|
+
export declare function accessor<T extends AnyData>(schema: T, defaultValue?: TgpuAccessor.In<NoInfer<T>>): TgpuAccessor<UnwrapRuntimeConstructor<T>>;
|
|
9
|
+
export declare function accessor<T extends (count: number) => AnyData>(schema: T, defaultValue?: TgpuAccessor.In<NoInfer<T>>): TgpuAccessor<UnwrapRuntimeConstructor<T>>;
|
|
10
|
+
export declare function mutableAccessor<T extends AnyData>(schema: T, defaultValue?: TgpuMutableAccessor.In<NoInfer<T>>): TgpuMutableAccessor<UnwrapRuntimeConstructor<T>>;
|
|
11
|
+
export declare function mutableAccessor<T extends (count: number) => AnyData>(schema: T, defaultValue?: TgpuMutableAccessor.In<NoInfer<T>>): TgpuMutableAccessor<UnwrapRuntimeConstructor<T>>;
|
|
12
|
+
declare abstract class AccessorBase<T extends BaseData, TValue extends TgpuAccessor.In<T> | TgpuMutableAccessor.In<T>> {
|
|
13
|
+
readonly [$getNameForward]: unknown;
|
|
14
|
+
readonly [$soul]: TgpuAccessorSoul<T, TValue>;
|
|
15
|
+
readonly slot: TgpuSlot<TValue>;
|
|
16
|
+
abstract readonly resourceType: string;
|
|
17
|
+
[$internal]: true;
|
|
18
|
+
[$resolve]: SelfResolvable[typeof $resolve];
|
|
19
|
+
readonly [$gpuValueOf]: InferGPU<T>;
|
|
20
|
+
abstract readonly $: InferGPU<T>;
|
|
21
|
+
constructor(type: 'accessor' | 'mutable-accessor', schemaOrConstructor: T | ((count: number) => T), defaultValue?: TValue | undefined);
|
|
22
|
+
get schema(): T;
|
|
23
|
+
get defaultValue(): TValue | undefined;
|
|
24
|
+
$name(label: string): this;
|
|
25
|
+
}
|
|
26
|
+
export declare class TgpuAccessorImpl<T extends BaseData> extends AccessorBase<T, TgpuAccessor.In<T>> implements TgpuAccessor<T> {
|
|
27
|
+
resourceType: 'accessor';
|
|
28
|
+
readonly $: InferGPU<T>;
|
|
29
|
+
constructor(schemaOrConstructor: T | ((count: number) => T), defaultValue?: TgpuAccessor.In<T> | undefined);
|
|
30
|
+
}
|
|
31
|
+
export declare class TgpuMutableAccessorImpl<T extends BaseData> extends AccessorBase<T, TgpuMutableAccessor.In<T>> implements TgpuMutableAccessor<T> {
|
|
32
|
+
resourceType: 'mutable-accessor';
|
|
33
|
+
$: InferGPU<T>;
|
|
34
|
+
constructor(schemaOrConstructor: T | ((count: number) => T), defaultValue?: TgpuMutableAccessor.In<T> | undefined);
|
|
35
|
+
}
|
|
36
|
+
export {};
|