Образец пользовательского значения
Используйте пример Renderer Shader User Value в проекте URP или HDRP, чтобы изучить реализацию и эффекты функции RSUV в различных заранее настроенных сценах.
Импорт образца
- Создать или использовать проект, основанный на URP или HDRP.
- Откройте окно Package Manager.
- В списке пакетов найдите и выберите пакет, соответствующий текущему конвейеру отображения (Universal или High Definition).
- Выберите вкладку Образцы.
- Найти Образец значения пользователя и выберите Импорт.
Содержание образца
Образец включает две сцены и некоторые помощники для оптимизации процесса упаковки/распаковки данных с RSUV.
| Файл | Описание | Путь |
|---|---|---|
Agora.unity и LookDev.unity |
Каждая сцена содержит Описание образца GameObject подробно объясняет, как это работает и как правильно настроить его. См. детали сцены в следующих разделах. | Assets/Samples/<your render pipeline>/<version>/Renderer Shader User Value Samples/Scenes |
HelpersRSUV.cs |
Содержит функции C#, помогающие упаковывать данные в uint. (страница CPU). | Assets/Samples/Scriptable Render Pipeline Core/<version>/RendererShaderUserValue_Common/Scripts |
HelpersRSUV.hlsl |
Содержит функции HLSL для декодирования данных непосредственно в графе шейдера Узел пользовательской функции. | Assets/Samples/Scriptable Render Pipeline Core/<version>/RendererShaderUserValue_Common/Scripts/CustomFunctions |
LookDev сцена
В этой сцене показан анимированный солдат с одной простой анимацией и двумя компонентами, предназначенными для передачи данных рендеру сетки с кожей. Эти компоненты используют функцию RSUV и позволяют настраивать рендеринг солдата с помощью различных методов:
Компонент Health RSUV использует простой четырехугольник вне геометрии солдата. Значение здоровья и непрозрачность столбца передаются с помощью RSUV. Здоровье персонажа отображается в шейдере путем манипулирования UVs и выборки градиента.
- Тело RSUV компонент позволяет настраивать материал различными способами, например:
- Цветовая палитра основана на UVoffset.
- Показ/скрытие вершин на основе цветов вершин (установлено в DCC программном обеспечении, как blender).
- Надувные вершины из центральной точки для изменения размера живота.
Сцена Агоры
Эта сцена включает в себя 100 экземпляров солдата из сцены LookDev.
- Солдаты имеют рандомизированную материальную особенность в начале, так что они всегда выглядят более или менее по-разному.
- Когда вы нажимаете на солдата в режиме игры, вы делаете их прыгать, что также делается с RSUV.
- Сцена использует GPU Resident Drawer (GRD), который позволяет SRP Batcher обрабатывать сто drawcalls в одной партии без разрыва.
В этой сцене солдат использует простой MeshRenderer и массив текстуры вершины Animation 2D вместо аниматора и комбинации SkinnedMeshRenderer, потому что GRD не совместим с аниматорами и мешами со скинами. Множественные экземпляры этих элементов нарушают пакетирование, даже с RSUV.
Эта версия солдата с Mesh Renderer и Vertex Animation Texture (VAT) использует всего один вызов отрисовки на материал (то есть только 4 вызова на всю сцену) и хорошо подходит, например, для отрисовки толпы. Чтобы это работало, убедитесь, что GRD настроен правильно.
Кроме того, VAT является массивом текстур, а не отдельной текстурой, что позволяет изменить индекс анимации, чтобы нацелиться на другую текстуру в массиве текстур. Здесь одна текстура предназначена для анимации бездействия, а другая — для анимации прыжка.