Процедурная генерация зданий на C++ в Unreal Engine 5. Многопоточность, оптимизация.
Вставка
- Опубліковано 20 кві 2023
- В данном ролике демонстрируется работа с потоками через ParallelFor и методом RotateAngleAxis, позволяющими легко и быстро генерировать различные постройки в Instanced Static Mesh.
___________________________________________________
Поддержать на Boosty boosty.to/cubeip
___________________________________________________
#unrealengine5
___________________________________________________
Статья о ParallelFor
isaratech.com/ue4-improving-s...
про то что проц меньше напрягаеться не знал, круто
Интересно, спасибо за видео!!
А такой вопрос, разве создание кучи кирпичей не скажется на производительности ? Оьвчно рендеринг одного меша проще происходит чел кучи маленьких, если только не работает батяинг. Даже намного быстрее ,с таким больших количеством мешей.
Пробовали сравнить производительность одного большого сеша и такого собранного в игре?
В видео используется Instanced Static Mesh, так что каждый кирпич не самостоятелен и вызовы на отрисовку сокращены ценой некоторых ограничений. Производительность заранее смоделированного меша с такой же детализацией будет значительно хуже и сглаживаться только использованием штук вроде Nanite.
Реализация бомба. Вот только каждый кирпич это дроукол. Посмотрел на такой замок и побежал за огнетушителем. Оптимизацию никто не отменял, да и зачем в меше не нужные полигоны. Но после этой реализации можно оптимизировать строение в зависимости что хотим получить.
Нет, не каждый кирпич дроукол, если использовать инстанс статик меши. Лишние полигоны да, проблема, но процессор такая постройка наоборот разгрузит, в любом случае. Тут ещё, как отметили уже в комментах, индивидуальная коллизия у каждого кирпича запускается при столкновении и желательно сделать какую-нибудь одну невидимую коробку столкновений, а у них коллизию выключить. И тогда всё будет почти отлично. Ещё есть вопрос рендеринга пересекающихся мешей, тут врать не буду, не знаю, насколько он влияет на производительность на стороне видеокарты.
прикольное упражнение. можно поиграться, а потом пойти и сделать игру на колапсе волновой ф
А можно ли наделить каждый отдельный такой кубик самостоятельными переменными, делая его независимым, но все еще относящимся к группе блоков?
Так, например, можно ли разрушить только один из кубиков, не повлияв на остальные?
Можно ли такую группу блоков передвигать в пространстве?
Иными словами можно ли с помощью таких логических фигур составлять конкуренцию вокселям?
К отдельным инстансам можно обращаться по индексу или выбирать их с помощью трассировки. Затем удалять или обновлять их FTransform. Фактически, они являются самостоятельными переменными в гп и при необходимости цп, конечно, может, менять их там.
А движку всеравно на количество обьектов?
Смотря, что это значит. На стороне процессора количество объектов, грубо говоря, не увеличивается, потому что это инстансы одного меша. Видеокарта их честно отрисовывает и память они честно занимают. Так что и да, и нет.
@@Cubeap На стороне процессора будет нагрузка, когда надо будет считать коллизии каждого кирпича с бегающими и прыгающими по ней персонажами и противниками, а так же обсчитывать выстрелы и взрывы (даже без разрушаемости). Коллизия с одной коробкой - это одно. Коллизия с тысячей коробок - это другое.
слюньки текут но нет )) боюсь боюсь боюсь
Какой фпс? Я смотрю у тебя в редакторе всё виснет.
Вручную сделанный пролёт камеры с резкими движениями мыши + запись экрана напрямую. В редакторе фризов нет.
@@Cubeap а что по фпс?
@@Cubeap и что во время спавна показывает statunitgraph,скачков нету?
ну и я думаю лучше использовать HISM
HISM при использовании лодов, ISM для нанитов.
@@Cubeap знаю) наниты грузят много
Просто поиграться прикольно, не более