Guide pratique pour créer un nuanceur de domaine

Un nuanceur de domaine est la troisième des trois étapes qui fonctionnent ensemble pour implémenter le pavage. Les entrées pour l’étape de nuanceur de domaine proviennent d’un nuanceur de coque. Cette rubrique montre comment créer un nuanceur de domaine.

Un nuanceur de domaine transforme la géométrie de surface (créée par l’étape de tessellateur à fonction fixe) à l’aide de points de contrôle de sortie du nuanceur de coque, de données de constante de patch de sortie du nuanceur de coque et d’un ensemble unique de coordonnées uv tessellator.

Pour créer un nuanceur de domaine

  1. Concevoir un nuanceur de domaine. Consultez Guide pratique pour concevoir un nuanceur de domaine.

  2. Compilez le code du nuanceur.

  3. Créez un objet domain-shader à l’aide de ID3D11Device::CreateDomainShader.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. Initialisez la phase de pipeline à l’aide de ID3D11DeviceContext::D SSetShader.

    void DSSetShader(
      ID3D11DomainShader *pDomainShader, // 
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

Un nuanceur de domaine doit être lié au pipeline si un nuanceur de coque est lié. En particulier, il n’est pas valide de diffuser directement en continu les points de contrôle du nuanceur de coque avec le nuanceur de géométrie.

Utilisation de Direct3D 11

Vue d’ensemble de tessellation