uz
DF
Daniil Fedorov
июля 8, 2025
Обновлено июля 8, 2025

CBV

CBV (Constant Buffer View) — это механизм в графических API, таких как Direct3D 12, позволяющий передавать константные данные в шейдеры. CBV представляет собой специальное представление (View) буфера констант (Constant Buffer), который используется для хранения небольших объемов данных, часто изменяемых между вызовами рендеринга.

Основные характеристики CBV

  • Малый объем данных — предназначен для хранения матриц трансформации, параметров освещения и других небольших структур данных.
  • Высокая скорость доступа — данные, хранящиеся в CBV, кэшируются и доступны для шейдеров с минимальной задержкой.
  • Раздельное использование с другими ресурсами — CBV может применяться отдельно или в комбинации с SRV (Shader Resource View) и UAV (Unordered Access View).

Использование CBV в Direct3D 12

В Direct3D 12 константные буферы передаются в шейдеры через Root Signature. Пример создания CBV:

D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
cbvDesc.BufferLocation = constantBuffer->GetGPUVirtualAddress();
cbvDesc.SizeInBytes = (sizeof(ConstantData) + 255) & ~255; // Выравнивание на 256 байт

device->CreateConstantBufferView(&cbvDesc, cbvHandle);

Где применяется CBV?

  • Передача матриц трансформации — используется для хранения модели, вида и проекционных матриц в 3D-графике.
  • Настройки освещения — хранит параметры источников света, цвета и интенсивности.
  • Глобальные переменные шейдеров — позволяет передавать общие параметры рендеринга без использования текстур или буферов.

Заключение

CBV (Constant Buffer View) — это ключевой элемент передачи константных данных в графических API, таких как Direct3D 12. Благодаря высокой скорости доступа и простоте использования, он широко применяется в рендеринге для передачи важных параметров шейдерам, обеспечивая эффективную работу графического процессора.