Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Unity: GpuInstancing, может ли он работать с различной геометрией?

Unity: GpuInstancing, может ли он работать с различной геометрией?

AlerrПостоялецwww5 мар. 201817:33#0
Привет всем.
Читал про GpuInstancing, возник вопрос.
В инструкции сказано, что GpuInstancing он работает с одинаковыми мешами и одинаковыми материалами.
Вопрос в принципиальности одинаковой геометрии. А что если меши разные? Почему он не будет работать (или все же будет)?
Кто-нибудь изучал этот вопрос?
DuraneПостоялецwww5 мар. 201818:20#1
Не будет
EugeneУчастникwww5 мар. 201818:28#2
Alerr
> Почему он не будет работать (или все же будет)?
Почему умножение работает, когда нужно просуммировать много одинаковых слагаемых, а когда нужно просуммировать много разных — не работает?
EyeGemПостоялецwww5 мар. 201818:38#3
Если буфер вершин и индексов собрать из нескольких мешей и по некоторому условию, зависящему от номера инстанса, отбрасывать часть полигонов, то можно. Даже материалов можно подключить сразу много в разные текстурные слоты и разные константы. Вопрос в том, для чего это нужно и стоит ли оно того.
AlerrПостоялецwww5 мар. 201819:57#4
EyeGem
>Вопрос в том, для чего это нужно и стоит ли оно того.
У меня множество gameObject с разными мешами, и на каждый такой MeshRenderer такого gameObject может быть применен одним из 4-х(нескольких) материалов.
У каждого материала свой параметр в Offset [_OffsetA], [_OffsetB].
К тому же каждый такой gameObject меняет состояние активности (gameObject.activeSelf).
Я бы хотел отрисовывать группы gameObject с одним материалом за 1 DrawCall.

1) Думаю, что StaticBatching здесь работать не будет т.к. gameObject меняет свое состояние activeSelf + у всех материалов свой набор параметров Offset
2) Да и DynamicBatching работать не должен т.к. у всех материалов свой набор параметров Offset

Может есть еще варианты того как можно эффективней рисовать эти обьекты?

AndreyПостоялецwww5 мар. 201820:38#5
Alerr
Нужно динамически собирать матрицы трансформации для gameobject с одинаковым мешем и материалом.
Разве Unity не делает это сам на этапе обновления сцены?
(Ну возможно если объект как то пометить  что он будет рисоваться в составе группы)
Если нет, можно делать самому.
innuendoПостоялецwww5 мар. 201822:14#6
Andrey
> Разве Unity не делает это сам на этапе обновления сцены?

О как! Через столько лет до человека дошло, что обновления-то бывают разными :)

FlyOfFlyПостоялецwww6 мар. 20184:47#7
Andrey
>
> Разве Unity не делает это сам на этапе обновления сцены?
DynamicBatching же

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр