□ создание не фотографически точных изображений - имитация живописи, рисунка пером, воспроизведение техники иллюстрации и т. д.;

□ использование текстур для хранения нормалей, блеска, полиномных коэффициентов и т. д. - новые возможности использования текстурной памяти;

□ меньшее количество способов доступа к текстурам - текстуры могут бьгть созданы с помощью процедур, а не посредством доступа к текстурным картам, хранящимся в текстурной памяти;

□ использование новых способов обработки изображений - искривления, нечеткой обработки маски, сложного сглаживания и т. д.;

□ создание эффектов анимации - интерполяции ключевого кадра, процедурно определенных движений;

□ использование программируемых методов антиалиасинга.

Многие из этих техник раньше были доступны только через программные реализации, ограниченно - если вообще доступны. Сейчас же они могут быть реализованы с использованием аппаратного ускорения, обеспеченного сложными графическими акселераторами. Это означает, что скорость визуализации может быть увеличена, а процессор разгружен для выполнения других задач.

2.3. Программируемые процессоры OpenGL

Самое большое изменение в OpenGL со времени его создания, которое и послужило причиной создания языка шейдеров, - внедрение программируемых вершинных и фрагментных процессоров. В главе 1 обсуждалась фиксированная функциональность обработки вершин и фрагментов. С внедрением программируемости в случае, если язык шейдеров используется приложением, фиксированная функциональность выключается.

Далее описывается процесс обработки графики в OpenGL при активных программируемых процессорах (рис. 2.1). В этом случае фиксированная часть обработки вершин и фрагментов (см, рис. 1.1) заменяется программируемой. Остальные этапы обработки графики остаются неизменными.

Логическая диаграмма операций в OpenGL с программируемыми процессорами ■ для вершинных и фрагментных шейдеров

Рис. 2.1. Логическая диаграмма операций в OpenGL с программируемыми процессорами ■ для вершинных и фрагментных шейдеров Эта диаграмма иллюстрирует, как данные проходят через программируемые процессоры, определенные как часть языка OpenGL. Потоки данных идут от приложения к вершинному процессору, потом к фрагментному процессору и в конечном счете попадают в буфер кадров.

2.3.1. Вершинный процессор

Вершинный процессор - это программируемый модуль, который выполняет операции над входными значениями вершин и другими связанными с ними данными. Вершинный процессор предназначен для выполнения следующих традиционных операций с графикой:

□ преобразования вершин;

□ преобразования нормали, нормализации;

□ генерирования текстурных координат;

□ преобразования текстурных координат;

□ настройки освещения;

□ наложения цвета материала.

Так как этот процессор является программируемым, его можно использовать и для других вычислений. Шейдеры, которые предназначены для выполнения на этом процессоре, называются вершинными шейдерами. Вершинные шейдеры можно использовать для определения общей последовательности операций, которые будут выполняться над вершиной и другими связанными с ней данными. Вершинные шейдеры, выполняющие некоторые из вычислений, перечисленных в списке, отвечают за написание кода для всей функциональности из списка. Например, невозможно использовать одновременно и стандартные функции преобразования вершины и нормали, и вершинный шейдер для вычисления освещения. Написанный вершинный шейдер должен выполнять все три операции.


⇐ вернуться назад | | далее ⇒