15. Wolberg G. Digital Image Warping. Wiley-IEEE Press, 2002.

Сравнение языков программирования

Язык шейдеров OpenGL, без сомнения, является ведущим языком шейдеров. Рассмотрим в этой главе несколько других языков шейдеров и сравним их с языком шейдеров OpenGL. Диаграммы, приведенные в этой главе, можно сравнивать с моделью работы языка шейдеров OpenGL (см. рис. 2.4).

7.1. Хронология возникновения ейдерных языков

Роб Кук и Кен Перлин обычно всегда принимают участие в разработке языков шейдеров, они работают с неинтерактивными системами. Перлин работал над функцией шума и управляющими структурами. Кук, работая в компании Lucasfilm (позже в Pixar), классифицировал шейдеры на шейдеры поверхности, шейдеры освещения, шейдеры атмосферы и т. д. и описал, как работает каждый, с помощью математических выражений. В результате был разработан полноценный язык программирования для описания вычислений, работу над которым продолжил Пат Хенрехен. Эта работа завершилась в 1988 г. выпуском компанией Pixar первой версии спецификации языка RenderMan. Впоследствии RenderMan фактически стал стандартом для систем рендеринга, используемых в отрасли развлечений. Он и сейчас широко используется.

Первый интерактивный язык шейдеров был представлен в университете Северной Каролины (UNC) на параллельной графической архитектуре, называемой PixelFlow, которая была разработана в 90-х гг. Этот язык шейдеров мог выполнять рендеринг сцен процедурно в количестве 30 кадров в секунду или даже больше. Язык шейдеров этой системы был описан Марком Олано в 1998 г.

После ухода из UNC Марк Олано присоединился к группе разработчиков компании SGI, занимающейся определением и реализацией интерактивного языка шейдеров, который бы работал на основе OpenGL и использовал многопроходные методы рендеринга для выполнения шейдеров. Эта работа завершилась в 2000 г. выпуском продукта от SGI, названного OpenGL Shader, который стал первым коммерческим продуктом подобного рода.

В июне 1999 г. лаборатория компьютерной графики в Стэнфорде начала работу над определением языка шейдеров реального времени, код которого мог бы выполняться на графическом акселераторе. Этот язык был назван « Стэнфорд -ский язык шейдеров реального времени». Результаты были показаны в 2001 г.

Язык шейдеров OpenGL, HLSL от Microsoft, Cg от NVIDIA являются примерами коммерчески жизнеспособных высокоуровневых языков шейдеров реального времени. Доклад о языке, который позже и стал языком шейдеров OpenGL, опубликован в октябре 2001 г. Дэйвом Болдуином. Спецификация Cg была опубликована в июне 2002 г., а спецификация HLSL - в ноябре 2002 г. как часть бета-версии DirectX 9.0 SDK. При этом происходил и некоторый обмен идеями между компаниями, так что языки в чем-то похожи.

В следующих разделах сравним язык шейдеров OpenGL с другими коммерческими высокоуровневыми языками шейдеров.

17.2. Язык RenderMan

В 1998 г., после нескольких лет разработки, компания Pixar опубликовала спецификацию языка RenderMan (рис. 17.1). Это был интерфейс, в котором определялись формат передаваемых сообщений, соглашения и правила сообщения программ моделирования и программ рендеринга, конечной целью применения которого является получение фотореалистичных изображений. Эта спецификация сразу нашла при-менение, и очень успешное, в мультипликации. Интерфейс RenderMan использовался для создания спецэффектов в фильмах «Парк юрского периода», «Звездные войны. Эпизод 1», «Властелин колец: две башни» и др., а также в мультфильмах «В поисках Немо», «Сказка об игрушках», «Жизнь насекомых» и «Корпорация монстров».


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