Cronologia pixel grafica
Cronologia pixel grafica, uno degli strumenti di diagnostica grafica presenti in Visual Studio, consente di comprendere in che modo un particolare pixel è stato interessato dagli eventi di Direct3D durante un frame specifico del gioco o dell'app.
Questa è la finestra Cronologia pixel grafica:
Nota
A partire da Visual Studio 2013 Update 3, le finestre degli strumenti di diagnostica grafica sono ospitate in una copia indipendente della shell di Visual Studio.Questa shell personalizzata, denominata Analisi grafica, elimina le opzioni e i menu non necessari, ma a parte ciò la Cronologia pixel e il flusso di lavoro rimangono uguali a prima.Per altre informazioni su questa modifica, vedere Panoramica della diagnostica grafica.
Informazioni sulla cronologia del pixel
Con la Cronologia pixel grafica è possibile analizzare come un pixel specifico della destinazione di rendering sia interessato dagli eventi Direct3D durante un frame specifico. È possibile associare con precisione un problema di rendering a un evento specifico di Direct3D, anche quando gli eventi successivi, o le primitive successive nello stesso evento, continuano a modificare il valore del colore finale del pixel. Ad esempio, è possibile eseguire il rendering errato di un pixel che viene quindi nascosto da un altro pixel semitrasparente in modo che i loro colori vengano fusi insieme nel framebuffer. Questo tipo di problema sarebbe difficile da diagnosticare se si disponesse solo del contenuto finale della destinazione di rendering come indicazione.
Nella finestra Cronologia pixel grafica viene visualizzata la cronologia completa di un pixel nel corso del frame selezionato. Nella casella Buffer frame finale posta nella parte superiore della finestra viene visualizzato il colore scritto nel framebuffer alla fine del frame, insieme a informazioni aggiuntive sul pixel quali il frame di origine e le coordinate della schermata. Quest'area include inoltre la casella di controllo Rendering alfa. Quando questa casella di controllo è selezionata, i valori dei colori intermedi e del colore di Buffer frame finale vengono visualizzati con trasparenza su un motivo a scacchi. Se la casella di controllo è deselezionata, il canale alfa dei valori di colore viene ignorato.
Nella parte inferiore della finestra verranno visualizzati gli eventi che avevano la possibilità di modificare il colore del pixel, insieme agli pseudo eventi Iniziale e Finale che rappresentano i valori di colore iniziale e finale del pixel nel framebuffer. Il valore del colore iniziale è determinato dal primo evento che ha modificato il colore del pixel (in genere un evento Clear). Un pixel ha sempre questi due pseudo-eventi nella cronologia, anche quando non è stato interessato da altri eventi. Quando altri eventi possono influire sul pixel, vengono visualizzati tra gli eventi Iniziale e Finale. È possibile espandere gli eventi per visualizzarne i dettagli. Per gli eventi semplici come quelli che eliminano una destinazione di rendering, l'effetto dell'evento è semplicemente un valore di colore. Gli eventi più complessi come le chiamate di disegno generano una o più primitive che possono contribuire al colore del pixel.
Le primitive che sono state create dall'evento vengono identificate dal tipo primitivo e dall'indice, con il numero totale di primitive per l'oggetto. Ad esempio, un identificativo come Triangolo (1456) di (6214) significa che la primitiva corrisponde al 1456° triangolo in un oggetto composto da 6214 triangoli. A sinistra di ciascun identificatore di primitiva è presente un'icona che riepiloga l'effetto della primitiva sul pixel. Le primitive che influiscono sul colore del pixel vengono rappresentate da un rettangolo arrotondato che viene riempito con il colore risultante. Le primitive escluse dall'influenzare il colore del pixel vengono rappresentate da icone che indicano il motivo per cui il pixel è stato escluso. Queste icone vengono descritte nella sezione Primitive exclusion più avanti in questo articolo.
È possibile espandere ogni primitiva per esaminare in che modo l'output del pixel shader è stato unito al colore del pixel esistente per produrre il colore risultante. A questo punto è possibile esaminare o eseguire il debug del codice del pixel shader associato alla primitiva ed è inoltre possibile espandere il nodo di vertex shader per esaminare l'input del vertex shader.
Esclusione di primitive
Se una primitiva viene esclusa dall'influenzare il colore del pixel, l'esclusione può verificarsi per diversi motivi. Ogni motivo è rappresentato da un'icona descritta nella tabella seguente:
Icona |
Motivo dell'esclusione |
---|---|
Pixel escluso poiché non ha superato il test di profondità. |
|
Pixel escluso poiché non ha superato il test di ritaglio. |
|
Pixel escluso poiché non ha superato il test di stencil. |
Esclusione di chiamata di disegno
Se tutte le primitive di una chiamata di disegno vengono escluse dall'influenzare la destinazione di rendering in quanto non superano un test, la chiamata di disegno non può essere espansa e accanto a tale chiamata viene visualizzata un'icona che corrisponde al motivo dell'esclusione. I motivi dell'esclusione della chiamata di disegno assomigliano a quelli dell'esclusione delle primitive e le relative icone sono simili.
Visualizzazione e debug del codice dello shader
È possibile visualizzare il codice per Vertex Shader, Hull Shader, Domain Shader, Geometry Shader o Pixel Shader oppure eseguirne il debug, usando i comandi sotto la primitiva associata allo shader.
Per visualizzare il codice sorgente di uno shader
- Al di sotto della primitiva associata allo shader da visualizzare, scegliere il titolo dello shader, ad esempio scegliere Vertex Shader per visualizzare il codice sorgente del vertex shader.
Per eseguire il debug di uno shader
- Al di sotto della primitiva associata allo shader di cui si vuole eseguire il debug, a destra del titolo dello shader, scegliere Avvia debug.
Collegamenti a oggetti grafici
Per comprendere gli eventi grafici nella cronologia del pixel, potrebbero essere necessarie informazioni sullo stato del dispositivo al momento dell'evento o sugli oggetti Direct3D a cui fa riferimento l'evento. Per ogni evento nella cronologia del pixel, la Cronologia pixel grafica fornisce collegamenti allo stato del dispositivo in essere e agli oggetti correlati.
Vedere anche
Attività
Procedura dettagliata: oggetti mancanti a causa dello stato del dispositivo
Procedure dettagliate: debug degli errori di rendering dovuti allo sfondo