@takram/three-clouds
Version:
A Three.js and R3F implementation of geospatial volumetric clouds
52 lines (51 loc) • 1.53 kB
TypeScript
import { Matrix4, Vector2, Vector3, PerspectiveCamera } from 'three';
import { FrustumSplitMode } from './helpers/splitFrustum';
export interface Cascade {
readonly interval: Vector2;
readonly matrix: Matrix4;
readonly inverseMatrix: Matrix4;
readonly projectionMatrix: Matrix4;
readonly inverseProjectionMatrix: Matrix4;
readonly viewMatrix: Matrix4;
readonly inverseViewMatrix: Matrix4;
}
export interface CascadedShadowMapsOptions {
cascadeCount: number;
mapSize: Vector2;
maxFar?: number | null;
farScale?: number;
splitMode?: FrustumSplitMode;
splitLambda?: number;
margin?: number;
fade?: boolean;
}
export declare const cascadedShadowMapsDefaults: {
maxFar: null;
farScale: number;
splitMode: "practical";
splitLambda: number;
margin: number;
fade: true;
};
export declare class CascadedShadowMaps {
readonly cascades: Cascade[];
readonly mapSize: Vector2;
maxFar: number | null;
farScale: number;
splitMode: FrustumSplitMode;
splitLambda: number;
margin: number;
fade: boolean;
private readonly cameraFrustum;
private readonly frusta;
private readonly splits;
private _far;
constructor(options: CascadedShadowMapsOptions);
get cascadeCount(): number;
set cascadeCount(value: number);
get far(): number;
private updateIntervals;
private getFrustumRadius;
private updateMatrices;
update(camera: PerspectiveCamera, sunDirection: Vector3, distance?: number): void;
}