Shader
Класс: GLShader
Шейдер - абстрактный класс для создания спецэффектов для материалов с использованием микропрограмм
для GPU. В OpenGL есть два типа таких программ:
Вершинная (vertex program) - программа для вершинного процессора, обрабатывающая данные о вершинах;
Фрагментная (fragment program) - программа для фрагментного процессора, обрабатывающая данные фрагмента (пикселя).
Для написания этих программ используется низкоуровневый язык - ассемблер.
Например, вот как выглядит простейшая вершинная программа, окрашивающая вершину в цвет, который передается в качестве параметра:
!!ARBvp1.0
PARAM CTM[4] = { state.matrix.mvp };
PARAM col = program.env[1];
DP4 result.position.x, CTM[0], vertex.position;
DP4 result.position.y, CTM[1], vertex.position;
DP4 result.position.z, CTM[2], vertex.position;
DP4 result.position.w, CTM[3], vertex.position;
MOV result.color, col.xyzw;
END
При помощи шейдеров можно создавать такие эффекты, как пиксельное освещение, bump mapping, displacement mapping, cel shading и др.
ShaderCreate
real = ShaderCreate( );
Создает новый шейдер и возвращает его id.
ShaderLoadVertexProgram
real = ShaderLoadVertexProgram( shader as real, filename as string );
Загружает вершинную программу шейдера из текстового файла.
shader - id шейдера
filename - путь к файлу.
ShaderLoadFragmentProgram
real = ShaderLoadFragmentProgram( shader as real, filename as string );
Загружает фрагментную программу шейдера из текстового файла.
shader - id шейдера
filename - путь к файлу.
ShaderVPSetParameter
real = ShaderVPSetParameter( shader,ind,x,y,z,w as real );
Передает вершинной программе шейдера параметр в виде четырехкомпонентного вектора.
shader - id шейдера
ind - порядковый номер параметра (отсчет ведется с нуля)
x,y,z,w - вектор.
ShaderFPSetParameter
real = ShaderFPSetParameter( shader,ind,x,y,z,w as real );
Передает фрагментной программе шейдера параметр в виде четырехкомпонентного вектора.
shader - id шейдера
ind - порядковый номер параметра (отсчет ведется с нуля)
x,y,z,w - вектор.