Snusmumriken
Snusmumriken
Степень нормальности немного сложнее оценить, потому что теперь, с кучей открытых приложений, упираюсь в цпу ))
Igor
Snusmumriken
Можно немного позже
Snusmumriken
С другой стороны, у пое2, который является моим основным тестовым полигоном, пока оно в раннем доступе — просто кошмарная оптимизация, и будь тут хоть i9 с кучей ядер — всё равно всё выжрет.
Snusmumriken
Даже не представляю куда они тратят такое количество ресурсов, тут всего пол сотни-сотня юнитов с простыми однотипными анимациями которые прекрасно батчатся. И простые же эффекты.
Igor
Snusmumriken
У них как бы своё двигло при этом, двигло-то они написали
Snusmumriken
Snusmumriken
На нём вполне без особых закидонов делается и отложенный рендеринг, и pbr-графоний и прочая.
По технологическому стеку он ништяк.
Snusmumriken
Чисто вопрос способа рендеринга.
Объедини эти 2к спрайтиков в один меш и легчайше вытянет за один дровкол.
Что характерно, лове делает то же самое, только с 10 версии полуавтоматически, а раньше приходилось использовать спрайтбатчи.
Mas Agus
Mas Agus
Я если что сам ловку использую
Re
usernameak
usernameak
ибо там овердрав это огромная проблема
Re
1 дравкол в реальнйо игре это тоже какая то шутка. ну да ладно.
usernameak
usernameak
usernameak
просто условный юнити идёт дальше
usernameak
и например генерирует меши огибающие прозрачную область чтобы минимизировать овердрав
на пк пофиг, на мобилках может дать прилично перфы
Snusmumriken
Snusmumriken
Мобильная гпушка неплохо заливает области 16х16 пикселей помнится, местным тайловым рендерингом, притом эти пиксели должны алигниться с экраном, то есть в идеале, оно должно генерировать меш при каждой попытке отрисовки.
Snusmumriken
Humm, pure particle tiles is pretty easy to implement and less "tile"-like
Snusmumriken
1 дравкол в реальнйо игре это тоже какая то шутка. ну да ладно.
^ тут 11 дровколлов.
1. Все твёрдые куски уровня (и бекграунд, и "провода", и двери, и стены) в несколько слоёв. Вообще все в один дровколл. Тут 50х50х3 спрайтов, мобилка тянет.
2. Партиклевые тайлы. Один цвет — один дровколл.
3. Игрок
4. Отдельные динамические объекты со своими дровколлами, но можно забатчить
5. Отдельные куски гуя (квадратик, кружочек, линия, несколько текстов) — отдельные дровколлы, их тут штук пять
Snusmumriken
Так что реально на рендеринг где-то 6-7 дровколлов
Re
Лове2д делает буквально то же самое.
Спрайтбатчи в ловке это буквально меш из пачки треугольников.
Автоматический батчинг это буквально меш из пачки треугольников.
батчинг ловки и батчинг рейлиба сильно отлечаются, а так же прочее апи.
в целом дизайн имплементации на opengl 3.3 разный.
рейлиб использует неоптимальные батчи для слабый устройств.
это можно немного смягчить пересобрав его с отдельными флагами.
и то все это не уместится в 2мс.
дело не в дравколах, а в апи сильно он выжирает GPU которого МАЛО.
у мобилок слабое GPU в 1 поток и слабое CPU в 1 поток.
+ ос.
В итоге на реальных тестах ты на рейлибе или пишешь все АПИ поверх RLGL.
Или 1к спрайтиков 48 пикселей твой придел.
Дальше у тебя CPU будет выжираться сильнее.
В целом если писать рендеринг в 1 потоке, все остальное в другом. Не так плохо.
Но все это сильно уступает Love \ SDL\FNA\XNA\Godot\ Unity\ ect...
Если у вас другие реальные тесты, делитесь мне будет интересно с чем вы сравнивали и что получались.
Re
В реальном проекте нет времени оптимизирвоать такую мелочь
Snusmumriken
"Батчинг ловки и батчинг рейлиба отличаются"
Ты пробовал в рейлибе делать атласы? Если твои спрайты в разных изображениях — они не будут нормально батчиться.
И опять таки, можно смело слепить меш, где каждый спрайт — пара треугольников с текстурными координатами.
> Дальше у тебя CPU будет выжираться сильнее.
Если каждый кадр пытаться перезаполнять меш заново, перевычисляя все трансформации — может быть.
Если сделать один меш для статики, и отправлять его в гпу только на изменениях — будет норм.
Если сделать два меша — большой для статики, маленький для динамики — будет вообще ништяк, статичный один раз сделал и он перерендеривается без лишних отправок.
Snusmumriken
Но да, это всё надо писать.
Re
Беру спрайт 48 пикселей.
Рисую его 2к раз или по разному в зависимости от теста.
Пишу функцию которая забирает 14-15 секунд на CPU.
Пишу такую же функцию на си и дополнительно нагружаю, что бы время на их обработку было близко.
Смотрю сколько FPS.
Добавлю что на рейлибе без VSYNC у меня бывают артефакты при движении спрайтов.
Кому интересно потестируйте для себя, а если нет то и что говорить?
Я тестил для своего проекта многие проекты. Рейлиб растроил в рисовании из коробки.
На моих текстах он близок к Ebiten.
Все еще лучше Macroquad \ иногда Bevy.
Хуже того что я писал выше.
Беру рейлиб там, где не нужно много рисовать.
Re
Ну и имхо. Работы по новым API нет. Новые библиотеки на этом фоне смотрятся лучше.
Года 2 назад я топил за рейлиб всеми силами, увы вулкан не пропихнули. Ряд вещей тоже.
Надеюсь RLGL кто то адаптирует под SDL GPU.
А так слишком много работы что бы переделать все.
Lucky
Lunatic
sdl gpu разве готовая штука?
Lunatic
я так и не понял как ей пользоваться, шейдеры не кросс-компилирует, формат вертексов я так понял разный
Lunatic
А где заявлена поддержка консолей?
Vlad
Vlad
Главное какой-нибудь движок/фреймворк обосрать
Re
Рейлиб в целом — это проект одного человека, который всячески старается избегать сложных в поддержании фич. Он сам его изначально позиционировал как проект для обучения детей программированию, и именно так сам его и использует.
Если тебе что-то не подходит, ну, что поделать, выбирай другую технологию. Может вообще тебе уже стоит своё двигло писать, раз уж у тебя вечно какие-то проблемы с производительностью
Так никто же не говорит не используйте. Я лишь указал что технические вопросы есть и они не пользу рейлиба. Про обучение тоже вопрос в перспективе спорный. Пайплайны меняются и технологии тоже.
Инди геймдев и так застрял в opengl, в котором тяжко поддерживать кроссплатформенный код.
Так что методика обучения на старом тоже вопрос дискуссионный. И никто ничего не обсирал, это сухие факты.
Сама по себе мысль меньше значит хуже, не здоровая.
"Только рейлиб устарел, в три раза менее производительный и в целом имеет явный акцент на петы.
А на ловке делают игры. Вот и думай..."
Технически устарел, ты сам это утверждаешь.
Производительность сам можешь посмотреть.
По готовым играм кажется все понятно. Можно сравнить по ITCH.
Не понятно где принижают что то? Кто то сказал плохо рейлиб нельзя использовать?
Или что это кусок плохого кода? Но если ты посмотришь ветку выше, ты найдешь сообщение где что то обсерают. Как всегда сообщение непонятно зачем.
Snusmumriken
Snusmumriken
Просто хотелось бы конкретных примеров где ты сталкиваешься с проблемами кроссплатформы.
Snusmumriken
Есть стойкое подозрение что проблема не в опенгл и не в вулкане
Snusmumriken
Snusmumriken
Что ты хочешь в пайплайне такого, что требует компьют шейдеров? Зачем они тебе нужны?
Snusmumriken
Более-менее современный пайплайн в своём ядре содержит деферред рендеринг.
Это — основная фишечка "современности" рендеринга — отсутствие обсчёта ненужного, более пафосными способами чем простой куллинг.
Делается без единого компьюта.
Snusmumriken
Snusmumriken
Используют компьюты? Ну используют и используют, молодцы.
Snusmumriken
Если что, асинхронности в графическом пайплайне нет. Вообще нет. Всё синхронное.
Можно сделать асинхронным на стороне цпу, но не на стороне гпу. Там будет всё та же абсолютно синхронная очередь.
Snusmumriken
Не в графическом пайплайне.
Re
да нет, как раз командный буфер тебе наружу выставуляет как это сделать нормально.
Snusmumriken
да нет, как раз командный буфер тебе наружу выставуляет как это сделать нормально.
Тем не менее, к пайплайну это относится примерно никак.
Графический пайплайн — это буквально последовательность:
1. Разметка вао-вбо и прочих буферов
2. Отправка в эти буферчики данных
3. Запуск какой-нибудь шейдерной программы
4. Получение результатов
5. Повторить по необходимости.
Всё.
Если что, напоминаю: разные движки как правило напротив максимально абстрагируются от этого барахла, позволяя переключать бэкенды (опенгл-вулкан-метал-директикс-программный рендеринг) чуть ли не на лету.
Вычисление физики на другом ядре или на гпу? Нет разницы. В движке это будет одним и тем же, просто функции "вычислять" по-разному называются — одна отправляет на другое ядро, другая отправляет на видяху. Движку вообще пофигу. Графическому пайплайну что характерно тоже.
Snusmumriken
Или, графический пайплайн конкретного движка может быть выражен в
"аккумулируем все вершины которые мы пытались нарисовать за этот кадр, следим за состоянием и переключением текстурок-шейдерчиков, объединяем это всё в батчи, отправляем видяхе команды рисования этих батчей".
Опять таки, не важно на каком бэкенде оно будет сделано. Принципиальная разница будет в названии вызываемых функций слоя совместимости между этими бэкендами и железкой.
Snusmumriken
Компуты — это бонус, но не "определяющий критерий современности пайплайнов", как правило он вообще сбоку приткнут, чтобы видяхе было чем заниматься пока цпу готовит данные под рендеринг текущего кадра.
Snusmumriken
Кстати, напоминаю. Обсчёт бытовой физики на гпу — может быть гораздо медленнее чем на цпу. Решение делегировать это должно быть некисло так обоснованным.
Snusmumriken
В опенгле же, опять таки, нет ничего страшно ужасного.
Он поддерживает ВСЕ эффекты, позволяющие делать красивые, графонистые игрушки, со всеми материалами, со всеми отложенными рендерингами, со всеми динамическими освещениями-тенями и прочим.
Весьма оптимизированно. Выглядит — офигенно современно.
Лучи не поддерживает? Да срать на эти лучи. Игрушки с лучами — ради этих лучей снижают фпс вдесятеро, в то время когда разница в графонии незаметна.
У лучей есть своя конкретная область применения, и оно прекрасно заменяется дымом и зеркалами без особой разницы в графике, но в миллиард раз производительнее.
Snusmumriken
Ну и опять таки напоминаю: геншин импакт (юнити) шёл на мобилках даже пока был на опенгле.
Без графонистого графона. Там роль графона выполняет стиль.
Стиль — позволяет делать графон без избытка технологий.
Причём делать красивее и интереснее чем попытки упороться в "гиперсовременный сверхреализм", но без избытка технологий.
Cloop210
ку
Snusmumriken
Ага
Cloop210
Я вот работаю, думаю в будущем rtx 2060 купить, где её выгоднее брать,подскажет кто
Snusmumriken
Cloop210
Ну, хоть за ответ спасибо
Luсky
Snusmumriken
Luсky