logo
Вопросы      09/12/2021

Как пользоваться RenderDoc: инструкция для разработчика

Алексей Яременко BLOG

Сооснователь Stan’s Assets from KAPPS, Unity-разработчик

Мы в компании Stan’s Assets from KAPPS запускаем серию видео HOW TO, где будем объяснять и показывать, как пошагово решать задачи, когда рука тянется загуглить «как делать …?». В первом эпизоде я хочу познакомить вас с инструментом RenderDoc, и рассказать, как его используют Unity-разработчики. Публикуем текстовую версию! 

RenderDoc

Если кто-то из вас еще не знаком с тулзой RenderDoc – она распространяется по MIT-лицензии. Это значит, что мы можем использовать ее как в некоммерческих так, и в коммерческих проектах абсолютно бесплатно. Чтобы установить ее, просто выбираем операционную систему, на которой мы работаем, и далее следуем инструкции установщика.

Для начала пройдемся по объектам нашей демо-сцены, чтобы разобраться в специфике их шейдинга.

Обзор сцены

Объект №1 рендерится с помощью Textures Blend Shader. То есть у нас есть две альбедо-текстурыТекстуры, содержащие независимую информацию о цвете и маска. Используя Blend Value Slider, мы можем повлиять на то, каким образом блендятсяОт англ. to blend — смешивать наши альбедо-текстуры, учитывая, конечно же, бленд-маску.


Объект №2 рендерится с помощью дефолтного Unity Surface Shader. Тут есть альбедо-текстура с тайлинг- и офсет-параметрами. Также есть Smoothness Metallic Property. Специфика этого объекта в том, что на него влияет освещение в сцене. Это значит, что остальные объекты не кастятОт англ. to cast — отбрасывать тени, а на объект №2 влияют любые источники света, которые могут быть в сцене.

Рассмотрим объект №3. Его специфика в том, что он рендерится с помощью Multi-Pass Shader.

Pass №1 выглядит достаточно просто. Он выводит всего лишь Back Color, который мы укажем в Property шейдера. Также есть Pass №2, который порендерит часть геометрии, учитывая dissolve-текстуру, и main-текстуру. 

Логика работы Multiple-Pass Shader: есть наша main-текстура, есть dissolve-маска. Используя Mask Strength Slider мы видим, как розовый цвет или любой, который я выберу как Back Color, рендерится в Pass №1 и в Pass №2, выводится наша альбедо-текстура, учитывая dissolve-маску, которую мы указали. Эти три объекта — это opaqueнепрозрачная-геометрия нашей сцены.

Объект №4 рендерится с помощью Vert-Distortion Shader. Он использует преобразование вершин геометрии объекта, которого он рендерит. Также одна из его особенностей — то, что он рендерится в очереди прозрачных объектов. Это значит, что Unity порендерит сразу всю opaque (то есть непрозрачную геометрию), а потом порендерится вся коллекция объектов, которые имеют в своем материале шейдеры, отмеченные как transparent.

Онлайн-курс "B2B-продажі" від Laba.
Розробіть ефективну стратегію B2B-продажів за 11 занять: від воронки до партнерської програми.Лектор курсу — засновник консалтингової компанії, який має 15 років досвіду в продажах.
Дізнатись більше

Как подключить RenderDoc к Unity?

Сейчас мы подключим RenderDoc к моему Unity-редактору и посмотрим, чем же занимался GPUОт англ. graphics processing unit — графический процессор в процессе рендера нашего кадра. Я нажимаю правой кнопкой мыши на GameView Title и потом выбираю Load RenderDoc. 

Он очень быстро зааттачился, и мы видим дополнительную кнопку, которая говорит, что при нажатии будет захвачен текущий кадр Game View (Capture the current view and open in RenderDoc). 

Как выглядит отрисованный кадр в RenderDoc?

Я нажимаю кнопку Capture один раз и мы видим, как открывается RenderDoc — и сразу показано отрендеренное окно GameView вместе с его тайтлом окна Unity. Мы кликаем два раза на это окно и видим список всех ивентов, которые происходили в процессе рендера всего кадра. Нам не очень интересны все вызовы рендера GUI, которые в верхней панели окна. Нам интересен вызов Camera.Render.

Если перейти на ивент Drawing, то мы видим, что Unity рендерит сразу opaque-геометрию, а потом transparent-геометрию. Как просмотреть прохождение всего цикла Render Pipeline? У нас есть несколько табов в RenderDoc.

Начнем с рассмотрения Pipeline State. Тут мы можем пройтись по всем этапам пайплайна и посмотреть, какие графические буферы какими данными были заполнены в процессе рендера нашего кадра (Vertex Shader, Pixel Shader, Rasterizer и остальные).

Практичний інтенсивний курс з дизайну - Design Booster від Powercode academy.
Навчіться дизайну з нуля за 3 місяці і заробляйте перші $1000, навіть якщо ви не маєте креативного мислення, смаку або вміння малювати. Отримайте практичні навички, необхідні для успішної кар'єри в дизайні.
Зарееструватися

Самый интересный таб — это Texture Viewer. Мы видим, что в ивенте Render.OpaqueGeometry у нас отрендерена вся opaque (то есть непрозрачная геометрия). В ивенте Render.TransparentGeometry добавился наш четвертый объект, который является прозрачной геометрией.

Теперь мы разворачиваем Opaque Geometry Render и смотрим RenderLoopJob. Тут мы видим, что самым первым отрабатывает Pass №1 шейдера, с которым рендерится куб (у которого Multiple-Pass Shader).

Дальше мы видим рендер нашего робота и входные данные, которые были переданы Unity на GPU (текстура, карта теней — потому что на этот объект влияет свет и он кастит тень). Также передаются остальные текстуры, которые сопутствуют при рендере объекта в Unity.

Дальше рендерится наш робот №2. Тут нет никак дополнительных текстур, кроме тех, которые мы с вами обсудили, потому что на него не влияет свет и он не кастит тени. И последним выводом геометрии является Pass №2 шейдера куба. При рендере transparent-геометрии мы видим нашу маску (flag mask) и main-текстуру.

Вкладка MeshViewer

Что еще интересного мы можем увидеть в RenderDoc? Если посмотреть в Mesh Viewer, мы увидим геометрию, которая была использована при рендере объекта. Если выбрать что-то из других объектов, мы увидим полный Mesh нашего робота, точно такой же, как будто мы видели его тут в Shaded Wireframe режиме отображения сцены в Scene View Unity.

Помимо этого, мы увидим все вершины, которые фактически присутствуют в этом Mesh. Другие свойства мы можем посмотреть в Pipeline State, как и любые другие Command Buffers, которые были переданы на GPU с Unity.

Итоги

Если вы хотите более детально разобраться в специфике работы RenderDoc, вы можете обратится к официальной документации. Также делимся ссылкой на архив с этим демо-проектом. Дерзайте!

Онлайн-курс "Фінансовий аналіз" від Laba.
Опануйте звітність — від збору даних до обробки результатів, та інтерпретуйте дані ключових звітів CF, BS, P&L зрозумілою мовою.
Детальніше про курс

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн-курс "English for Designers" від Vocabulaba.
Навчіться описувати деталі своєї роботи, формувати CV англійською та вільно обговорювати флоу проєктів із замовниками.
Детальніше про курс

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: