import type { ShaderMacros } from '../render'; import { ShaderType } from '../material'; export interface ShaderCodeOptions { level: number; shaderType: ShaderType; shader: string; macros?: ShaderMacros; removeVersion?: boolean; } export declare class ShaderFactory { static registerInclude(includeName: string, includeSource: string): void; static unRegisterInclude(includeName: string): void; static unRegisterAllIncludes(): void; /** * 生成 shader,检测到 WebGL1 上下文会降级 * @param macros - 宏定义数组 * @param shader - 原始 shader 文本 * @param shaderType - shader 类型 * @return 去除版本号的 shader 文本 */ static genFinalShaderCode(options: ShaderCodeOptions): string; /** * Convert lower GLSL version to GLSL 300 es. * @param source - code * @param isFragment - Whether it is a fragment shader. * */ private static convertTo300; private static parseIncludes; private static genMacroString; private static genShaderVersion; private static isVersion300; private static removeWebGLVersion; private static has300Output; private static replaceMRTShader; }