Войти
ПрограммированиеФорумГрафика

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

#0
17:33, 5 мар. 2018

Привет всем.
Читал про GpuInstancing, возник вопрос.
В инструкции сказано, что GpuInstancing он работает с одинаковыми мешами и одинаковыми материалами.
Вопрос в принципиальности одинаковой геометрии. А что если меши разные? Почему он не будет работать (или все же будет)?
Кто-нибудь изучал этот вопрос?


#1
18:20, 5 мар. 2018

Не будет

#2
18:28, 5 мар. 2018

Alerr
> Почему он не будет работать (или все же будет)?
Почему умножение работает, когда нужно просуммировать много одинаковых слагаемых, а когда нужно просуммировать много разных — не работает?

#3
18:38, 5 мар. 2018

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

#4
19:57, 5 мар. 2018

EyeGem
>Вопрос в том, для чего это нужно и стоит ли оно того.
У меня множество gameObject с разными мешами, и на каждый такой MeshRenderer такого gameObject может быть применен одним из 4-х(нескольких) материалов.
У каждого материала свой параметр в Offset [_OffsetA], [_OffsetB].
К тому же каждый такой gameObject меняет состояние активности (gameObject.activeSelf).
Я бы хотел отрисовывать группы gameObject с одним материалом за 1 DrawCall.

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

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

#5
20:38, 5 мар. 2018

Alerr
Нужно динамически собирать матрицы трансформации для gameobject с одинаковым мешем и материалом.
Разве Unity не делает это сам на этапе обновления сцены?
(Ну возможно если объект как то пометить  что он будет рисоваться в составе группы)
Если нет, можно делать самому.

#6
22:14, 5 мар. 2018

Andrey
> Разве Unity не делает это сам на этапе обновления сцены?

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

#7
4:47, 6 мар. 2018

Andrey
>
> Разве Unity не делает это сам на этапе обновления сцены?
DynamicBatching же

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

Тема в архиве.