lamina
Version:
🍰 An extensable, layer based shader material for ThreeJS.
104 lines (103 loc) • 3.36 kB
TypeScript
import * as THREE from 'three';
import { Abstract } from './vanilla';
export declare const BlendModes: {
[key: string]: string;
};
export declare type BlendMode = 'normal' | 'add' | 'subtract' | 'multiply' | 'lighten' | 'darken' | 'divide' | 'overlay' | 'screen' | 'softlight' | 'reflect' | 'negation';
export declare const NoiseTypes: {
[key: string]: string;
};
export declare type NoiseType = 'perlin' | 'simplex' | 'cell' | 'curl' | 'white';
export declare const MappingTypes: {
[key: string]: string;
};
export declare type MappingType = 'local' | 'world' | 'uv';
export declare const ShadingTypes: {
[key: string]: new () => THREE.Material;
};
export declare type ShadingType = 'phong' | 'physical' | 'toon' | 'basic' | 'lambert' | 'standard';
export interface BaseProps {
color?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
name?: string;
}
export interface LayerMaterialParameters {
layers?: Abstract[];
color?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
lighting?: ShadingType;
name?: string;
}
export declare type LayerMaterialProps = Omit<LayerMaterialParameters, 'layers'>;
export interface LayerProps {
mode?: BlendMode;
name?: string;
visible?: boolean;
[key: string]: any;
}
export interface ColorProps extends LayerProps {
color?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
}
export interface NormalProps extends LayerProps {
direction?: THREE.Vector3 | [number, number, number];
alpha?: number;
}
export interface DepthProps extends LayerProps {
colorA?: THREE.ColorRepresentation | THREE.Color;
colorB?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
near?: number;
far?: number;
origin?: THREE.Vector3 | [number, number, number];
mapping?: 'vector' | 'world' | 'camera';
}
export interface NoiseProps extends LayerProps {
colorA?: THREE.ColorRepresentation | THREE.Color;
colorB?: THREE.ColorRepresentation | THREE.Color;
colorC?: THREE.ColorRepresentation | THREE.Color;
colorD?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
mapping?: MappingType;
type?: NoiseType;
scale?: number;
offset?: THREE.Vector3 | [number, number, number];
}
export interface DisplaceProps extends LayerProps {
strength?: number;
scale?: number;
mapping?: MappingType;
type?: NoiseType;
offset?: THREE.Vector3 | [number, number, number];
}
export interface FresnelProps extends LayerProps {
color?: THREE.ColorRepresentation | THREE.Color;
alpha?: number;
power?: number;
intensity?: number;
bias?: number;
}
export interface GradientProps extends LayerProps {
colorA?: THREE.ColorRepresentation | THREE.Color;
colorB?: THREE.ColorRepresentation | THREE.Color;
axes?: 'x' | 'y' | 'z';
alpha?: number;
contrast?: number;
start?: number;
end?: number;
mapping?: MappingType;
}
export interface MatcapProps extends LayerProps {
map?: THREE.Texture;
alpha?: number;
}
export interface TextureProps extends LayerProps {
map?: THREE.Texture;
alpha?: number;
}
export interface SerializedLayer {
constructor: string;
properties: {
[name: string]: any;
};
}