Unity 6.3
0 онлайн 25 гостей 3 в системе
Вход

Образец пользовательского значения

Используйте пример Renderer Shader User Value в проекте URP или HDRP, чтобы изучить реализацию и эффекты функции RSUV в различных заранее настроенных сценах.

Импорт образца

  1. Создать или использовать проект, основанный на URP или HDRP.
  2. Откройте окно Package Manager.
  3. В списке пакетов найдите и выберите пакет, соответствующий текущему конвейеру отображения (Universal или High Definition).
  4. Выберите вкладку Образцы.
  5. Найти Образец значения пользователя и выберите Импорт.

Содержание образца

Образец включает две сцены и некоторые помощники для оптимизации процесса упаковки/распаковки данных с 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 сцена

Вид Game сцены LookDev, отображающей солдата в Т-позе, и окно Inspector, отображающее свойства для изменения внешности солдата с помощью RSUV.
Вид Game сцены LookDev, отображающей солдата в Т-позе, и окно Inspector, отображающее свойства для изменения внешности солдата с помощью RSUV.

В этой сцене показан анимированный солдат с одной простой анимацией и двумя компонентами, предназначенными для передачи данных рендеру сетки с кожей. Эти компоненты используют функцию RSUV и позволяют настраивать рендеринг солдата с помощью различных методов:

  • Компонент Health RSUV использует простой четырехугольник вне геометрии солдата. Значение здоровья и непрозрачность столбца передаются с помощью RSUV. Здоровье персонажа отображается в шейдере путем манипулирования UVs и выборки градиента.

  • Тело RSUV компонент позволяет настраивать материал различными способами, например:
    • Цветовая палитра основана на UVoffset.
    • Показ/скрытие вершин на основе цветов вершин (установлено в DCC программном обеспечении, как blender).
    • Надувные вершины из центральной точки для изменения размера живота.

Сцена Агоры

Вид Game сцены Агоры, отображающий множество солдат, все с разными внешностями.
Вид Game сцены Агоры, отображающий множество солдат, все с разными внешностями.

Эта сцена включает в себя 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 является массивом текстур, а не отдельной текстурой, что позволяет изменить индекс анимации, чтобы нацелиться на другую текстуру в массиве текстур. Здесь одна текстура предназначена для анимации бездействия, а другая — для анимации прыжка.

Дополнительные ресурсы