threepipe
Version:
A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.
68 lines • 2.6 kB
TypeScript
import { IDisposable, ValOrFunc } from 'ts-browser-helpers';
import { IUniform } from 'three';
import { Pass } from 'three/examples/jsm/postprocessing/Pass.js';
import { MaterialExtension } from '../materials';
import { ICamera, IRenderManager, IScene } from '../core';
export type IPassID = 'render' | 'screen' | string;
export interface IPass<Tid extends IPassID = IPassID> extends Pass, IDisposable {
uniforms?: {
[name: string]: IUniform;
};
materialExtension?: MaterialExtension;
/**
* Checked by {@link RenderManager} to determine whether to render this frame. A frame is rendered if any pass is dirty.
* This can be set by the plugin/pass to indicate when to continue rendering. See {@link ProgressivePlugin}.
* This is different from {@link setDirty} which is implementation specific to the pass/plugin. It generally calls onDirty and set the viewer dirty.
*/
dirty?: ValOrFunc<boolean>;
/**
* Set the pass as dirty. This is implementation specific to the pass/plugin. It generally calls all {@link onDirty} and set the viewer dirty.
*/
setDirty?(): void;
onDirty?: (() => void)[];
/**
* Unique id for the pass. Used to determine the order of passes in the pipeline.
*/
passId?: Tid;
}
export interface IPipelinePass<Tid extends IPassID = IPassID> extends IPass<Tid> {
/**
* Unique id for the pass. Used to determine the order of passes in the pipeline.
*/
readonly passId: Tid;
/**
* Passes that should run before this pass
*/
after?: IPassID[];
/**
* Passes that should run after this pass
*/
before?: IPassID[];
/**
* Passes that are required to be present in the pipeline to run this pass.
*/
required?: IPassID[];
/**
* This function gets called at the beginning of every frame where this pass would be enabled.
* @param scene
* @param camera
* @param renderManager
*/
beforeRender?(scene: IScene, camera: ICamera, renderManager: IRenderManager): void;
/**
* Callback when the pass is registered with the render manager
* @param renderer
*/
onRegister?(renderer: IRenderManager): void;
/**
* Callback when the pass is unregistered with the render manager
* @param renderer
*/
onUnregister?(renderer: IRenderManager): void;
/**
* This function gets called at the end of every frame where this pass would be enabled.
* @param renderManager
*/
onPostFrame?(renderManager: IRenderManager): void;
}
//# sourceMappingURL=Pass.d.ts.map