Função WavePrefixCountBits

Retorna a soma de todas as variáveis boolianas especificadas definidas como true em todas as faixas ativas com índices menores que a faixa atual.

Sintaxe

uint WavePrefixCountBits(
   bool bBit
);

Parâmetros

bBit

As variáveis boolianas especificadas.

Valor retornado

A soma de todas as variáveis boolianas especificadas definidas como true em todas as faixas ativas com índices menores que a pista atual.

Comentários

Essa função tem suporte do modelo de sombreador 6.0 em todos os estágios do sombreador.

 

Exemplos

O código a seguir descreve como implementar uma gravação compactada em um fluxo ordenado em que o número de elementos gravados por faixa é 1 ou 0.

bool bDoesThisLaneHaveAnAppendItem = <expr>;
// compute number of items to append for the whole wave
uint laneAppendOffset = WavePrefixCountBits( bDoesThisLaneHaveAnAppendItem );
uint appendCount = WaveActiveCountBits( bDoesThisLaneHaveAnAppendItem);
// update the output location for this whole wave
uint appendOffset;
if ( WaveIsFirstLane () )
{
    // this way, we only issue one atomic for the entire wave, which reduces contention
    // and keeps the output data for each lane in this wave together in the output buffer
    InterlockedAdd(bufferSize, appendCount, appendOffset);
}
appendOffset = WaveReadLaneFirst( appendOffset ); // broadcast value
appendOffset += laneAppendOffset; // and add in the offset for this lane
buffer[appendOffset] = myData; // write to the offset location for this lane

Confira também

Visão geral do Modelo de Sombreador 6

Modelo de sombreador 6