@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
51 lines (50 loc) • 2.61 kB
TypeScript
import { Material, IUniform } from 'three';
import { PolyScene } from '../../../../../scene/PolyScene';
import { GlParamConfig, GlParamConfigJSON } from '../../utils/GLParamConfig';
import { ParamType } from '../../../../../poly/ParamType';
import { PolyDictionary } from '../../../../../../types/GlobalTypes';
import { IUniformTexture } from '../../../../utils/code/gl/Uniforms';
export interface OnBeforeCompileData {
vertexShader: string;
fragmentShader: string;
paramConfigs: readonly GlParamConfig<ParamType>[];
additionalTextureUniforms: PolyDictionary<IUniformTexture>;
timeDependent: boolean;
resolutionDependent: boolean;
raymarchingLightsWorldCoordsDependent: boolean;
}
interface CloneOptions {
clonedParamConfigName: string;
clonedParamConfig?: GlParamConfig<ParamType>;
}
export declare function cloneOnBeforeCompileData(data: OnBeforeCompileData, options: CloneOptions): OnBeforeCompileData;
type RemoveParamConfigField<Type> = {
[Property in keyof Type as Exclude<Property, 'paramConfigs' | 'additionalTextureUniforms'>]: Type[Property];
};
export interface OnBeforeCompileDataJSON extends RemoveParamConfigField<OnBeforeCompileData> {
paramConfigs: GlParamConfigJSON<ParamType>[];
}
export declare function assignUniformViaUserData(material: Material, uniformName: string, newUniform: IUniformTexture): void;
export declare class MaterialUserDataUniforms {
static getUniforms(material: Material): PolyDictionary<IUniform> | undefined;
static setUniforms(material: Material, uniforms: PolyDictionary<IUniform>): void;
static removeUniforms(material: Material): PolyDictionary<IUniform<any>> | undefined;
}
export declare function assignOnBeforeCompileDataAndFunction(scene: PolyScene, material: Material, data: OnBeforeCompileData): void;
interface CopyParams {
src: Material;
dest: Material;
shareCustomUniforms: boolean;
}
export declare function copyOnBeforeCompileData(scene: PolyScene, params: CopyParams): void;
export declare class OnBeforeCompileDataHandler {
static setData(material: Material, data: OnBeforeCompileData): void;
static addAdditionalTexture(material: Material, uniformName: string, newUniform: IUniformTexture): void;
static getData(material: Material): OnBeforeCompileData | undefined;
static removeData(material: Material): OnBeforeCompileData | undefined;
}
export declare class OnBeforeCompileDataConverter {
static toJSON(onBeforeCompileData: OnBeforeCompileData): OnBeforeCompileDataJSON;
static fromJSON(json: OnBeforeCompileDataJSON): OnBeforeCompileData;
}
export {};