Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Começando com Windows 8, os drivers gráficos podem implementar tipos de dados escalares HLSL de precisão mínima usando qualquer precisão maior ou igual à precisão de bit especificada. Quando o código do sombreador de precisão mínima HLSL é usado no hardware que implementa a precisão mínima de HLSL, você usa menos largura de banda de memória e, como resultado, também usa menos energia do sistema.
Você pode consultar o suporte de precisão mínima que o driver gráfico fornece chamando ID3D11Device::CheckFeatureSupport com o valor D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT . Para obter mais informações, consulte Suporte de precisão mínima HLSL.
- Declarar variáveis com tipos de dados de precisão mínima
- Testando seu código de sombreador de precisão mínima
- Tópicos relacionados
Declarar variáveis com tipos de dados de precisão mínima
Para usar a precisão mínima no código do sombreador HLSL, declare variáveis individuais com tipos como min16float (min16float4 para um vetor), min16int, min10float e assim por diante. Com essas variáveis, o código do sombreador indica que ele não requer mais precisão do que as variáveis indicam. Mas o hardware pode ignorar os indicadores mínimos de precisão e ser executado com precisão total de 32 bits. Quando o código do sombreador é usado em hardware que aproveita a precisão mínima, você usa menos largura de banda de memória e, como resultado, também usa menos energia do sistema, desde que o código do sombreador não espere mais precisão do que o especificado.
Você não precisa criar vários sombreadores que fazem e não usam precisão mínima. Em vez disso, crie sombreadores com precisão mínima e as variáveis de precisão mínima se comportem com precisão total de 32 bits se o driver gráfico relatar que ele não dá suporte a nenhuma precisão mínima. Sombreadores de precisão mínima HLSL não funcionam em sistemas operacionais anteriores a Windows 8 portanto, se você planeja direcionar sistemas operacionais anteriores, precisará criar vários sombreadores, alguns que fazem e outros que não usam precisão mínima.
Observação
Não faça mudanças de dados entre diferentes níveis de precisão dentro de um sombreador porque esses tipos de conversões são um desperdício e reduzem o desempenho. A exceção é que as constantes de sombreador ainda são sempre de 32 bits, mas os fornecedores podem criar hardware gráfico que pode converter livremente para baixo em qualquer precisão mais baixa que a leitura de instrução HLSL possa usar.
Usando a precisão mínima, você pode controlar a precisão dos cálculos em várias partes do código do sombreador.
As regras para precisão mínima de HLSL são semelhantes a C/C++, em que os tipos em uma expressão determinam a precisão da operação, não o tipo que está sendo gravado eventualmente.
Testando seu código de sombreador de precisão mínima
O rasterizador de referência (D3D_DRIVER_TYPE_REFERENCE) fornece uma ideia aproximada de como a precisão mínima no código do sombreador HLSL se comporta quantificando cada instrução HLSL para a precisão especificada. Isso ajuda você a descobrir o código que pode depender acidentalmente de mais do que a precisão mínima. O rasterizador de referência não é executado mais rapidamente quando o código do sombreador HLSL usa precisão mínima, mas você pode usá-lo para verificar a exatidão do código. O WARP (D3D_DRIVER_TYPE_WARP) não dá suporte ao uso de precisão mínima no código do sombreador HLSL; WARP é executado com precisão total de 32 bits.
Tópicos relacionados