Битовая альтернатива - PullRequest
2 голосов
/ 16 мая 2011

Я пытаюсь написать шейдер, который должен генерировать псевдослучайные числа на пиксель - выборка из текстуры слишком дорогая.

Все генераторы, которые я нашел, используют операторы ^, <<, &, но модель шейдера, над которой я работаю, не поддерживает их. Могу ли я использовать вместо них математический эквивалент этих операторов? </p>

Для справки, я ценю скорость за точность.

Спасибо!

1 Ответ

0 голосов
/ 16 мая 2011

Из них единственный математический эквивалент, который я знаю, это оператор <<.А именно:

N << X = N * (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 и т. Д.) </p>

Например,

N << 5 = N * 32 </p>

Просто создайте поиск для значения (2 ^ X) и умножьте его на это значение.

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

Исходный код для реализации на C может быть полезен для этого.Или просто найдите алгоритмы для реализации каждого, например: Быстрое внедрение / приближение функции pow () в C / C ++

...