Size: a a a

pro.graphon (and gamedev)

2020 November 28

d

disba1ancer in pro.graphon (and gamedev)
я планирую на каждый ЦП держать по потоку и раздавать им асинхронные таски
источник

d

disba1ancer in pro.graphon (and gamedev)
ну и один поток будет основным, крутить UI и прочие потокозависимые вещи
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Mind
Что можно почитать по реализации PCSS? А то что-то херня какая-то получается с размером полутени
если найдёшь что-то скинь сюда, я только пару статей встречал, одну от NV, вторую в GPU Gems или Pro
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
обе так себе
источник

M

Mind in pro.graphon (and gamedev)
Увы, нашёл ещё только какую-то кривоватую имплементацию на glsl - пришлось шаманить руками
источник
2020 November 29

A

Arelav in pro.graphon (and gamedev)
disba1ancer
я планирую на каждый ЦП держать по потоку и раздавать им асинхронные таски
А как решаешь то что таски могут сильно отличаться?
источник

d

disba1ancer in pro.graphon (and gamedev)
Arelav
А как решаешь то что таски могут сильно отличаться?
это создаёт какую-то проблему?
источник

A

Arelav in pro.graphon (and gamedev)
disba1ancer
это создаёт какую-то проблему?
Ну в целом да? Например могут быть тупые таски в духе исполнить лямбду где то. А могут быть таски с ожиданием, хотя ты мог от таких избавиться. Ещё например io таски. Или наоборот cpu bounded. В общем для части задач может получиться, что создание твоей обобщенной таски вносит приличный оверхед в сравнении с наивным вариантом для простых тасок. Ну в том же folly предлагается по дефолту два экзекутора, а у тебя как я понимаю строго один к которому привязана реализация тасок
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Mind
Что можно почитать по реализации PCSS? А то что-то херня какая-то получается с размером полутени
Кстати реально, у меня с тенями ужас. Они пиксельные, наивный pcf просто делает пиксельные полутени. Ещё все постоянно скачет при движении камеры, так как направленные карты теней привязаны к её позиции
источник

M

Mind in pro.graphon (and gamedev)
Ну приятный результат у меня получился только на 128 семплах с выборкой по пуассону, что дичайший треш. Но для моей задачи приемлемо
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
128? Чёт для риалтайма реально какой-то треш
источник

M

Mind in pro.graphon (and gamedev)
Ну я для обливиона прикручивал PCSS. Можно позволить и такую - всё равно гпу там больше девать некуда
источник

A

Arelav in pro.graphon (and gamedev)
disba1ancer
потоки специализированы и наверняка некоторые из них будут простаивать, потому что у них будут очень простые задачи
Ну и в целом ничего плохого кроме того что стек занимает память в том что несколько потоков простаивает нет. На мой взгляд иметь для специализированных задач свой поток или тредпул вполне нормально. К тому же это может давать больше возможностей в плане оптимизации синхронизации.
Можно конечно делать тредпул фиберов/корутин, но не факт что получиться лучше.
источник

d

disba1ancer in pro.graphon (and gamedev)
Arelav
Ну в целом да? Например могут быть тупые таски в духе исполнить лямбду где то. А могут быть таски с ожиданием, хотя ты мог от таких избавиться. Ещё например io таски. Или наоборот cpu bounded. В общем для части задач может получиться, что создание твоей обобщенной таски вносит приличный оверхед в сравнении с наивным вариантом для простых тасок. Ну в том же folly предлагается по дефолту два экзекутора, а у тебя как я понимаю строго один к которому привязана реализация тасок
таски которые которые ждут должны быть в await состоянии, т.е. чтобы их можно было повторно запланировать (например, по окончании IO), и они продолжили с того места где остановились (например, подали запрос на IO)
источник

d

disba1ancer in pro.graphon (and gamedev)
Arelav
Ну и в целом ничего плохого кроме того что стек занимает память в том что несколько потоков простаивает нет. На мой взгляд иметь для специализированных задач свой поток или тредпул вполне нормально. К тому же это может давать больше возможностей в плане оптимизации синхронизации.
Можно конечно делать тредпул фиберов/корутин, но не факт что получиться лучше.
я и хочу тредпул корутин
источник

A

Arelav in pro.graphon (and gamedev)
disba1ancer
я и хочу тредпул корутин
А ты хочешь stateless?
источник

d

disba1ancer in pro.graphon (and gamedev)
ещё у меня есть задумка с примитивами синхронизации для пулов, что-то вроде co_await mtx.lock()
источник

A

Arelav in pro.graphon (and gamedev)
Arelav
А ты хочешь stateless?
Мне кажется без 20 стандарта убого очень будет.
источник

A

Arelav in pro.graphon (and gamedev)
disba1ancer
ещё у меня есть задумка с примитивами синхронизации для пулов, что-то вроде co_await mtx.lock()
Ну да тебе нужны свои, иначе как оно работать будет
источник

d

disba1ancer in pro.graphon (and gamedev)
Arelav
А ты хочешь stateless?
вообще у меня можно любые, даже скостыленые на switch, главное поддерживать контракт с пулом
источник