34
Программирование Шейдеров в RenderMonkey™ Наталья Татарчук 3D Application Research Group ATI Research, Inc.

Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

ПрограммированиеШейдеров вRenderMonkey™

Наталья Татарчук3D Application Research GroupATI Research, Inc.

Page 2: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Обзор Материала• Обзор RenderMonkey™ IDE:

– Цели разработки и причина появления программы

– Обзор интегрированой среды для разработки шейдеров

– Обзор структуры данных для создания эффектов

• Примеры создавания шейдеров

• Заключение

Page 3: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

RenderMonkey Создана Для Улучшения Жизни Разработчиков Игр

• Отсутствие инструментальных средств для полноценной разработки шейдеров

– Шейдеры – это большее, чем просто комманд на ассемблере

– Нет хороших инструментов для экспериментации

• Отсутствие гибкой инфраструктуры для интегрирования с существующими инструментальными средствами (включая внутренние разработки)

– Нужен стандартный механизм для распространения визуальных эффектов на основе шейдеров

Page 4: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Допольнительные Цели Создания RenderMonkey• Разрешить многие сложности при разработке эффектов для новейшего «железа»

– Поддержка HLSL– Интерактивная разработка шейдеров

• Создать инструментальное средство для программистов и художников одновременно

– Необходим посредственник между художниками и программистами

– Простой, интуитивный интерфейс

• Создать гибкую интегрированную среду для разработки шейдеров

– Модульная архитектура– Возможность интеграции с любыми другими программами

Page 5: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в 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/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Самый Лучший Интерфейс – Наш Интерфейс! ☺

Page 7: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс RenderMonkey

БроузерЭффектов:

Workspace View

Page 8: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс RenderMonkey

Oкно для выводаслужебных сообщений:

Output Window

Page 9: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс RenderMonkey

Окно для изображенияэффектов:

Preview Window

Page 10: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс RenderMonkeyОкна редактирования:

Editor Windows

Page 11: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс RenderMonkey

ИнтерфейсХудожника:Artist Editor

Page 12: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в 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/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

RenderMonkey Использует XMLФормат Файлов• Позволяет простое описание данных

– Стандард индустрии – Потребитель может легко добавить новые фукциональные

возможности по надобности– Используйте freeware парсеры с интернета– Формат легко читается любым пользователем

• Файл содержит описание всей необходимой информации для создания визуального эффекта

– Код шейдеров– Установки (‘Render states’)– Информация об обьектах и текстурах

• Удобно импортировать/экспортировать из ваших форматов данных в наш (и наоборот):

– Используйте наш формат данных (run-time database) и парсер– Напишите экспортер / импортер plug-in

Page 14: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Получайте Доступ к Вашим Данным для Эффекта• Все данные в эффектеорганизованы в видедревовидной структуры,просматривающейся в броузере эффектов‘Workspace View’

• Иконки помогают быстроидентифицировать типыданных

Page 15: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Группа Эффектов• Контейнер для группировки эффектов

• Позволяет создание версий шейдеров для разных типов железа

• Группируйте шейдеры по их профилю и языку программирования

• Принцип группировки – в ваших руках

Page 16: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Эффект• Сохраняет информацию, необходимую для создания конкретного эффекта

• Состоит из одного или нескольких проходов рисования (‘passes’)

• Наследует свойства от ‘DefaultEffect’а

– Отличное место для задания начальных установок эффекта

Page 17: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Проход Рисования(‘Pass’)• Проходы рисования наследуют данные от предыдущих проходов в эффекте

– Первый проход наследует от ‘default effect’а

• Обычно, проход рисования включает:– Вершинный и пиксельный шейдеры (обязательны)– Блок установок (‘render state block’)

• Установки наследуются от прохода рисования к проходу– Текстурные обьекты

• Включает установки фильтрования текстур– Ссылки на обьект геометрии– Ссылка на узлы выборки вершинных потоков

– Так же может содержать переменные

• Различные проходы рисования могут использовать различные обьекты моделей

Page 18: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Переменные• Параметеры для шейдеров

• Более естественный подход к использованию регистров констант

• Дайте приличные имена вашим регистрам!– Используйте информацию о типе переменных

• Изменяйте значения переменных с помощью удобного интерфейса

• Поддерживаемые типы переменных:– Матрицы- Вектора- Скалярные величины- Значения цвета- Текстуры

Page 19: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в 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/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Редакторы Переменных• Используется тип переменных для создания интерфейса:

– Color Editor: окно для редактирования цветов

– Vector Editor: окно для редактирования векторных величин

– Matrix Editor: окно для редактирования матриц

