Como criar um sombreador hull

Um sombreador de casco é o primeiro de três estágios que trabalham juntos para implementar o mosaico. As saídas do sombreador de casco conduzem o estágio do mosaico, bem como o estágio do sombreador de domínio. Este tópico mostra como criar um sombreador de casco.

Um sombreador de casco transforma um conjunto de pontos de controle de entrada (de um sombreador de vértice) em um conjunto de pontos de controle de saída. O número de pontos de entrada e saída pode variar em conteúdo e número dependendo da transformação (uma transformação típica seria uma transformação de base).

Um sombreador de casco também gera informações constantes de patch, como fatores de mosaico, para um sombreador de domínio e o mosaico. O estágio do mosaico de função fixa usa os fatores de mosaico, bem como outros estados declarados em um sombreador de casco para determinar quanto para mosaico.

Para criar um sombreador de casco

  1. Projete um sombreador de casco. Confira Como criar um sombreador hull.

  2. Compilar o código do sombreador

  3. Crie um objeto hull-shader usando ID3D11Device::CreateHullShader.

    HRESULT CreateHullShader(
      const void *pShaderBytecode,  
      SIZE_T BytecodeLength,  
      ID3D11ClassLinkage *pClassLinkage,  
      ID3D11HullShader **ppHullShader
    );
    
  4. Inicialize o estágio do pipeline usando ID3D11DeviceContext::HSSetShader.

    void HSSetShader(
      ID3D11HullShader *pHullShader,  
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

Um sombreador de domínio deverá ser associado ao pipeline se um sombreador de casco estiver associado. Em particular, não é válido transmitir diretamente os pontos de controle do sombreador de casco com o sombreador de geometria.

Como usar o Direct3D 11

Visão geral do mosaico