Notícias
Novos modelos de linguagem da API Serverspace GPT
Serverspace Black Friday
DF
Daniil Fedorov
março 19, 2025
Atualizado março 19, 2025

UAV

UAV (Unordered Access View) é um mecanismo nas APIs Direct3D e Vulkan que permite aos shaders escreverem dados em recursos de memória da GPU sem uma sequência de acesso rígida. Diferente dos buffers e texturas tradicionais, que são apenas para leitura nos shaders de pixel e vértice, os UAVs suportam leitura e escrita simultânea a partir de múltiplas threads de shader.

Principais Características do UAV

  • Acesso Arbitrário – Os dados podem ser lidos e escritos em qualquer ordem, tornando os UAVs ideais para cálculos paralelos.
  • Suporte a Múltiplos Tipos de Recursos – UAVs podem ser aplicados a texturas, buffers e outros recursos de memória da GPU.
  • Uso em Compute Shaders – UAVs são amplamente utilizados em Compute Shaders, onde grandes volumes de dados precisam ser escritos sem uma estrutura rígida de acesso.
  • Compatibilidade com Diferentes Estágios do Pipeline – No Direct3D 12 e Vulkan, os UAVs podem ser usados não apenas em Compute Shaders, mas também em Pixel e até Geometry Shaders.

Onde os UAVs são Utilizados?

  • Iluminação Baseada em Física – Permite que os shaders armazenem cálculos intermediários de iluminação global.
  • Pós-Processamento – Efeitos como desfoque gaussiano ou profundidade de campo podem utilizar UAVs para acelerar os cálculos.
  • Geração e Mapeamento de Texturas – Usado em técnicas como Screen Space Reflections (SSR) ou voxelização.
  • Simulações Físicas – Aplicado no processamento de sistemas dinâmicos, como partículas ou fluidos.

Exemplo de Código

Um exemplo de criação de um UAV para um buffer no Direct3D 12:

D3D12_UNORDERED_ACCESS_VIEW_DESC uavDesc = {};
uavDesc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
uavDesc.Format = DXGI_FORMAT_UNKNOWN;
uavDesc.Buffer.FirstElement = 0;
uavDesc.Buffer.NumElements = elementCount;
uavDesc.Buffer.StructureByteStride = sizeof(MyStruct);
uavDesc.Buffer.CounterOffsetInBytes = 0;
device->CreateUnorderedAccessView(buffer, nullptr, &uavDesc, uavHandle);

Conclusão

O UAV (Unordered Access View) é uma ferramenta essencial para operações de memória na GPU, proporcionando flexibilidade na escrita e no processamento de dados. Devido ao seu poder e versatilidade, os UAVs são amplamente utilizados em renderização, simulações e outras tarefas computacionalmente intensivas.

Usamos cookies para melhorar sua experiência no Serverspace. Ao continuar a navegar em nosso site, você concorda com o Uso de Cookies e com a Política de Privacidade.