Study 3d | Gamedev | Моделирование
2.76K subscribers
747 photos
29 files
1.05K links
Канал, посвященный изучению 3D - моделирование, анимация, rigging, текстурирование, gamedev, Unity 3d, Unreal Engine и др. игровые движки и т.д. Материал представлен в виде максимально полезных туториалов, видеоуроков, книг.
Для связи @nat_ndsfd
Download Telegram
Несколько недель подряд мучил Unity DOTS в контексте использования этой технологии для мобильных устройств. Подопытным кроликом кроликом был мой старенький Samsung S4 (2013г).
Можно однозначно сказать - это очень крутая технология, позволяющая даже на старых устройствах получить значительное ускорение, например, при использовании вычисления физики - скорость вычислений выростала до 10 раз. Так же огромным плюсом стала возможность использовать в рамках этой технологии сторонний физический движек Havok, который в сравнении со стандартной реализацией Unity Physics (тоже DOTS) давал рост FPS примерно в 1,5 раза.
Кроме того, если сравнивать быстродействие новой технологии unity и unreal engine, то однозначно можно сказать, что unity в этой области более эффективен и дает больший прирост fps.
Но на фоне всех плюсов есть один значительный минус - технология в данный момент находится на стадии разработки, поэтому интерфейсы постоянно меняются, возможны ошибки, проблемы со стабильностью.
#Unity
#оптимизация
Решил попробовать новую технологию Unity URP для оценки производительности и корректности отображения для своего старенького Samsung s4. Эта технология позволяет без заморочек с портированием на различные платформы реализовывать графическую часть приложения. То есть, все шейдеры и эффекты постпроцессинга, написанные в соответствии с определёнными правилами, будут корректно отображаться на всех платформах без каких либо проблем с совместимостью.
И действительно, если соблюдать ограничения платформы (в моем случае это устаревшее графическое api open gl2.0), то все эффекты, которые я реализавывал в редакторе, корректно отображались на телефоне - начиная от теней и заканчивая частицами (огонь) со светом. На другом телефоне (Xiaomi mi 9) также корректно отображаются все графические эффекты и достигается полная идетичность изображения в редакторе и на телефоне (используется vulkan api, что снимает почти все ограничения на графику и позволяет легко реализовать графику уровня консолей прошлого поколения)

Кроме того, появился новый инструмент - shader graph,с помощью которого без единой строчки кода можно реализовать свой собственный шейдер, полностью совместимый с URP, причём результат можно видеть в реальном времени. На мой взгляд, это очень мощный инструмент, позволяющий людям, не знакомым с кодингом и тонкостями шейдерописания, написать почти любой шейдер. Разумеется, shader graph находится в стадии активной доработки и в этом году юнитехи обещают доделать возможность реализации более сложных шейдеров. Но стоит заметить, что технология URP и shader graph уже находятся в стадии release и готовы к использованию в production, в отличии от DOTS, упомянутый мною в прошлой статье.

По поводу производительности - при должных знаниях в области оптимизации графики в unity можно легко повысить fps в несколько раз. По оптимизации графики чуть позже напишу еще пост.
#Unity
#оптимизация
Не так давно обещал пост про оптимизацию быстродействия на unity для мобильных устройств.

Для разработчиков мобильных игр наступает золотое время - все больше устройств поддерживает Vulkan - открытое и универсальное мультиплатформенное графическое api, позволяющее перенести на мобильные устройства графику консольного уровня, а также в целом упростить разработку. На этом движке уже реализованы такие хиты как Doom, Red Dead Redemption 2. Так что, в скором времени единственным ограничителем будет производительность железа, а не как раньше особенности api для каждой платформы.

Но, с прискорбием можно заметить, что аналитика google говорит о том, что устаревшее api OpenGL ES 2.0 занимает все еще в районе 20% рынка. Это говорит о то, что по прежнему еще очень важно знать об ограничениях.

