Интересные темы разбираются, которые мало освещены в интернете. 👍 Важный момент для начинаюших - если проект под WebGL или мобилки, данный подход надо обязательно тестировать отдельно от других методов оптимизации. И использовать бюджетные модели телефонов, т. к. можно получить обратный эффект в итоговом фпс.
@@DELETEpoiuy SRP под веб стоит использовать только опытным специалистам. Так как веб должен предсказуемо работать на большинстве платформ, чаще имеет смысл использовать Built-in. И шейдеры, которые стабильно работают в webGl1.
Здравствуйте. До меня дошёл слух, что если открыть документацию то можно узнать о том, что в настройках от URP есть прям отдельная галочка для выключения SRP batching и static batching и ещё галка для включения dynamic batching.
@@askaranarbekov3145 В Unity 2022 для URP-проекта будет так: Edit - Preferences - Core Render Pipeline - пункт Visibility ставим в All Visible. После идём в настройки качества графики (которые называются например как URP-Balanced, обычно лежат в папке Settings, по-умолчанию 3 уровня качества создаются), там в разделе Rendering снимаем галочку SRP Batcher. У меня после этого заработало как со скриптом.
"Хозяйке на заметку" (тм) В шестой юньке в шейдере параметрам можно задавать область видимости. Если Scope установить в Hybrid Per Instance, то достаточно передавать параметры через пропертиблоки и батчинг не будет нарушаться. То есть последние танцы с бубном вокруг копирования шейдера вручную уже не нужны.
GPU Instancing является проблемой для мобильных процессоров. Например, процессоры PowerVR и их драйвера плохо адаптированы под инстансинг. Это значит что на большей части девайсов низкого ценового сегмента, ФПС с инстансингом будет ниже, и колличество крашей больше.
Кстати в шейдре графе (хз как давно) можно сделать пропертю инстансной без залезания в код там в нод редакторе выбираешь пропертю и внизу оверрайд проперти декларатион - вкл и выбираешь шейдер декларатион - пер инстанс
Как сделать гпу инстансинг с разной вертекс деформацией на копиях? Вертекс деформ происходит внутри шейдера, и если вкл гпу инстансинг на материале, копии отображаются, как будто они в во всех мульти измерениях сразу или в одном изначальном.
Привет! А не подскажешь, может знаешь почему бывают такие случаи: шейдер граф генерит шейдер с 13 CBUFER блоками (что тут заменяются на UNITY_INSTANCING_BUFFER_START/END) с нужной переменной и 2 присвоениями (что тут заменяются на UNITY_ACCESS_INSTANCED_PROP). Думал это из-за использования внешнего субграфа в качестве переиспользуемой функции, но если "вписать" этот субграф как часть основного, ничего не меняется. Тупые замены всех блоков и присвоений по здешнему примеру не помогают, GPU instancing не работает.
Такая же фикня. Честно сказать у меня завёлся GPU I, но только на тех объектах, на которых я ничего не меняю в плане графики. Есть пачка объектов - 1.5К штук, вот на них приходится всего 6 дроуколов, есть вторая пачка объектов, так же 1.5 штук, и вот на них то GPU I не работает. В итоге на 1.5К объектов второй пачки приходится 1.5К дроуколов. Первую пачку я никак не трогаю, у вторых кеширую материал, чтобы потом поменять цвет эмиссии, но именно у вторых GPU I и не работает. Удаляю из сущности (класса) кеширование материала второго типа объекта, как на них начинает работать GPU I... То есть сейчас я не могу в рантайме поменять цвет, сразу же подключается SRP Batcher. Unity 2022.3.
@@PS-vj6jz если ты кешируешь материал через свойство material рендерера, то как только ты к этому свойству обращаешься, этот рендерер создает локальную копию материала, другими словами при 1.5К обращений к свойству у тебя 1.5К копий материала по 1 на каждый рендерер. Если хочешь, чтобы GPU I продолжал работать, то меняй цвет через propertyblock (renderer.setpropertyblock) -- при этом копии материала не создаются.
Мне кажется автор до конца не понимает что говорит. Чтобы создать экземпляр статической геометрии в рантайме... Нужно создать экземпляр префаба, помеченный статик флагом и он будет участвовать в статическом пакетировании. Даже процедурно генерируемую сетку можно сделать статической. Но она будет не подвижной, как и вся статическая геометрия. Для этого нужно было написать вершинный шейдер и перемещать вершины в нем, на видео анимация простая, вверх-вниз. Всего-то. В целом видео действительно бесполезно, просто пересказ документации движка, особенно с учетом того, что в shader graph создавать шейдеры проще, не задумываясь о том, какие строчки исправить, чтобы конкретные свойства были доступны при gpu instancing.
Никто конечно не мешает создать экземпляр статической геометрии в райнтаме, но мне не нужна была статическая геометрия. На некоторых кадрах видно, что анимации происходят далеко не только вверх вниз (например в переходе между лабиринтами). Ну и писать под это все шейдеры конечно можно, но я думаю что-то похожее было бы написать сложнее чем воспользоваться способом в видео. Да и тем более не уверен что при динамическом создании статик будет учитываться, но за это не ручаюсь щас
Ну, убедится в этом можно просто создав из префаба кубик статический, при этом в сцене на нем будет надпись static и при попытке перемещения он двигаться не будет. Юнити 2023.1. Но даже статическая обработка может перегруппировать объекты из-за различных ключевых слов, допустим свечение или металик и спекулар, хотя шейдер один и тот же. Также можно было попробовать использовать динамическую группировку, так как сцена довольна простая (когда объектов мало), но при этом сами сетки разных видов, хотя dynamic batching скрыта из интерфейса движка, наверное не очень эффективна.
Странная ситуэшн... Продублирую комментарий: Честно сказать у меня завёлся GPU I, но только на тех объектах, на которых я ничего не меняю в плане графики. Есть пачка объектов - 1.5К штук, вот на них приходится всего 6 дроуколов, есть вторая пачка объектов, так же 1.5 штук, и вот на них то GPU I не работает. В итоге на 1.5К объектов второй пачки приходится 1.5К дроуколов. Первую пачку я никак не трогаю, у вторых кеширую материал, чтобы потом поменять цвет эмиссии, но именно у вторых GPU I и не работает. Удаляю из сущности (класса) кеширование материала второго типа объекта, как на них начинает работать GPU I... То есть сейчас я не могу в рантайме поменять цвет, сразу же подключается SRP Batcher. Unity 2022.3. Ps. Заработал... Делайте всё согласно документации MaterialPropertyBlock. Я так и делал, получал мешрендерер объекта и в него передавал MPB, но забыл, что в Awake кешировал материал этого объекта, кешировал его для тестов, но именно это кеширование и не давало GPU I использовать этот объект. Создавался экземпляр данного материала , а этого делать не нужно. Просто берите мешрендерер и передавайте в него объект MaterialPropertyBlock.
Пока таким не занимаюсь, но возможно в будущем все изменится. Думаю скоро завести телеграм канал, там можно будет общаться и задавать интересующие вопросы)
Вообще атлас по идее должен помочь. Такой подход сомневаюсь, что будет применим (в 2д редко работаю так что могу ошибаться), но проверить в принципе 5 минут)
@@-it394 Взаимно! оно как бы и помогло)) только у спрайтов сбивается цвет материала при старте, они все становятся абсолютно белыми) (использовал спрайтовый дефолтный материал) при этом колы уменьшаются в два раза, но когда цвет восстанавливаешь, колы вырастают обратно)
Потому что анрыл таргетируется на хай-энд, а юнити - на лоу-энд девайсы. Там много чего нет. Например, наличие compute-шейдеров вообще не гарантировано, хотя на ПК это уже лет 10 как абсолютная норма.
@@lex_darlog_fun Ну так по этому тем более в Unity это должно быть по умолчанию для оптимизации на смартфонах и тостерах. Или неужели каждый мобильный разраб должен проделывать вручную такие махинации только для того что бы включить инстансинг?
@@spyrava 1. Не "тем более". И тут - не то чтобы какие-то "махинации". И да, должен. Если даже показанное в видосе для вас чересчур сложно - вам не играми надо заниматься, а чем-то другим. Рендерным (оффлайновым) VFX'ом, например. 2. Это не должно быть по умолчанию, потому что даже инстансинг - хорошо работает далеко не на всех телефонах. Это вы, как разраб, должны знать конкретно СВОЮ целевую аудиторию и понимать, подходит ли ВАМ инстансинг. То же самое касается любых мало-мальски "продвинутых" рендер-фич. 3. В видосе - нет ни единой мало-мальски сложной оптимизации. Всё включается - буквально галочками в юньке. Если у вас даже такие телодвижения вызывают культурный шок - боюсь представить, какие квадратные глаза у вас будут, когда вы узнаете о НАСТОЯЩИХ оптимизациях типа VAT'ов или меш-шейдеров на ПК.
@@lex_darlog_fun Да, я не разработчик, а моделлер, и с движками знаком только с этой стороны. Мне просто казалось что это такая базовая функция, что ее можно просто по умолчанию оставить включенной. Видимо нет, спасибо за пояснение.
@@spyrava анрыл - goes above and beyond, чтобы сделать весь экспириенс разработки максимально однокнопочным. Но: 1. Как только ты выходишь из того walled garden, в котором за тебя всё продумали - начинается настоящий ад. 2. Это именно бесконечно упрощённая разработка. В нормальных условиях - студии всё равно нужен TA. Без этого сделать что-то мало-мальски приличное - просто не выйдет. 3. Подобная однокнопочность - в принципе не возможна за пределами "мы целимся только на хай-энд ПК и консоли". Так что нельзя весь геймдев мерять по анрылу - причём, только по его инструментарию для левелдизайна. Юнька, на самом деле, делает лучшее из возможного. И даже больше. Кастомизироемость юньки - *гораздо* выше, чем в анрыле. Там сделать что угодно кроме FPS или экшона с камерой из-за спины - это задача на грани возможного.
Хорошее видео, вот только подходит в основном под ПК игры, а Android - это уже другой разговор. Я ссейчас делаю несколько игр и вс они сильно тормозят даже на мощных устройствах и как я заметил, чем меньше батчей, тем меньше фпс, при этом если батчей батчей будет слишком много, то девайс будет сильно греться. И нет какой-то определённой золотой середины, под каждый проект, та даже под каждую сцену это значение своё... При этом такой пробелмы в моей любимой Unity 5.6.7f1 нет, начал её замечать с версий 2018 и выше...
Да, Batches уменьшилось, но вместо увеличения FPS он просел в 2 раза вот видео с результатом - ua-cam.com/video/y0f_PhXbB60/v-deo.html Note that this is not compatible with SRP Batcher. Using this in the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP) or a custom render pipeline based on the Scriptable Render Pipeline (SRP) will likely result in a drop in performance. Есть ли альтернатива для HDRP?
@@yaskadef Решения не существует - Note that this is not compatible with SRP Batcher. Using this in the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP) or a custom render pipeline based on the Scriptable Render Pipeline (SRP) will likely result in a drop in performance. ua-cam.com/video/y0f_PhXbB60/v-deo.html
Unity - это не про создание игр. Unity - это про решения тупых головоломок с ее тормозами. Unity - сделай инди игру за день, и ломай голову с ее оптимизацией год.
@@-it394 ну меня это удивляет, этой юнити уже лет 15, и не работают стандартные вещи как оптимизация draw call. Какой смысл в стандартных инструменьах если при добавлении 100 кубиков у тебя 10 фпс.
Для себя я решил бы эту проблему следующим образом: для такой игры, выкинул бы нафиг юнити. Там рисовать надо однообразные тайлы. Сделал бы класс рендерера для всей поднаготной. Подключил бы либу DX или Ogl и в общем-то всё. А то "Создадим нашу игру в юнити, а теперь начинаем бороться с производительностью, выключением лишнего, оптимизацией оставшегося, допиливанием шейдерами недобитков, вкручиванием скриптов для того что недобили". Зачем такой геморрой? Надо рисовать 6 тайлов и персонажа - изучите как работает видяха и библиотеки для работы с ней. Чтобы получить банан - не надо тащить всю банановую рощу со всеми пальмами, со всеми работниками на ней работающими, всех обезьян и всех питонов которые там обитают. Учите технологию. А то трипл-А игры выходят по 20 ФПС на топовых видяхах именно потому что: "А ЧО а юнити есть, давай туда модель игрока в 70к полигонов кинем, она же должна тянуть"
Согласен нахуй эти движки, предлагаю ещё и от IDE отказаться да и ваще от готовых систем пк и ноутов, а то создадим код на пк, а теперь начинаем бороться со скачиванием пакетов, настройко ide, установкой программ, лучше сразу заебашить под себя пк, написать свою ОС систему, свою ide, свой движок и сделать свою классную игру.
Сделал телеграмм канал, залетайте)
t.me/yakovlev_gamedev
Видео по шейдерам очень нужны. Хорошего материала крайне мало. Было бы здорово увидеть не только шейдерграф но и более традиционные шейдеры.
Думал увидеть типичный урок про оптимизацию, но очень сильно ошибся. Лучшая инфа за последний год про оптимизацию!
Sweet summer child...
Крутейшее видео! Спасибо большое, что делитесь такой инфой!
Интересные темы разбираются, которые мало освещены в интернете. 👍
Важный момент для начинаюших - если проект под WebGL или мобилки, данный подход надо обязательно тестировать отдельно от других методов оптимизации. И использовать бюджетные модели телефонов, т. к. можно получить обратный эффект в итоговом фпс.
Я вообще могу ошибатся но под веб если юзается юнити подходит только SRP? Разве нет? И там совсем другие методы\шейдеры.
@@DELETEpoiuy SRP под веб стоит использовать только опытным специалистам.
Так как веб должен предсказуемо работать на большинстве платформ, чаще имеет смысл использовать Built-in. И шейдеры, которые стабильно работают в webGl1.
Ты даешь нам инфу которую спокойно можно продавать 😭 огромное спасибо тебе! Надеюсь ты не удалишь канал и не пропадешь)
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Спасибо большое, очень полезный урок, ждем видосов почаще)
3:00 В идеале этот скрипт ещё удалить с объекта после его выполнения Destroy(this);
Здравствуйте. До меня дошёл слух, что если открыть документацию то можно узнать о том, что в настройках от URP есть прям отдельная галочка для выключения SRP batching и static batching и ещё галка для включения dynamic batching.
можно подробнее) или ссылку хоть , а то я пытался как он делать но не вышло
@@askaranarbekov3145 В Unity 2022 для URP-проекта будет так: Edit - Preferences - Core Render Pipeline - пункт Visibility ставим в All Visible. После идём в настройки качества графики (которые называются например как URP-Balanced, обычно лежат в папке Settings, по-умолчанию 3 уровня качества создаются), там в разделе Rendering снимаем галочку SRP Batcher. У меня после этого заработало как со скриптом.
очень помог! Всего тебе наилучшего ) @@unitydude
Я в шоке. Лучший видос по GPU Instancing!
Нереально благодарен за этот видос. Сильно помогло. Сейчас проверил. Жаль нельзя поставить больше одного лайка 😁
Dynamic batching быстрее SRP только в случае, если используются много одинаковых мешей с небольшим количеством вертексов и одним материалом.
ЭТО ПРОСТО АПУПЕННО! 👍
"Хозяйке на заметку" (тм)
В шестой юньке в шейдере параметрам можно задавать область видимости. Если Scope установить в Hybrid Per Instance, то достаточно передавать параметры через пропертиблоки и батчинг не будет нарушаться. То есть последние танцы с бубном вокруг копирования шейдера вручную уже не нужны.
да, интересно было бы узнать о шейдере, очень хороший ролик
GPU Instancing является проблемой для мобильных процессоров. Например, процессоры PowerVR и их драйвера плохо адаптированы под инстансинг. Это значит что на большей части девайсов низкого ценового сегмента, ФПС с инстансингом будет ниже, и колличество крашей больше.
Кстати в шейдре графе (хз как давно) можно сделать пропертю инстансной без залезания в код
там в нод редакторе выбираешь пропертю и внизу оверрайд проперти декларатион - вкл и выбираешь шейдер декларатион - пер инстанс
Хороший видос! Плюсую за видео по шейдерам!!!
Как сделать гпу инстансинг с разной вертекс деформацией на копиях?
Вертекс деформ происходит внутри шейдера, и если вкл гпу инстансинг на материале, копии отображаются, как будто они в во всех мульти измерениях сразу или в одном изначальном.
А всё, не надо. Оказывается я пытался заинстасить булин проперти (для вкл выкл деформации) - а оно на ней не работало, сделал её флотом и всё норм.
Спасибо за урок. new WaitForSeconds в данном случае стоит кешировать.
Супер видео в игре спавнилось 20 танков уже batches было 400 сейчас может быть хоть 60 и батчес будет 150 предел
Привет! А не подскажешь, может знаешь почему бывают такие случаи: шейдер граф генерит шейдер с 13 CBUFER блоками (что тут заменяются на UNITY_INSTANCING_BUFFER_START/END) с нужной переменной и 2 присвоениями (что тут заменяются на UNITY_ACCESS_INSTANCED_PROP). Думал это из-за использования внешнего субграфа в качестве переиспользуемой функции, но если "вписать" этот субграф как часть основного, ничего не меняется.
Тупые замены всех блоков и присвоений по здешнему примеру не помогают, GPU instancing не работает.
Такая же фикня. Честно сказать у меня завёлся GPU I, но только на тех объектах, на которых я ничего не меняю в плане графики. Есть пачка объектов - 1.5К штук, вот на них приходится всего 6 дроуколов, есть вторая пачка объектов, так же 1.5 штук, и вот на них то GPU I не работает. В итоге на 1.5К объектов второй пачки приходится 1.5К дроуколов.
Первую пачку я никак не трогаю, у вторых кеширую материал, чтобы потом поменять цвет эмиссии, но именно у вторых GPU I и не работает.
Удаляю из сущности (класса) кеширование материала второго типа объекта, как на них начинает работать GPU I... То есть сейчас я не могу в рантайме поменять цвет, сразу же подключается SRP Batcher.
Unity 2022.3.
@@PS-vj6jz если ты кешируешь материал через свойство material рендерера, то как только ты к этому свойству обращаешься, этот рендерер создает локальную копию материала, другими словами при 1.5К обращений к свойству у тебя 1.5К копий материала по 1 на каждый рендерер.
Если хочешь, чтобы GPU I продолжал работать, то меняй цвет через propertyblock (renderer.setpropertyblock) -- при этом копии материала не создаются.
@@PS-vj6jz Но само свойсто цвета в шейдере должно поддерживать инстансинг, иначе не получится.
Видео по шейдерам было бы крайне интересным
я сделал всё тоже самое, но количество батчей не уменьшилось.
Сделал как на видео но батчей не убавилось совсем.
О круто ты вернулся я рад
Спасибо! Поднял фпс с 60 до 120 в среднем)
ты меня спас, добрый человек
А какого хрена тогда юзается СРП батчер если он хуже работает?
можно код шейдера ,пожалуйста, не могу обычный урп никак переделать..
Интересный костыль
Очень помог. Спасибо.
C 2d Прокатит такое?) Спасибо за видео!
Очень крутое видео. Но слишком всё галопом. Просьба выпустить видео с более подробным и детальным разбором. Можно только на бусти - если хотите.
Мне кажется автор до конца не понимает что говорит. Чтобы создать экземпляр статической геометрии в рантайме... Нужно создать экземпляр префаба, помеченный статик флагом и он будет участвовать в статическом пакетировании. Даже процедурно генерируемую сетку можно сделать статической. Но она будет не подвижной, как и вся статическая геометрия. Для этого нужно было написать вершинный шейдер и перемещать вершины в нем, на видео анимация простая, вверх-вниз. Всего-то. В целом видео действительно бесполезно, просто пересказ документации движка, особенно с учетом того, что в shader graph создавать шейдеры проще, не задумываясь о том, какие строчки исправить, чтобы конкретные свойства были доступны при gpu instancing.
Никто конечно не мешает создать экземпляр статической геометрии в райнтаме, но мне не нужна была статическая геометрия. На некоторых кадрах видно, что анимации происходят далеко не только вверх вниз (например в переходе между лабиринтами). Ну и писать под это все шейдеры конечно можно, но я думаю что-то похожее было бы написать сложнее чем воспользоваться способом в видео. Да и тем более не уверен что при динамическом создании статик будет учитываться, но за это не ручаюсь щас
Ну, убедится в этом можно просто создав из префаба кубик статический, при этом в сцене на нем будет надпись static и при попытке перемещения он двигаться не будет. Юнити 2023.1.
Но даже статическая обработка может перегруппировать объекты из-за различных ключевых слов, допустим свечение или металик и спекулар, хотя шейдер один и тот же.
Также можно было попробовать использовать динамическую группировку, так как сцена довольна простая (когда объектов мало), но при этом сами сетки разных видов, хотя dynamic batching скрыта из интерфейса движка, наверное не очень эффективна.
Странная ситуэшн... Продублирую комментарий:
Честно сказать у меня завёлся GPU I, но только на тех объектах, на которых я ничего не меняю в плане графики. Есть пачка объектов - 1.5К штук, вот на них приходится всего 6 дроуколов, есть вторая пачка объектов, так же 1.5 штук, и вот на них то GPU I не работает. В итоге на 1.5К объектов второй пачки приходится 1.5К дроуколов.
Первую пачку я никак не трогаю, у вторых кеширую материал, чтобы потом поменять цвет эмиссии, но именно у вторых GPU I и не работает.
Удаляю из сущности (класса) кеширование материала второго типа объекта, как на них начинает работать GPU I... То есть сейчас я не могу в рантайме поменять цвет, сразу же подключается SRP Batcher.
Unity 2022.3.
Ps. Заработал... Делайте всё согласно документации MaterialPropertyBlock. Я так и делал, получал мешрендерер объекта и в него передавал MPB, но забыл, что в Awake кешировал материал этого объекта, кешировал его для тестов, но именно это кеширование и не давало GPU I использовать этот объект. Создавался экземпляр данного материала , а этого делать не нужно.
Просто берите мешрендерер и передавайте в него объект MaterialPropertyBlock.
Илья привет. Скажи пожалуйста , ты даешь частные уроки ?
Пока таким не занимаюсь, но возможно в будущем все изменится. Думаю скоро завести телеграм канал, там можно будет общаться и задавать интересующие вопросы)
воу, чел, спасибо!
очень полезно, спасибо! а если это применить к sprite Renderer? или у спрайтов, спрайт атлас это решает, по сути тоже самое получается?
Вообще атлас по идее должен помочь. Такой подход сомневаюсь, что будет применим (в 2д редко работаю так что могу ошибаться), но проверить в принципе 5 минут)
@@-it394 Понял, спасибо!
вроде тоже самое, ничего не поменялось, пробовал с включённым атласом, осталось так же)
@@jayrome9946 Спасибо за инфу!
@@-it394 Взаимно! оно как бы и помогло)) только у спрайтов сбивается цвет материала при старте, они все становятся абсолютно белыми) (использовал спрайтовый дефолтный материал) при этом колы уменьшаются в два раза, но когда цвет восстанавливаешь, колы вырастают обратно)
Было бы круто посмотреть на реализацию всего этого. Будет обучение ?
Не очень понял, на реализацию чего именно?)
@@-it394 на реализацию данной игры)
Интересное решение. А на URP все тоже самое или там GPU inst работает по другому?
Это как раз на urp все сделано
@@-it394 Ааа, я понял... Меня запутал SRP батчер, я подумал речь о scriptable render pipeline... =) Бывает.
@@koganboss4874 SRP это как раз обобщающий термин для URP и HDRP. Сейчас все, что не built-in, то SRP
@@dmitriytuchashvili8594 ааа... Я всегда думал что SRP это какой-то отдельный пайплайн для продвинутых и даже не потрудился об этом почитать.
А код подойдет только для 3D, или в 2D тоже можно использовать?
Мы тут в комментариях уже обсуждали этот вопрос) Лучше использовать атласы в 2д
@@-it394 ок, спасибо)
Я делаю 2д игры но чую 5 точкой мне это понадобиться. Сохраню очень полезный материал.
Эм, а почему в unity этого вообще по умолчанию нету? В UE есть. Как без этого вообще игры можно делать...
Потому что анрыл таргетируется на хай-энд, а юнити - на лоу-энд девайсы. Там много чего нет. Например, наличие compute-шейдеров вообще не гарантировано, хотя на ПК это уже лет 10 как абсолютная норма.
@@lex_darlog_fun Ну так по этому тем более в Unity это должно быть по умолчанию для оптимизации на смартфонах и тостерах. Или неужели каждый мобильный разраб должен проделывать вручную такие махинации только для того что бы включить инстансинг?
@@spyrava
1. Не "тем более". И тут - не то чтобы какие-то "махинации". И да, должен. Если даже показанное в видосе для вас чересчур сложно - вам не играми надо заниматься, а чем-то другим. Рендерным (оффлайновым) VFX'ом, например.
2. Это не должно быть по умолчанию, потому что даже инстансинг - хорошо работает далеко не на всех телефонах. Это вы, как разраб, должны знать конкретно СВОЮ целевую аудиторию и понимать, подходит ли ВАМ инстансинг. То же самое касается любых мало-мальски "продвинутых" рендер-фич.
3. В видосе - нет ни единой мало-мальски сложной оптимизации. Всё включается - буквально галочками в юньке. Если у вас даже такие телодвижения вызывают культурный шок - боюсь представить, какие квадратные глаза у вас будут, когда вы узнаете о НАСТОЯЩИХ оптимизациях типа VAT'ов или меш-шейдеров на ПК.
@@lex_darlog_fun Да, я не разработчик, а моделлер, и с движками знаком только с этой стороны. Мне просто казалось что это такая базовая функция, что ее можно просто по умолчанию оставить включенной. Видимо нет, спасибо за пояснение.
@@spyrava анрыл - goes above and beyond, чтобы сделать весь экспириенс разработки максимально однокнопочным. Но:
1. Как только ты выходишь из того walled garden, в котором за тебя всё продумали - начинается настоящий ад.
2. Это именно бесконечно упрощённая разработка. В нормальных условиях - студии всё равно нужен TA. Без этого сделать что-то мало-мальски приличное - просто не выйдет.
3. Подобная однокнопочность - в принципе не возможна за пределами "мы целимся только на хай-энд ПК и консоли".
Так что нельзя весь геймдев мерять по анрылу - причём, только по его инструментарию для левелдизайна.
Юнька, на самом деле, делает лучшее из возможного. И даже больше. Кастомизироемость юньки - *гораздо* выше, чем в анрыле. Там сделать что угодно кроме FPS или экшона с камерой из-за спины - это задача на грани возможного.
Хотим уроков по шейдерам и шейдар графу (для новичков) в интернете очень мало информации, будет очень круто=)
+
Хорошее видео, вот только подходит в основном под ПК игры, а Android - это уже другой разговор. Я ссейчас делаю несколько игр и вс они сильно тормозят даже на мощных устройствах и как я заметил, чем меньше батчей, тем меньше фпс, при этом если батчей батчей будет слишком много, то девайс будет сильно греться. И нет какой-то определённой золотой середины, под каждый проект, та даже под каждую сцену это значение своё... При этом такой пробелмы в моей любимой Unity 5.6.7f1 нет, начал её замечать с версий 2018 и выше...
Очень прикольно
6:52 интересно как ты к этому пришёл, потратив кучу времени.
короче, юнька для простых смертных не подходит. потому что если не знаешь как чёто там пофиксить то ничего толкового не сделаешь.
видео по шейдерам на базу
Пожалуйста 😘
Есть мечта сделать огромную глобальную стратегию в реальном времени, но вот как раз боюсь за оптимизацию, да и навыка точно не хватит
Какой гений додумался создать напоминание о взаимодействии 6:05 - 6:37 в sponsor block?
Да, Batches уменьшилось, но вместо увеличения FPS он просел в 2 раза
вот видео с результатом - ua-cam.com/video/y0f_PhXbB60/v-deo.html
Note that this is not compatible with SRP Batcher. Using this in the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP) or a custom render pipeline based on the Scriptable Render Pipeline (SRP) will likely result in a drop in performance.
Есть ли альтернатива для HDRP?
Использую URP, количество батчей уменьшается, но fps не вырастает, даже проседает немного, кто-то нашел решение?
@@yaskadef Решения не существует - Note that this is not compatible with SRP Batcher. Using this in the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP) or a custom render pipeline based on the Scriptable Render Pipeline (SRP) will likely result in a drop in performance. ua-cam.com/video/y0f_PhXbB60/v-deo.html
Скиньте этот видос разрабам раста
Unity - это не про создание игр. Unity - это про решения тупых головоломок с ее тормозами.
Unity - сделай инди игру за день, и ломай голову с ее оптимизацией год.
Чёрная магия, колдун шарпучий!
😂😂😂
+
выглядит как хак, который может перестать работать при любом обновлении движка.
В случае юнити так можно сказать про что угодно😂
@@-it394 ну меня это удивляет, этой юнити уже лет 15, и не работают стандартные вещи как оптимизация draw call. Какой смысл в стандартных инструменьах если при добавлении 100 кубиков у тебя 10 фпс.
@@bobrokrol ну не 100, а вот если +- тысяч 10-100 то да :)
@@bobrokrol На самом деле да, много есть вещей, которые казалось бы должны работать уже по умолчанию, но нет)) Всегда надо изобретать велосипед
Для себя я решил бы эту проблему следующим образом: для такой игры, выкинул бы нафиг юнити. Там рисовать надо однообразные тайлы. Сделал бы класс рендерера для всей поднаготной. Подключил бы либу DX или Ogl и в общем-то всё.
А то "Создадим нашу игру в юнити, а теперь начинаем бороться с производительностью, выключением лишнего, оптимизацией оставшегося, допиливанием шейдерами недобитков, вкручиванием скриптов для того что недобили". Зачем такой геморрой? Надо рисовать 6 тайлов и персонажа - изучите как работает видяха и библиотеки для работы с ней.
Чтобы получить банан - не надо тащить всю банановую рощу со всеми пальмами, со всеми работниками на ней работающими, всех обезьян и всех питонов которые там обитают.
Учите технологию. А то трипл-А игры выходят по 20 ФПС на топовых видяхах именно потому что: "А ЧО а юнити есть, давай туда модель игрока в 70к полигонов кинем, она же должна тянуть"
А теперь смертельный номер на арене нашего цирка - юзер собирает билды под все платформы!
Согласен нахуй эти движки, предлагаю ещё и от IDE отказаться да и ваще от готовых систем пк и ноутов, а то создадим код на пк, а теперь начинаем бороться со скачиванием пакетов, настройко ide, установкой программ, лучше сразу заебашить под себя пк, написать свою ОС систему, свою ide, свой движок и сделать свою классную игру.
иди проспись идиот
У меня очень сильно грузит процесс: semaphore.waitforsignal
У меня игра для пк, как мне исправить это? Потому что-то больше 30%+
Спасибо большое, очень помогло