Udostępnij za pośrednictwem


Jak stworzyć cieniowanie domeny

Cieniowanie domeny to trzeci z trzech etapów, które współpracują ze sobą w celu zaimplementowania tessellation. Dane wejściowe dla etapu cieniowania domeny pochodzą z cieniowania kadłuba. W tym temacie przedstawiono sposób tworzenia cieniowania domeny.

Cieniowanie domeny przekształca geometrię powierzchni (utworzoną przez etap teselatora z funkcją stałą) przy użyciu punktów kontrolnych wyjścia shaderu powłoki, danych stałych poprawki shaderu powłoki i jednego zestawu współrzędnych uv teselatora.

Aby utworzyć cieniowanie domeny

  1. Projektowanie cieniowania domeny. Zobacz Jak: projektowanie domenowego cieniowania.

  2. Skompiluj kod cieniowania.

  3. Utwórz obiekt cieniowania domeny przy użyciu ID3D11Device::CreateDomainShader.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. Zainicjuj etap przetwarzania przy użyciu ID3D11DeviceContext::DSSetShader.

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

Shader domeny musi być powiązany z potokiem, jeśli shader kadłuba jest powiązany. W szczególności nie jest dozwolone bezpośrednio przesyłać punkty kontrolne shaderów kadłuba za pomocą cieniowania geometrii.

Jak używać Direct3D 11

Omówienie mozaikowania