UNPKG

@react-three/lightmap

Version:

In-browser lightmap/AO baker for react-three-fiber and ThreeJS

62 lines (61 loc) 2.19 kB
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; }; }>;