estrutura D3D12_RASTERIZER_DESC (d3d12.h)

Descreve o estado do rasterizador.

Sintaxe

typedef struct D3D12_RASTERIZER_DESC {
  D3D12_FILL_MODE                       FillMode;
  D3D12_CULL_MODE                       CullMode;
  BOOL                                  FrontCounterClockwise;
  INT                                   DepthBias;
  FLOAT                                 DepthBiasClamp;
  FLOAT                                 SlopeScaledDepthBias;
  BOOL                                  DepthClipEnable;
  BOOL                                  MultisampleEnable;
  BOOL                                  AntialiasedLineEnable;
  UINT                                  ForcedSampleCount;
  D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
} D3D12_RASTERIZER_DESC;

Membros

FillMode

Um valor de tipo D3D12_FILL_MODE que especifica o modo de preenchimento a ser usado durante a renderização.

CullMode

Um valor de tipo D3D12_CULL_MODE que especifica que triângulos voltados para a direção especificada não são desenhados.

FrontCounterClockwise

Determina se um triângulo está voltado para frente ou para trás. Se esse membro for TRUE, um triângulo será considerado frontal se seus vértices estiverem no sentido anti-horário no destino de renderização e forem considerados voltados para trás se forem no sentido horário. Se esse parâmetro for FALSE, o oposto será true.

DepthBias

Valor de profundidade adicionado a um determinado pixel. Para obter informações sobre o viés de profundidade, consulte Desvio de profundidade.

DepthBiasClamp

Desvio máximo de profundidade de um pixel. Para obter informações sobre o viés de profundidade, consulte Desvio de profundidade.

SlopeScaledDepthBias

Escalar na inclinação de um determinado pixel. Para obter informações sobre o viés de profundidade, consulte Desvio de profundidade.

DepthClipEnable

Especifica se o recorte deve ser habilitado com base na distância.

O hardware sempre executa o recorte x e y de coordenadas rasterizadas. Quando DepthClipEnable é definido como default–TRUE, o hardware também corta o valor z (ou seja, o hardware executa a última etapa do algoritmo a seguir).


0 < w
-w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
-w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
0 <= z <= w

Quando você define DepthClipEnable como FALSE, o hardware ignora o recorte z (ou seja, a última etapa no algoritmo anterior). No entanto, o hardware ainda executa o recorte "0 < w". Quando o recorte z está desabilitado, a ordenação de profundidade inadequada no nível de pixel pode resultar. No entanto, quando o recorte z está desabilitado, as implementações de sombra de estêncil são simplificadas. Em outras palavras, você pode evitar o tratamento complexo de maiúsculas e minúsculas especiais para geometria que vai além do plano de recorte traseiro.

MultisampleEnable

Especifica se o algoritmo anti-aliasing de linha alfa ou quadrilateral deve ser usado em destinos de renderização msaa (suavização de várias várias linhas). Defina como TRUE para usar o algoritmo anti-aliasing de linha quadrilateral e como FALSE para usar o algoritmo de anti-alias de linha alfa. Para obter mais informações sobre esse membro, consulte Comentários.

AntialiasedLineEnable

Especifica se a suavização de linha deve ser habilitada; só se aplica se fazer o desenho de linha e MultisampleEnable for FALSE. Para obter mais informações sobre esse membro, consulte Comentários.

ForcedSampleCount

Tipo: UINT

A contagem de exemplos forçada durante a renderização ou rasterização do UAV. Os valores válidos são 0, 1, 4, 8 e, opcionalmente, 16. 0 indica que a contagem de exemplos não é forçada.

Nota Se você quiser renderizar com ForcedSampleCount definido como 1 ou superior, siga estas diretrizes:
  • Não associe exibições de estêncil de profundidade.
  • Desabilitar o teste de profundidade.
  • Verifique se o sombreador não gera profundidade.
  • Se você tiver exibições de destino de renderização associadas (D3D12_DESCRIPTOR_HEAP_TYPE_RTV) e ForcedSampleCount for maior que 1, verifique se cada destino de renderização tem apenas um único exemplo.
  • Não opere o sombreador na frequência de exemplo. Portanto, ID3D12ShaderReflection::IsSampleFrequencyShader retorna FALSE.
Caso contrário, o comportamento de renderização será indefinido.

ConservativeRaster

Um valor de tipo D3D12_CONSERVATIVE_RASTERIZATION_MODE que identifica se a rasterização conservadora está ativada ou desativada.

Comentários

Um D3D12_GRAPHICS_PIPELINE_STATE_DESC contém uma estrutura de estado do rasterizador.

O estado do rasterizador define o comportamento do estágio do rasterizador.

Se você não especificar algum estado de rasterizador, o runtime do Direct3D usará os valores padrão a seguir para o estado do rasterizador.

Estado Valor padrão
Fillmode D3D12_FILL_MODE_SOLID
CullMode D3D12_CULL_MODE_BACK
FrontCounterClockwise FALSE
DepthBias 0
DepthBiasClamp 0.0f
SlopeScaledDepthBias 0.0f
DepthClipEnable TRUE
MultisampleEnable FALSE
AntialiasedLineEnable FALSE
ForcedSampleCount 0
ConservativeRaster D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF
 
Nota Para os níveis de recursos 9.1, 9.2, 9.3 e 10.0, se você definir MultisampleEnable como FALSE, o runtime renderizará todos os pontos, linhas e triângulos sem suavização, mesmo para destinos de renderização com uma contagem de exemplo maior que 1. Para níveis de recursos 10.1 e superiores, a configuração de MultisampleEnable não tem efeito sobre pontos e triângulos em relação à MSAA e afeta apenas a seleção do algoritmo de renderização de linha, conforme mostrado nesta tabela:
 
Algoritmo de renderização de linha MultisampleEnable AntialiasedLineEnable
Alias FALSE FALSE
Suavização alfa FALSE TRUE
Quadrilateral TRUE FALSE
Quadrilateral TRUE TRUE
 

As configurações dos membros MultisampleEnable e AntialiasedLineEnable se aplicam somente a destinos de renderização msaa (suavização de várias amostras) (ou seja, renderizar destinos com contagens de exemplo maiores que 1). Devido às diferenças no comportamento no nível do recurso e desde que você não esteja executando nenhum desenho de linha ou não se importe que as linhas sejam renderizadas como quadriláteros, recomendamos que você sempre defina MultisampleEnable como TRUE sempre que renderizar em destinos de renderização MSAA.

Requisitos

Requisito Valor
Cabeçalho d3d12.h

Confira também

CD3DX12_RASTERIZER_DESC

Rasterização conservativa

Estruturas principais

Modos de exibição ordenados do rasterizador