Debuggear DirectX10/11 shaders con AMD's GPU PerfStudio
Lamentablemente, no lo puedo hacer andar con DirectX11 y SlimDX (habría sido extremadamente útil) y por lo que encontré googleando nadie puede.
De todas formas, se puede usar sin problemas con proyectos en C++.
Descargar GPU PerfStudio
La versión actual es portable así que no hace falta instalar nada.
Cómo usarlo (para el ejemplo, voy a usar Single_Pass_Environment_Mapping_Demo.zip sacado del D3DBook)
La aplicación usa una arquitectura cliente/servidor (se puede debuggear remotamente), por lo que lo primero es ejecutar la aplicación a debuggear con el servidor (GPUPerfServer.exe). El puerto por defecto utilizado es el 80, pero se puede cambiar pasándolo por parámetro (creando un acceso directo y agregando al comando --port 8080, por ejemplo). Ejecutar la aplicación consiste en simplemente arrastrarla y soltarla sobre GPUPerfServer.exe o el acceso directo usado.
Debería aparecer entonces:
Con el server y la aplicación corriendo, abrimos el cliente de PerfStudio y hacemos Connect (si se modificó el puerto, cambiarlo en Settings). Debería figurar nuestra aplicación.
Una vez conectado, se debe pausar (Pause) para poder pasar a debuggear, tracear o ver las estadísticas del frame. Al pausar se captura el frame y se habilitan estas tres opciones. La ayuda del programa explica bastante bien como se usan y, de todas formas, se intuye fácilmente.
Para habilitar el debugger del shader en HLSL, hace falta establecer flags en el .fx.
#define D3D10_SHADER_DEBUG #define D3D10_SHADER_PREFER_FLOW_CONTROL #define D3D10_SHADER_SKIP_OPTIMIZATION













