我在DirectX / HLSL中使用实例化将两个视图中的两个网格渲染到两个不同的渲染目标上。我有两个视图投影矩阵,正在使用顶点着色器中的InstanceId进行索引。我在RenderDoc中看到了VS Out,看来网格是从顶点着色器正确转换的。我正在片段着色器中使用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进行变换。就我而言,这两个网格似乎都是从相同的角度查看的。我想念什么吗?我是着色器编程的新手,所以我可能做错了什么。谢谢。