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.
70 lines • 3.34 kB
TypeScript
import { DepthTexture, FloatType, IUniform, Texture, TextureDataType, UnsignedIntType, UnsignedShortType, WebGLRenderTarget } from 'three';
import { GBufferRenderPass } from '../../postprocessing';
import { ThreeViewer } from '../../viewer';
import { MaterialExtension } from '../../materials';
import { PipelinePassPlugin } from '../base/PipelinePassPlugin';
import { ICamera, IRenderManager, IScene, ITexture } from '../../core';
import { GBufferMaterial, GBufferUpdater } from './GBufferMaterial';
import { IRenderTarget } from '../../rendering';
export type GBufferPluginTarget = WebGLRenderTarget & IRenderTarget;
export type GBufferPluginPass = GBufferRenderPass<'gbuffer', GBufferPluginTarget | undefined>;
/**
* G-Buffer Plugin
*
* Adds a pre-render pass to render the g-buffer(depth+normal+flags) to render target(s) that can be used as gbuffer and for postprocessing.
* @category Plugins
*/
export declare class GBufferPlugin extends PipelinePassPlugin<GBufferPluginPass, 'gbuffer'> {
renderFlagsBuffer: boolean;
renderDepthTexture: boolean;
depthTextureType: typeof UnsignedShortType | typeof UnsignedIntType | typeof FloatType;
readonly passId = "gbuffer";
static readonly PluginType = "GBuffer";
target?: GBufferPluginTarget;
textures: Texture[];
get normalDepthTexture(): ITexture | undefined;
get flagsTexture(): ITexture | undefined;
get depthTexture(): (ITexture & DepthTexture) | undefined;
material?: GBufferMaterial;
readonly bufferType: TextureDataType;
readonly isPrimaryGBuffer: boolean;
unpackExtension: MaterialExtension;
createMaterial(): GBufferMaterial;
private _isPrimaryGBufferSet;
protected _createTargetAndMaterial(recreateTarget?: boolean): void;
protected _disposeTarget(): void;
protected _createPass(): GBufferRenderPass<"gbuffer", GBufferPluginTarget | undefined>;
protected _beforeRender(scene: IScene, camera: ICamera, renderManager: IRenderManager): boolean;
constructor(bufferType?: TextureDataType, isPrimaryGBuffer?: boolean, enabled?: boolean, renderFlagsBuffer?: boolean, renderDepthTexture?: boolean, depthTextureType?: typeof UnsignedShortType | typeof UnsignedIntType | typeof FloatType);
registerGBufferUpdater(key: string, updater: GBufferUpdater['updateGBufferFlags']): void;
unregisterGBufferUpdater(key: string): void;
onRemove(viewer: ThreeViewer): void;
/**
* @deprecated use {@link normalDepthTexture} instead
*/
getDepthNormal(): Texture<import('three').TextureEventMap> | undefined;
/**
* @deprecated use {@link flagsTexture} instead
*/
getFlagsTexture(): Texture<import('three').TextureEventMap> | undefined;
/**
* @deprecated use {@link target} instead
*/
getTarget(): GBufferPluginTarget | undefined;
/**
* @deprecated use {@link unpackExtension} instead
*/
getUnpackSnippet(): string;
/**
* @deprecated use {@link unpackExtension} instead, it adds the same uniforms and defines
* @param material
*/
updateShaderProperties(material: {
defines: Record<string, string | number | undefined>;
uniforms: {
[p: string]: IUniform;
};
needsUpdate?: boolean;
}): this;
}
//# sourceMappingURL=../../src/plugins/pipeline/GBufferPlugin.d.ts.map