Вопрос Draw calls.Оптимизация вызовов отрисовки.

Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
У меня в сцене примерно 10 разных мешов (а если считать все обьекти то примерно 100 штук во всей сцене ) и на все 100 обьектов,
всего 5 материалов, в каждом материале 1-2 текстуры.
Почему у меня в сцене 80 DrawCalls(Зависит от того куда смотреть, минимум 50), по идее должно быть 5-15 DrawCalls. Это можно как-то оптимизировать?
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,402
Реакции[?]
520
Поинты[?]
63K
убирай материалы по очереди, так найдёшь причину

showflag.staticmeshes 0 в консось, например
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
убирай материалы по очереди, так найдёшь причину

showflag.staticmeshes 0 в консось, например
Спасибо, в анрил енжин это все происходит автоматически? Например если на 100 разных обьектов наложен один материал с 2 текстурками, то в сцене будет 2 Drawcalls?
 
Пользователь
Статус
Оффлайн
Регистрация
28 Авг 2020
Сообщения
233
Реакции[?]
504
Поинты[?]
296K
Чтобы избежать drawcalls, лучше всего использовать Instanced Static Mesh.

Обычно Unreal Engine auto-instancing подобные сетки. Но я думаю, что он делает это после упаковки.

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Чтобы избежать drawcalls, лучше всего использовать Instanced Static Mesh.

Обычно Unreal Engine auto-instancing подобные сетки. Но я думаю, что он делает это после упаковки.

Пожалуйста, авторизуйтесь для просмотра ссылки.
Да я пробовал, тестить после упаковки и в simulate(вроде как-то так, запускается игра в отдельном окне) и результат одинаковый,в вюпорте намного больше drawcalls. Потом создал абсолютно пустую сцену поместил туда игрока и в итоге узнал что проблема была в блюпринте игрока, в нем были только руки с материалом в 2 текстуры и все, с другим блюпринтом игрока(дефолтный FP) почти нету drawcalls. Хотя проблему я так и не решил, не понял что может из того болюпринта игрока вызывать открисовку текстур, там нету ни функций на создание инстансов материалов, и не используется какие-то другие блюпринте или что-то подобное в которых это может быть, я убрал руки из того болюпринта и все равно не помогло(теперь там вообще нету никаких материалов на объектах)
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Есть ли в вашей сцене Directional Light?
Нет, я абсолютно все удалил кроме одно куба с дефолным материалом(с ним точно все нормально) .
А что Directional Light добавляет вызовы отрисовки?
 
Пользователь
Статус
Оффлайн
Регистрация
28 Авг 2020
Сообщения
233
Реакции[?]
504
Поинты[?]
296K
Нет, я абсолютно все удалил кроме одно куба с дефолным материалом(с ним точно все нормально) .
А что Directional Light добавляет вызовы отрисовки?
Насколько я помню, тени также создают вызовы draw. Вот почему я подумал, что это может быть из-за света.
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Насколько я помню, тени также создают вызовы draw. Вот почему я подумал, что это может быть из-за света.
Спасибо, вопрос не по теме но было бы интересно узнать, влияет ли тайлинг текстур в материале на производительность?
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
28 Авг 2020
Сообщения
233
Реакции[?]
504
Поинты[?]
296K
Спасибо, вопрос не по теме но было бы интересно узнать, влияет ли тайлинг текстур в материале на производительность?
Нет, вы можете облицевать текстуру плиткой без ущерба для производительности.

Для материалов нужно проверить количество инструкций, чтобы понять, тяжелый он или нет.

Во viewport вы также можете использовать "shader complexity viewmode", чтобы проверить, является ли материал более тяжелым для графической карты.

Если курсор направлен вправо, материал тяжелее.

Плитка не должна влиять на вашу производительность.

1683129399211.png
1683129504043.png
1683129611191.png
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Нет, вы можете облицевать текстуру плиткой без ущерба для производительности.

Для материалов нужно проверить количество инструкций, чтобы понять, тяжелый он или нет.

Во viewport вы также можете использовать "shader complexity viewmode", чтобы проверить, является ли материал более тяжелым для графической карты.

Если курсор направлен вправо, материал тяжелее.

Плитка не должна влиять на вашу производительность.

Посмотреть вложение 246690
Посмотреть вложение 246691
Посмотреть вложение 246692
так это в каждом проекте в каждой версии ue он забирает 30-40 drawcalls или только у меня так?
 
Пользователь
Статус
Оффлайн
Регистрация
28 Авг 2020
Сообщения
233
Реакции[?]
504
Поинты[?]
296K
так это в каждом проекте в каждой версии ue он забирает 30-40 drawcalls или только у меня так?
Мне придется проверить, но, вероятно, это нормально, если ваша карта пуста.
 
