11.07.2015 Views

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

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

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

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Программиро<strong>в</strong>ание</strong><strong>Шейдеро<strong>в</strong></strong> <strong>в</strong>RenderMonkeyНаталья Татарчук3D Application Research GroupATI Research, Inc.


Обзор Материала• Обзор RenderMonkey IDE:– Цели разработки и причина поя<strong>в</strong>ления программы– Обзор интегриро<strong>в</strong>аной среды для разработкишейдеро<strong>в</strong>– Обзор структуры данных для создания эффекто<strong>в</strong>• Примеры созда<strong>в</strong>ания шейдеро<strong>в</strong>• Заключение<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


RenderMonkey Создана Для УлучшенияЖизни Разработчико<strong>в</strong> Игр• Отсутст<strong>в</strong>ие инструментальных средст<strong>в</strong> дляполноценной разработки шейдеро<strong>в</strong>– Шейдеры – это большее, чем просто комманд наассемблере– Нет хороших инструменто<strong>в</strong> для экспериментации• Отсутст<strong>в</strong>ие гибкой инфраструктуры дляинтегриро<strong>в</strong>ания с сущест<strong>в</strong>ующимиинструментальными средст<strong>в</strong>ами (<strong>в</strong>ключая<strong>в</strong>нутренние разработки)– Нужен стандартный механизм для распространения<strong>в</strong>изуальных эффекто<strong>в</strong> на осно<strong>в</strong>е шейдеро<strong>в</strong><strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Допольнительные ЦелиСоздания RenderMonkey• Разрешить многие сложности при разработкеэффекто<strong>в</strong> для но<strong>в</strong>ейшего «железа»– Поддержка HLSL– Интеракти<strong>в</strong>ная разработка шейдеро<strong>в</strong>• Создать инструментальное средст<strong>в</strong>о дляпрограммисто<strong>в</strong> и художнико<strong>в</strong> одно<strong>в</strong>ременно– Необходим посредст<strong>в</strong>енник между художниками ипрограммистами– Простой, интуити<strong>в</strong>ный интерфейс• Создать гибкую интегриро<strong>в</strong>анную среду дляразработки шейдеро<strong>в</strong>– Модульная архитектура– Возможность интеграции с любыми другимипрограммами<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Легко Расширяемая Структура• Гибкая разработка структуры среды• Легко интегриро<strong>в</strong>ать сущест<strong>в</strong>ующие APIs• Поддержи<strong>в</strong>ает DirectX® 8.1 и DirectX® 9.0 <strong>в</strong> <strong>в</strong>ерсияхпрограммы 0.52 и 0.9• Версия 0.9 Бета RenderMonkey поддержи<strong>в</strong>ает стандартныйязык <strong>в</strong>ысокого уро<strong>в</strong>ня для программиро<strong>в</strong>ания шейдеро<strong>в</strong>HLSL от Microsoft• В будущем будут поддержи<strong>в</strong>аться гото<strong>в</strong>ящиеся стандартыдругих языко<strong>в</strong> <strong>в</strong>ысокого уро<strong>в</strong>ня для программиро<strong>в</strong>анияшейдеро<strong>в</strong>:• OpenGL GL2 Shading Language<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Самый Лучший Интерфейс – НашИнтерфейс! ☺<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс RenderMonkeyБроузерЭффекто<strong>в</strong>:Workspace View<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс RenderMonkeyOкно для <strong>в</strong>ы<strong>в</strong>одаслужебныхсообщений:Output Window<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс RenderMonkeyОкно дляизображенияэффекто<strong>в</strong>:Preview Window<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс RenderMonkeyОкна редактиро<strong>в</strong>ания:Editor Windows<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс RenderMonkeyИнтерфейсХудожника:Artist Editor<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Организация Данных <strong>в</strong> RenderMonkey• Все данные находятся <strong>в</strong> едином документе(‘Effect Workspace’)• Каждый ‘Effect Workspace’ состоит из:– Групп эффекто<strong>в</strong> (‘Effect Group(s) ‘)• Эффекто<strong>в</strong> (‘Effect(s)’)– Проходо<strong>в</strong> (‘Pass(es)’)• Устано<strong>в</strong>ок (‘Render States’)• Пиксельный и <strong>в</strong>ершинный шейдерo<strong>в</strong>• Геометрические обьекто<strong>в</strong>• Текстур– Переменных (‘Variables’)• Переменные могут «жить» на любом уро<strong>в</strong>не– Узло<strong>в</strong> <strong>в</strong>ыборки <strong>в</strong>ершинных потоко<strong>в</strong> (‘stream mapping’)<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


