import type { CookedMaterialRecord, MaterialCookProgramContext } from '@forgeax/engine-pack'; import { MaterialArtifactRegistry, type ShaderRegistry } from '@forgeax/engine-shader'; import type { MaterialParameter, MaterialProgramAbi, MaterialProgramAddress, MaterialSurfaceDeclaration, MaterialValue, ParamSchemaEntry } from '@forgeax/engine-types'; import type { MaterialReady } from './loader'; export interface MaterialRenderPassProjection { readonly name: string; readonly module: string; readonly outputs?: import('@forgeax/engine-types').MaterialPass['outputs']; readonly vertexEntry?: string; readonly fragmentEntry?: string; readonly moduleSlots?: Readonly>; readonly renderState?: Readonly>; readonly programs: readonly { readonly context: MaterialCookProgramContext; readonly specializationKey: string; readonly artifactHash: string; readonly address?: MaterialProgramAddress; readonly entry?: string; readonly abi?: MaterialProgramAbi; }[]; } export interface MaterialRenderProjection { readonly materialGuid: string; readonly publicationGeneration: number; readonly specializationKey: string; readonly artifactHash: string; readonly passes: readonly MaterialRenderPassProjection[]; readonly runtimeValues: Readonly>; /** Root-published Surface model; Render owns preparation and admission. */ readonly surface?: MaterialSurfaceDeclaration; readonly staticSelection: readonly string[]; } /** Exact Pass/context lookup; the renderer supplies all domain-owned axes. */ export declare function selectMaterialPassProgram(projection: MaterialRenderProjection, passName: string, context: MaterialCookProgramContext, address?: MaterialProgramAddress, vertexColorAvailable?: boolean): MaterialRenderPassProjection['programs'][number]; /** Project authored MaterialAsset parameters into the runtime shader schema. */ export declare function materialParametersToParamSchema(parameters: readonly MaterialParameter[], material?: string): readonly ParamSchemaEntry[]; /** Project authored pass module ids onto the renderer's canonical ids. */ export declare function runtimeMaterialShaderId(module: string | undefined, passName?: string): string | undefined; export declare function projectMaterialRecord(record: CookedMaterialRecord): MaterialRenderProjection; /** Preflight the complete set before mutating either runtime registry. */ export declare function installMaterialReadyShaders(shaderRegistry: ShaderRegistry, readiness: MaterialReady, artifactRegistry: MaterialArtifactRegistry): MaterialRenderProjection; //# sourceMappingURL=runtime-shader.d.ts.map