0
votes

Our project is to profile the various Vertex and Pixel, Geometry shaders used within DirectX 10 or 11 SDK application or with Game (BioShock, Far Cry etc..) applications.

Now we need an technical understanding of when the Shaders (VS,GS,PS) are being used or rather executed within pipeline, we know that during Draw() DirectX API call, the setting shader get's executed within the Pipeline.

  1. Is there any other API than Draw() call, which can internally execute or utilize the Shader being set to the Pipeline using SetShader()?

  2. Is the Device API's (such as, Map, unmap, getResourcem and Copy resource) manipulate the shaders indirectly?

Any pointers related to usage of shaders within DirectX runtime or graphics driver other than DirectX Draw() API calls will be helpful for us to identify and have robust implementation.

1
Well, wouldn't the understanding of the workings of Direct3D and shaders in general be the first step before even thinking of trying to profile those shaders?Christian Rau
Our understanding with the Direct3D and shaders will give us the hint of usage of shaders is within Draw() Call, but we are facing problem within application, where the Shaders are being used by Create and Set Shader call and found no Draw call found to be associated to it..Ramanand Bhat
So our questions remains Is there any ways the shaders are being used within D3D runtime or Driver without usage of Draw Call?Ramanand Bhat

1 Answers

1
votes
  1. Yes, check Compute Shaders and specifically Dispatch() method.
  2. No, shaders are just a state information, so once they've loaded into ID3D11*Shader objects, they are not changeable. If you want to decompile them, take a look at Shader Reflection API.