ru:https://highload.today/blogs/how-to-use-renderdoc/ ua:https://highload.today/uk/blogs/how-to-use-renderdoc/
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.

Онлайн-курс "Арт Менеджер" від Skvot.
Навчіться шукати фінансування та планувати бюджет, керувати командою, запускати артпроєкти та пітчити їх так, щоб великі компанії захотіли колабитися.
Детальніше про курс

Как подключить 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 и остальные).

Онлайн-курс Pyton від Powercode academy.
Опануйте PYTHON з нуля та майте проект у своєму портфоліо вже через 4 місяця.
Приєднатися

Самый интересный таб — это 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, вы можете обратится к официальной документации. Также делимся ссылкой на архив с этим демо-проектом. Дерзайте!

Онлайн-курс "Режисура та візуальний сторітелінг" від Skvot.
Перетворюй свої ідеї на сильні історії в рекламі, кліпах чи кіно Досвідом ділиться режисер, продюсер та власник продакшену, який 10+ років у професії.
Детальніше про курс

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

Курс Power Skills For Tech від Enlgish4IT.
Зменшіть кількість непорозумінь на робочому місці та станьте більш ефективним у спілкуванні в мультикультурній команді. Отримайте знижку 10% за промокодом ITCENG.
Реєстрація на курс

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

Топ-5 самых популярных блогеров марта

PHP Developer в ScrumLaunch
Всего просмотровВсего просмотров
2434
#1
Всего просмотровВсего просмотров
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
113
#2
Всего просмотровВсего просмотров
113
Career Consultant в GoIT
Всего просмотровВсего просмотров
95
#3
Всего просмотровВсего просмотров
95
CEO & Founder в Trustee
Всего просмотровВсего просмотров
94
#4
Всего просмотровВсего просмотров
94
Рейтинг блогеров

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

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

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