Программировать их было интересно, но иногда это совсем изводило. Я был далеко не единственным, кто прилагал большие усилия для написания низкоуровневого кода, который бы выполнялся над каждым пикселом. Другая группа разработчиков проекта Pixel-Planes разработала ассемблер для шейдерного кода, позволявший упростить его написание, хотя создать хороший шейдер все равно было трудно. Шейдеры знакомы каждому, кто видел демонстрационные программы любого из последних графических программных продуктов, и он не будет удивлен, обнаружив варианты некоторых из них в этой книге: шейдеры для создания дерева, облаков, кирпичной стены, каменной поверхности, воды с отражением и волнами и, конечно же, набор фракталов Мандельброта.
Полученные результаты и трудности, проявившиеся при создании шейдеров Pixel-Planes 5, привели к тому, что некоторые модели и решения были заимствованы при.разработке следующей графической машины, PixelFlow. PixelFlow была спроектирована и реализована совместно университетом и компанией, сначала Division, потом Hewlett-Packard. В результате получилась первая интерактивная система, способная работать с процедурными шейдерами, скомпилированными из кода на высокоуровневом языке шейдеров. PixelFlow демонстрировалась на конференции SIGGRAPH в 1997 г. Несколько лет спустя, если бы вам повезло попасть в компанию UNC, вы могли бы писать процедурные шейдеры и запускать их в режиме реального времени, в то время как никто другой еще не мог этого делать. И, конечно же, это было единственное место, где их можно было увидеть в действии.
Я покинул UNC, перейдя в шейдерный проект, начатый компанией SGI, в надежде участвовать в создании языка шейдеров, который поддерживался бы на коммерческом уровне и мог использоваться более чем на одном компьютере в одном вычислительном центре. Тем временем в Стэнфорде начались работы над еще одним исследовательским проектом языка шейдеров. Его целью было добиться того, чтобы язык шейдеров мог работать на графическом аппаратном обеспечении уровня персонального компьютера. Все производители аппаратного обеспечения для персональных компьютеров начали придавать своей продукции низкоуровневые возможности. Очень скоро любой мог написать какой-либо шейдерный код, очень похожий на тот, что вдохновил меня во время работы над Pixel-Planes 5. И неудивительно, что повсюду заговорили о необходимости разработки высокоуровневого языка для интерактивного рисования.
Исследования в области возможностей применения и усовершенствования этих языков продолжились в моей лаборатории в университете Мэриленд, округ Балтимор, и во многих других местах. Однако простое существование высокоуровневых языков шейдеров реального времени больше не является предметом исследований. Интерактивные шейдерные языки стали доступны всем, Существует множество вариантов для любого, кто захочет разрабатывать приложения с использованием возможностей современного графического аппаратного обеспечения. Основные варианты выбора - Cg, HLSL и язык шейдеров OpenGL. Отличительная особенность последнего - в том, что это единственный язык шейдеров, который тщательно анализировался и оценивался производителями аппаратного обеспечения. Я участвовал в этом процессе вместе с парой дюжин представителен множества компаний и университетов.