Как я могу пакетно рисовать сетки в моей сцене Unity? - PullRequest
0 голосов
/ 30 сентября 2018

Я использую Unity3d для отображения сцены дока there are thousands of container in my scene

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

instance = (GameObject)Instantiate(Resources.Load("Prefabs/box1"));
Material material = instance.GetComponent<MeshRenderer>().material;
material.color = new Color(r / 255f, g / 255f, b / 255f, 1f);

, затем gameObject s добавляются к сцене один за другим.Можно ли как-то пакетировать gameObject s и рисовать их один раз?

ОБНОВЛЕНИЕ: Я делаю некоторые изменения в своем сборном контейнере, чтобы включить инстансирование графического процессора.Да, вызовы отрисовки уменьшены с 6 КБ до 2 КБ динамическим пакетом.Но это вызывает другую проблему.Все контейнеры имеют одинаковый цвет, так как я использую

gameObject.GetComponent<MeshRenderer>().sharedMaterial.color = ContainerColor

, чтобы установить цвет контейнеров.Есть ли способ решить это?enter image description here

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Вы также можете использовать Graphics.DrawMeshInstanced.Он рисует сетки с использованием GPU.Но вы можете нарисовать не более 1023 экземпляров одновременно.Так что вам нужно добавить пользовательские партии.

https://docs.unity3d.com/2018.1/Documentation/ScriptReference/Graphics.DrawMeshInstanced.html

0 голосов
/ 30 сентября 2018

Зависит от того, что вам нужно сделать с контейнерами, если они статичны, вы должны посмотреть на StaticBatchingUtility.Combine (https://docs.unity3d.com/ScriptReference/StaticBatchingUtility.Combine.html)

Однако, если вы хотите, чтобы они были динамическими, вы должны использовать 1материал для всех ваших сеток, просто измените цвет в шейдере, уменьшите количество вызовов setPass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...