@react-three/lightmap
Version:
In-browser lightmap/AO baker for react-three-fiber and ThreeJS
62 lines (61 loc) • 2.19 kB
TypeScript
import * as THREE from 'three';
import { AtlasMap } from './atlas';
import { LightProbeSettings } from './lightProbe';
export interface Workbench {
aoMode: boolean;
aoDistance: number;
emissiveMultiplier: number;
bounceMultiplier: number;
lightScene: THREE.Scene;
atlasMap: AtlasMap;
irradiance: THREE.Texture;
irradianceData: Float32Array;
settings: LightProbeSettings;
}
export declare const LIGHTMAP_IGNORE_FLAG: unique symbol;
export declare const LIGHTMAP_READONLY_FLAG: unique symbol;
export declare function objectHasFlag(object: THREE.Object3D, flag: symbol): boolean;
export declare let traversalStateIsReadOnly: boolean;
export declare function traverseSceneItems(root: THREE.Object3D, ignoreReadOnly?: boolean, onIgnored?: (object: THREE.Object3D) => void): Generator<THREE.Object3D, void, unknown>;
export declare type SamplerSettings = Partial<LightProbeSettings>;
export interface WorkbenchSettings {
ao?: boolean;
aoDistance?: number;
emissiveMultiplier?: number;
bounceMultiplier?: number;
lightMapSize?: number | [number, number];
textureFilter?: THREE.TextureFilter;
texelsPerUnit?: number;
samplerSettings?: SamplerSettings;
}
export declare function initializeWorkbench(scene: THREE.Scene, props: WorkbenchSettings, requestWork: () => Promise<THREE.WebGLRenderer>): Promise<{
aoMode: boolean;
aoDistance: number;
emissiveMultiplier: number;
bounceMultiplier: number;
lightScene: THREE.Scene;
atlasMap: {
width: number;
height: number;
texture: THREE.DataTexture;
data: Float32Array;
items: {
faceCount: number;
originalMesh: THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
originalBuffer: THREE.BufferGeometry;
}[];
};
irradiance: THREE.Texture;
irradianceData: Float32Array;
settings: {
targetSize: number;
offset: number;
near: number;
far: number;
} | {
targetSize: number;
offset: number;
near: number;
far: number;
};
}>;