Я использую 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, используемым для этого экземпляра. В моем случае обе сетки, по-видимому, рассматривались с одной и той же точки зрения. Я что-то пропустил ? Я новичок в программировании шейдеров, поэтому я могу что-то делать не так. Спасибо.