Программирование Шейдеровв...
Transcript of Программирование Шейдеровв...
![Page 1: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/1.jpg)
ПрограммированиеШейдеров вRenderMonkey™
Наталья Татарчук3D Application Research GroupATI Research, Inc.
![Page 2: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/2.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Обзор Материала• Обзор RenderMonkey™ IDE:
– Цели разработки и причина появления программы
– Обзор интегрированой среды для разработки шейдеров
– Обзор структуры данных для создания эффектов
• Примеры создавания шейдеров
• Заключение
![Page 3: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/3.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Создана Для Улучшения Жизни Разработчиков Игр
• Отсутствие инструментальных средств для полноценной разработки шейдеров
– Шейдеры – это большее, чем просто комманд на ассемблере
– Нет хороших инструментов для экспериментации
• Отсутствие гибкой инфраструктуры для интегрирования с существующими инструментальными средствами (включая внутренние разработки)
– Нужен стандартный механизм для распространения визуальных эффектов на основе шейдеров
![Page 4: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/4.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Допольнительные Цели Создания RenderMonkey• Разрешить многие сложности при разработке эффектов для новейшего «железа»
– Поддержка HLSL– Интерактивная разработка шейдеров
• Создать инструментальное средство для программистов и художников одновременно
– Необходим посредственник между художниками и программистами
– Простой, интуитивный интерфейс
• Создать гибкую интегрированную среду для разработки шейдеров
– Модульная архитектура– Возможность интеграции с любыми другими программами
![Page 5: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/5.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Легко Расширяемая Структура
• Гибкая разработка структуры среды
• Легко интегрировать существующие APIs
• Поддерживает DirectX® 8.1 и DirectX® 9.0 в версиях программы 0.52 и 0.9
• Версия 0.9 Бета RenderMonkey поддерживает стандартныйязык высокого уровня для программирования шейдеров HLSL от Microsoft
• В будущем будут поддерживаться готовящиеся стандарты других языков высокого уровня для программирования шейдеров:
• OpenGL GL2 Shading Language
![Page 6: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/6.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Самый Лучший Интерфейс – Наш Интерфейс! ☺
![Page 7: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/7.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
БроузерЭффектов:
Workspace View
![Page 8: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/8.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
Oкно для выводаслужебных сообщений:
Output Window
![Page 9: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/9.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
Окно для изображенияэффектов:
Preview Window
![Page 10: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/10.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkeyОкна редактирования:
Editor Windows
![Page 11: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/11.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
ИнтерфейсХудожника:Artist Editor
![Page 12: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/12.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Организация Данных в RenderMonkey• Все данные находятся в едином документе
(‘Effect Workspace’)• Каждый ‘Effect Workspace’ состоит из:
– Групп эффектов (‘Effect Group(s) ‘)• Эффектов (‘Effect(s)’)
– Проходов (‘Pass(es)’)• Установок (‘Render States’)• Пиксельный и вершинный шейдерoв• Геометрические обьектов• Текстур
– Переменных (‘Variables’) • Переменные могут «жить» на любом уровне
– Узлов выборки вершинных потоков (‘stream mapping’)
![Page 13: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/13.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Использует XMLФормат Файлов• Позволяет простое описание данных
– Стандард индустрии – Потребитель может легко добавить новые фукциональные
возможности по надобности– Используйте freeware парсеры с интернета– Формат легко читается любым пользователем
• Файл содержит описание всей необходимой информации для создания визуального эффекта
– Код шейдеров– Установки (‘Render states’)– Информация об обьектах и текстурах
• Удобно импортировать/экспортировать из ваших форматов данных в наш (и наоборот):
– Используйте наш формат данных (run-time database) и парсер– Напишите экспортер / импортер plug-in
![Page 14: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/14.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Получайте Доступ к Вашим Данным для Эффекта• Все данные в эффектеорганизованы в видедревовидной структуры,просматривающейся в броузере эффектов‘Workspace View’
• Иконки помогают быстроидентифицировать типыданных
![Page 15: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/15.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Группа Эффектов• Контейнер для группировки эффектов
• Позволяет создание версий шейдеров для разных типов железа
• Группируйте шейдеры по их профилю и языку программирования
• Принцип группировки – в ваших руках
![Page 16: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/16.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Эффект• Сохраняет информацию, необходимую для создания конкретного эффекта
• Состоит из одного или нескольких проходов рисования (‘passes’)
• Наследует свойства от ‘DefaultEffect’а
– Отличное место для задания начальных установок эффекта
![Page 17: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/17.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Проход Рисования(‘Pass’)• Проходы рисования наследуют данные от предыдущих проходов в эффекте
– Первый проход наследует от ‘default effect’а
• Обычно, проход рисования включает:– Вершинный и пиксельный шейдеры (обязательны)– Блок установок (‘render state block’)
• Установки наследуются от прохода рисования к проходу– Текстурные обьекты
• Включает установки фильтрования текстур– Ссылки на обьект геометрии– Ссылка на узлы выборки вершинных потоков
– Так же может содержать переменные
• Различные проходы рисования могут использовать различные обьекты моделей
![Page 18: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/18.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Переменные• Параметеры для шейдеров
• Более естественный подход к использованию регистров констант
• Дайте приличные имена вашим регистрам!– Используйте информацию о типе переменных
• Изменяйте значения переменных с помощью удобного интерфейса
• Поддерживаемые типы переменных:– Матрицы- Вектора- Скалярные величины- Значения цвета- Текстуры
![Page 19: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/19.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Предопределенные Переменные
• Набор стандартных параметров для подсчета данных внутри шейдеров:
– Поддерживаемые матрицы:• View projection• View• Inverse view• Projection
– Поддерживаемые вектора:• Вектор направления обозревателя (‘View direction vector’)• Вектор позиции камеры (‘View position vector’)• Время ( ‘time’)• cos_time, sin_time, tan_time
![Page 20: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/20.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редакторы Переменных• Используется тип переменных для создания интерфейса:
– Color Editor: окно для редактирования цветов
– Vector Editor: окно для редактирования векторных величин
– Matrix Editor: окно для редактирования матриц
– Scalar Editor: окно для редактирования скалярных величин
![Page 21: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/21.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Разрабатывайте Шейдеры Используя Специализированные Редакторы• Позволяет групировать шейдеры из нескольких проходах рисования сразу в одном окне
• Синтаксические конструкции исходного кода шейдеров выделяются разными цветами
– Отдельные правила для шейдеров написанных на ассемблере и на языках высокого уровня
• Набирайте код, компилируйте и сразу увидите результаты ваших шейдеров!
![Page 22: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/22.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор для HLSL Шейдеров• Позволяет легко и быстро создавать мощные шейдеры
• Интуитивный интерфейс связывает переменные вашего эффекта с переменными и обьектами текстур в вашем шейдере
– Векторные, скалярные, матричные переменные и переменные цвета – к параметрам переменных шейдера
– Одно-, двух-, трехмерные и кубические текстурные обьекты - к обьектам сэмплеров
• Интерфейс позволяет легко изменять версию компилируемого шейдера, а так же главную функцию
![Page 23: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/23.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор Ассемблерных Шейдеров• Удобный интерфейс позволяет подсоединять переменные RenderMonkey к векторным регистрам вашего шейдера
• Специальные синтаксические правила выделяют команды ассемблера
![Page 24: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/24.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Окно Вывода Сообщений• В окно выводятся все служебные сообщения программы для пользователя. Они включают:
– Результаты компиляции шейдеров (включая сообщения об ошибках компиляции)
– Программные сообщения
• Напрямую подключено к редакторам шейдеров для показа ошибок компиляции
![Page 25: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/25.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Вывод Ошибок Компиляции Шейдеров
• Ошибки выводятся в окно для служебных сообщений
• Кликнув дважды на на определенную ошибку, исходная строка в шейдере выделяется в редакторе ярким красным цветом
![Page 26: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/26.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерактивная Визуализация Эффектов• Все изменения шейдеровили их параметров мгновенно передаются в систему вывода изображения
• DirectX® 9.0– HAL / REF
![Page 27: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/27.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Поддержка Моделей Шейдеров
• Шейдеры на ассемблере
– Вершинные шейдеры версий 1.0/1.1 – 2.0– Пиксельные шейдеры версий 1.0/1.1/1.3/1.4 – 2.0
• Встроенная поддержка языка HLSL
![Page 28: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/28.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Выборка Вершинных Потоков (Stream Mapping )• Используйте Редактор Выборки ВершинныхПотоков
• Узел потоков может быть создан на любом уровне древовидной структуры эффекта
• Один и тот же узел может быть использован несколькими эффектами одновременно
• Каждый проход рисования должен создавать ссылку на узел выборки потоков (stream mapping reference node)
![Page 29: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/29.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Использование Текстур
• Текстурные переменные могут быть использованными разными эффектами одновременно
• Программа поддерживает форматы текстур:– Одно- и двухмерные текстуры (JPEG, TGA, BMP
formats)– Кубические текстуры (в формате DDS)– Трехмерные (обьемные) текстуры (в формате DDS)– Динамически созданные текстуры (renderable textures)
• Текстурные обьекты принадлежат определенному проходу рисования. Они:
– Содержат ссылку на текстурную переменную для сэмплинга– Включают установки фильтрования текстур
![Page 30: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/30.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор Блока Установок Рисования (Render State Editor)• Установкинаследуются:
– От начального (‘default’) эффекта
– От предыдущих проходов рисования в эффекте
• Отличный инструмент для изучения результатов изменения установок при рендеренге
![Page 31: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/31.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Позволяет Рисовать в Динамически Созданную Текстуру• Интуитивный интерфейс для вывода результата рендеринга в динамическую текстуру
• Отдельная текстурная переменная:
– Renderable Texture
• Результат прохода рисования направляется в текстуру через обьект рендеринга:
– Используйте цель рисования (‘render target’)
• Все параметры легко изменяются в специализиванных редакторах
– Render Target Editor– Renderable Texture Editor
![Page 32: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/32.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Разрабатывайте Шейдеры с Вашими Художниками и Дизайнерами• Используйте Интерфейс Художника для разработки шейдеров:
– Позволяет вашим художникам и дезайнерам осознать всю мощь вершинных и пиксельных шейдеров и создать отличные визуальные эффекты
– Программисты и Художники Мира – Обьединяйтесь! И живите дружно! (используя наш интерфейс)
• Рассматривайте эффекты в вашем файле в режиме Художника (Art tab в броузере эффектов)
– Отфильтровывайте данные, которые необходимы художникам– Программисты задают, какие параметры могут быть изменены
художниками и дизайнерами
• Все изменения – мгновенно интерактивны
![Page 33: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/33.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс Художника
![Page 34: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд](https://reader035.fdocuments.net/reader035/viewer/2022081407/604efb1c08f25533e60c59b6/html5/thumbnails/34.jpg)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Ресурсы Для Разработчиков от ATI • Все презентации, созданные нашими разработчиками находятся на веб-сайте компании:
– www.ati.com/developer
• Загрузите программуRenderMonkey™:
– Полный комплект документации– www.ati.com/developer/sdk/radeonSDK/html/Tools/RenderMonkey.html
• Выучите язык высокого уровня программирования шейдеров просмотрев High Level Shading With DirectX 9 ® on ATI’s RADEONTM 9700 Series семинар на интернете:
– http://www.ati.com/developer