1
我在像素着色器中做了一些紋理的實驗,通過在像素着色器上寫入一些值,但在下一次繪製調用時我沒有看到它的效果,當我將相同的紋理再次綁定爲一個SRV。用像素着色器在無人機上書寫
實施例的着色器:
RWTexture2D<unsigned int> uav;
Texture2D tex : register(t0);
// Vertex Shader
float4 VS(float4 Pos : POSITION) : SV_POSITION
{
return Pos;
}
// Pixel Shader, draw1 warm up
float4 PS(float4 Pos : SV_POSITION) : SV_Target
{
return float4(1.0f, 1.0f, 0.0f, 1.0f); // Yellow, with Alpha = 1
}
// Pixel Shader, we are writing onto the texture by binding it as an UAV, draw2
float4 PS1(float4 Pos : SV_POSITION) : SV_Target
{
if((Pos.x %2) && (Pos.y %2))
{
uav[Pos.xy]=0xFF000000; //some color
}
else
{
uav[Pos.xy]=0x00FF0000; //some color
}
return float4(1.0f, 0.0f, 0.0f, 1.0f);
}
// Pixel Shader, here we are accessing texture as an SRV, draw3
float4 PS2(float4 Pos : SV_POSITION) : SV_Target
{
float4 x = tex[Pos.xy];
return x;
}
如果需要我可以提供應用程序的源代碼。
還提供相關的資源創建和綁定代碼。使用圖形調試器(Visual Studio One,Nvidia Nsight,AMD PerfStudio等)檢查資源並上傳屏幕截圖。可能是一個整數格式的'RWTexture2D'一個問題?紋理格式是否兼容?是否啓用調試層並且輸出中沒有警告?你是否正確解除綁定UAV /渲染目標? –
Drop
您是否驗證過無人機由PS1正確設置? (可以使用圖形調試器,也可以使用額外的代碼 - 清零,用PS1繪製,複製到分段,映射進行讀取,檢查pData) – MooseBoys