D3D11_INPUT_ELEMENT_DESC: Типы элементов/порядок/упаковка

Есть ли проблемы (производительность или другие), связанные с типами/порядком элементов в структуре D3D11_INPUT_ELEMENT_DESC? Например, теперь у меня есть макет ввода, определенный следующим образом:

D3D11_INPUT_ELEMENT_DESC QuadInputLayoutDescription[] = {
    { "PRECT",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, 0,                               D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "DEPTH",  0, DXGI_FORMAT_R32_FLOAT,           0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "TEXID",  0, DXGI_FORMAT_R32_UINT,            0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "SLICE",  0, DXGI_FORMAT_R32_FLOAT,           0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "UVRCT",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "COLOR",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 } };

Имеет ли значение, что здесь элемент TEXID имеет тип UINT, а не FLOAT? Предпочтительно ли «выравнивание» с четырехкомпонентной векторной структурой (float4); Должен ли я «упаковать» все R32G32B32A32_FLOAT вместе в начале макета? Есть ли что-нибудь проложенное?


person d7samurai    schedule 30.04.2014    source источник
comment
UINT подходит для наборов функций 10_0+, но рекомендуется указывать свои собственные смещения, в противном случае вам нужно прочитать всю документацию, касающуюся правил упаковки. Я бы предположил, что UVRCT имеет смещение 32 из-за правила выравнивания float4.   -  person RelativeGames    schedule 23.05.2014


Ответы (1)


Основной проблемой производительности для входных макетов является их общий размер, поскольку он напрямую влияет на объем данных, которые должны пройти через кэш вершин до и после преобразования. Исторически общий размер идеи составлял 32 байта или 64 байта.

В противном случае типы, которые вы используете, обычно не имеют большого значения с точки зрения производительности. Ограничение на используемые типы — ваше целевое оборудование Уровень возможностей.

person Chuck Walbourn    schedule 26.06.2014