Visual Studio Graphics Debugger skips working pixel shader

I am programming in C #, Visual Studio 2013 Update 5 RC and using Direct3D 11 (via SlimDX) to render an animated scene. I experimented with unordered access textures in a pixel shader and it works great. Ie, my pixel shader has an RWTexture2D<float> bound to register(u1) , which I set along with the target rendering view. When I run my application, the rendering works fine and I don't get any warnings or errors from the D3D debugging level.

Although this all works, I cannot parse individual frames using the Visual Studio graphical debugger. The (correct) output image currently has some shade of gray, as seen in the following image:

Screenshot from the rendered output

Although the FPS measurements work fine when I capture a frame, it always appears as completely white (or any color that I used to clear the render target) in the VSG log:

Captured frames

When I open the Visual Studio graphical analyzer for one of the frames, I see a problem in the graphics pipeline. The input assembler and vertex shader work as intended, but there is no pixel shader and there is no "no mesh" at the merge stage:

enter image description here

The object table clearly indicates that a pixel shader is installed ( obj:7 ). Do you have any ideas or suggestions on why they are not displayed in the graphics pipeline or why the captured frames are empty, although they work in my program? I can exclude that it plays a role from where the shader code is loaded, i.e. Whether I use Compile or CompileFromFile . One thing that I still suspect, but still cannot verify, is that the unordered access resource in the pixel shader mixes the Visual Studio graphical debugger. Any hints? Thank you in advance.

Edit: this is not related to the passage of MSDN through improperly configured pipelines , as the graphical analyzer shows that the pixel shader is installed on the device context. In addition, persistent buffers are correctly set in the pixel shader.

+6
source share
2 answers

You need to force it to use warp debugging. Follow the instructions below. 1. Open DirectX Properties using Debug β†’ Graphics-> DirectX Control Panel. enter image description here

  1. Click "Edit List", find vsgraphicsdesktopengine.exe and add it to the list.
  2. Select Force On for the Debug Layer and select the Force WARP checkbox in the DirectX properties, then apply it. enter image description here
  3. Run graphical debugging and grab frames and view the pipeline again.

Hope this helps you!

Regards, Visual Studio Graphics Team

+1
source

Are you using the Visual Studio community?

Because I use Community at home and a professional at school, and I have the same problem with the version of the community, but with a professional at school everything is in order.

0
source

Source: https://habr.com/ru/post/986831/


All Articles