svader
Version:
Create GPU-rendered Svelte components
95 lines (94 loc) • 3.36 kB
TypeScript
export default WebGlShader;
/**
* The commonly used parameter values that the component can pass to the shader.
*
* - **resolution**: A `vec2` of the canvas width and height in physical device pixels.
*
* - **offset**: A `vec2` to be added to the `gl_FragCoord.xy` of the fragment shader,
* to compensate for cases where the size of the canvas is capped by hardware limitations.
*
* - **scale**: A `float` of the current scale factor, i.e. zoom level.
*
* - **time**: A `float` of the current time in seconds.
* NOTE: When the `"time"` parameter is passed to the shader, it will rerender every frame.
* If the user agent has reduced motion enabled, the time parameter will always be equal to 0.0.
*/
export type BuiltinValue = "resolution" | "offset" | "scale" | "time";
export type BuiltinParameter = {
name: string;
value: BuiltinValue;
};
export type NonBuiltinParameter = {
name: string;
} & ({
type: "float" | "int" | "uint";
value: number;
} | {
type: "vec2" | "ivec2" | "uvec2";
value: readonly [number, number];
} | {
type: "vec3" | "ivec3" | "uvec3";
value: readonly [number, number, number];
} | {
type: "vec4" | "ivec4" | "uvec4";
value: readonly [number, number, number, number];
} | {
type: "vec4" | "ivec4" | "uvec4";
value: readonly [number, number, number, number];
} | {
type: "mat2";
value: readonly [number, number, number, number];
} | {
type: "mat3";
value: readonly [number, number, number, number, number, number, number, number, number];
} | {
type: "mat4";
value: readonly [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
});
export type Parameter = BuiltinParameter | NonBuiltinParameter;
type WebGlShader = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
code: string | Promise<string>;
width?: string | undefined;
height?: string | undefined;
forceAnimation?: boolean | undefined;
parameters?: readonly Parameter[] | undefined;
}, {
default: {};
}>, {
[evt: string]: CustomEvent<any>;
}, {
default: {};
}> & {
$$bindings?: string | undefined;
};
declare const WebGlShader: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
code: string | Promise<string>;
width?: string | undefined;
height?: string | undefined;
forceAnimation?: boolean | undefined;
parameters?: readonly Parameter[] | undefined;
}, {
default: {};
}>, {
[evt: string]: CustomEvent<any>;
}, {
default: {};
}, {}, string>;
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
default: any;
} ? Props extends Record<string, never> ? any : {
children?: any;
} : {});
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
$$bindings?: Bindings;
} & Exports;
(internal: unknown, props: Props & {
$$events?: Events;
$$slots?: Slots;
}): Exports & {
$set?: any;
$on?: any;
};
z_$$bindings?: Bindings;
}