@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
84 lines (83 loc) • 3.45 kB
TypeScript
import { Material, Object3D, Vector2, WebGLRenderer, WebGLRenderTarget, Object3DEventMap } from 'three';
import { WebGLCapabilities } from 'three/src/renderers/webgl/WebGLCapabilities';
import { Scene, Camera, MeshBasicMaterial } from 'three';
import { FullScreenQuad } from 'three/examples/jsm/postprocessing/Pass';
import { AbstractRenderer } from '../../../../viewers/Common';
import { PathTracingRenderer, PhysicalCamera, DenoiseMaterial } from '../../../../../core/render/PBR/three-gpu-pathtracer';
import type { PathTracingRendererRopNode } from '../../PathTracingRenderer';
interface UpdateOptions {
resolutionScale: number;
displayDebug: boolean;
bounces: number;
transmissiveBounces: number;
stableNoise: boolean;
filterGlossyFactor: number;
backgroundBlur: number;
environmentIntensity: number;
tiles: Vector2;
multipleImportanceSampling: boolean;
denoise: boolean;
denoiseSigma: number;
denoiseThreshold: number;
denoiseKSigma: number;
maxSamplesCount: number;
samplesPerAnimationFrame: number;
f: Vector2;
useWorker: boolean;
}
interface PathtracingRendererContainerOptions {
node: PathTracingRendererRopNode;
webGLRenderer: WebGLRenderer;
pathTracingRenderer: PathTracingRenderer;
fsQuad: FullScreenQuad;
fsQuadMat: MeshBasicMaterial;
denoiseQuad: FullScreenQuad;
denoiseMat: DenoiseMaterial;
}
export declare class PathTracingRendererContainer implements AbstractRenderer {
displayDebug: boolean;
backgroundBlur: number;
maxSamplesCount: number;
samplesPerAnimationFrame: number;
frameRange: Vector2;
resolutionScale: number;
private _useWorker;
domElement: HTMLCanvasElement;
private _generated;
private _generating;
readonly isPathTracingRendererContainer = true;
private _denoiseActive;
readonly node: PathTracingRendererRopNode;
readonly webGLRenderer: WebGLRenderer;
readonly pathTracingRenderer: PathTracingRenderer;
readonly fsQuad: FullScreenQuad;
readonly fsQuadMat: MeshBasicMaterial;
readonly denoiseQuad: FullScreenQuad;
readonly denoiseMat: DenoiseMaterial;
constructor(options: PathtracingRendererContainerOptions);
private _multipleImportanceSampling;
update(options: UpdateOptions): void;
render(scene: Scene, camera: PhysicalCamera): void;
pbrRenderAllowed(): boolean;
markAsNotGenerated(): void;
renderRealtime(scene: Scene, camera: PhysicalCamera): void;
private _preRender;
private _postRender;
samplesCount(): number;
getPixelRatio(): number;
compile(scene: Object3D<Object3DEventMap>, camera: Camera, targetScene: Scene | null | undefined): Set<Material>;
dispose(): void;
setSize(w: number, h: number, setStyle: boolean): void;
setRenderTarget(renderTarget: WebGLRenderTarget | null, activeCubeFace?: number | undefined, activeMipmapLevel?: number | undefined): void;
readRenderTargetPixels(renderTarget: WebGLRenderTarget, x: number, y: number, width: number, height: number, buffer: Float32Array, activeCubeFaceIndex?: number | undefined): void;
get capabilities(): WebGLCapabilities;
private _generator;
private _workerGenerator;
private _generateRequired;
generate(scene: Scene): Promise<void>;
reset(): void;
private _previousCameraProjectionMatrix;
private _previousCameraWorldMatrix;
private _resetIfCameraUpdated;
}
export {};