import * as THREE from 'three'; import { ENVIRONMENT_MAP_TYPE } from './EnvironmentMapLoader'; import { GemMaterial, GemMaterialParameters } from '../materials/GemMaterial'; import { ILoader } from '../interfaces/ILoader'; import { quat } from 'gl-matrix'; import { MeshUnlitMaterialParameters } from '../materials/MeshUnlitMaterialParameters'; import { RenderingEngine } from '../RenderingEngine'; import { SpecularGlossinessMaterial, SpecularGlossinessMaterialParameters } from '../materials/SpecularGlossinessMaterial'; import { PRIMITIVE_MODE, IMaterialAbstractData, MaterialUnlitData, MaterialSpecularGlossinessData, MaterialGemData, MaterialStandardData, MaterialShadowData, GeometryData } from '@shapediver/viewer.shared.types'; export declare enum MATERIAL_TYPE { POINT = "point", LINE = "line", MESH = "mesh" } export declare type MaterialSettings = { mode: PRIMITIVE_MODE; useVertexTangents: boolean; useVertexColors: boolean; useFlatShading: boolean; useMorphTargets: boolean; useMorphNormals: boolean; }; export declare const adaptShaders: () => void; declare type ThreeJsTextureCacheObject = { texture: THREE.Texture; usage: number; initialized: boolean; }; export declare class MaterialLoader implements ILoader { private readonly _renderingEngine; private readonly _converter; private _blending; private _defaultLineMaterial?; private _defaultMaterial?; private _defaultPointsMaterial?; private _envMap; private _envMapIntensity; private _envMapType; private _environmentMapRotationMatrix; private _height; private _lightSizeUV; private _materialCache; private _maxMapCount; private _pointSize; private _sceneBackgroundNeedsUpdate; private _textureEncoding; private _threeJsTextureCache; constructor(_renderingEngine: RenderingEngine); get maxMapCount(): number; set maxMapCount(value: number); get sceneBackgroundNeedsUpdate(): boolean; set sceneBackgroundNeedsUpdate(value: boolean); get textureEncoding(): THREE.ColorSpace; set textureEncoding(value: THREE.ColorSpace); get threeJsTextureCache(): { [key: string]: ThreeJsTextureCacheObject; }; set threeJsTextureCache(value: { [key: string]: ThreeJsTextureCacheObject; }); assignColorCorrection(value: boolean): void; assignDefaultMaterialColor(): void; assignEnvironmentMap(e: THREE.CubeTexture | THREE.Texture | null, type: ENVIRONMENT_MAP_TYPE): void; assignEnvironmentMapForUnlitMaterials(toggle: boolean): void; assignEnvironmentMapIntensity(value: number): void; assignPointSize(p: number): void; cacheSize(): number; createMaterial(type: MATERIAL_TYPE, incomingData: IMaterialAbstractData | MaterialUnlitData | MaterialSpecularGlossinessData | MaterialStandardData | MaterialGemData | GeometryData, materialData: IMaterialAbstractData | MaterialUnlitData | MaterialSpecularGlossinessData | MaterialStandardData | MaterialGemData | null, materialSettings?: MaterialSettings): THREE.MeshBasicMaterial | THREE.ShadowMaterial | THREE.PointsMaterial | THREE.MeshPhysicalMaterial | THREE.LineBasicMaterial | GemMaterial | SpecularGlossinessMaterial; emptyMaterialCache(): void; getMaterialProperties(materialData: IMaterialAbstractData | MaterialUnlitData | MaterialSpecularGlossinessData | MaterialStandardData | MaterialGemData | MaterialShadowData | null, type: MATERIAL_TYPE, materialSettings?: MaterialSettings): { properties: THREE.PointsMaterialParameters | THREE.LineBasicMaterialParameters | MeshUnlitMaterialParameters | THREE.MeshPhysicalMaterialParameters | SpecularGlossinessMaterialParameters | GemMaterialParameters | THREE.ShadowMaterialParameters; mapCount: number; }; init(): void; /** * Create a material object with the provided material data. * * @param material the material data * @returns the material object */ load(incomingData: IMaterialAbstractData | MaterialUnlitData | MaterialSpecularGlossinessData | MaterialStandardData | MaterialGemData | GeometryData, materialSettings?: MaterialSettings): THREE.Material; removeFromMaterialCache(id: string): void; transformEnvMapRotationMatrix(backgroundMaterial?: boolean): THREE.Matrix4; updateEnvironmentMapRotation(quaternion: quat): void; updateMaterials(): void; updateSoftShadow(lightSizeUV: number, blending: number): void; private assignTextureEncoding; private createDataKeyFromMaterial; private createDataKeyFromMap; private createTexture; } export {}; //# sourceMappingURL=MaterialLoader.d.ts.map