Sinalizadores D3DXSHADER
Os sinalizadores D3DXSHADER são usados para analisar, compilar ou montar sombreadores.
Sinalizadores do analisador
Os sinalizadores de tempo de análise são usados apenas pelo sistema de efeito (antes da compilação do efeito) quando você cria um compilador de efeito. Por exemplo, você pode criar um objeto do compilador com D3DXSHADER_PACKMATRIX_COLUMNMAJOR e, em seguida, usar esse objeto compilador repetidamente com diferentes sinalizadores de compilador para gerar código especializado.
Constante | Descrição |
---|---|
|
A menos que explicitamente especificado, as matrizes serão empacotadas em ordem de coluna principal (cada vetor estará em uma única coluna) quando passadas de e para o sombreador. Isso geralmente é mais eficiente porque permite que a multiplicação de matriz de vetores seja executada usando uma série de produtos de ponto. |
|
A menos que explicitamente especificado, as matrizes serão empacotadas em ordem de linha principal (cada vetor estará em uma única linha) quando passadas para ou do sombreador. |
Sinalizadores do compilador
O compilador HLSL do DirectX 10 agora é o compilador padrão. Consulte Effect-Compiler Tool para obter detalhes.
A tabela a seguir detalha os sinalizadores disponíveis no Direct3D 9 e no Direct3D 10. O valor do sinalizador é a opção fxc equivalente.
Constante/valor | Descrição |
---|---|
|
Essa é uma dica para o compilador evitar o uso de instruções de controle de fluxo. Direct3D 9 – sim Direct3D 10 - sim |
|
Insira o nome do arquivo de depuração, os números de linha e as informações de tipo e símbolo durante a compilação do sombreador. Direct3D 9 – sim Direct3D 10 - sim |
|
Compile ps_1_x sombreadores como ps_2_0. Os efeitos que especificam ps_1_x destinos serão compilados para ps_2_0 destinos, pois essa é a versão mínima do sombreador compatível com a versão do compilador de sombreador fornecida com o DirectX 10. Esse sinalizador não tem efeito quando usado com destinos de compilação de nível superior. Direct3D 9 – não Direct3D 10 - sim |
|
Force o compilador a compilar no próximo destino de software mais alto disponível para sombreadores de pixel. Esse sinalizador também ativa as otimizações e a depuração. Direct3D 9 – sim Direct3D 10 - sim |
|
Force o compilador a compilar no próximo destino de software mais alto disponível para sombreadores de vértice. Esse sinalizador também ativa as otimizações e a depuração. Direct3D 9 – sim Direct3D 10 - sim |
|
Desabilite otimizações que podem fazer com que a saída de um programa de sombreador compilado seja diferente da saída de um programa compilado com o compilador de sombreador DirectX 9 devido a pequenos erros de precisão na matemática de ponto flutuante. Direct3D 9 – não Direct3D 10 - sim |
|
Desabilita pré-sombreadores. O compilador não extrairá expressões estáticas para avaliação na CPU do host. Além disso, o compilador não criará nenhuma expressão ao compilar funções autônomas. Direct3D 9 – sim Direct3D 10 - sim |
|
Nível de otimização mais baixo. Pode produzir código mais lento, mas o fará mais rapidamente. Isso pode ser útil em um ciclo de desenvolvimento de sombreador altamente iterativo. Direct3D 9 – não Direct3D 10 - sim |
|
Segundo nível de otimização mais baixo. Direct3D 9 – não Direct3D 10 - sim |
|
Segundo nível de otimização mais alto. Direct3D 9 – não Direct3D 10 - sim |
|
Nível de otimização mais alto. Produzirá o melhor código possível, mas pode levar muito mais tempo para fazer isso. Isso será útil para builds finais de um aplicativo em que o desempenho é o fator mais importante. Direct3D 9 – não Direct3D 10 - sim |
|
Force todos os cálculos no sombreador resultante a ocorrer em precisão parcial. Isso pode resultar em uma avaliação mais rápida de sombreadores em algum hardware. Direct3D 9 – sim Direct3D 10 - sim |
|
Essa é uma dica para o compilador preferir usar instruções de controle de fluxo. Direct3D 9 – sim Direct3D 10 - sim |
|
Instrua o compilador a ignorar as etapas de otimização durante a geração de código. A menos que você esteja tentando isolar um problema em seu código e suspeite do compilador, não é recomendável usar essa opção. Direct3D 9 – sim Direct3D 10 - sim |
|
Não valide o código gerado em relação a funcionalidades e restrições conhecidas. Essa opção é recomendada somente ao compilar sombreadores conhecidos por funcionar (ou seja, sombreadores que já foram compilados antes sem essa opção). Os sombreadores são sempre validados pelo runtime antes de serem definidos para o dispositivo. Direct3D 9 – sim Direct3D 10 - sim |
|
Habilite o uso do compilador HLSL original do Direct3D 9. OCT2006_d3dx9_31_x86.cab ou OCT2006_d3dx9_31_x64.cab devem ser incluídos como parte do redist. Esse sinalizador é necessário para compilar ps_1_x sombreadores sem usar o sinalizador de promoção para ps_2_0. Especificar esse sinalizador ao obter uma interface ID3DXEffectCompiler faz com que chamadas subsequentes a CompileEffect e CompileShader por meio desse objeto usem o compilador herdado. Direct3D 9 – sim Direct3D 10 – não |
Sinalizadores do assembler
Os sinalizadores assembler são usados pelo sistema de efeito para otimizar o sombreador e efetivar o código do assembly.
Constante | Descrição |
---|---|
|
Insira o nome do arquivo de depuração, os números de linha e as informações de tipo e símbolo durante a compilação do sombreador. |
|
Force o compilador a compilar no próximo destino de software mais alto disponível para sombreadores de pixel. Esse sinalizador também ativa as otimizações e a depuração. |
|
Force o compilador a compilar no próximo destino de software mais alto disponível para sombreadores de vértice. Esse sinalizador também ativa as otimizações e a depuração. |
|
Não valide o código gerado em relação a funcionalidades e restrições conhecidas. Essa opção é recomendada somente ao compilar sombreadores conhecidos por funcionar (ou seja, sombreadores que já foram compilados antes sem essa opção). Os sombreadores são sempre validados pelo runtime antes de serem definidos para o dispositivo. |
Comentários
O sistema de efeito usará sinalizadores de analisador quando chamado pelas seguintes funções:
O sistema de efeito usará sinalizadores do compilador quando chamado pelas seguintes funções:
- D3DXCompileShader (ou D3DXCompileShaderFromFile ou D3DXCompileShaderFromResource)
- CompileEffect (ou CompileShader)
Além disso, você pode usar sinalizadores do compilador ao criar um efeito chamando D3DXCreateEffect (ou D3DXCreateEffectFromFile ou D3DXCreateEffectFromResource).
- Se você passar um arquivo .fx não compilado, o sistema de efeito usará o parâmetro de entrada de sinalizador durante a compilação.
- Se você passar um efeito compilado, o sistema de efeito ignorará os sinalizadores do compilador, pois eles não são necessários para carregar o efeito.
O sistema de efeito usará sinalizadores assembler quando chamado pelas seguintes funções:
A aplicação de sinalizadores do compilador ou sinalizadores de assembler à API incorreta falhará na validação do sombreador. Verifique o valor retornado do código de erro Direct3D da função com a Ferramenta de Pesquisa de Erros do DirectX (DXErr.exe) para ajudar a rastrear esse erro. Você pode obter DXErr.exe e saber mais sobre isso no SDK do DirectX. Para obter informações sobre o SDK do DirectX, consulte Onde está o SDK do DirectX?.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Confira também