Привет всем!
В уровне есть песок, который виден до горизонта. Есть туман, который позволяет настроить дальность линии горизонта.
Я заметил, что песок тратит на отрисовку не 1 вызов, а больше. Минимум уходит 30 вызовов. Так и должно быть???
Почему так много вызовов??? Отключил практически все: тени, свет, игрался со всеми параметрами. Растительности на песке нет, просто террейн с одним материалом на котором что-то нарисовано (сблендил пару текстур).
Почему вызовов отрисовок-то так много?
Подозреваю, что юнити как-то там тесселирует песок и с этим все связано. Но тесселяция делается на GPU и на сколько я знаю она не приводит к увеличению числа разных материалов (pass-ов)
Еще вопрос: А почему Unity ввели terrain? Конечно есть причина, я просто не понимаю этого. Почему не выгоднее заменить песок просто мешем? Своим собственным мешем. Это же эффективнее, нет? Мипмапы+меш должны работать эффективно. +можно сделать тесселяцию и вообще все хорошо будет.
Alerr
> А почему Unity ввели terrain? Конечно есть причина, я просто не понимаю этого.
Это готовый инструмент. Тот же вопрос - почему бы не написать свой движок.
Alerr
> Почему не выгоднее заменить песок просто мешем? Своим собственным мешем. Это же
> эффективнее, нет?
Да, но как всегда есть но. Возня со своим мешем, и минусы оптимизации на С#.
Терейн это и так уже меш.
Alerr
> Почему вызовов отрисовок-то так много?
Скорее всего побочные сервисные вызовы, которые можно сказать что пустые, их ограниченное число, поэтому такими вещами обычно пренебрегают.
Я помню делал один и тот же пример на unity и в GL, вырезал все лишнее из unity, но в GL было быстрее по FPS раза в 2. Это был неполноценный пример. Когда мне пришлось добавить прочие эффекты и процессы в GL, то FPS выравнялись. То есть если сравнивать с конечным продуктом, то от своих костылей большой выгоды не будет, но для ограниченного или специфического функционала это дает плюсы.
Alerr
> Еще вопрос: А почему Unity ввели terrain?
патамушта рисуется иным способом
Alerr
> Я заметил, что песок тратит на отрисовку не 1 вызов, а больше. Минимум уходит
> 30 вызовов. Так и должно быть???
террейн делится на блоки - каждый по 1 вызов рисуется
foxes
> Терейн это и так уже меш.
Мне всегда было известно, что террайн — это карта высот (т.е. текстура). Как он мешем-то стал?
pahaa
в террейне нету геометрии ?
innuendo
> в террейне нету геометрии ?
карта высот != геометрия
1. рендерим простой прямоугольник специальным шейдером
2. профит
pahaa
> Как он мешем-то стал?
Видимо так.
pahaa
> 1. рендерим простой прямоугольник специальным шейдером
Реймаршингом ты его реднерить собрался? Это совсем не профит.
pahaa
не пиши если не в курсе
innuendo
> не пиши если не в курсе
а что тут быть в курсе-то?
pahaa
есть много техник - но в простом случае это модифицированный меш
innuendo
> есть много техник
вопрос был не про много техник, а про юнити
pahaa
> we can use
это не значит что везде так будет - я тебе могу подсказать вариант с тесселяцией
pahaa
> to produce the correct geometry.
У тебя даже тут написано, что на выходе реднерится геометрия, а не текстура (карта высот). Тем более это один из вариантов где есть возможность вычислять геометрию на GPU. По сути тот же меш на GPU.
pahaa
> а про юнити
А что unity перестал поддерживать WebGL и прочие платформы не позволяющие считать меш на GPU?
foxes
> реднерится геометрия
не совсем чёткое понятие, рендерится, в любом случае, изображение
100500 вершин из меша в буфер биндить не понадобится, понадобится биндить 1 текстуру, и в шейдерах обрабатывать нужно будет не 100500 вершин, а 1 текстуру - совершенно другой подход к отрисовке, и разница вполне очевидна, не понимаю, как можно её отрицать