Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
ПрограммированиеШейдеров вRenderMonkey™
Наталья Татарчук3D Application Research GroupATI Research, Inc.
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Обзор Материала• Обзор RenderMonkey™ IDE:
– Цели разработки и причина появления программы
– Обзор интегрированой среды для разработки шейдеров
– Обзор структуры данных для создания эффектов
• Примеры создавания шейдеров
• Заключение
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Создана Для Улучшения Жизни Разработчиков Игр
• Отсутствие инструментальных средств для полноценной разработки шейдеров
– Шейдеры – это большее, чем просто комманд на ассемблере
– Нет хороших инструментов для экспериментации
• Отсутствие гибкой инфраструктуры для интегрирования с существующими инструментальными средствами (включая внутренние разработки)
– Нужен стандартный механизм для распространения визуальных эффектов на основе шейдеров
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Допольнительные Цели Создания RenderMonkey• Разрешить многие сложности при разработке эффектов для новейшего «железа»
– Поддержка HLSL– Интерактивная разработка шейдеров
• Создать инструментальное средство для программистов и художников одновременно
– Необходим посредственник между художниками и программистами
– Простой, интуитивный интерфейс
• Создать гибкую интегрированную среду для разработки шейдеров
– Модульная архитектура– Возможность интеграции с любыми другими программами
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Легко Расширяемая Структура
• Гибкая разработка структуры среды
• Легко интегрировать существующие APIs
• Поддерживает DirectX® 8.1 и DirectX® 9.0 в версиях программы 0.52 и 0.9
• Версия 0.9 Бета RenderMonkey поддерживает стандартныйязык высокого уровня для программирования шейдеров HLSL от Microsoft
• В будущем будут поддерживаться готовящиеся стандарты других языков высокого уровня для программирования шейдеров:
• OpenGL GL2 Shading Language
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Самый Лучший Интерфейс – Наш Интерфейс! ☺
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
БроузерЭффектов:
Workspace View
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
Oкно для выводаслужебных сообщений:
Output Window
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
Окно для изображенияэффектов:
Preview Window
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkeyОкна редактирования:
Editor Windows
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс RenderMonkey
ИнтерфейсХудожника:Artist Editor
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Организация Данных в RenderMonkey• Все данные находятся в едином документе
(‘Effect Workspace’)• Каждый ‘Effect Workspace’ состоит из:
– Групп эффектов (‘Effect Group(s) ‘)• Эффектов (‘Effect(s)’)
– Проходов (‘Pass(es)’)• Установок (‘Render States’)• Пиксельный и вершинный шейдерoв• Геометрические обьектов• Текстур
– Переменных (‘Variables’) • Переменные могут «жить» на любом уровне
– Узлов выборки вершинных потоков (‘stream mapping’)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Использует XMLФормат Файлов• Позволяет простое описание данных
– Стандард индустрии – Потребитель может легко добавить новые фукциональные
возможности по надобности– Используйте freeware парсеры с интернета– Формат легко читается любым пользователем
• Файл содержит описание всей необходимой информации для создания визуального эффекта
– Код шейдеров– Установки (‘Render states’)– Информация об обьектах и текстурах
• Удобно импортировать/экспортировать из ваших форматов данных в наш (и наоборот):
– Используйте наш формат данных (run-time database) и парсер– Напишите экспортер / импортер plug-in
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Получайте Доступ к Вашим Данным для Эффекта• Все данные в эффектеорганизованы в видедревовидной структуры,просматривающейся в броузере эффектов‘Workspace View’
• Иконки помогают быстроидентифицировать типыданных
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Группа Эффектов• Контейнер для группировки эффектов
• Позволяет создание версий шейдеров для разных типов железа
• Группируйте шейдеры по их профилю и языку программирования
• Принцип группировки – в ваших руках
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Эффект• Сохраняет информацию, необходимую для создания конкретного эффекта
• Состоит из одного или нескольких проходов рисования (‘passes’)
• Наследует свойства от ‘DefaultEffect’а
– Отличное место для задания начальных установок эффекта
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Проход Рисования(‘Pass’)• Проходы рисования наследуют данные от предыдущих проходов в эффекте
– Первый проход наследует от ‘default effect’а
• Обычно, проход рисования включает:– Вершинный и пиксельный шейдеры (обязательны)– Блок установок (‘render state block’)
• Установки наследуются от прохода рисования к проходу– Текстурные обьекты
• Включает установки фильтрования текстур– Ссылки на обьект геометрии– Ссылка на узлы выборки вершинных потоков
– Так же может содержать переменные
• Различные проходы рисования могут использовать различные обьекты моделей
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Переменные• Параметеры для шейдеров
• Более естественный подход к использованию регистров констант
• Дайте приличные имена вашим регистрам!– Используйте информацию о типе переменных
• Изменяйте значения переменных с помощью удобного интерфейса
• Поддерживаемые типы переменных:– Матрицы- Вектора- Скалярные величины- Значения цвета- Текстуры
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Предопределенные Переменные
• Набор стандартных параметров для подсчета данных внутри шейдеров:
– Поддерживаемые матрицы:• View projection• View• Inverse view• Projection
– Поддерживаемые вектора:• Вектор направления обозревателя (‘View direction vector’)• Вектор позиции камеры (‘View position vector’)• Время ( ‘time’)• cos_time, sin_time, tan_time
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редакторы Переменных• Используется тип переменных для создания интерфейса:
– Color Editor: окно для редактирования цветов
– Vector Editor: окно для редактирования векторных величин
– Matrix Editor: окно для редактирования матриц
– Scalar Editor: окно для редактирования скалярных величин
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Разрабатывайте Шейдеры Используя Специализированные Редакторы• Позволяет групировать шейдеры из нескольких проходах рисования сразу в одном окне
• Синтаксические конструкции исходного кода шейдеров выделяются разными цветами
– Отдельные правила для шейдеров написанных на ассемблере и на языках высокого уровня
• Набирайте код, компилируйте и сразу увидите результаты ваших шейдеров!
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор для HLSL Шейдеров• Позволяет легко и быстро создавать мощные шейдеры
• Интуитивный интерфейс связывает переменные вашего эффекта с переменными и обьектами текстур в вашем шейдере
– Векторные, скалярные, матричные переменные и переменные цвета – к параметрам переменных шейдера
– Одно-, двух-, трехмерные и кубические текстурные обьекты - к обьектам сэмплеров
• Интерфейс позволяет легко изменять версию компилируемого шейдера, а так же главную функцию
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор Ассемблерных Шейдеров• Удобный интерфейс позволяет подсоединять переменные RenderMonkey к векторным регистрам вашего шейдера
• Специальные синтаксические правила выделяют команды ассемблера
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Окно Вывода Сообщений• В окно выводятся все служебные сообщения программы для пользователя. Они включают:
– Результаты компиляции шейдеров (включая сообщения об ошибках компиляции)
– Программные сообщения
• Напрямую подключено к редакторам шейдеров для показа ошибок компиляции
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Вывод Ошибок Компиляции Шейдеров
• Ошибки выводятся в окно для служебных сообщений
• Кликнув дважды на на определенную ошибку, исходная строка в шейдере выделяется в редакторе ярким красным цветом
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерактивная Визуализация Эффектов• Все изменения шейдеровили их параметров мгновенно передаются в систему вывода изображения
• DirectX® 9.0– HAL / REF
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Поддержка Моделей Шейдеров
• Шейдеры на ассемблере
– Вершинные шейдеры версий 1.0/1.1 – 2.0– Пиксельные шейдеры версий 1.0/1.1/1.3/1.4 – 2.0
• Встроенная поддержка языка HLSL
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Выборка Вершинных Потоков (Stream Mapping )• Используйте Редактор Выборки ВершинныхПотоков
• Узел потоков может быть создан на любом уровне древовидной структуры эффекта
• Один и тот же узел может быть использован несколькими эффектами одновременно
• Каждый проход рисования должен создавать ссылку на узел выборки потоков (stream mapping reference node)
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Использование Текстур
• Текстурные переменные могут быть использованными разными эффектами одновременно
• Программа поддерживает форматы текстур:– Одно- и двухмерные текстуры (JPEG, TGA, BMP
formats)– Кубические текстуры (в формате DDS)– Трехмерные (обьемные) текстуры (в формате DDS)– Динамически созданные текстуры (renderable textures)
• Текстурные обьекты принадлежат определенному проходу рисования. Они:
– Содержат ссылку на текстурную переменную для сэмплинга– Включают установки фильтрования текстур
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Редактор Блока Установок Рисования (Render State Editor)• Установкинаследуются:
– От начального (‘default’) эффекта
– От предыдущих проходов рисования в эффекте
• Отличный инструмент для изучения результатов изменения установок при рендеренге
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
RenderMonkey Позволяет Рисовать в Динамически Созданную Текстуру• Интуитивный интерфейс для вывода результата рендеринга в динамическую текстуру
• Отдельная текстурная переменная:
– Renderable Texture
• Результат прохода рисования направляется в текстуру через обьект рендеринга:
– Используйте цель рисования (‘render target’)
• Все параметры легко изменяются в специализиванных редакторах
– Render Target Editor– Renderable Texture Editor
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Разрабатывайте Шейдеры с Вашими Художниками и Дизайнерами• Используйте Интерфейс Художника для разработки шейдеров:
– Позволяет вашим художникам и дезайнерам осознать всю мощь вершинных и пиксельных шейдеров и создать отличные визуальные эффекты
– Программисты и Художники Мира – Обьединяйтесь! И живите дружно! (используя наш интерфейс)
• Рассматривайте эффекты в вашем файле в режиме Художника (Art tab в броузере эффектов)
– Отфильтровывайте данные, которые необходимы художникам– Программисты задают, какие параметры могут быть изменены
художниками и дизайнерами
• Все изменения – мгновенно интерактивны
Программирование Шейдеров в RenderMonkey™ - КРИ 2003
Интерфейс Художника
Программирование Шейдеров в 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