/** * WebGL 셰이더 관리 시스템 * 셰이더 프로그램 생성 및 관리를 위한 유틸리티 제공 */ import { ShaderCompileParams } from "../types.js"; /** * 셰이더 컴파일 결과 */ export interface ShaderCompileResult { /** 성공 여부 */ success: boolean; /** 에러 메시지 (실패 시) */ errorMessage?: string; /** 프로그램 정보 (성공 시) */ programInfo?: { /** 속성 위치 */ attribLocations: Record; /** 유니폼 위치 */ uniformLocations: Record; }; } /** * 셰이더 소스를 컴파일하여 프로그램 생성 * @param gl WebGL 렌더링 컨텍스트 * @param params 셰이더 컴파일 파라미터 * @returns 컴파일 결과 */ export declare function compileShaderProgram(gl: WebGLRenderingContext | WebGL2RenderingContext, params: ShaderCompileParams): ShaderCompileResult; /** * 셰이더 프로그램 클래스 * 셰이더 프로그램 사용 및 유니폼 설정을 위한 래퍼 클래스 */ export declare class ShaderProgram { /** WebGL 컨텍스트 */ private gl; /** 프로그램 ID */ private program; /** 속성 위치 */ private attribLocations; /** 유니폼 위치 */ private uniformLocations; /** 활성 여부 */ private isActive; /** * 생성자 * @param gl WebGL 렌더링 컨텍스트 * @param program 셰이더 프로그램 * @param attribLocations 속성 위치 * @param uniformLocations 유니폼 위치 */ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext, program: WebGLProgram, attribLocations: Record, uniformLocations: Record); /** * 프로그램 사용 */ use(): void; /** * 속성 위치 가져오기 * @param name 속성 이름 * @returns 속성 위치 */ getAttribLocation(name: string): number; /** * 유니폼 위치 가져오기 * @param name 유니폼 이름 * @returns 유니폼 위치 */ getUniformLocation(name: string): WebGLUniformLocation | null; /** * 유니폼 설정 (1f) * @param name 유니폼 이름 * @param value 값 */ setUniform1f(name: string, value: number): void; /** * 유니폼 설정 (2f) * @param name 유니폼 이름 * @param v1 첫 번째 값 * @param v2 두 번째 값 */ setUniform2f(name: string, v1: number, v2: number): void; /** * 유니폼 설정 (3f) * @param name 유니폼 이름 * @param v1 첫 번째 값 * @param v2 두 번째 값 * @param v3 세 번째 값 */ setUniform3f(name: string, v1: number, v2: number, v3: number): void; /** * 유니폼 설정 (4f) * @param name 유니폼 이름 * @param v1 첫 번째 값 * @param v2 두 번째 값 * @param v3 세 번째 값 * @param v4 네 번째 값 */ setUniform4f(name: string, v1: number, v2: number, v3: number, v4: number): void; /** * 행렬 유니폼 설정 (4fv) * @param name 유니폼 이름 * @param transpose 전치 여부 * @param value 행렬 값 */ setUniformMatrix4fv(name: string, transpose: boolean, value: Float32Array | number[]): void; /** * 정수 유니폼 설정 (1i) * @param name 유니폼 이름 * @param value 값 */ setUniform1i(name: string, value: number): void; /** * 프로그램 삭제 */ dispose(): void; }