@motion-core/motion-gpu
Version:
Framework-agnostic WebGPU runtime for fullscreen WGSL shaders with explicit Svelte, React, and Vue adapter entrypoints.
36 lines • 1.72 kB
TypeScript
/// <reference types="@webgpu/types" />
import type { CurrentReadable, CurrentWritable } from './current-value.js';
import { type FragMaterial } from './material.js';
import { type MotionGPUErrorReport } from './error-report.js';
import type { FrameRegistry } from './frame-registry.js';
import type { AnyPass, ColorPipelineOptions, FrameInvalidationToken, RenderTargetDefinitionMap } from './types.js';
export interface MotionGPURuntimeLoopOptions {
canvas: HTMLCanvasElement;
registry: FrameRegistry;
size: CurrentWritable<{
width: number;
height: number;
}>;
dpr: CurrentReadable<number>;
maxDelta: CurrentReadable<number>;
getMaterial: () => FragMaterial;
getRenderTargets: () => RenderTargetDefinitionMap;
getPasses: () => AnyPass[];
getClearColor: () => [number, number, number, number];
getColor?: () => ColorPipelineOptions | undefined;
getAdapterOptions: () => GPURequestAdapterOptions | undefined;
getDeviceDescriptor: () => GPUDeviceDescriptor | undefined;
getOnError: () => ((report: MotionGPUErrorReport) => void) | undefined;
reportError: (report: MotionGPUErrorReport | null) => void;
getErrorHistoryLimit?: () => number | undefined;
getOnErrorHistory?: () => ((history: MotionGPUErrorReport[]) => void) | undefined;
reportErrorHistory?: (history: MotionGPUErrorReport[]) => void;
}
export interface MotionGPURuntimeLoop {
requestFrame: () => void;
invalidate: (token?: FrameInvalidationToken) => void;
advance: () => void;
destroy: () => void;
}
export declare function createMotionGPURuntimeLoop(options: MotionGPURuntimeLoopOptions): MotionGPURuntimeLoop;
//# sourceMappingURL=runtime-loop.d.ts.map