Modos de exibição ordenados do rasterizador

Os ROVs (exibições ordenadas por rasterizador) permitem que o código de sombreador de pixel marque associações de UAV (exibição de acesso não ordenado) com uma declaração que altera os requisitos normais para a ordem dos resultados do pipeline de gráficos para UAVs. Isso permite que algoritmos de transparência independente de ordem (OIT) funcionem, o que fornece resultados de renderização muito melhores quando vários objetos transparentes estão alinhados entre si em uma exibição.

Visão geral

Pipelines gráficos padrão podem ter problemas para compor corretamente várias texturas que contêm transparência. Objetos como cercas de arame, fumaça, fogo, vegetação e vidro colorido usam transparência para obter o efeito desejado. Problemas surgem quando várias texturas que contêm transparência estão alinhadas umas com as outras (fumaça na frente de uma cerca em frente a um prédio de vidro que contém vegetação, como exemplo). Os ROVs (exibições ordenadas por rasterizador) permitem que os algoritmos OIT subjacentes usem recursos do hardware para tentar resolve a ordem de transparência corretamente. A transparência é tratada pelo sombreador de pixel.

Os ROVs (exibições ordenadas por rasterizador) permitem que o código do sombreador de pixel marque as associações UAV com uma declaração que altera os requisitos normais para a ordem dos resultados do pipeline gráfico para UAVs.

OS ROVs garantem a ordem dos acessos UAV para qualquer par de invocações de sombreador de pixel sobrepostas. Nesse caso, "sobreposição" significa que as invocações são geradas pelas mesmas chamadas de desenho e compartilham a mesma coordenada de pixel quando no modo de execução de frequência de pixel e a mesma coordenada de pixel e exemplo no modo de frequência de exemplo.

A ordem na qual os acessos ROV sobrepostos de invocações de sombreador de pixel são executados é idêntica à ordem na qual a geometria é enviada. Isso significa que, para invocações de sombreador de pixel sobrepostas, as gravações ROV executadas por uma invocação de sombreador de pixel devem estar disponíveis para serem lidas por uma invocação subsequente e não devem afetar as leituras de uma invocação anterior. As leituras ROV executadas por uma invocação de sombreador de pixel devem refletir as gravações de uma invocação anterior e não devem refletir as gravações por uma invocação subsequente. Isso é importante para UAVs porque eles são explicitamente omitidos das garantias de invariância de saída normalmente definidas pela ordem fixa dos resultados do pipeline gráfico.

Detalhes de implementação

As exibições ordenadas por rasterizador (ROVs) são declaradas com os seguintes novos objetos HLSL (Linguagem de Sombreador de Alto Nível) e só estão disponíveis para o sombreador de pixels:

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

Use esses objetos da mesma maneira que outros objetos UAV (como RWBuffer etc.).

Resumo da API

ROVs são um constructo somente HLSL que aplica semântica de comportamento diferente a UAVs. Todas as APIs relevantes para UAVs também são relevantes para ROVs. Observe que o seguinte método, estruturas e classe auxiliar fazem referência ao rasterizador: