// Размеры ядра (width * height) uniform int KernelSize:
// Значение для каждой точки ядра uniform vec4 KernelValue[MaxKernelSize]:
// Коэффициент
uniform vec4 ScaleFactor:
// Исходное изображение uniform sampler2D Baselmage:
void main(void) {
int i:
vec4 sum = vec4 (0.0):
for (i = 0: i < KernelSize: i++)
{
vec4 tmp = texture2D(BaseImage. gl_TexCoord[0].st + 0ffset[i]): sum += tmp * KernelValue[i]:
}
vec4 baseColor = texture2D(BaseImage. vec2(gl_TexCoord[0])): gl_FragColor = ScaleFactor * sum + baseColor:
Рис. 16.3. Результат работы шейдера для изменения резкости (лапласовское изображение в центре масштабировано)
16.8. Итоги В дополнение к работе с трехмерными объектами, OpenGL может работать и с изображениями. Язык шейдеров OpenGL расширил возможности стандарт16.9. Ссылки ного OpenGL, позволив выполнять программируемую обработку изображений. Программируемость и возможность параллельной обработки информации на графическом аппаратном обеспечении позволяют выполнять операции над изображениями гораздо быстрее, чем на обычном процессоре. Можно запрограммировать множество операций обработки изображений"opengl2_363.html">⇐ Предыдущая| |Следующая ⇒