Как обычно параллелят игровые процессы? Что то слышал про многопоточный

рендеринг, в чём он заключаеется вообще?

По моему так выходит, что легче сделать однопоточно всё и не терять на синхронизации и дать больше возможностей, то есть

игровая логика
физика
и прочее идёт последовательно, но внутри этих шагов может быть что то исполнено параллельно

Но кажется хочется отвязать рендеринг от этого всего, то есть как минимум рисовать "параллельно" всей остальной игре, но тут сразу возникает синхронизация жесткая, как это принято решать?

15 ответов

23 просмотра

афаик заключается в том что комманд буфферы заполняешь с нескольких ядер и пото отправляешь на очередь

Kelbon- Автор вопроса
feedable
афаик заключается в том что комманд буфферы заполн...

а точно на синхронизации не потеряешь больше, складывая кучу обектов в один буфер? Ну хотя это можно хитро распараллелить чтобы убрать синхронизацию

Kelbon
а точно на синхронизации не потеряешь больше, скла...

Буферы можно иметь отдельные на каждый поток

Kelbon
а точно на синхронизации не потеряешь больше, скла...

ну так ты не складываешь с нескольких ядер на один буффер офк

KivApple
Буферы можно иметь отдельные на каждый поток

Там только очередь буферов общая, но в неё ты сабмитишь один раз за кадр или что-то такое

Kelbon- Автор вопроса
feedable
ну так ты не складываешь с нескольких ядер на один...

ну короче это надо напрямую вулкан юзать

Kelbon
ну короче это надо напрямую вулкан юзать

или так или юзать полностью готовый движок

то что ты описал это fork-join, как по мне отличный вариант, обмазать таск системой на корутинах/экзекуторах запилить

Kelbon
ну короче это надо напрямую вулкан юзать

да, рендер сам по себе не на всех gapi можно распараллелить?

disba1ancer
то что ты описал это fork-join, как по мне отличны...

я не видел нигде, где бы это называлось fork-join, кроме джавы и юникса :)))

есть очень тупая идея копировать всю сцену и использовать временную копию

Kelbon- Автор вопроса
disba1ancer
Cow, как вариант

какой смысл, если ты знаешь что будешь менять

Kelbon
какой смысл, если ты знаешь что будешь менять

Обычно твои данные это не супер мега блоб, который ты меняешь целиком, обычно это какая-то древовидная структура, и к отдельным ветвям можно было бы применить cow, только родительских ссылок следует избегать

Kelbon- Автор вопроса
disba1ancer
Обычно твои данные это не супер мега блоб, который...

ну нет, у объектов каждый кадр меняются физические координаты уж точно

Похожие вопросы

Обсуждают сегодня

что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
А я же правильно понимаю, что инструкция AT в ld только сохраняет метаинформации о том, куда загрузить сегмент, которую далее из эльфика читает grub(ну если граб)? Но я тогда ...
Evg Resh
2
Господа, импользую кастомный загрузчик, ядро запускается сразу в длинном режиме, хочу узнать, сколько всего физической ОЗУ есть у машины. И, может, знаете какие-то подводные к...
Vi Chapmann 🪙
6
а причем тут линкер скрипты? UEFI где-то расположила PML4 и прочее, а мне надо переложить её в другое физическое место. как?
Vi Chapmann 🪙
6
Ну вот мы празднуем День Рождение, а пожелания то какие будут!? Я вот желаю чтобы Apple закрылась и больше ничего не выпускала, а мы спокойно работали на том что есть, и нахер...
Евгений Данилов
2
Это фейк @cruppto_newbot?
Antskup
13
Карта сайта