Функция WavePrefixSum
Возвращает сумму всех значений в активных полосах с меньшими индексами, чем этот.
Синтаксис
<type> WavePrefixSum(
<type> value
);
Параметры
value
Итоговое значение.
Возвращаемое значение
Сумма значений.
Комментарии
Порядок операций в этой подпрограмме не может быть гарантирован. Таким образом, фактически флаг [точный] игнорируется в нем.
Постфиксную сумму можно вычислить, добавив префиксную сумму к значению текущей полосы.
Обратите внимание, что активная полоса с наименьшим индексом всегда будет получать значение 0 для суммы префикса.
Эта функция поддерживается из модели шейдера версии 6.0 на всех этапах шейдера.
Примеры
uint numToSum = 2;
uint prefixSum = WavePrefixSum( numToSum );
На компьютере с размером волны 8 и всеми активными полосами, кроме полос 0 и 4, из WavePrefixSum будут возвращены следующие значения.
индекс полосы | status | prefixSum |
---|---|---|
0 | неактивно | н/д |
1 | active | = 0 |
2 | active | = 0+2 |
3 | active | = 0+2+2 |
4 | неактивно | Недоступно |
5 | active | = 0+2+2+2 |
6 | active | = 0+2+2+2+2 |
7 | active | = 0+2+2+2+2+2+2 |