Несколько представлений ресурсов шейдера на один Texture2DArray - PullRequest
0 голосов
/ 17 января 2020

У меня странная проблема, с которой я борюсь. В настоящее время я выполняю модульный тест с использованием двух проходов рендеринга. Первый проход рендерится в две цели рендеринга, которые представляют собой два разных среза Texture2DArray. Пока это работает.

Теперь я хочу, чтобы второй проход смешался между этими двумя выходами. Из-за некоторых внутренних предпосылок я вынужден использовать два отдельных Texture2D в пиксельном шейдере. Теперь я хочу создать два различных представления ресурсов шейдера для texture2darray, который был выводом первого прохода, и установить их как один texture2ds для шейдера. Поэтому я определяю правильный массив в описании srv в Texture2DArray.

_srvDesc.Texture2DArray.ArraySize = 1;
_srvDesc.Texture2DArray.FirstArraySlice = currLayer;

Возможно ли это сделать и как это правильно сделать?

Отладка в Nsight, представления выглядят правильно, и связанные текстуры также выглядят правильно. (На самом деле это просто один Texture2DArray с двумя SRV).

Но при выборке двух текстур2D я получаю только первый срез массива.

Если я настрою тестирование FirstArraySlice для обоих видов на один и тот же срез (0 или 1), это даст мне правильный срез при выборке двух текстур. Только если они разные, я всегда получаю первое.

newTexture->_srvDesc.Texture2DArray.ArraySize = 1;
newTexture->_srvDesc.Texture2DArray.FirstArraySlice = 0;

или

newTexture->_srvDesc.Texture2DArray.ArraySize = 1;
newTexture->_srvDesc.Texture2DArray.FirstArraySlice = 1;

Так есть ли общая проблема, что мне не разрешено использовать два разных вида на одну и ту же текстуру или я что-то пропустил?

...