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.

Курс GameDev-тестувальник.
Курс для тих, хто хоче познайомитись з роботою тестувальника в геймдеві. Опанувати воркфлоу спеціаліста, розширити скілсет і перетворити любов до ігор на професію.
Дійзнайтеся більше

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

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

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

3D-Ммодел У Blender.
Курс для тих, хто хоче швидко освоїти Blender та розпочати свій шлях у геймдеві.

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

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

Всего просмотровВсего просмотров
181
#1
Всего просмотровВсего просмотров
181
Senior Project Manager at Nemesis
Всего просмотровВсего просмотров
92
#2
Всего просмотровВсего просмотров
92
Software Architect at Devlify
Всего просмотровВсего просмотров
88
#3
Всего просмотровВсего просмотров
88
Всего просмотровВсего просмотров
68
#4
Всего просмотровВсего просмотров
68
Android Team Lead у Balancуй Team
Всего просмотровВсего просмотров
46
#5
Всего просмотровВсего просмотров
46
Рейтинг блогеров

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

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

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