Пользователь
Статус
Оффлайн
Регистрация
14 Апр 2022
Сообщения
203
Реакции[?]
195
Поинты[?]
107K
Когда ты запускаешь в редакторе , UI тоже входит в счёт вызова отрисовки. Все менюшки, даже консоль дергает отрисовку.
Не парься об этом. Волнововаться нужно начинать, когда у тебя больше 3500 вызовов отрисовки, а паниковать если больше 5000. Но опять же заветное число зависит от целевого железа.
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Когда ты запускаешь в редакторе , UI тоже входит в счёт вызова отрисовки. Все менюшки, даже консоль дергает отрисовку.
Не парься об этом. Волнововаться нужно начинать, когда у тебя больше 3500 вызовов отрисовки, а паниковать если больше 5000. Но опять же заветное число зависит от целевого железа.
Моё железо нормальное но а у друга gtx 660 и тяжело оптимизировать
 
Пользователь
Статус
Оффлайн
Регистрация
14 Апр 2022
Сообщения
203
Реакции[?]
195
Поинты[?]
107K
Моё железо нормальное но а у друга gtx 660 и тяжело оптимизировать
для ПЕЧ 660 придется комплексно всё резать. Никаких текстур выше 512x512(можно поднять разрешение, но нужно паковать текстуры и даже возможно получится стриминг текстур подрубить), никаких каскадных теней и никакого динамического освещения(в кадре не более 2-4 не пересекающихся источников света, только статичное запеченное освещение, так как вы используете Unreal Engine 5, то значит минимум что вы можете себе позволить Directx 11, хотя Directx 9 был бы предпочтительнее, как и unreal engine 4. Список довольно большой, я бы заглянул к топики где ребята под vr оптимизируют проекты, там можно многое подчерпнуть
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
для ПЕЧ 660 придется комплексно всё резать. Никаких текстур выше 512x512(можно поднять разрешение, но нужно паковать текстуры и даже возможно получится стриминг текстур подрубить), никаких каскадных теней и никакого динамического освещения(в кадре не более 2-4 не пересекающихся источников света, только статичное запеченное освещение, так как вы используете Unreal Engine 5, то значит минимум что вы можете себе позволить Directx 11, хотя Directx 9 был бы предпочтительнее, как и unreal engine 4. Список довольно большой, я бы заглянул к топики где ребята под vr оптимизируют проекты, там можно многое подчерпнуть
Мне кажется это слишком(512/512 текстуры, хотя уже кажется вполне нормальным после того как узнал его фпс) играли в форт там на некоторых точно не меньше чем 2к, на Анриле4 мне очень тяжело делать игры, я привык к пятой версии(с нее и начал).
 
Пользователь
Статус
Оффлайн
Регистрация
14 Апр 2022
Сообщения
203
Реакции[?]
195
Поинты[?]
107K
Мне кажется это слишком(512/512 текстуры, хотя уже кажется вполне нормальным после того как узнал его фпс) играли в форт там на некоторых точно не меньше чем 2к, на Анриле4 мне очень тяжело делать игры, я привык к пятой версии(с нее и начал).
Трудно гадать так, это у него в собранно проекте 60 кадров? или в движке? Если в движке, то это хорошо прям даже
 
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
104
Реакции[?]
62
Поинты[?]
50K
Трудно гадать так, это у него в собранно проекте 60 кадров? или в движке? Если в движке, то это хорошо прям даже
Я скомпилировал игру и кинул ему, у меня примерно 200фпс, а у него 60фпс. Игру делаю только я, UE у него нету.
Может есть какой-то плагин для упаковки текстур или что-то такое? (хотя я хз что там можно упаковать, если у меня в проекте максимум 10-12 текстур )
Если я еще увеличу угол обзора до 110(для bodycam) то представляю как хорошо упадет фпс.
 
Пользователь
Статус
Оффлайн
Регистрация
14 Апр 2022
Сообщения
203
Реакции[?]
195
Поинты[?]
107K
Я скомпилировал игру и кинул ему, у меня примерно 200фпс, а у него 60фпс. Игру делаю только я, UE у него нету.
Может есть какой-то плагин для упаковки текстур или что-то такое? (хотя я хз что там можно упаковать, если у меня в проекте максимум 10-12 текстур )
Если я еще увеличу угол обзора до 110(для bodycam) то представляю как хорошо упадет фпс.
в лс development build есть возможность прислать?
 
Сверху Снизу