@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
83 lines (82 loc) • 4.45 kB
TypeScript
/**
* @ignore
*/
export class ShadowRenderer {
static createShadowCamera(device: any, shadowType: any, type: any, face: any): import("../camera.js").Camera;
static setShadowCameraSettings(shadowCam: any, device: any, shadowType: any, type: any, isClustered: any): void;
/**
* @param {import('./renderer.js').Renderer} renderer - The renderer.
* @param {import('../lighting/light-texture-atlas.js').LightTextureAtlas} lightTextureAtlas - The
* shadow map atlas.
*/
constructor(renderer: import("./renderer.js").Renderer, lightTextureAtlas: import("../lighting/light-texture-atlas.js").LightTextureAtlas);
/**
* A cache of shadow passes. First index is looked up by light type, second by shadow type.
*
* @type {import('../shader-pass.js').ShaderPassInfo[][]}
* @private
*/
private shadowPassCache;
device: import("../../index.js").GraphicsDevice;
/** @type {import('./renderer.js').Renderer} */
renderer: import("./renderer.js").Renderer;
/** @type {import('../lighting/light-texture-atlas.js').LightTextureAtlas} */
lightTextureAtlas: import("../lighting/light-texture-atlas.js").LightTextureAtlas;
polygonOffsetId: import("../../index.js").ScopeId;
polygonOffset: Float32Array<ArrayBuffer>;
sourceId: import("../../index.js").ScopeId;
pixelOffsetId: import("../../index.js").ScopeId;
weightId: import("../../index.js").ScopeId;
blurVsmShaderCode: any[];
blurPackedVsmShaderCode: string[];
blurVsmShader: {}[];
blurPackedVsmShader: {}[];
blurVsmWeights: {};
shadowMapLightRadiusId: import("../../index.js").ScopeId;
viewUniformFormat: UniformBufferFormat;
viewBindGroupFormat: BindGroupFormat;
blendStateWrite: BlendState;
blendStateNoWrite: BlendState;
_cullShadowCastersInternal(meshInstances: any, visible: any, camera: any): void;
/**
* Culls the list of shadow casters used by the light by the camera, storing visible mesh
* instances in the specified array.
* @param {import('../composition/layer-composition.js').LayerComposition} comp - The layer
* composition used as a source of shadow casters, if those are not provided directly.
* @param {import('../light.js').Light} light - The light.
* @param {import('../mesh-instance.js').MeshInstance[]} visible - The array to store visible
* mesh instances in.
* @param {import('../camera.js').Camera} camera - The camera.
* @param {import('../mesh-instance.js').MeshInstance[]} [casters] - Optional array of mesh
* instances to use as casters.
* @ignore
*/
cullShadowCasters(comp: import("../composition/layer-composition.js").LayerComposition, light: import("../light.js").Light, visible: import("../mesh-instance.js").MeshInstance[], camera: import("../camera.js").Camera, casters?: import("../mesh-instance.js").MeshInstance[]): void;
setupRenderState(device: any, light: any): void;
dispatchUniforms(light: any, shadowCam: any, lightRenderData: any, face: any): void;
/**
* @param {import('../light.js').Light} light - The light.
* @returns {number} Index of shadow pass info.
*/
getShadowPass(light: import("../light.js").Light): number;
/**
* @param {import('../mesh-instance.js').MeshInstance[]} visibleCasters - Visible mesh
* instances.
* @param {import('../light.js').Light} light - The light.
*/
submitCasters(visibleCasters: import("../mesh-instance.js").MeshInstance[], light: import("../light.js").Light): void;
needsShadowRendering(light: any): any;
getLightRenderData(light: any, camera: any, face: any): any;
setupRenderPass(renderPass: any, shadowCamera: any, clearRenderTarget: any): void;
prepareFace(light: any, camera: any, face: any): any;
renderFace(light: any, camera: any, face: any, clear: any, insideRenderPass?: boolean): void;
render(light: any, camera: any, insideRenderPass?: boolean): void;
renderVsm(light: any, camera: any): void;
getVsmBlurShader(isVsm8: any, blurMode: any, filterSize: any): any;
applyVsmBlur(light: any, camera: any): void;
initViewBindGroupFormat(): void;
frameUpdate(): void;
}
import { UniformBufferFormat } from '../../platform/graphics/uniform-buffer-format.js';
import { BindGroupFormat } from '../../platform/graphics/bind-group-format.js';
import { BlendState } from '../../platform/graphics/blend-state.js';