Compartilhar via


Histórico de pixel gráfico

O Histórico de Pixel de Gráficos, uma das ferramentas de diagnóstico de gráficos do Visual Studio, pode ajudá-lo a entender como um determinado pixel foi afetado por eventos do Direct3D durante um determinado quadro do seu jogo ou aplicativo.

Esta é a janela Histórico de Pixel de Gráficos:

Um pixel com três eventos Direct3D em seu histórico.

Dica

A partir da atualização 3 do Visual Studio 2013, as janelas da ferramenta Diagnóstico de Gráficos são hospedadas em uma cópia independente do shell do Visual Studio.Esse shell personalizado, chamado de análise de gráficos elimina opções e menus desnecessários, caso contrário, o fluxo de trabalho e o histórico de pixel são os mesmos de antes.Para obter mais informações sobre essa alteração, consulte Visão geral do diagnóstico de gráficos.

Noções básicas sobre o histórico de pixel

Com o Histórico de Pixel de Gráficos, você pode analisar como um determinado pixel do destino de renderização é afetado pelos eventos do Direct3D durante um quadro específico. Você pode identificar um problema de processamento de um evento específico do Direct3D, mesmo quando eventos subsequentes — ou primitivas subsequentes no mesmo evento — continuam a alterar o valor de cor final do pixel. Por exemplo, um pixel pode ser processado incorretamente e obscurecido por outro pixel semitransparente, para que as cores sejam combinadas no framebuffer. Esse tipo de problema seria difícil de diagnosticar se você tivesse apenas o conteúdo final do destino da renderização para orientá-lo.

A janela Histórico de Pixel de Gráficos exibe o histórico completo de um pixel no quadro selecionado. O Buffer de Quadro Final na parte superior da janela exibe a cor escrita no framebuffer no final do quadro, além de informações adicionais sobre o pixel, como o seu quadro de origem e coordenada da tela. Essa área também contém a caixa de seleção Processar Alpha. Quando a caixa de seleção estiver marcada, a cor do Buffer de Quadro Final e os valores de cor intermediários são exibidos com transparência sobre um padrão quadriculado. Se a caixa de seleção estiver desmarcada, o canal alfa dos valores de cor será ignorado.

A parte inferior da janela exibe os eventos que podem afetar a cor do pixel, com os pseudo-eventos Inicial e Final que representam os valores de cor inicial e final do pixel no framebuffer. O valor de cor inicial é determinado pelo primeiro evento que alterou a cor do pixel (geralmente um evento Clear). Um pixel sempre tem esses dois pseudo-eventos no seu histórico, mesmo quando outros eventos não o afetaram. Quando outros eventos podem afetar o pixel, eles são exibidos entre os eventos Inicial e Final. Os eventos podem ser expandidos para mostrar seus detalhes. No caso de eventos simples, como aqueles que limpam um destino de renderização, o efeito do evento é um valor de cor. Eventos mais complexos, como chamadas de desenho geram uma ou mais primitivas que podem colaborar com a cor do pixel.

As primitivas que foram desenhadas pelo evento são identificadas por seu tipo e índice de primitiva, com a contagem total de primitiva do objeto. Por exemplo, um identificador como Triângulo (1456) de (6214) significa que a primitiva corresponde ao triângulo 1456º em um objeto que é composto de 6214 triângulos. À esquerda de cada identificador de primitiva há um ícone que resume o efeito que a primitiva tinha sobre o pixel. As primitivas que afetam a cor do pixel são representadas por um retângulo arredondado preenchido com a cor resultante. As primitivas que são excluídas devido a algum impacto sobre a cor do pixel são representadas por ícones que indicam o motivo pelo qual o pixel foi excluído. Esses ícones são descritos na seção exclusão primitivo posteriormente neste artigo.

É possível expandir cada primitiva para examinar como a saída do sombreador do pixel foi mesclada com a cor do pixel existente para produzir a cor resultante. A partir disso você também pode examinar ou depurar o código de sombreador de pixel que está associado à primitiva e ampliar o nó do sombreador de vértice para examinar a entrada do sombreador de vértice.

Exclusão de primitiva

Quando uma primitiva é excluída por afetar a cor do pixel, a exclusão pode ocorrer por diversos motivos. Cada motivo é representado por um ícone que é descrito nesta tabela:

Ícone

Motivo da exclusão

Ícone de falha de teste de profundidade.

O pixel foi excluído porque não passou no teste de profundidade.

Ícone de falha de teste recortada.

O pixel foi excluído porque não passou no teste de tesoura.

Ícone de falha do teste de estêncil.

O pixel foi excluído porque não passou no teste de estêncil.

Exclusão de chamada de desenho

Se todos as primitivas em uma chamada de desenho são excluídas por afetarem o destino de renderização porque não passaram em um teste, a chamada de desenho não pode ser expandida e um ícone que corresponde ao motivo da exclusão é exibido ao lado dela. Os motivos de exclusão da chamada de desenho se assemelha aos motivos de exclusão da primitiva e os ícones são semelhantes.

Exibição e depuração do código do sombreador

Você pode ver o código de um sombreador de vértice, sombreador Hull, sombreador de domínio, sombreador de geometria e sombreador de pixel ou depurá-lo usando os controles abaixo da primitiva associados ao sombreador.

Para exibir o código-fonte do sombreador

  • Abaixo da primitiva associada ao sombreador que você deseja exibir, escolha o título do sombreador — por exemplo, escolha Sombreador de Vértice para exibir o código-fonte do sombreador de vértice.

Para depurar um sombreador

  • Abaixo da primitiva associada ao sombreador que você deseja depurar, à direita do título do sombreador, escolha Iniciar Depuração.

Para entender os eventos de gráficos no histórico de pixel, talvez você precise obter informações sobre o estado do dispositivo no momento do evento ou sobre os objetos do Direct3D referenciados pelo evento. Para cada evento no histórico de pixel, o Histórico de Pixel de Gráficos fornece links para o estado do dispositivo atual e para objetos relacionados.

Consulte também

Tarefas

Instruções passo a passo: objetos ausentes devido ao estado do dispositivo

Instruções passo a passo: depurando erros de renderização devido ao sombreamento