UNPKG

@motion-core/motion-gpu

Version:

Framework-agnostic WebGPU runtime for fullscreen WGSL shaders with explicit Svelte, React, and Vue adapter entrypoints.

83 lines 2.58 kB
/** * Dispatch context provided to dynamic dispatch callbacks. */ export interface ComputeDispatchContext { width: number; height: number; time: number; delta: number; workgroupSize: [number, number, number]; } /** * Options for constructing a `ComputePass`. */ export interface ComputePassOptions { /** * Compute shader WGSL source code. * Must declare `@compute @workgroup_size(...) fn compute(@builtin(global_invocation_id) ...)`. */ compute: string; /** * Dispatch workgroup counts. * - Static tuple: `[x]`, `[x, y]`, or `[x, y, z]` * - `'auto'`: derived from canvas size / workgroup size * - Function: dynamic dispatch based on frame context */ dispatch?: [number, number?, number?] | 'auto' | ((ctx: ComputeDispatchContext) => [number, number, number]); /** * Enables/disables this compute pass. */ enabled?: boolean; } /** * Compute pass class used within the render graph. * * Validates compute shader contract, parses workgroup size, * and resolves dispatch dimensions. Does **not** manage GPU resources * (that responsibility belongs to the renderer). */ export declare class ComputePass { /** * Enables/disables this pass without removing it from graph. */ enabled: boolean; /** * Discriminant flag for render graph to identify compute passes. */ readonly isCompute: true; private compute; private workgroupSize; private dispatch; constructor(options: ComputePassOptions); /** * Replaces current compute shader and updates workgroup size. * * @param compute - New compute shader WGSL source. * @throws {Error} When shader does not match the compute contract. */ setCompute(compute: string): void; /** * Updates dispatch strategy. */ setDispatch(dispatch: ComputePassOptions['dispatch']): void; /** * Returns current compute shader source. */ getCompute(): string; /** * Returns parsed workgroup size from current compute shader. */ getWorkgroupSize(): [number, number, number]; /** * Resolves dispatch workgroup counts for current frame. * * @param ctx - Dispatch context with canvas dimensions and timing. * @returns Tuple [x, y, z] workgroup counts. */ resolveDispatch(ctx: ComputeDispatchContext): [number, number, number]; /** * Releases resources (no-op since GPU resource lifecycle is renderer-managed). */ dispose(): void; } //# sourceMappingURL=ComputePass.d.ts.map