import { Texture } from 'pixi.js'; import type { Environment } from '../../materials/environment/Environment'; import type { BaseMaterialOptions, BaseUniforms } from './BaseMaterial'; import { BaseMaterial } from './BaseMaterial'; /** * PBR materials breakdown can be found here: https:// * https://learnopengl.com/PBR/Theory */ export interface PBRMaterialOptions extends BaseMaterialOptions { /** * the exposure of the tone mapping. Default is 1 */ exposure?: number; /** * 0 / 1 value to dictate how metallic the material is. */ metallic?: number; /** * 0 / 1 value to dictate how rough the material is. */ roughness?: number; /** a metal roughness texture with the following format: * B - metal * G - roughness */ metallicRoughnessMap?: Texture; /** * a texture with the following format: * R - ambient occlusion * B - metal * G - roughness * */ aomrMap?: Texture; /** * optional map to calculate the split sum more info here: https://learnopengl.com/PBR/IBL/Specular-IBL * if this is not provided, one is generated and loaded for you */ brdfLUT?: Texture; /** * an optional environment to light using IBL */ environment?: Environment; /** * true if you want good old reinhard tone mapping * defaults to true */ toneMapping?: boolean; uniforms?: PBRUniforms; } /** * the possible uniforms that this shader may added to the shader */ export interface PBRUniforms extends BaseUniforms { uMetallicRoughnessMap?: Texture; uSpecularEnvironmentMap?: Texture; uSphericalHarmonics?: Float32Array; uBrdfLUT?: Texture; } export declare class PBRMaterial extends BaseMaterial { constructor(options?: PBRMaterialOptions); set roughness(value: number); get roughness(): number; } //# sourceMappingURL=PBRMaterial.d.ts.map