netlib.narod.ru< Назад | Оглавление | Далее >

Глава 16. Введение в высокоуровневый язык шейдеров

В этой главе мы рассмотрим высокоуровневый язык программирования шейдеров (High-Level Shading Language, HLSL), который будем использовать для программирования вершинных и пиксельных шейдеров в следующих трех главах. Если коротко, вершинные и пиксельные шейдеры — это небольшие программы, которые вы пишете сами, и которые выполняются процессором видеокарты, заменяя часть функций фиксированного конвейера. Возможность заменять функции фиксированного конвейера собственными программами шейдеров открывает перед нами необозримые возможности реализации различных визуальных эффектов. Мы больше не ограничены предопределенными «фиксированными» операциями.

Для того, чтобы написать программу шейдера, нам необходим позволяющий сделать это язык программирования. В DirectX 8.x программы шейдеров можно было писать только на низкоуровневом языке ассемблера шейдеров. К счастью, нам больше не требуется писать шейдеры на языке ассемблера, поскольку DirectX 9 предоставляет предназначенный для написания шейдеров высокоуровневый язык программирования шейдеров (High-Level Shading Language). Использование для написания программ шейдеров HLSL вместо языка ассемблера дает те же преимущества, что и использование высокоуровневого языка, такого как С++, вместо ассемблера при написании приложений:

Синтаксис HLSL очень похож на синтакс C и C++, так что изучить этот язык будет достаточно просто.

Учтите, что если ваша видеокарта не поддерживает вершинные и пиксельные шейдеры, то для использующих шейдеры программ в коде надо выбирать устройство REF. Использование устройства REF означает, что примеры работы с шейдерами будут выполняться очень медленно, но при этом на экране будет отображаться корректный результат, позволяющий убедиться в правильности написанного кода.

ПРИМЕЧАНИЕ
Вершинные шейдеры могут эмулироваться программно, если при создании устройства включить программную обработку вершин, указав флаг D3DCREATE_SOFTWARE_VERTEXPROCESSING.

Цели
  • Узнать как написать и скомпилировать программу шейдера на HLSL.
  • Изучить, как выполняется обмен данными между приложением и программой шейдера.
  • Познакомиться с синтаксисом, типами и встроенными функциями HLSL.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz