Войти
ПрограммированиеФорумОбщее

Unity3D : стоит ли заменять terrain на меш?

Страницы: 1 2 3 Следующая »
#0
23:17, 1 фев. 2020

Привет всем!
В уровне есть песок, который виден до горизонта. Есть туман, который позволяет настроить дальность линии горизонта.
Я заметил, что песок тратит на отрисовку не 1 вызов, а больше. Минимум уходит 30 вызовов. Так и должно быть???
Почему так много вызовов??? Отключил практически все: тени, свет, игрался со всеми параметрами. Растительности на песке нет, просто террейн с одним материалом на котором что-то нарисовано (сблендил пару текстур).
Почему вызовов отрисовок-то так много?
Подозреваю, что юнити как-то там тесселирует песок и с этим все связано. Но тесселяция делается на GPU и на сколько я знаю она не приводит к увеличению числа разных материалов (pass-ов)

Еще вопрос: А почему Unity ввели terrain? Конечно есть причина, я просто не понимаю этого. Почему не выгоднее заменить песок просто мешем? Своим собственным мешем. Это же эффективнее, нет? Мипмапы+меш должны работать эффективно. +можно сделать тесселяцию и вообще все хорошо будет.


#1
(Правка: 2:11) 1:56, 2 фев. 2020

Alerr
> А почему Unity ввели terrain? Конечно есть причина, я просто не понимаю этого.
Это готовый инструмент. Тот же вопрос - почему бы не написать свой движок.
Alerr
> Почему не выгоднее заменить песок просто мешем? Своим собственным мешем. Это же
> эффективнее, нет?
Да, но как всегда есть но. Возня со своим мешем, и минусы оптимизации на С#.
Терейн это и так уже меш.
Alerr
> Почему вызовов отрисовок-то так много?
Скорее всего побочные сервисные вызовы, которые можно сказать что пустые, их ограниченное число, поэтому такими вещами обычно пренебрегают.

Я помню делал один и тот же пример на unity и в GL, вырезал все лишнее из unity, но в GL было быстрее по FPS раза в 2. Это был неполноценный пример. Когда мне пришлось добавить прочие эффекты и процессы в GL, то FPS выравнялись. То есть если сравнивать с конечным продуктом, то от своих костылей большой выгоды не будет, но для ограниченного или специфического функционала это дает плюсы.

#2
10:28, 2 фев. 2020

Alerr
> Еще вопрос: А почему Unity ввели terrain?

патамушта рисуется иным способом

#3
10:52, 2 фев. 2020

Alerr
> Я заметил, что песок тратит на отрисовку не 1 вызов, а больше. Минимум уходит
> 30 вызовов. Так и должно быть???

террейн делится на блоки - каждый по 1 вызов рисуется

#4
13:05, 2 фев. 2020

foxes
> Терейн это и так уже меш.
Мне всегда было известно, что террайн — это карта высот (т.е. текстура). Как он мешем-то стал?

#5
13:48, 2 фев. 2020

pahaa
в террейне нету геометрии ?

#6
(Правка: 14:33) 14:32, 2 фев. 2020

innuendo
> в террейне нету геометрии ?
карта высот != геометрия
1. рендерим простой прямоугольник специальным шейдером
2. профит

#7
(Правка: 14:38) 14:38, 2 фев. 2020

pahaa
> Как он мешем-то стал?
Видимо так.
pahaa
> 1. рендерим простой прямоугольник специальным шейдером
Реймаршингом ты его реднерить собрался? Это совсем не профит.

#8
14:39, 2 фев. 2020

pahaa
не пиши если не в курсе

#9
15:23, 2 фев. 2020

innuendo
> не пиши если не в курсе
а что тут быть в курсе-то?

Instead of constructing a custom mesh for each terrain patch on the CPU, we can use GPU instancing to replicate a single mesh and sample the height map texture to produce the correct geometry.
#10
15:33, 2 фев. 2020

pahaa
есть много техник - но в простом случае это модифицированный меш

#11
15:34, 2 фев. 2020

innuendo
> есть много техник
вопрос был не про много техник, а про юнити

#12
15:37, 2 фев. 2020

pahaa
> we can use

это не значит что везде так будет - я тебе могу подсказать вариант с тесселяцией

#13
(Правка: 16:35) 16:06, 2 фев. 2020

pahaa
> to produce the correct geometry.
У тебя даже тут написано, что на выходе реднерится геометрия, а не текстура (карта высот). Тем более это один из вариантов где есть возможность вычислять геометрию на GPU. По сути тот же меш на GPU.

pahaa
> а про юнити
А что unity перестал поддерживать WebGL и прочие платформы не позволяющие считать меш на GPU?

госпыдя, у одного "персонажи сквозь текстуру проваливаются", у другого "разрушаемые текстуры", теперь "террейн это текстура"... текстурный мир меня засосал.
#14
17:57, 2 фев. 2020

foxes
> реднерится геометрия
не совсем чёткое понятие, рендерится, в любом случае, изображение
100500 вершин из меша в буфер биндить не понадобится, понадобится биндить 1 текстуру, и в шейдерах обрабатывать нужно будет не 100500 вершин, а 1 текстуру - совершенно другой подход к отрисовке, и разница вполне очевидна, не понимаю, как можно её отрицать

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумОбщее