□ Глава 16 представляет несколько шейдеров для изменения изображений, нарисованных с помощью OpenGL.
□ В главе 17 язык шейдеров OpenGL сравнивается с другими известными коммерческими шейдерными языками.
□ Приложение А содержит четкое описание грамматических правил языка шейдеров OpenGL.
□ Приложение Б содержит справочник по функциям OpenGL для работы с языком шейдеров OpenGL.
О примерах шейдеров
Примеры шейдеров, приведенные в этой книге, в первую очередь являются маленькими программами, демонстрирующими возможности языка OpenGL. Ни один из шейдеров не предполагает самого оптимального способа создания представленного эффекта. (На самом деле, оптимальные способы еще должны быть определены с использованием мощи и гибкости программируемого графического аппаратного обеспечения.) Теоретически возможно улучшить производительность любого шейдера, работающего на любой аппаратной базе. Качество изображения, создаваемого большинством шейдеров, можно улучшить, позаботившись о сглаживании неровностей изображения.
Исходный код этих шейдеров нагшсан таким образом, что (я надеюсь) представляет собой разумный компромисс между удобочитаемостью кода, переносимостью и скоростью выполнения. Читатель может учиться на этих шейдерах, а потом изменять их нужным образом для использования в собственных проектах.
За исключением изображений созданных шейдером игрушечных шариков (разработанного ATI Research, Inc. на аппаратном обеспечении от ATI), все иллюстрации этой книги были сделаны на первом графическом акселераторе, поддерживающем реализации языка шейдеров OpenGL от 3Dlabs Wildcat VP, В этой реализации - масса ограничений, так что в некоторых случаях шейдер хоть и запускается на конкретном оборудовании, но имеет некоторые отличительные особенности, зависящие от аппаратного обеспечения или драйвера. Улучшенные версии таких шейдеров рассматриваются и обсуждаются в этой книге. Я приложил немало усилий для того, чтобы представить «правильные» шейдеры вместо шейдеров с индивидуальными особенностями, возникающими во время работы на разной аппаратной базе, которые создавались для самой первой реализации. Са мые последние, лучшие версии шейдеров доступны на веб-сайте данной книги: http://3dshaders.com.
Работа над этой книгой происходила в то время, когда реализации языка шейдеров OpenGL находились на начальном этапе развития. Целью, которую я преследовал, выбирая примеры шейдеров, было представить работающие шейдеры, а не шейдеры, которые должны будут работать после того, как реализации начнут полностью поддерживать спецификацию языка шейдеров OpenGL. Примеры более сложных шейдеров - первые кандидаты на включение во вторую редакцию книги, так как они реализуют возможности, на данный момент не доступные ни в одной существующей реализации.
Опечатки
Я знаю, что эта книга может содержать ошибки, но я пытался свести их количество к минимуму. Пожалуйста, присылайте сообщения об ошибках по адресу: randi@3dshaders.com; список уже обнаруженных оншбок находится на сайте http:/ /3dshaders.com.