Внедрение в HLSL фрагмент шейдера - PullRequest
0 голосов
/ 12 мая 2019

Я использую instancing в directx / hlsl для рендеринга двух мешей из двух представлений на две разные цели рендеринга. У меня есть две матрицы проекции вида, которые я индексирую, используя InstanceId в вершинном шейдере. Я вижу VS Out в RenderDoc, и кажется, что сетки правильно преобразованы из вершинного шейдера. Я использую InstanceId во фрагментном шейдере для записи некоторых данных в соответствующую цель рендеринга следующим образом.

void MainPS(FTriangleIDPassGSToPS Input,
        out uint OutColor1 : SV_Target0,
        uint InstanceId : SV_InstanceID,
        out uint OutColor2 : SV_Target1)
{
    if(InstanceId)
    {
        OutColor2 = 10;
    }
    else
    {
        OutColor1 = 100;
    }
}

Но когда я визуализирую две цели рендеринга в RenderDoc, я обнаруживаю, что все сетки имеют одинаковое преобразование. Хотя значения разные (RT 1 имеет значения 100, а RT 2 имеет значения 100), но я ожидал, что сетки будут преобразованы в соответствии с MVP, используемым для этого экземпляра. В моем случае обе сетки, по-видимому, рассматривались с одной и той же точки зрения. Я что-то пропустил ? Я новичок в программировании шейдеров, поэтому я могу что-то делать не так. Спасибо.

...