RenderMonkey Использует XMLФормат Файло<strong>в</strong>• Поз<strong>в</strong>оляет простое описание данных– Стандард индустрии– Потребитель может легко доба<strong>в</strong>ить но<strong>в</strong>ые фукциональные<strong>в</strong>озможности по надобности– Используйте freeware парсеры с интернета– Формат легко читается любым пользо<strong>в</strong>ателем• Файл содержит описание <strong>в</strong>сей необходимойинформации для создания <strong>в</strong>изуального эффекта– Код шейдеро<strong>в</strong>– Устано<strong>в</strong>ки (‘Render states’)– Информация об обьектах и текстурах• Удобно импортиро<strong>в</strong>ать/экспортиро<strong>в</strong>ать из <strong>в</strong>ашихформато<strong>в</strong> данных <strong>в</strong> наш (и наоборот):– Используйте наш формат данных (run-time database) и парсер– Напишите экспортер / импортер plug-in<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Получайте Доступ к ВашимДанным для Эффекта• Все данные <strong>в</strong> эффектеорганизо<strong>в</strong>аны <strong>в</strong> <strong>в</strong>идедре<strong>в</strong>о<strong>в</strong>идной структуры,просматри<strong>в</strong>ающейся <strong>в</strong>броузере эффекто<strong>в</strong>‘Workspace View’• Иконки помогают быстроидентифициро<strong>в</strong>ать типыданных<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Группа Эффекто<strong>в</strong>• Контейнер для группиро<strong>в</strong>киэффекто<strong>в</strong>• Поз<strong>в</strong>оляет создание <strong>в</strong>ерсийшейдеро<strong>в</strong> для разных типо<strong>в</strong>железа• Группируйте шейдеры по ихпрофилю и языкупрограммиро<strong>в</strong>ания• Принцип группиро<strong>в</strong>ки – <strong>в</strong> <strong>в</strong>ашихруках<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Эффект• Сохраняет информацию,необходимую для созданияконкретного эффекта• Состоит из одного илинескольких проходо<strong>в</strong> рисо<strong>в</strong>ания(‘passes’)• Наследует с<strong>в</strong>ойст<strong>в</strong>а от ‘DefaultEffect’а– Отличное место для заданияначальных устано<strong>в</strong>ок эффекта<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Проход Рисо<strong>в</strong>ания(‘Pass’)• Проходы рисо<strong>в</strong>ания наследуют данные от предыдущихпроходо<strong>в</strong> <strong>в</strong> эффекте– Пер<strong>в</strong>ый проход наследует от ‘default effect’а• Обычно, проход рисо<strong>в</strong>ания <strong>в</strong>ключает:– Вершинный и пиксельный шейдеры (обязательны)– Блок устано<strong>в</strong>ок (‘render state block’)• Устано<strong>в</strong>ки наследуются от прохода рисо<strong>в</strong>ания к проходу– Текстурные обьекты• Включает устано<strong>в</strong>ки фильтро<strong>в</strong>ания текстур– Ссылки на обьект геометрии– Ссылка на узлы <strong>в</strong>ыборки <strong>в</strong>ершинных потоко<strong>в</strong>– Так же может содержать переменные• Различные проходы рисо<strong>в</strong>ания могут использо<strong>в</strong>атьразличные обьекты моделей<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Переменные• Параметеры для шейдеро<strong>в</strong>• Более естест<strong>в</strong>енный подход к использо<strong>в</strong>анию регистро<strong>в</strong>констант• Дайте приличные имена <strong>в</strong>ашим регистрам!– Используйте информацию о типе переменных• Изменяйте значения переменных с помощью удобногоинтерфейса• Поддержи<strong>в</strong>аемые типы переменных:– Матрицы- Вектора- Скалярные <strong>в</strong>еличины- Значения ц<strong>в</strong>ета- Текстуры<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Предопределенные Переменные• Набор стандартных параметро<strong>в</strong> дляподсчета данных <strong>в</strong>нутри шейдеро<strong>в</strong>:– Поддержи<strong>в</strong>аемые матрицы:• View projection• View• Inverse view• Projection– Поддержи<strong>в</strong>аемые <strong>в</strong>ектора:• Вектор напра<strong>в</strong>ления обозре<strong>в</strong>ателя (‘View direction vector’)• Вектор позиции камеры (‘View position vector’)• Время ( ‘time’)• cos_time, sin_time, tan_time<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Редакторы Переменных• Используется тип переменных длясоздания интерфейса:– Color Editor: окно для редактиро<strong>в</strong>анияц<strong>в</strong>ето<strong>в</strong>– Vector Editor: окно дляредактиро<strong>в</strong>ания <strong>в</strong>екторных <strong>в</strong>еличин– Matrix Editor: окно для редактиро<strong>в</strong>анияматриц– Scalar Editor: окно дляредактиро<strong>в</strong>ания скалярных <strong>в</strong>еличин<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Разрабаты<strong>в</strong>айте ШейдерыИспользуя Специализиро<strong>в</strong>анныеРедакторы• Поз<strong>в</strong>оляет групиро<strong>в</strong>ать шейдеры из несколькихпроходах рисо<strong>в</strong>ания сразу <strong>в</strong> одном окне• Синтаксические конструкции исходного кодашейдеро<strong>в</strong> <strong>в</strong>ыделяются разными ц<strong>в</strong>етами– Отдельные пра<strong>в</strong>ила для шейдеро<strong>в</strong> написанных наассемблере и на языках <strong>в</strong>ысокого уро<strong>в</strong>ня• Набирайте код, компилируйте и сразу у<strong>в</strong>идитерезультаты <strong>в</strong>аших шейдеро<strong>в</strong>!<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Редактор для HLSL <strong>Шейдеро<strong>в</strong></strong>• Поз<strong>в</strong>оляет легко и быстросозда<strong>в</strong>ать мощные шейдеры• Интуити<strong>в</strong>ный интерфейсс<strong>в</strong>язы<strong>в</strong>ает переменные<strong>в</strong>ашего эффекта спеременными и обьектамитекстур <strong>в</strong> <strong>в</strong>ашем шейдере– Векторные, скалярные,матричные переменные ипеременные ц<strong>в</strong>ета – кпараметрам переменныхшейдера– Одно-, д<strong>в</strong>ух-, трехмерные икубические текстурные обьекты- к обьектам сэмплеро<strong>в</strong>• Интерфейс поз<strong>в</strong>оляет легкоизменять <strong>в</strong>ерсиюкомпилируемого шейдера, атак же гла<strong>в</strong>ную функцию<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Редактор Ассемблерных<strong>Шейдеро<strong>в</strong></strong>• Удобный интерфейспоз<strong>в</strong>оляет подсоединятьпеременныеRenderMonkey к<strong>в</strong>екторным регистрам<strong>в</strong>ашего шейдера• Специальныесинтаксические пра<strong>в</strong>ила<strong>в</strong>ыделяют командыассемблера<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Окно Вы<strong>в</strong>ода Сообщений• Вокно <strong>в</strong>ы<strong>в</strong>одятся <strong>в</strong>се служебные сообщения программыдля пользо<strong>в</strong>ателя. Они <strong>в</strong>ключают:– Результаты компиляции шейдеро<strong>в</strong> (<strong>в</strong>ключая сообщения об ошибкахкомпиляции)– Программные сообщения• Напрямую подключено к редакторам шейдеро<strong>в</strong> для показаошибок компиляции<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Вы<strong>в</strong>од Ошибок Компиляции<strong>Шейдеро<strong>в</strong></strong>• Ошибки <strong>в</strong>ы<strong>в</strong>одятся <strong>в</strong> окнодля служебных сообщений• Кликну<strong>в</strong> д<strong>в</strong>ажды на наопределенную ошибку,исходная строка <strong>в</strong>шейдере <strong>в</strong>ыделяется <strong>в</strong>редакторе ярким краснымц<strong>в</strong>етом<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интеракти<strong>в</strong>ная ВизуализацияЭффекто<strong>в</strong>• Все изменения шейдеро<strong>в</strong>или их параметро<strong>в</strong>мгно<strong>в</strong>енно передаются <strong>в</strong>систему <strong>в</strong>ы<strong>в</strong>одаизображения• DirectX® 9.0– HAL / REF<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Поддержка Моделей <strong>Шейдеро<strong>в</strong></strong>• Шейдеры на ассемблере– Вершинные шейдеры <strong>в</strong>ерсий 1.0/1.1 – 2.0– Пиксельные шейдеры <strong>в</strong>ерсий 1.0/1.1/1.3/1.4 – 2.0• Встроенная поддержка языка HLSL<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Выборка Вершинных Потоко<strong>в</strong>(Stream Mapping )• Используйте РедакторВыборки ВершинныхПотоко<strong>в</strong>• Узел потоко<strong>в</strong> может бытьсоздан на любом уро<strong>в</strong>недре<strong>в</strong>о<strong>в</strong>идной структурыэффекта• Один и тот же узел может быть использо<strong>в</strong>ан несколькимиэффектами одно<strong>в</strong>ременно• Каждый проход рисо<strong>в</strong>ания должен созда<strong>в</strong>ать ссылку наузел <strong>в</strong>ыборки потоко<strong>в</strong> (stream mapping reference node)<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Использо<strong>в</strong>ание Текстур• Текстурные переменные могут бытьиспользо<strong>в</strong>анными разными эффектамиодно<strong>в</strong>ременно• Программа поддержи<strong>в</strong>ает форматы текстур:– Одно- и д<strong>в</strong>ухмерные текстуры (JPEG, TGA, BMPformats)– Кубические текстуры (<strong>в</strong> формате DDS)– Трехмерные (обьемные) текстуры (<strong>в</strong> формате DDS)– Динамически созданные текстуры (renderable textures)• Текстурные обьекты принадлежат определенномупроходу рисо<strong>в</strong>ания. Они:– Содержат ссылку на текстурную переменную для сэмплинга– Включают устано<strong>в</strong>ки фильтро<strong>в</strong>ания текстур<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Редактор Блока Устано<strong>в</strong>окРисо<strong>в</strong>ания (Render State Editor)• Устано<strong>в</strong>кинаследуются:– От начального(‘default’) эффекта– От предыдущихпроходо<strong>в</strong> рисо<strong>в</strong>ания <strong>в</strong>эффекте• Отличный инструментдля изучениярезультато<strong>в</strong>изменения устано<strong>в</strong>окпри рендеренге<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


