@motion-core/motion-gpu
Version:
Framework-agnostic WebGPU runtime for fullscreen WGSL shaders with explicit Svelte, React, and Vue adapter entrypoints.
64 lines • 2.15 kB
TypeScript
import type { MaterialDefineValue, MaterialDefines, MaterialIncludes } from './material.js';
/**
* Source location metadata for one generated fragment line.
*/
export interface MaterialSourceLocation {
/**
* Origin category for this generated line.
*/
kind: 'fragment' | 'include' | 'define';
/**
* 1-based line in the origin source.
*/
line: number;
/**
* Include chunk identifier when `kind === "include"`.
*/
include?: string;
/**
* Define identifier when `kind === "define"`.
*/
define?: string;
}
/**
* 1-based line map from generated fragment WGSL to user source locations.
*/
export type MaterialLineMap = Array<MaterialSourceLocation | null>;
/**
* Preprocess output used by material resolution and diagnostics mapping.
*/
export interface PreprocessedMaterialFragment {
/**
* Final fragment source after defines/include expansion.
*/
fragment: string;
/**
* 1-based generated-line source map.
*/
lineMap: MaterialLineMap;
/**
* Deterministic WGSL define block used to build the final fragment source.
*/
defineBlockSource: string;
}
/**
* Validates and normalizes define entries.
*/
export declare function normalizeDefines<TDefineKey extends string>(defines: MaterialDefines<TDefineKey> | undefined): MaterialDefines<TDefineKey>;
/**
* Validates include map identifiers and source chunks.
*/
export declare function normalizeIncludes<TIncludeKey extends string>(includes: MaterialIncludes<TIncludeKey> | undefined): MaterialIncludes<TIncludeKey>;
/**
* Converts one define declaration to WGSL `const`.
*/
export declare function toDefineLine(key: string, value: MaterialDefineValue): string;
/**
* Preprocesses material fragment with deterministic define/include expansion and line mapping.
*/
export declare function preprocessMaterialFragment<TDefineKey extends string, TIncludeKey extends string>(input: {
fragment: string;
defines?: MaterialDefines<TDefineKey>;
includes?: MaterialIncludes<TIncludeKey>;
}): PreprocessedMaterialFragment;
//# sourceMappingURL=material-preprocess.d.ts.map