/** * MaterialSystem.ts * * PBR material management: shader binding, uniform management, * render state, and instanced variants. * * @module rendering */ export type BlendMode = 'opaque' | 'alpha' | 'additive' | 'multiply'; export type CullMode = 'none' | 'front' | 'back'; export type UniformType = 'float' | 'vec2' | 'vec3' | 'vec4' | 'mat4' | 'int' | 'sampler2D'; export interface UniformDef { name: string; type: UniformType; value: number | number[] | string; } export interface Material { id: string; name: string; shaderId: string; uniforms: Map; blendMode: BlendMode; cullMode: CullMode; depthWrite: boolean; depthTest: boolean; renderOrder: number; doubleSided: boolean; albedo: [number, number, number, number]; metallic: number; roughness: number; emissive: [number, number, number]; normalScale: number; } export declare class MaterialSystem { private materials; private shaders; registerShader(id: string, vertexSrc: string, fragmentSrc: string): void; getShader(id: string): { vertexSrc: string; fragmentSrc: string; } | undefined; createMaterial(id: string, name: string, shaderId: string): Material; getMaterial(id: string): Material | undefined; removeMaterial(id: string): void; getMaterialCount(): number; setUniform(materialId: string, name: string, type: UniformType, value: number | number[] | string): void; getUniform(materialId: string, name: string): UniformDef | undefined; setPBR(materialId: string, props: Partial>): void; setBlendMode(materialId: string, mode: BlendMode): void; setCullMode(materialId: string, mode: CullMode): void; getSortedMaterials(): Material[]; cloneMaterial(sourceId: string, newId: string, newName: string): Material | null; } //# sourceMappingURL=MaterialSystem.d.ts.map