Size: a a a

pro.graphon (and gamedev)

2021 April 16

k

koren in pro.graphon (and gamedev)
Один из потоков
источник

k

koren in pro.graphon (and gamedev)
И он лочится на 30-40 hz
источник

DP

Defragmented Panda in pro.graphon (and gamedev)
prng, генератор случайных чисел

обычно используется умножение и младшие биты результата, как в x=mod(x*3+12345,2^32)

а что делать если остаются только старшие биты результата? например float где младшие биты результата умножения теряются

что мне почитать чтобы найти как в таких условиях построить prng? (с полным периодом)

int в gpu по-моему тоже не так работает как в cpu. clamp вместо overflow (да?)
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
А что во флотах теряется?
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Какое распределение ты хочешь? Равномерное от 0 до 1?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Вроде, инты работают так же, как и на CPU
источник

DP

Defragmented Panda in pro.graphon (and gamedev)
я хочу полный период (чтобы не было коротких циклов)

остальное думаю не так важно (можно настроить потом)
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
А как влияет то что это флоат?
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
У тебя же просто сколько-то бит
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Во флоате меньше вероятно
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Или ты пытаешься прям флоат умножить а потом остаток от деления взять?
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Тогда нужно умножать чтоб экспонента не съехала, но там еще и детерминизма нет, лучше в целые перевести
источник

AF

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

AF

Aidar Fattakhov in pro.graphon (and gamedev)
fract(sin(dot(vec, vec2(12.9898, 78.233))) *  43758.5453);
источник

DP

Defragmented Panda in pro.graphon (and gamedev)
флоат имеет 10 бит мантисы

если я умножу 2 флоата (каждый по 10 бит мантисы), ответ должен содержать 20 мантисы чтобы не потерять данные

но ответ пишется в 10 бит мантисы. младшие 10 бит точности теряются
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
21, а не 20, кстати, вроде, потому что неявная единица ещё
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Нет, если ты умножишь 2 Инта ты получишь 64 бита
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Но тебе нужно 32
источник

AF

Aidar Fattakhov in pro.graphon (and gamedev)
Тебе всеравно какие это биты, главное чтобы было полное кольцо
источник

DP

Defragmented Panda in pro.graphon (and gamedev)
вот, да

но все алгоритмы с упоминанием периода что я нашел требуют младших бит, mod(a*b,2^32). а я в гпу могу получить только старшие биты, floor(a/b)
источник