Фрагментный процессор может быть использован для выполнения операций над каждым из фрагментов, полученных в результате рендеринга точек, линий, многоугольников, пиксельных прямоугольников, растровых изображений. Если изображения сначала загружены в текстурную память, фрагментный процессор можно использовать также для обработки пикселов, в процессе которой требуется доступ и к самому пикселу, и к соседним с ним пикселам. При рисовании прямоугольника с включенным текстурированием фрагментный процессор может читать данные об изображении из текстурной памяти и накладывать их на прямоугольник, выполняя при этом обычные операции:

□ масштабирование пиксела;

□ масштабирование и смещение;

□ поиск в таблице цветов;

□ искривление;

□ обработку матрицы линейного преобразования.

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

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

На рис. 2.3 показаны входные и выходные значения фрагмеитного процессора.

г_| Полученные в результате растеризации

-----Непосредственно от приложения

---Косвенно от приложения И От фрагмеитного процессора Рис. 2.3. Входные и выходные данные фрагмеитного процессора Первичными входными данными для фрагмеитного процессора являются интерполированные в результате растеризации уагу^-переменные - как встроенные, так и определенные разработчиком. Определенные разработчиком уагу^-переменные должны быть определены внутри фрагмеитного шейдера, и их типы должны совпадать с типами, определенными в вершинном шейдере. Значения, вычисляемые стандартной функциональностью между вершинным и фрагмент-ным процессорами, доступны посредством специальных входных переменных.

Оконные координаты фрагмента и атрибут, обозначающий, был ли фрагмент сгенерирован для передней поверхности, передаются через входные переменные д1_РгадСоогс! и д!_Ргот:Гас1пд.


⇐ Предыдущая| |Следующая ⇒