@threepipe/webgi-plugins
Version:
WebGi - Realistic Rendering Plugins for ThreePipe.
100 lines • 4.02 kB
TypeScript
import { ExtendedShaderPass, GBufferPlugin, ICamera, IMaterial, IPassID, IPipelinePass, IRenderManager, IScene, IWebGLRenderer, MaterialExtension, PipelinePassPlugin, SSAAPlugin, Texture, TextureDataType, ThreeViewer, ValOrFunc, Vector3, WebGLRenderTarget } from 'threepipe';
export type SSReflectionPluginTarget = WebGLRenderTarget;
declare const passId = "ssrefl";
type SSReflectionPassId = typeof passId;
/**
* SSReflection Plugin
*
* Adds screen space reflections to the scene.
* @category Plugins
*/
export declare class SSReflectionPlugin extends PipelinePassPlugin<SSReflectionPluginPass, SSReflectionPassId> {
readonly inlineShaderRayTrace: boolean;
readonly passId = "ssrefl";
static readonly PluginType = "SSReflectionPlugin";
static readonly OldPluginType = "SSReflection";
dependencies: (typeof GBufferPlugin | typeof SSAAPlugin)[];
target?: SSReflectionPluginTarget;
texture?: Texture;
protected _pass?: SSReflectionPluginPass;
readonly bufferType: TextureDataType;
readonly sizeMultiplier: number;
constructor(inlineShaderRayTrace?: boolean, // todo: we need roughness in gbuffer for proper inline. this has other advantages also like we can do blurring and denoising etc
bufferType?: TextureDataType, // only when inline is false
sizeMultiplier?: number, // only when inline is false
enabled?: boolean);
protected _createTarget(recreate?: boolean): void;
protected _disposeTarget(): void;
private _gbufferUnpackExtension;
private _gbufferUnpackExtensionChanged;
protected _createPass(): SSReflectionPluginPass;
onAdded(viewer: ThreeViewer): void;
onRemove(viewer: ThreeViewer): void;
protected _beforeRender(_?: IScene, _1?: ICamera, _2?: IRenderManager): boolean;
/**
* @deprecated use {@link target} instead
*/
get ssrTarget(): SSReflectionPluginTarget | undefined;
fromJSON(data: any, meta?: any): this | null | Promise<this | null>;
_viewerListeners: {
preRender: () => void;
postRender: () => void;
};
}
export declare class SSReflectionPluginPass extends ExtendedShaderPass implements IPipelinePass {
target?: ValOrFunc<WebGLRenderTarget | undefined>;
readonly inlineShaderRayTrace: boolean;
before: string[];
after: string[];
required: string[];
intensity: number;
boost: Vector3;
objectRadius: number;
autoRadius: boolean;
power: number;
tolerance: number;
roughnessFactor: number;
stepCount: number;
rayCount: number;
rayBlendMax: boolean;
setDirty(): void;
lowQualityFrames: number;
maskFrontRays: boolean;
maskFrontFactor: number;
readonly passId: IPassID;
split: number;
constructor(pid: IPassID, target?: ValOrFunc<WebGLRenderTarget | undefined>, inlineShaderRayTrace?: boolean);
render(renderer: IWebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime: number, maskActive: boolean): void;
beforeRender(scene: IScene, camera: ICamera, renderManager: IRenderManager): void;
readonly materialExtension: MaterialExtension;
/**
* Returns a uiConfig to toggle SSReflection on a material.
* This uiConfig is added to each material by extension
* @param material
* @private
*/
protected _getUiConfig(material: IMaterial): {
type: string;
label: string;
children: {
type: string;
label: string;
value: boolean;
onChange: () => void;
}[];
};
set uniformsNeedUpdate(value: true);
protected _gbufferUnpackExtension: MaterialExtension | undefined;
setGBufferUnpackExtension(extension: MaterialExtension | undefined): void;
}
declare module 'threepipe' {
interface IMaterialUserData {
/**
* Disable SSReflectionPlugin for this material.
*/
ssreflDisabled?: boolean;
ssreflNonPhysical?: boolean;
}
}
export {};
//# sourceMappingURL=SSReflectionPlugin.d.ts.map