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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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