@lightningjs/renderer
Version:
Lightning 3 Renderer
48 lines (47 loc) • 1.66 kB
TypeScript
import type { WebGlCoreCtxTexture } from '../WebGlCoreCtxTexture.js';
import type { WebGlCoreRenderer } from '../WebGlCoreRenderer.js';
import { WebGlCoreShader } from '../WebGlCoreShader.js';
import type { ShaderProgramSources } from '../internal/ShaderUtils.js';
declare module '../../../CoreShaderManager.js' {
interface ShaderMap {
SdfShader: typeof SdfShader;
}
}
/**
* Properties of the {@link SdfShader}
*/
export interface SdfShaderProps {
transform?: Float32Array;
scrollY?: number;
/**
* Color in RGBA format
*
* @remarks
* Color channels must NOT be premultiplied by alpha for best blending results.
*/
color?: number;
size?: number;
distanceRange?: number;
debug?: boolean;
}
/**
* SdfShader supports multi-channel and single-channel signed distance field textures.
*
* @remarks
* This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader
* directly. Instead create a Text Node and assign a SDF font family to it.
*
* @internalRemarks
* The only thing this shader does to support multi-channel SDFs is to
* add a median function to the fragment shader. If this one function call
* ends up being a performance bottleneck we can always look at ways to
* remove it.
*/
export declare class SdfShader extends WebGlCoreShader {
constructor(renderer: WebGlCoreRenderer);
static z$__type__Props: SdfShaderProps;
bindTextures(textures: WebGlCoreCtxTexture[]): void;
protected bindProps(props: SdfShaderProps): void;
static resolveDefaults(props?: SdfShaderProps): Required<SdfShaderProps>;
static shaderSources: ShaderProgramSources;
}