С учетом реалий рынка я решил заняться анализом оптимизации и возможностей unity для мобильных платформ на OpenGL ES 2.0 (с iOs все проще - там нет таких ограничений и все упирается в железо, хотя некоторые моменты из статьи будут актуальны и там)

Первое, на что стоит обратить внимание при проектировании игры - число вызовов Drawcall - параметра заметно влияющего на производительность. Для мобильных устройств средне-низкого класса (например, мой Samsung s4) оптимальным является 60-100 вызовов на кадр. Добиться снижения величины этого параметра можно используя на различных объектах один и тот же материал - то есть, если все деревья в кадре используют один материал и включен батчинг (batch) то отрисовка всех таких деревьев займет всего один drawcall. Batching - возможность объединять вызовы отрисовки мешей ( mesh - объект на сцене) в один пакет и делать всего один drawcall. Именно поэтому low poly игры могут кушать совсем мало ресурсов и быть очень быстрыми и красивыми одновременно. В общем, схема простая - меньше материалов - выше производительность.

Второе - тип используемого освещения. Для мобильных устройств настоятельно рекомендуется использовать только запеченный свет - то есть, не меняющийся во времени. Динамические тени являются очень жирным потребителем ресурсов, поэтому даже для главного объекта на сцене используются такие ухищрения с тенями как blob shadow. Для изменения освещенности объекта используются такие элементы как light probe, позволяющие во время запекания света сохранять информацию об интенсивности освещения, а затем применять на движущейся объект. В общем, использовать динамическое освещение возможно только на high end устройствах без особого ущерба производительности. Сложность шейдеров также сильно влияет, поэтому это нужно учитывать. Спасает новая технология Unity URP, в котором использование стандартных шейдеров сильно упрощает жизнь начинающим и позволяет добиться существенного повышения производительности рендера.

Третье - число полигонов на сцене. Для мобильных устройств обычно стараются соблюдать ограничение до миллиона полигонов. Однако, все очень сильно зависит от того как они используются, ведь для статичной сцены можно использовать даже 10 млн и все будет корректно, а для динамической такого не получится - придется уменьшать. В общем, по степени влияния на производительность число полигонов оказывает наименьшее воздействие по сравнению с первыми двумя пунктами (возможно, даже на порядок).
#Unity
#оптимизация
Четвертое - логика. Стоит очень внимательно относиться к проектированию логики - ведь в нынешнем варианте реализации в unity очень легко достигнуть лимита производительности, когда на сцене находится много GameObject. Такое плачевное состояние способны исправить фреймворки ECS - сторонние, такие как LeoECS или Entitas и встроенный в Unity - DOTS. Встроенное решение все еще в стадии глубокой разработки, так что использовать это в production опасно, а вот сторонние отлично себя показывают. В общем, такие фреймворки позволяют здорово(на порядок) увеличить производительность логики и иметь на сцене огромное число одинаковых объектов без ущерба производительности. Также к логике относится и физика - ее нужно использовать с особой осторожностью на мобильных устройствах. Здорово улучшилась производительность с приходом Unity physics (часть модуля DOTS, которая также в разработке) и ее сторонней имплементации от Havok. Кроме того, в релиз вышла технология Burst compiler, реализующая низкоуровневую оптимизацию байткода и позволяющая в некоторых случаях получить фантастический прирост. Особенно это заметно в совокупности с использованием ESC

Есть еще огромное число тонкостей, я перечислил лишь самые основные и базовые. Возможно, по некоторым будут ещё посты.
#Unity
#оптимизация
PBR_Rukovodstvo_-_Tom_1.pdf
1.1 MB
Документация Allegorithmic (на русском языке) по физически корректному рендеру (PBR). Очень подробный труд, не привязанный ни к одному 3d редактору - только теория. Обязательно для прочтения любому специалисту в области 3D
#книги #рендеринг
Туториал по созданию бороды персонажа
#персонаж
#моделирование