CBV
CBV (Constant Buffer View) é um mecanismo em APIs gráficas como Direct3D 12 que permite a passagem de dados constantes para os shaders. CBV representa uma visão especial de um Constant Buffer, que é usado para armazenar pequenas quantidades de dados que são frequentemente atualizados entre chamadas de renderização.
Características Principais do CBV
- Pequeno Volume de Dados – Projetado para armazenar matrizes de transformação, parâmetros de iluminação e outras pequenas estruturas de dados.
- Alta Velocidade de Acesso – Os dados armazenados no CBV são armazenados em cache e acessíveis aos shaders com latência mínima.
- Uso Separado com Outros Recursos – CBV pode ser usado de forma independente ou em combinação com SRV (Shader Resource View) e UAV (Unordered Access View).
Uso do CBV no Direct3D 12
No Direct3D 12, os buffers constantes são passados para os shaders através do Root Signature. Exemplo de criação de um CBV:
D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
cbvDesc.BufferLocation = constantBuffer->GetGPUVirtualAddress();
cbvDesc.SizeInBytes = (sizeof(ConstantData) + 255) & ~255; // Alinhamento de 256 bytes
device->CreateConstantBufferView(&cbvDesc, cbvHandle);
Onde o CBV é Usado?
- Passagem de Matrizes de Transformação – Usado para armazenar matrizes de modelo, visão e projeção em gráficos 3D.
- Configurações de Iluminação – Armazena parâmetros para fontes de luz, cor e intensidade.
- Variáveis Globais de Shader – Permite a passagem de parâmetros comuns de renderização sem o uso de texturas ou buffers.
Conclusão
CBV (Constant Buffer View) é um componente essencial para a passagem de dados constantes em APIs gráficas como Direct3D 12. Devido à sua alta velocidade de acesso e facilidade de uso, é amplamente aplicado na renderização para transferir parâmetros importantes aos shaders de forma eficiente, garantindo o melhor desempenho da GPU.