/** * MaterialPresetAudit — Audit 78 material presets against R3F renderer support * * AUDIT-038: Material Preset Audit * * Purpose: * The HoloScript language supports 78 material presets with advanced PBR * features (SSS, iridescence, 16 texture channels, custom shaders). However, * the R3F renderer only outputs basic meshPhysicalMaterial with limited * property support. This auditor identifies gaps and generates a * compatibility matrix. * * Features: * - Audits all 78 material presets against renderer capabilities * - Generates compatibility matrix (supported / partial / unsupported) * - Reports per-property gap analysis * - Suggests renderer improvements ordered by impact * - Exportable report (JSON, Markdown) * * @version 1.0.0 */ export type CompatibilityLevel = 'full' | 'partial' | 'unsupported' | 'degraded'; export type MaterialPropertyCategory = 'base' | 'pbr' | 'advanced-pbr' | 'texture' | 'shader' | 'transparency' | 'emission' | 'special'; export interface MaterialProperty { name: string; category: MaterialPropertyCategory; description: string; r3fSupport: CompatibilityLevel; threeJsProperty?: string; fallback?: string; } export interface MaterialPreset { name: string; category: string; description: string; properties: Record; requiredFeatures: string[]; tags: string[]; } export interface PresetAuditResult { preset: MaterialPreset; compatibility: CompatibilityLevel; supportedProperties: string[]; partialProperties: string[]; unsupportedProperties: string[]; degradedProperties: string[]; score: number; notes: string[]; suggestedFixes: string[]; } export interface AuditReport { timestamp: number; totalPresets: number; fullySupportedCount: number; partialCount: number; unsupportedCount: number; degradedCount: number; overallScore: number; presetResults: PresetAuditResult[]; propertyGaps: PropertyGap[]; rendererImprovements: RendererImprovement[]; compatibilityMatrix: CompatibilityMatrixRow[]; } export interface PropertyGap { property: string; category: MaterialPropertyCategory; affectedPresets: string[]; impactScore: number; difficulty: 'trivial' | 'moderate' | 'complex' | 'requires-shader'; threeJsSupport: boolean; } export interface RendererImprovement { title: string; description: string; properties: string[]; presetsFixed: number; difficulty: 'trivial' | 'moderate' | 'complex' | 'requires-shader'; estimatedEffort: string; priority: 'critical' | 'high' | 'medium' | 'low'; } export interface CompatibilityMatrixRow { presetName: string; category: string; color: CompatibilityLevel; metalness: CompatibilityLevel; roughness: CompatibilityLevel; emissive: CompatibilityLevel; transmission: CompatibilityLevel; iridescence: CompatibilityLevel; clearcoat: CompatibilityLevel; subsurface: CompatibilityLevel; textures: CompatibilityLevel; shader: CompatibilityLevel; overallLevel: CompatibilityLevel; } export declare class MaterialPresetAuditor { private capabilities; private presets; constructor(capabilities?: Record, presets?: MaterialPreset[]); /** Run the full audit across all presets. */ audit(): AuditReport; /** Audit a single preset. */ auditPreset(preset: MaterialPreset): PresetAuditResult; /** Analyze which properties are most commonly missing. */ private analyzePropertyGaps; /** Generate improvement recommendations sorted by impact. */ private generateImprovements; /** Build a row for the compatibility matrix. */ private buildMatrixRow; private aggregateTextureLevel; private estimateDifficulty; private estimateEffort; /** Generate a Markdown summary of the audit. */ generateMarkdown(report: AuditReport): string; } /** Create and run a material preset audit. */ export declare function runMaterialPresetAudit(): AuditReport; /** Create an auditor for custom capabilities/presets. */ export declare function createMaterialPresetAuditor(capabilities?: Record, presets?: MaterialPreset[]): MaterialPresetAuditor; export default MaterialPresetAuditor; //# sourceMappingURL=MaterialPresetAudit.d.ts.map