Size: a a a

pro.graphon (and gamedev)

2020 July 15

d

disba1ancer in pro.graphon (and gamedev)
float в диапазоне [0;1)
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
disba1ancer
я решил передавать 2 числа, целое - количество секунд и float - доли секунды
Можно и так, только не обязательно доли секунды, скорее, какого-нибудь особого периода в твоём случае
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Можно и так, только не обязательно доли секунды, скорее, какого-нибудь особого периода в твоём случае
ну в принципе я разобрался как даже воспроизводить дробные частоты, чтобы на стыке буферов не было скачков
источник

d

disba1ancer in pro.graphon (and gamedev)
float generateSample(int iSecond, float fSecond) {
 auto t = iSecond * fract(50.9f);
 return std::sin((fSecond * 50.9f + t) * 2 * PI);
}
источник

d

disba1ancer in pro.graphon (and gamedev)
disba1ancer
float generateSample(int iSecond, float fSecond) {
 auto t = iSecond * fract(50.9f);
 return std::sin((fSecond * 50.9f + t) * 2 * PI);
}
и всё-таки дробные частоты с какими-то щелчками идут, правда как-то рандомно, видимо плохо помогает формула
источник

P🍣

Pavel 🍣 in pro.graphon (and gamedev)
/ghzen@FailsBot
источник

r

risenow in pro.graphon (and gamedev)
/ghzen@FailsBot
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Anatoly Tomilov
Как-то читал статью, где чувак, приглашённый в id Software со стороны и не знакомый с кодовой базой и движком id Tech 3 в паре мест воткнул прагмы OpenMP (перед главным циклом #pragma omp parallel или что-то типа того), что-то где-то разбил на пару функций и в результате ускорил игру если не в разы, то на много десятков процентов. Думаю, что вся муть свыше #pragma omp parallel или #pragma omp task нигде и не нужна, кроме самых сложных сетевых серверов.
Там действительно не много профита, я прям на капельку обгонял на лабах в универе, это точно не стоит в 10 раз большего кода
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Anatoly Tomilov
Как-то читал статью, где чувак, приглашённый в id Software со стороны и не знакомый с кодовой базой и движком id Tech 3 в паре мест воткнул прагмы OpenMP (перед главным циклом #pragma omp parallel или что-то типа того), что-то где-то разбил на пару функций и в результате ускорил игру если не в разы, то на много десятков процентов. Думаю, что вся муть свыше #pragma omp parallel или #pragma omp task нигде и не нужна, кроме самых сложных сетевых серверов.
Вообще на серверах наоборот кажется проблем с железом нет в отличие от клиентов
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Timur Gagiev
Кстати, раз уж речь зашла о ретро. Запустил свой растеризатор на gba, выдаёт как и эмулятор 7 фпс.
😱
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Aidar Fattakhov
Там действительно не много профита, я прям на капельку обгонял на лабах в универе, это точно не стоит в 10 раз большего кода
У меня с форк-джойнами всё наоборот, сильно помогли
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
У меня с форк-джойнами всё наоборот, сильно помогли
Ну я делал ещё более статический диспатч чем static openmp
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Там kinda дата параллелизм был
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Это просто помогало компилятору векторизовать все как надо
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Ещё там вроде какие-то лишние синхронизации были в опенмп
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Aidar Fattakhov
Это просто помогало компилятору векторизовать все как надо
Этого мало, надо все ядра использовать, если такая возможность есть
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Ну я OpenMP не пробовал, вместо него пул воркеров с высоким приоритетом крутится, а элементы (или небольшие группы элементов) на обработку берутся через InterlockedAdd счётчика распараллеленного цикла, с самобалансировкой
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Ну я OpenMP не пробовал, вместо него пул воркеров с высоким приоритетом крутится, а элементы (или небольшие группы элементов) на обработку берутся через InterlockedAdd счётчика распараллеленного цикла, с самобалансировкой
Ну при таком подходе компилятор кажется совсем ничего не соптммизирует если ты большие батчи не подашь, в отличие кстати от омп потомучто это часть компилятора
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Правда сомневаюсь что это имеет хоть какой-нибудь смысл на вижаке
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Aidar Fattakhov
Ну при таком подходе компилятор кажется совсем ничего не соптммизирует если ты большие батчи не подашь, в отличие кстати от омп потомучто это часть компилятора
А он соптимизирует, если ты на каждой итерации делаешь кучу разных вещей и лезешь в разные места?
источник