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

Язык тендеров OpenGL должен преследовать следующие цели, □ Обеспечение хорошей совместимости с OpenGL.

Язык шейдеров OpenGL был создан специально для использования совместно с OpenGL. Он предоставляет программируемые альтернативы для некоторых частей стандартно]"; функциональности OpenGL. Поэтому и сам язык, и определяемые им программируемые процессоры должны иметь как минимум такую же функциональность, какую они заменят. Более того, из шейдера, по замыслу, легко получать доступ к текущим OpenGL-состояниям. Здесь легко также совмещать стандартную функциональность и программпруемость.

3 Зак 21S

Основы

□ Использование гибкости графических акселераторов ближайшего будущего.

Модели графических акселераторов, быстро меняются, и новые модели позволяют программировать обработку вершин и фрагментов. Чтобы использовать эту программируемое^, был создан высокоуровневый язык тендеров с необходимым уровнем абстракции для данной предметной области. В языке есть богатый набор встроенных функций, которые позволяют выполнять операции как над скалярными величинами, так и над векторами. Выражение возможностей аппаратного обеспечения через высокоуровневый язык программирования также помогло уменьшит!) количество расширений OpenGL, которые просто вносили небольшие изменения в стандартную функциональность. С появлением языка шейдеров, предоставляющего необходимый уровень абстракции, не зависящий от графического ускорителя, исчезает необходимость развивать и поддерживать такие частичные расширения OpenGL.

□ Предоставление независимости от графического ускорителя.

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


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