– Scalar Editor: окно для редактирования скалярных величин

Page 21: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Разрабатывайте Шейдеры Используя Специализированные Редакторы• Позволяет групировать шейдеры из нескольких проходах рисования сразу в одном окне

• Синтаксические конструкции исходного кода шейдеров выделяются разными цветами

– Отдельные правила для шейдеров написанных на ассемблере и на языках высокого уровня

• Набирайте код, компилируйте и сразу увидите результаты ваших шейдеров!

Page 22: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Редактор для HLSL Шейдеров• Позволяет легко и быстро создавать мощные шейдеры

• Интуитивный интерфейс связывает переменные вашего эффекта с переменными и обьектами текстур в вашем шейдере

– Векторные, скалярные, матричные переменные и переменные цвета – к параметрам переменных шейдера

– Одно-, двух-, трехмерные и кубические текстурные обьекты - к обьектам сэмплеров

• Интерфейс позволяет легко изменять версию компилируемого шейдера, а так же главную функцию

Page 23: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Редактор Ассемблерных Шейдеров• Удобный интерфейс позволяет подсоединять переменные RenderMonkey к векторным регистрам вашего шейдера

• Специальные синтаксические правила выделяют команды ассемблера

Page 24: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Окно Вывода Сообщений• В окно выводятся все служебные сообщения программы для пользователя. Они включают:

– Результаты компиляции шейдеров (включая сообщения об ошибках компиляции)

– Программные сообщения

• Напрямую подключено к редакторам шейдеров для показа ошибок компиляции

Page 25: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Вывод Ошибок Компиляции Шейдеров

• Ошибки выводятся в окно для служебных сообщений

• Кликнув дважды на на определенную ошибку, исходная строка в шейдере выделяется в редакторе ярким красным цветом

Page 26: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерактивная Визуализация Эффектов• Все изменения шейдеровили их параметров мгновенно передаются в систему вывода изображения

• DirectX® 9.0– HAL / REF

Page 27: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в 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/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Выборка Вершинных Потоков (Stream Mapping )• Используйте Редактор Выборки ВершинныхПотоков

• Узел потоков может быть создан на любом уровне древовидной структуры эффекта

• Один и тот же узел может быть использован несколькими эффектами одновременно

• Каждый проход рисования должен создавать ссылку на узел выборки потоков (stream mapping reference node)

Page 29: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Использование Текстур

• Текстурные переменные могут быть использованными разными эффектами одновременно

• Программа поддерживает форматы текстур:– Одно- и двухмерные текстуры (JPEG, TGA, BMP

formats)– Кубические текстуры (в формате DDS)– Трехмерные (обьемные) текстуры (в формате DDS)– Динамически созданные текстуры (renderable textures)

• Текстурные обьекты принадлежат определенному проходу рисования. Они:

– Содержат ссылку на текстурную переменную для сэмплинга– Включают установки фильтрования текстур

Page 30: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Редактор Блока Установок Рисования (Render State Editor)• Установкинаследуются:

– От начального (‘default’) эффекта

– От предыдущих проходов рисования в эффекте

• Отличный инструмент для изучения результатов изменения установок при рендеренге

Page 31: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

RenderMonkey Позволяет Рисовать в Динамически Созданную Текстуру• Интуитивный интерфейс для вывода результата рендеринга в динамическую текстуру

• Отдельная текстурная переменная:

– Renderable Texture

• Результат прохода рисования направляется в текстуру через обьект рендеринга:

– Используйте цель рисования (‘render target’)

• Все параметры легко изменяются в специализиванных редакторах

– Render Target Editor– Renderable Texture Editor

Page 32: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Разрабатывайте Шейдеры с Вашими Художниками и Дизайнерами• Используйте Интерфейс Художника для разработки шейдеров:

– Позволяет вашим художникам и дезайнерам осознать всю мощь вершинных и пиксельных шейдеров и создать отличные визуальные эффекты

– Программисты и Художники Мира – Обьединяйтесь! И живите дружно! (используя наш интерфейс)

• Рассматривайте эффекты в вашем файле в режиме Художника (Art tab в броузере эффектов)

– Отфильтровывайте данные, которые необходимы художникам– Программисты задают, какие параметры могут быть изменены

художниками и дизайнерами

• Все изменения – мгновенно интерактивны

Page 33: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в RenderMonkey™ - КРИ 2003

Интерфейс Художника

Page 34: Программирование Шейдеровв RenderMonkey™developer.amd.com/wordpress/media/2012/10/...– Шейдеры – это большее, чем просто комманд

Программирование Шейдеров в 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