Вопрос по Draw Calls
| |
BrightSpot | Дата: Среда, 09 Мая 2018, 22:09 | Сообщение # 21 |
заслуженный участник
Сейчас нет на сайте
| Цитата shustr1k76 ( ) 100-120к у меня в статической сцене(до появления юнитов) 200-250к - это относительный показатель... Цитата shustr1k76 ( ) может быть есть ещё нюансы? шейдеры, расположение, кол-во полупрозрачных моделей(и их смешивание) партиклы, размеры моделей, тирейн юнитовский сильно грузит и еще много аспектов которые нужно учитывать и балансировать... опыт в помощь - пробуй разные подходы...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
puksus | Дата: Среда, 09 Мая 2018, 23:11 | Сообщение # 22 |
Пчёлка Зоя
Сейчас нет на сайте
| На количество дровколов влияет разнообразие объектов. Теоретически все однообразные объекты на сцене можно заинстансировать за 1 дров кол. Так что один из способов уменьшить ко-во дров колов - уменьшить это разнообразие. Вариант 1: уменьшить количество уникальных объектов. Допустим, что на сцене 20 персонажей и все разные, а ты хоба - и заюзал для первых 10 одну мешку, для вторых 10 - вторую мешку, и в итоге вместо рисования каждой мешки отдельно ты инстансируешь их сразу по 10 особей Вариант 2: зафигачивать несколько мешек в одну. Допустим у тебя есть город. Он состоит из множества зданий. А ты хоба, вместо того чтоб рисовать каждое здание отдельно взял и в 3д максе слепил всё вместе в 1 неразрывный объект и возрадовался.
Ну я кароч в юнити не умею, но я думаю что он ну просто обязан внутри себя юзать инстансинг (иначе он был бы архимедленным), а значит подобные манипуляции вполне могут помочь.
https://vk.com/beezoya
|
|
| |
shustr1k76 | Дата: Четверг, 10 Мая 2018, 08:50 | Сообщение # 23 |
почетный гость
Сейчас нет на сайте
| Ну если честно , я даже уже не знаю что делать. Объединил все мешы в один сделал его статичным. По работал над ui. Материал мобил диффьюз. Теней нет. Максимальная компрессия моделей. Одна из моделей содержит 1.4 к tris. Что же тут делать таким темпом фигня получится не красивая)))
П.С на моём nexus 5 fps 54-60. На более слабых около 30.
|
|
| |
BrightSpot | Дата: Четверг, 10 Мая 2018, 10:04 | Сообщение # 24 |
заслуженный участник
Сейчас нет на сайте
| Цитата BrightSpot ( ) Теоретически все однообразные объекты на сцене можно заинстансировать за 1 дров кол. только теоретически... есть ограничения по колву вершин с зависимостью от количества текстур в шейдере... + хорошо разрывает батчинг разный скейл(иногда даже при анимации) Так же не нужно забывать, что на батчинг так же нужно время - один большой объект забатчится за раз но если это глобальная карта лучше разбить ее на составляющие(в зависимости от видимости камеры) Цитата shustr1k76 ( ) Допустим у тебя есть город. Он состоит из множества зданий. А ты хоба, вместо того чтоб рисовать каждое здание отдельно взял и в 3д максе слепил всё вместе в 1 неразрывный объект и возрадовался. вот этот варик подойдет для стратегии, где город видно целиком(или большую часть), для рпг или фпс это убийство фпс(странно выглядит но думаю понятно)Цитата shustr1k76 ( ) на моём nexus 5 fps 54-60. На более слабых около 30. это норма...Добавлено (10 Мая 2018, 10:04) --------------------------------------------- и скинь скрин с игры - будет проще понимать с чем подсказывать=)
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
drcrack | Дата: Четверг, 10 Мая 2018, 13:21 | Сообщение # 25 |
старожил
Сейчас нет на сайте
| Цитата Что же тут делать таким темпом фигня получится не красивая))) Вот, ты начинаешь понимать что такое разработка под мобилы
|
|
| |
shustr1k76 | Дата: Четверг, 10 Мая 2018, 14:54 | Сообщение # 26 |
почетный гость
Сейчас нет на сайте
| Цитата drcrack ( ) Вот, ты начинаешь понимать что такое разработка под мобилы
Это очень тонкое искусство. Только изначально не имел представления с чем придется сталкиваться. Да и в обще все с 0 - включая С#. Остается вопрос - реально ли сделать в одного целую игру?
п.с С модельками не большая беда, ну да ладно. Можно по искать и в ассет сторе. Так вот, нужен был пистолет. Нашел подходящий - скачать добавил врагу. В итоге как оказалось - он дает 11-12к tris. Сейчас мониторя профайлер при тех же условиях, tris 50к а draw call не больше 80.
Сообщение отредактировал shustr1k76 - Четверг, 10 Мая 2018, 15:00 |
|
| |
BrightSpot | Дата: Четверг, 10 Мая 2018, 15:00 | Сообщение # 27 |
заслуженный участник
Сейчас нет на сайте
| Цитата shustr1k76 ( ) реально ли сделать в одного целую игру? теоретически реально, на практике очень трудно=)) Хотя смотря какая игра - мелкие матч 3 и т.п за несколько дней делаются на расслабоне=)
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
puksus | Дата: Четверг, 10 Мая 2018, 20:59 | Сообщение # 28 |
Пчёлка Зоя
Сейчас нет на сайте
| Цитата BrightSpot ( ) от этот варик подойдет для стратегии, где город видно целиком Ну я ето писал с задней мыслью об авиасимуляторе. Летаешь высоко, видишь далеко. С фпс и рпг (но рпг разные бывают) понятно - много невидимых треугольников, которые можно отсечь на цпу, отсекая сразу всю мешку, да и сложность моделей там (обычно) будет на порядок-два выше.
В открытых мирах ещё решают Лоды. Некоторые объекты вообще можно заменить на спрайты. Допустим, бальшой-бальшой злющий лес в 100500 километрах можно заинстансировать спрайтами за 1 дров кол - и никто не заметит особой разницы. Можно делить на лоды ландшафт. Вблизи тесселировать, на среднем плане рисовать как есть, а на дальнем - убирать большую часть треугольников.
https://vk.com/beezoya
|
|
| |
shustr1k76 | Дата: Четверг, 10 Мая 2018, 22:17 | Сообщение # 29 |
почетный гость
Сейчас нет на сайте
| Цитата puksus ( ) Допустим, бальшой-бальшой злющий лес в 100500 километрах можно заинстансировать спрайтами за 1 дров кол а это как? можно поподробнее?
|
|
| |
puksus | Дата: Пятница, 11 Мая 2018, 00:04 | Сообщение # 30 |
Пчёлка Зоя
Сейчас нет на сайте
| Цитата shustr1k76 ( ) а это как? можно поподробнее? Заранее рендеришь дерево на большом расстоянии, сохраняешь результат. Далее все деревья на расстоянии, большем некоторой величины рисуешь полученными спрайтами вместо мешки. Можно банально объекты заменять. Типа если дерево отдалилось достаточно - убирать дерево и ставить туда спрайт. Если наоборот - убирать спрайт и ставить дерево.
Добавлено (11 Мая 2018, 00:04) --------------------------------------------- В обливионе так деревья рисуются. Можно делать промежуточные фазы. Допустим, на средних расстояниях рисовать упрощённую модель дерева упрощёнными шейдерами
https://vk.com/beezoya
Сообщение отредактировал puksus - Пятница, 11 Мая 2018, 00:06 |
|
| |
Otinagi | Дата: Пятница, 11 Мая 2018, 13:41 | Сообщение # 31 |
постоянный участник
Сейчас нет на сайте
| Расскажу и о своей оптимизацыи. Не буду утверждать, что это верный и правильный путь, так что смотрите со скепсисом:
На картинке под спойлером пример карты. Как видно, весьма небольшая. При этом здесь ещё не были размещены статические объекты окружения. В итоге эта карта с один персонажем имела более полумиллиона треугольников. По всей карте раскиданы триггеры разные, и многие из них приходится обрабатывать в режыме реального времени в Update или самих триггеров, или объектов, которые перебирают множество триггеров для выполнения действия над нужными.
Изначально сделал карту: комната - одна модель, внутренности - другие модели или префабы, множество базовых текстур - кирпичы, плитка, бетон и т.п., коллизии в основном были кубические, на некоторых моделях было несколько кубических коллизий (например, комната состояла из коллизий кубических пола и каждой стенки). Расставил 20 триггеров и фпс был 7-10 (показывало на телефоне), дравколов было порядка 500 (показывало в самой юнити). Проверялось на нескольких телефонах не первой свежести, на некоторых было разрешение 1080p. Начал изучать, где проседает фпс, и выяснил, что примерно 75-80% падает на скриптах. Когда я убрал абсолютно все триггеры, фпс поднялся до 40. В итоге сильно переписал код, чтобы обрабатывались триггеры в непосредственной близости от ГГ и только в комнате, где находится ГГ. Убрал абсолютно все динамические создания, разные поиски и чтения локализованного текста из файлов. Всё это загружается в момент загрузки карты. Съедается чуть больше оперативной памяти, но этот прирост памяти абсолютно незначытелен, по сравнению со всей памятью, что приложение берёт. Избавился почти от всех цыклов. ФПС стал 38-40. Собственно, на данном этапе скрипты больше не убивали фпс. При этом, хочется заметить, остались всё те же 500 000 треугольников и 500 дравколов.
Вторым этапом взялся за карту. Переделать пришлось полностью и несколько раз. В начале я стал объединять все модели в один меш, но ни к чему хорошему не привело. Коллизия просто убила фпс и настраивать её - целая мука. Так что сразу отказался. Далее я разделил карту на комнаты, комнату разбил на стены, пол и потолок. Так разбил, чтобы можно было на один меш повесить одну боксовую коллизию, т.к. обратил внимание, что две коллизии на одном меше вызывают падение фпс больше, чем две модели по одной коллизии на каждой. Начал делать атласы текстур. Я создавал текстуры 2048х2048 и в них уже запихивал развёртки комнат и объектов. Таких текстур на всю карту оказалось 5 (4 на все комнаты и 1 на объекты). Большый размер текстур не делал, т.к. не все телефоны поддержат, а меньшый не делал, потому что никак не влияло на ФПС. Хотя, 512х512 даже чуть уменьшало фпс. Освещение было сделано с помощью лайтмапов и пробов. В нём тоже образовалось парочка текстур 2048х2048. Такой вариант позволил нарисовать с одной стороны более разнообразные комнаты, так как можно было рисовать почти каждую стену в отдельности, с другой стороны качество текстур на большом экране заметно упало. Но на телефон я разницы особой не заметил. Зато ФПС поднялся до 50, дравкалы упали до 300 и уменьшылся размер apk. Потом я решыл опять переделать всю карту и всё перерисовать, чтобы на каждую комнату уделить по одной текстуре. Итог: размер файла чуть увеличылся, качество текстур на комнате заметно возросло, дравколы упали до 100, фпс стал 60. Такой результат меня устроил.
И да, я использовал Юнити 2017 бета сборки на тот момент.
«Смерти меньше всего боятся те люди, чья жизнь имеет наибольшую ценность.» Иммануил Кант
|
|
| |
coremission | Дата: Пятница, 11 Мая 2018, 15:52 | Сообщение # 32 |
частый гость
Сейчас нет на сайте
| Какое количество бензина нужно чтобы машина ехала 60 км/ч? Да хрен его знает, чувак, а что у тебя за машина? Сколько цилиндров? Какого бензина? 95го? * Это метафорически то как выглядит вопрос ТС "Сколько дроколов нужно?"
чтобы разобраться почему педалит игра - нужно найти bottle neck, узкое место, чем ограничена скорость...
|
|
| |
|