Почему красивый код и оптимальный — это две разные вещи
Собственно сейчас всё ещё ковыряя графы, у меня появился пример. Вообще амбицию засунуть 150к вершин графа в WebGL я оставил. Ну точнее это реально, но с бекендом, правильным маппингом типа BSP и т.п. Так как браузер по памяти тупо не вывезет даже на уровне данных о графе с позициями вершин. Понятное дело что трансформы и прочее можно было бы вынести в пулл, но тут как я считал, что оптимальна система "мозг бек — фронт рисует". Так и собственно оказалось. Но думаю 10к запихаем)
А причём здесь оптимальный и красивый код? Ну можно посмотреть на картинку 1 и картинку 2. Я откатился к картинке 2, так как цели теперь не такие зверские и в целом можно пережить, но в чём между ними разница? Кроме компактности записи и каких-то странных буфферов? (хотя всё написано в комментах)
Так как приложение однопоточное (веб жеж) мы можем использовать хак заведя просто статические буфферы для некоторых операций (важно чтобы в начале операции буффер очищался, чтобы буфферы были стейтлесс) И тогда вот возникает какой нюанс. На 168к вершин (именно такой граф я по началу ковырял) — Linq каждый расчёт позиций граффа аллоцирует 8мб в кучу. А хак буфферы 40 байт (можно свести к нулю, но это надо избавится от хешсета, чтобы не было аллокации его итератора)
Это очень хитрый контракт, не самый лучший код, но когда мы идём к каким-то краевым задачам, то появляются такие вот вещи. Поэтому оптимальный код и красивый/удобный код — это две разные вещи :) Да, такой код очень опасен и неудобен, но при этом он работает на порядок быстрее реализации на LINQ. Можно конечно изменить модель данных, чтобы получать соседей без LINQ конструкций, но с графами есть такие нюансы, что в зависимости от используемой модели есть свои плюсы и минусы) Скажем если вершины знают своих соседей, а не это ответственность структуры графа. Но в моей задаче это не так важно. При решении конкретной задачи я бы подбирал модель данных под неё :)
Собственно сейчас всё ещё ковыряя графы, у меня появился пример. Вообще амбицию засунуть 150к вершин графа в WebGL я оставил. Ну точнее это реально, но с бекендом, правильным маппингом типа BSP и т.п. Так как браузер по памяти тупо не вывезет даже на уровне данных о графе с позициями вершин. Понятное дело что трансформы и прочее можно было бы вынести в пулл, но тут как я считал, что оптимальна система "мозг бек — фронт рисует". Так и собственно оказалось. Но думаю 10к запихаем)
А причём здесь оптимальный и красивый код? Ну можно посмотреть на картинку 1 и картинку 2. Я откатился к картинке 2, так как цели теперь не такие зверские и в целом можно пережить, но в чём между ними разница? Кроме компактности записи и каких-то странных буфферов? (хотя всё написано в комментах)
Так как приложение однопоточное (веб жеж) мы можем использовать хак заведя просто статические буфферы для некоторых операций (важно чтобы в начале операции буффер очищался, чтобы буфферы были стейтлесс) И тогда вот возникает какой нюанс. На 168к вершин (именно такой граф я по началу ковырял) — Linq каждый расчёт позиций граффа аллоцирует 8мб в кучу. А хак буфферы 40 байт (можно свести к нулю, но это надо избавится от хешсета, чтобы не было аллокации его итератора)
Это очень хитрый контракт, не самый лучший код, но когда мы идём к каким-то краевым задачам, то появляются такие вот вещи. Поэтому оптимальный код и красивый/удобный код — это две разные вещи :) Да, такой код очень опасен и неудобен, но при этом он работает на порядок быстрее реализации на LINQ. Можно конечно изменить модель данных, чтобы получать соседей без LINQ конструкций, но с графами есть такие нюансы, что в зависимости от используемой модели есть свои плюсы и минусы) Скажем если вершины знают своих соседей, а не это ответственность структуры графа. Но в моей задаче это не так важно. При решении конкретной задачи я бы подбирал модель данных под неё :)
🔥5👍2
Media is too big
VIEW IN TELEGRAM
Пока закину небольшое превью без особых оптимизаций (хотя сильно оптимизировать я пока и не хочу) Spring Embedded алгоритм укладки графа. Конечно граф который я нашёл — сильно связный. Надо какую-то синтетику сгенерировать. Так как когда связность очень высокая этот алгоритм на 10к ребёр не поедет. Это 1к ребёр :) (граф хранится чисто рёбрами на сайте) Собственно цвет вершины выбирается в зависимости от числа её соседей
Выступил на круглом столе и про графику в AR :)
👍14
Очень крутой репозиторий с PathTracer с помощью Compute Shader https://github.com/Pjbomb2/Realtime-Compute-Shader-Unity-PathTracer
Визуал прям кайф :) Надо будет протестировать насколько быстро работает, но в любом случае любопытно будет на досуге поковырять :)
Визуал прям кайф :) Надо будет протестировать насколько быстро работает, но в любом случае любопытно будет на досуге поковырять :)
🔥4
Интересное видео по face tracking https://youtu.be/V9bzew8A1tc :)
YouTube
Detect 468 Face Landmarks in Real-time | OpenCV Python | Computer Vision
In this video, we are going to learn how to detect 468 different landmarks on faces. We will use the model provided by google that runs in real-time on CPU and mobile devices.
🚀🚀 My Urdu/Hindi AI YouTube Channel 🚀🚀
https://www.youtube.com/@murtazahassan01…
🚀🚀 My Urdu/Hindi AI YouTube Channel 🚀🚀
https://www.youtube.com/@murtazahassan01…
Прикольный туториал по простенькому эффекту https://youtu.be/rB4YMQmO8Mw
YouTube
Unity Shader Graph - Sci-Fi Barrier / Shield Tutorial
Today we have a sweet Sci-Fi Barrier / Shield tutorial made in Unity Shader Graph! We are also going to have a quick overview on how to use this with Unity Visual Effect Graph. Enjoy it folks!
Sci-Fi Shield: https://youtu.be/IZAzckJaSO8
Overwatch Reinhardt's…
Sci-Fi Shield: https://youtu.be/IZAzckJaSO8
Overwatch Reinhardt's…
👍4
Выступление на MIXR 2022 #mixrconf
https://www.youtube.com/watch?v=oHzWLasRMys
Наконец-то подъехала запись выступления с MIXR 2022 :) Где я рассказываю про графику в мобильном AR и в чём отличия от мобильного геймдева :)
Ссылка на презентацию
(Сорри за нотификацию лишнюю, думаю одним постом вся инфа будет удобнее) :)
https://www.youtube.com/watch?v=oHzWLasRMys
Наконец-то подъехала запись выступления с MIXR 2022 :) Где я рассказываю про графику в мобильном AR и в чём отличия от мобильного геймдева :)
Ссылка на презентацию
(Сорри за нотификацию лишнюю, думаю одним постом вся инфа будет удобнее) :)
YouTube
Работа с графикой в мобильном AR: Трюки и технические нюансы - MIXR 2022
Григорий Дядиченко (FoxSys)
👍7
Метавселенные и их проблемы
Что-то последнее время в моей жизни стало так много всяких «метавселенных» что поражаешься хайпоаости темы при том, что называют ими всё подряд. Почему-то связывают их с AR или VR технологиями и так далее. И самое интересное, как сова натягивается на глобус в AR случае-то вообще и он то тут причём) Обсуждаются какие-то проблемы, вопросы этики и т.п. При том что в реальности это всё «уже было» в ММО)
Как WoW игрок со стажем (я когда-то был в основном составе топ-3 гильдий европы) я знаю, что такое «жить в игре» :) И современные VR метавселенные с этим имеют очень мало общего :) И все проблемы с мошенничеством, торговлей инсайдерской информацией, ценностью виртуальных предметов и т.п. уже были :) Вов большая метавселенная где люди начинают дружить, общаться, знакомиться, торгуют с друг другом и живут, чем любой «современный VR метаверс»
Я в целом не верю, что метавселенные полетят, и что они кому-то так уж нужны в первую очередь) Потому что пресловутая иммерсивность это конечно замечательно, но вопрос всегда в комфорте и удобстве. И играть сидя за компьютером или же лёжа на диване с геймпадом в разы удобнее, чем ходить в VR шлеме с контроллерами) В первые разы это прикольно, есть вау эффект, но потом нет разницы) Поэтому я пока до сих пор не верю, что VR/AR так важен в этой теме) Сублимация и жизнь в другом мире отлично проходит с дивана с джойстиком, без сложных технологических устройств и полного погружения) А в VR и устройства неудобные, и контента по уровню погружения хотя бы приближенного к взрослому геймдеву тоже нет. Особенно мультиплеерного) Возможно это конечно вопрос времени, но пока мне в это не верится :)
Что-то последнее время в моей жизни стало так много всяких «метавселенных» что поражаешься хайпоаости темы при том, что называют ими всё подряд. Почему-то связывают их с AR или VR технологиями и так далее. И самое интересное, как сова натягивается на глобус в AR случае-то вообще и он то тут причём) Обсуждаются какие-то проблемы, вопросы этики и т.п. При том что в реальности это всё «уже было» в ММО)
Как WoW игрок со стажем (я когда-то был в основном составе топ-3 гильдий европы) я знаю, что такое «жить в игре» :) И современные VR метавселенные с этим имеют очень мало общего :) И все проблемы с мошенничеством, торговлей инсайдерской информацией, ценностью виртуальных предметов и т.п. уже были :) Вов большая метавселенная где люди начинают дружить, общаться, знакомиться, торгуют с друг другом и живут, чем любой «современный VR метаверс»
Я в целом не верю, что метавселенные полетят, и что они кому-то так уж нужны в первую очередь) Потому что пресловутая иммерсивность это конечно замечательно, но вопрос всегда в комфорте и удобстве. И играть сидя за компьютером или же лёжа на диване с геймпадом в разы удобнее, чем ходить в VR шлеме с контроллерами) В первые разы это прикольно, есть вау эффект, но потом нет разницы) Поэтому я пока до сих пор не верю, что VR/AR так важен в этой теме) Сублимация и жизнь в другом мире отлично проходит с дивана с джойстиком, без сложных технологических устройств и полного погружения) А в VR и устройства неудобные, и контента по уровню погружения хотя бы приближенного к взрослому геймдеву тоже нет. Особенно мультиплеерного) Возможно это конечно вопрос времени, но пока мне в это не верится :)
👍5
Blippar SDK + Unity
Любопытно, надо будет потыкать, как будет свободное время. Новость в том, что WebAR сдк от blippar в котором даже есть SLAM выпустили плагин для Unity. Интересно будет поковырять, как работает их SLAM и что с ним можно делать. Оно вроде сильно подешевле 8стены, но вопрос как всегда в качестве. В общем надо посмотреть, а то вдруг WebAR со SLAM меня станет бесить в разы меньше :)
Любопытно, надо будет потыкать, как будет свободное время. Новость в том, что WebAR сдк от blippar в котором даже есть SLAM выпустили плагин для Unity. Интересно будет поковырять, как работает их SLAM и что с ним можно делать. Оно вроде сильно подешевле 8стены, но вопрос как всегда в качестве. В общем надо посмотреть, а то вдруг WebAR со SLAM меня станет бесить в разы меньше :)
Голографика • Главное издание о дополненной и виртуальной реальности
WebAR SDK от Blippar интегрировали с Unity • Голографика
Blippar выпустила бета-плагин WebAR SDK для Unity, чем хочет упростить производство контента дополненной реальности для браузеров. Вместе с переходом Blippbuilder на бесплатное использование и интеграцией со Sketchfab это заставляет британскую платформу заиграть…
👍2
В Unity теперь есть свой мультиплеер
https://www.youtube.com/watch?v=ecyK0vHmbpQ это видео отлично разбирает, что там нового. Плюс что самое крутое — есть примеры)
В целом любопытно, как оно будет работать. Из платформ не поддерживается только WebGL, но тоже одна из новых штук, которые надо будет потыкать :)
https://www.youtube.com/watch?v=ecyK0vHmbpQ это видео отлично разбирает, что там нового. Плюс что самое крутое — есть примеры)
В целом любопытно, как оно будет работать. Из платформ не поддерживается только WebGL, но тоже одна из новых штук, которые надо будет потыкать :)
YouTube
Unity OFFICIAL Multiplayer is FINALLY HERE!
🔴 COMPLETE Unity Multiplayer Tutorial (Netcode for Game Objects) https://www.youtube.com/watch?v=3yuBOB3VrCk
🌍 Get my Complete Courses! ✅ https://unitycodemonkey.com/courses
👍 Learn to make awesome games step-by-step from start to finish.
👇 Click on Show…
🌍 Get my Complete Courses! ✅ https://unitycodemonkey.com/courses
👍 Learn to make awesome games step-by-step from start to finish.
👇 Click on Show…
👍3
Забавные случаи
Сегодня что-то вечер ностальгии и хочется ещё повспоминать какой фигнёй я страдал в студенческие и около студенческие годы :) Помню на втором или третьем курсе, когда я был ещё студентом партнёром Microsoft, я написал такую статью. И чтобы правомерно юзать картинки я написал ряду блогеров чьи профили проанализировал: «можно ли взять их в статью». Собственно ответил мне Виталий Голованов, за что ему огромное спасибо :) Это был прикольный момент раз, как меня начало затягивать в программирование (особенно по фану, а не по работе)
Самым знаковым моментом я всё ещё считаю победу на хакатоне правда :) Ведь как же круто заучит «На хакатоне игромира побеждает зло» :) И мы пусть и сделали прикольный концепт, но по сути полную фигню за ночь, этот момент я запомню навсегда) Плюс я там познакомился с игровой индустрией и кучей крутых ребят из неё. Олегом Чумаковым, Сашей Мезиным :) Но там было всё, как в лучшей истории) По утро мы вообще хотели сдаться и уйти, так как ничего не работало, а в итоге забрали первое место :)
Ну и конечно же. Как я сделал за 3 дня шуточную игру про «блокировку телеграма». Когда было модно быть «цифровым сопротивлением» и попал в обзор к вилсе) Тоже забавный момент прошлых лет и как некая странная ачивка)
В общем я всё ещё считаю, что важно что-то делать, так как никогда не знаешь, как и что сыграет :) Многие вещи по ходу моего пути разработчика были дико рандомные и безумно весёлые) Я организовывал юнити москоу митапы, сделал календарь событий игровой индустрии и многое другое — просто так. Так сказать во имя развития индустрии без какого-то коммерческого интереса. Так же как и этот блог) А в итоге это принесло очень много интересного :)
Сегодня что-то вечер ностальгии и хочется ещё повспоминать какой фигнёй я страдал в студенческие и около студенческие годы :) Помню на втором или третьем курсе, когда я был ещё студентом партнёром Microsoft, я написал такую статью. И чтобы правомерно юзать картинки я написал ряду блогеров чьи профили проанализировал: «можно ли взять их в статью». Собственно ответил мне Виталий Голованов, за что ему огромное спасибо :) Это был прикольный момент раз, как меня начало затягивать в программирование (особенно по фану, а не по работе)
Самым знаковым моментом я всё ещё считаю победу на хакатоне правда :) Ведь как же круто заучит «На хакатоне игромира побеждает зло» :) И мы пусть и сделали прикольный концепт, но по сути полную фигню за ночь, этот момент я запомню навсегда) Плюс я там познакомился с игровой индустрией и кучей крутых ребят из неё. Олегом Чумаковым, Сашей Мезиным :) Но там было всё, как в лучшей истории) По утро мы вообще хотели сдаться и уйти, так как ничего не работало, а в итоге забрали первое место :)
Ну и конечно же. Как я сделал за 3 дня шуточную игру про «блокировку телеграма». Когда было модно быть «цифровым сопротивлением» и попал в обзор к вилсе) Тоже забавный момент прошлых лет и как некая странная ачивка)
В общем я всё ещё считаю, что важно что-то делать, так как никогда не знаешь, как и что сыграет :) Многие вещи по ходу моего пути разработчика были дико рандомные и безумно весёлые) Я организовывал юнити москоу митапы, сделал календарь событий игровой индустрии и многое другое — просто так. Так сказать во имя развития индустрии без какого-то коммерческого интереса. Так же как и этот блог) А в итоге это принесло очень много интересного :)
Хабр
👍11
WebAR — QuickLook (IOS) и SceneView (Android)
Есть довольно старый прикольный способ посмотреть 3д модельки в дополненной реальности. Это USDZ и GLB. Я до сих пор считаю, что при всей прекрасности 8 стены, я не хочу отдавать почку за AR контент. Поэтому люблю изучать всякие альтернативы. Базовый гироскопический трекинг и т.п. И сегодня наткнулся на прикольный исчерпывающий сайт по GLB и Scene Viewer https://modelviewer.dev/
Тут всё прям очень круто описано. Куча примеров. Всё можно потыкать. В разы лучше, чем родная статья гугла. Хотя вся документация гугла — это просто самая сложная документация, которую я когда-либо читал. Эпловская или юнитёвская в разы понятнее. Чтобы понимать гугловскую документацию нужно научиться видимо думать "как гугл". Так как их подход к примерам и повествованию весьма специфичен. И если выкинуть из рассмотрения хололенс, одна из любимых документаций — это вообще MSDN)
Моя теперь новая "большая идея", я хочу сделать медленно и тихо OpenSource SLAM. А то все SLAM технологии, которые были Open Source, вроде выкупили. И теперь SLAM, кроме родных ARKit и ARCore, стоят каких-то ну прям заоблачных денег. Пора начинать снова бороться с корпорациями силами открытых технологий! XD А то платить 1250$ в месяц за 25к просмотров AR — ну очень дорого :) Ведь со временем технологии должны дешеветь и демократизироваться, становиться удобнее для разработчиков, чтобы на них строились более крутые инструменты и продукты. А 8wall уже лет 5 на моей памяти столько стоит) Ну и ребята молодцы, сделали крутую технологию, но как говорится пора делать снова Open Source SLAM)
Из всяких таких историй я никогда не прощу Apple покупку IKinema Orion и моментально убранную после покупки лицензию за 400 фунтов за лучшую кинематику в мире :) Ну да ладно, речь была не о том. Советую полистать сайт — он прям прикольный :) И особенно примеры https://modelviewer.dev/examples/
Есть довольно старый прикольный способ посмотреть 3д модельки в дополненной реальности. Это USDZ и GLB. Я до сих пор считаю, что при всей прекрасности 8 стены, я не хочу отдавать почку за AR контент. Поэтому люблю изучать всякие альтернативы. Базовый гироскопический трекинг и т.п. И сегодня наткнулся на прикольный исчерпывающий сайт по GLB и Scene Viewer https://modelviewer.dev/
Тут всё прям очень круто описано. Куча примеров. Всё можно потыкать. В разы лучше, чем родная статья гугла. Хотя вся документация гугла — это просто самая сложная документация, которую я когда-либо читал. Эпловская или юнитёвская в разы понятнее. Чтобы понимать гугловскую документацию нужно научиться видимо думать "как гугл". Так как их подход к примерам и повествованию весьма специфичен. И если выкинуть из рассмотрения хололенс, одна из любимых документаций — это вообще MSDN)
Моя теперь новая "большая идея", я хочу сделать медленно и тихо OpenSource SLAM. А то все SLAM технологии, которые были Open Source, вроде выкупили. И теперь SLAM, кроме родных ARKit и ARCore, стоят каких-то ну прям заоблачных денег. Пора начинать снова бороться с корпорациями силами открытых технологий! XD А то платить 1250$ в месяц за 25к просмотров AR — ну очень дорого :) Ведь со временем технологии должны дешеветь и демократизироваться, становиться удобнее для разработчиков, чтобы на них строились более крутые инструменты и продукты. А 8wall уже лет 5 на моей памяти столько стоит) Ну и ребята молодцы, сделали крутую технологию, но как говорится пора делать снова Open Source SLAM)
Из всяких таких историй я никогда не прощу Apple покупку IKinema Orion и моментально убранную после покупки лицензию за 400 фунтов за лучшую кинематику в мире :) Ну да ладно, речь была не о том. Советую полистать сайт — он прям прикольный :) И особенно примеры https://modelviewer.dev/examples/
modelviewer.dev
3D model-viewer embed
Neil Armstrong's Spacesuit from the Smithsonian Digitization Programs Office and National Air and Space Museum
👍6❤🔥1
Полезные ссылки про SLAM
Возвращаясь к теме SLAM. Вот пара сборников алгоритмов и инструментов для компьютерного зрения. Вдруг кому-то пригодится :)
https://github.com/marknabil/SFM-Visual-SLAM
https://github.com/tzutalin/awesome-visual-slam
SLAM это довольно важная и полезная штука, так как по сути для технологий виртуальной и дополненной реальности это в сущности основная технология. И разбираться в какой-то мере в современных алгоритмах SLAM и принципах их работы довольно полезно. Тогда легко понимать что реально в AR, а что скажем нет. И почему в таком-то окружении ваше решение работать не будет или наоборот будет :)
Возвращаясь к теме SLAM. Вот пара сборников алгоритмов и инструментов для компьютерного зрения. Вдруг кому-то пригодится :)
https://github.com/marknabil/SFM-Visual-SLAM
https://github.com/tzutalin/awesome-visual-slam
SLAM это довольно важная и полезная штука, так как по сути для технологий виртуальной и дополненной реальности это в сущности основная технология. И разбираться в какой-то мере в современных алгоритмах SLAM и принципах их работы довольно полезно. Тогда легко понимать что реально в AR, а что скажем нет. И почему в таком-то окружении ваше решение работать не будет или наоборот будет :)
GitHub
GitHub - marknabil/SFM-Visual-SLAM
Contribute to marknabil/SFM-Visual-SLAM development by creating an account on GitHub.
🔥2👍1
Минусы подхода «делать всё на ассетах»
В современной разработке всё чаще проекты делаются интеграционными. Я уже про это говорил, но не раскрывал почему это плохо и в каких случаях. А об этом думаю стоит поговорить. Сразу скажу, что речь не про «не использовать ассеты», а помнить про опасности при использовании.
Это удивительное везение, когда готовое решение работает «как надо» без допила или хотя бы из него нужна большая часть функций. Инструменты стоит разделить на три вида: фреймворки, большие плагины и мелкие утилиты.
Пример опасного фреймворка — это дутвин. Почему я считаю это фреймворком. Дутвин для удобства использования требует определённый принцип подхода к написанию кода и накладывает свои ограничения.
Пример хорошего большого плагина — это AVPro. Выделенная функция, которая не делает ничего лишнего. Она не прошивает всю систему, но выполняет большую и важную функцию.
А мелкие утилиты — это обычно сниппеты из интернета, которые выполняют одну совсем небольшую задачу. Типа перемножения матриц :)
Утилиты — можно использовать сколько угодно, у них реализацию легко и править, и поддерживать, так как она микроскопическая)
Большие плагины — имеют проблемы если опираются на какие-то библиотеки типа гугл сервисов (привет фаербейс) Тогда может случиться ад версий. И их в них уже в свою очередь важна поддержка
А вот фреймворки надо юзать с большой осторожностью)
1. Устойчивость системы
К сожалению, операционные системы развиваются, программные платформы меняются и так далее. Сборка может сломаться даже если вы ничего не делаете, просто со временем. Не работать на определённой версии ОС телефона скажем или браузера. Поэтому любой фреймворк и большой плагин — это дополнительная точка отказа. Когда они важны и нужны вам целиком использование оправдано. Но когда ради одной маленькой фичи из фреймворка тянутся какие-то зависимости и т.п. это может стать серьёзной проблемой.
2. Сложность системы
Сложные фреймворки усложняют проект. И это бывает очень плохо в небольших системах, которые разрабатываются скажем пару недель или месяц.
3. Баги в ассетах
Некоторые ассеты имеют баги, которые сложнее поправить, чем сделать разработку с нуля.
4. Проблемы интеграций
Это так же относится к аду dll. Делая всё на ассетах рано или поздно появится проблема разведения зависимостей. Если несколько ассетов опираются на разные версии библиотек — это становится большой проблемой.
В современной разработке всё чаще проекты делаются интеграционными. Я уже про это говорил, но не раскрывал почему это плохо и в каких случаях. А об этом думаю стоит поговорить. Сразу скажу, что речь не про «не использовать ассеты», а помнить про опасности при использовании.
Это удивительное везение, когда готовое решение работает «как надо» без допила или хотя бы из него нужна большая часть функций. Инструменты стоит разделить на три вида: фреймворки, большие плагины и мелкие утилиты.
Пример опасного фреймворка — это дутвин. Почему я считаю это фреймворком. Дутвин для удобства использования требует определённый принцип подхода к написанию кода и накладывает свои ограничения.
Пример хорошего большого плагина — это AVPro. Выделенная функция, которая не делает ничего лишнего. Она не прошивает всю систему, но выполняет большую и важную функцию.
А мелкие утилиты — это обычно сниппеты из интернета, которые выполняют одну совсем небольшую задачу. Типа перемножения матриц :)
Утилиты — можно использовать сколько угодно, у них реализацию легко и править, и поддерживать, так как она микроскопическая)
Большие плагины — имеют проблемы если опираются на какие-то библиотеки типа гугл сервисов (привет фаербейс) Тогда может случиться ад версий. И их в них уже в свою очередь важна поддержка
А вот фреймворки надо юзать с большой осторожностью)
1. Устойчивость системы
К сожалению, операционные системы развиваются, программные платформы меняются и так далее. Сборка может сломаться даже если вы ничего не делаете, просто со временем. Не работать на определённой версии ОС телефона скажем или браузера. Поэтому любой фреймворк и большой плагин — это дополнительная точка отказа. Когда они важны и нужны вам целиком использование оправдано. Но когда ради одной маленькой фичи из фреймворка тянутся какие-то зависимости и т.п. это может стать серьёзной проблемой.
2. Сложность системы
Сложные фреймворки усложняют проект. И это бывает очень плохо в небольших системах, которые разрабатываются скажем пару недель или месяц.
3. Баги в ассетах
Некоторые ассеты имеют баги, которые сложнее поправить, чем сделать разработку с нуля.
4. Проблемы интеграций
Это так же относится к аду dll. Делая всё на ассетах рано или поздно появится проблема разведения зависимостей. Если несколько ассетов опираются на разные версии библиотек — это становится большой проблемой.
👍8
Почему оптимизация и качество это долго
В работе мне иногда надоедает объяснять заказчикам, особенно у которых есть своя разработка, почему что-то делается не «5 минут» ведь их ребята могут. В целом оценивать сколько другой человек делает задачу Х не надо никогда, это очень плохой тон и никому не советую так делать. Я сам с этим очень часто борюсь, как лид на проекте или техдир. У каждого своя скорость
Но что такого долгого в качественной работе. Скажем мы умеем заворачивать веб билды в Unity под мобилки, делать так чтобы они грузились несколько секунд и работали супер шустро, а весили в пределах 8 мб. Но благодаря чему? Такая степень оптимизации — это уникальные инструменты и набор экспериментов + кастомный процесс под каждую конкретную задачу.
Скажем есть у вас 3д. Там есть текстуры. Их нужно грамотно пожать, чтобы посмотреть «видно артефакты или нет» и делается это в ручную и зрительно. И это время. Едем дальше, можно оптимизировать меш, значит мы подбираем опять-таки в ручную сжатие каждой модели, чтобы посмотреть где вылезут артефакты. Дальше если мы взрослые, то мы не юзаем стандарт шейдер и пишем свой кастом. При этом иммитируем эффекты экономля вертексные параметры (скажем пишем шейдеры, которые не используют тангенты и нормали). В последний раз я вообще писал утилиту + шейдер, которые брали карты Roughness, AO, Dissolve Mask и Metallic из одной текстуры)
В итоге в ходе часов 12 оптимизации вес веб билда с 25 мб снизился до 7 :) Так как я заменил одной текстурой хитрыми способами 8 текстур всё изрядно пожав. И это при том, что у меня в этом огромный опыт. Я не беру ещё всякие трюки на этапе создания 3д моделей, которые скажем позволяют экономить засчёт тайл материалов, или скажем эмиссии сделанной специально через геометрию, а не текстурой. Которые ещё надо обсудить и сделать :)
В общем, советую не судить работу «по себе». Так как все делают по разному, разными инструментами и обладают разными уровнями скилла. Поэтому это контрпродуктивно, а ещё часто раздражает :)
В работе мне иногда надоедает объяснять заказчикам, особенно у которых есть своя разработка, почему что-то делается не «5 минут» ведь их ребята могут. В целом оценивать сколько другой человек делает задачу Х не надо никогда, это очень плохой тон и никому не советую так делать. Я сам с этим очень часто борюсь, как лид на проекте или техдир. У каждого своя скорость
Но что такого долгого в качественной работе. Скажем мы умеем заворачивать веб билды в Unity под мобилки, делать так чтобы они грузились несколько секунд и работали супер шустро, а весили в пределах 8 мб. Но благодаря чему? Такая степень оптимизации — это уникальные инструменты и набор экспериментов + кастомный процесс под каждую конкретную задачу.
Скажем есть у вас 3д. Там есть текстуры. Их нужно грамотно пожать, чтобы посмотреть «видно артефакты или нет» и делается это в ручную и зрительно. И это время. Едем дальше, можно оптимизировать меш, значит мы подбираем опять-таки в ручную сжатие каждой модели, чтобы посмотреть где вылезут артефакты. Дальше если мы взрослые, то мы не юзаем стандарт шейдер и пишем свой кастом. При этом иммитируем эффекты экономля вертексные параметры (скажем пишем шейдеры, которые не используют тангенты и нормали). В последний раз я вообще писал утилиту + шейдер, которые брали карты Roughness, AO, Dissolve Mask и Metallic из одной текстуры)
В итоге в ходе часов 12 оптимизации вес веб билда с 25 мб снизился до 7 :) Так как я заменил одной текстурой хитрыми способами 8 текстур всё изрядно пожав. И это при том, что у меня в этом огромный опыт. Я не беру ещё всякие трюки на этапе создания 3д моделей, которые скажем позволяют экономить засчёт тайл материалов, или скажем эмиссии сделанной специально через геометрию, а не текстурой. Которые ещё надо обсудить и сделать :)
В общем, советую не судить работу «по себе». Так как все делают по разному, разными инструментами и обладают разными уровнями скилла. Поэтому это контрпродуктивно, а ещё часто раздражает :)
👍13❤5
This media is not supported in your browser
VIEW IN TELEGRAM
Какая нормаль в вершине конуса?
Я сейчас решил заморочиться посидеть и спроектировать VFX тулсет. Набор простых утилит, которые позволяют генерить всякие примитивы для VFX (сферы, полусферы, торы, конусы, сплайны), шумы и градиенты. Смешивать текстуры по каналам. Чтобы выкинуть в опенсорс потом тулзу для всех простую и удобную. А то моделить это всё долго, да и не все умеют. Проще параметры покрутить)
И столкнулся с тем, о чём не задумывался. Мало того, что конус это по сути частный случай цилиндра (но это логично как раз) Видимо его надо и делать цилиндром. Но тут прям косёрн оптимизации. Так как как для корректного pbr света нужны корректные нормали, а это значит конус прям цилиндр и в его вершине будет на самом деле ни одна, а множество вершин, чтобы свет правильно ложился на треугольники. Но вот если вам нормали не нужны, то достаточно одной вершины в вершине конуса. Думаю, стоит ли на уровне тулсета закладывать такие оптимизации или это уже оверинжиниринг, так как все возможные случаи всё равно покрыть трудно) В общем так "анонсируем" для подписчиков канала, что скоро появится прикольная штука :)
P.S. Меня просто задолбало моделить полусферу, четверть цилинда и писать отдельный шейдер с параметром куллинга в нужную сторону, если моделлер сделал их не в ту сторону. Да и такие вещи весить ничего не будут в отличии от моделей, если сделать скриптами
Я сейчас решил заморочиться посидеть и спроектировать VFX тулсет. Набор простых утилит, которые позволяют генерить всякие примитивы для VFX (сферы, полусферы, торы, конусы, сплайны), шумы и градиенты. Смешивать текстуры по каналам. Чтобы выкинуть в опенсорс потом тулзу для всех простую и удобную. А то моделить это всё долго, да и не все умеют. Проще параметры покрутить)
И столкнулся с тем, о чём не задумывался. Мало того, что конус это по сути частный случай цилиндра (но это логично как раз) Видимо его надо и делать цилиндром. Но тут прям косёрн оптимизации. Так как как для корректного pbr света нужны корректные нормали, а это значит конус прям цилиндр и в его вершине будет на самом деле ни одна, а множество вершин, чтобы свет правильно ложился на треугольники. Но вот если вам нормали не нужны, то достаточно одной вершины в вершине конуса. Думаю, стоит ли на уровне тулсета закладывать такие оптимизации или это уже оверинжиниринг, так как все возможные случаи всё равно покрыть трудно) В общем так "анонсируем" для подписчиков канала, что скоро появится прикольная штука :)
P.S. Меня просто задолбало моделить полусферу, четверть цилинда и писать отдельный шейдер с параметром куллинга в нужную сторону, если моделлер сделал их не в ту сторону. Да и такие вещи весить ничего не будут в отличии от моделей, если сделать скриптами
❤9👍3😁2
Больше чатов богам чатов
Завёл группу по XR разработке на Unity в телеграм. Если интересуетесь XR — присоединяйтесь
Завёл группу по XR разработке на Unity в телеграм. Если интересуетесь XR — присоединяйтесь
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект матрицы
Всегда интересно искать на просторах гитхаба что-то прикольное. Нашёл вот интересный трипланарный шейдер с эффектом как в матрице :) Выглядит довольно круто, подобное очень интересно разбирать "а как сделано" :) https://github.com/IRCSS/MatrixVFX
Всегда интересно искать на просторах гитхаба что-то прикольное. Нашёл вот интересный трипланарный шейдер с эффектом как в матрице :) Выглядит довольно круто, подобное очень интересно разбирать "а как сделано" :) https://github.com/IRCSS/MatrixVFX
🔥13👍4