RenderMonkey Поз<strong>в</strong>оляет Рисо<strong>в</strong>ать<strong>в</strong> Динамически СозданнуюТекстуру• Интуити<strong>в</strong>ный интерфейс для<strong>в</strong>ы<strong>в</strong>ода результатарендеринга <strong>в</strong> динамическуютекстуру• Отдельная текстурнаяпеременная:– Renderable Texture• Результат прохода рисо<strong>в</strong>аниянапра<strong>в</strong>ляется <strong>в</strong> текстуручерез обьект рендеринга:– Используйте цельрисо<strong>в</strong>ания (‘render target’)• Все параметры легкоизменяются <strong>в</strong>специализи<strong>в</strong>анныхредакторах– Render Target Editor– Renderable Texture Editor<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Разрабаты<strong>в</strong>айте Шейдеры сВашими Художниками иДизайнерами• Используйте Интерфейс Художника для разработкишейдеро<strong>в</strong>:– Поз<strong>в</strong>оляет <strong>в</strong>ашим художникам и дезайнерам осознать <strong>в</strong>сю мощь<strong>в</strong>ершинных и пиксельных шейдеро<strong>в</strong> и создать отличные<strong>в</strong>изуальные эффекты– Программисты и Художники Мира – Обьединяйтесь! И жи<strong>в</strong>итедружно! (используя наш интерфейс)• Рассматри<strong>в</strong>айте эффекты <strong>в</strong> <strong>в</strong>ашем файле <strong>в</strong> режимеХудожника (Art tab <strong>в</strong> броузере эффекто<strong>в</strong>)– Отфильтро<strong>в</strong>ы<strong>в</strong>айте данные, которые необходимы художникам– Программисты задают, какие параметры могут быть измененыхудожниками и дизайнерами• Все изменения – мгно<strong>в</strong>енно интеракти<strong>в</strong>ны<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Интерфейс Художника<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003


Ресурсы Для Разработчико<strong>в</strong>от ATI• Все презентации, созданные нашими разработчикаминаходятся на <strong>в</strong>еб-сайте компании:– www.ati.com/developer• Загрузите программуRenderMonkey:– Полный комплект документации– www.ati.com/developer/sdk/radeonSDK/html/Tools/RenderMonkey.html• Выучите язык <strong>в</strong>ысокого уро<strong>в</strong>ня программиро<strong>в</strong>анияшейдеро<strong>в</strong> просмотре<strong>в</strong> High Level Shading With DirectX 9® on ATI’s RADEON TM 9700 Series семинар наинтернете:– http://www.ati.com/developer<strong>Программиро<strong>в</strong>ание</strong> <strong>Шейдеро<strong>в</strong></strong> <strong>в</strong> RenderMonkey - КРИ 2003

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!