Schreiben auf einem UAV im pixel shader

Gab ich einige experiment mit Texturen, die als UAV im pixel shader schreiben einige Wert drauf, aber ich bin nicht zu sehen, seine Wirkung in der nächsten Ziehung nennen, wenn ich binden Sie die gleiche textur wieder als SRV.

Beispiel-shader:

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;   
}

Kann ich die app-source-code, falls erforderlich.

  • Bieten auch eine relevante Ressourcen` Schöpfung und verbindlichen Kodex. Verwenden Sie Grafik-debugger (Visual Studio one, Nvidia Nsight, AMD PerfStudio, etc.) zu überprüfen Ressourcen und screenshots hochladen. Könnte ein integer-format RWTexture2D<unsigned int> ein problem? Tut Formate von Texturen kompatibel? Tut debug-Ebene aktiviert und es gibt keine Warnungen in der Ausgabe? Tun Sie richtig lösen UAV - /render-targets?
  • Haben Sie sichergestellt, dass die UAV ist korrekt eingestellt, die von PS1? (entweder mit der Grafik-debugger, oder mit zusätzlichen code - clear auf 0, ziehen mit PS1, Kopie in der staging map für Lesen, inspizieren, pData)
InformationsquelleAutor Yogesh | 2014-04-03
Schreibe einen Kommentar