다음을 통해 공유


방법: 도메인 셰이더 만들기

도메인 셰이더는 테 셀레이션을 구현하기 위해 함께 작동하는 세 단계 중 세 번째 단계입니다. 도메인 셰이더 단계에 대한 입력은 헐 셰이더에서 가져옵니다. 이 항목에서는 도메인 셰이더를 만드는 방법을 보여줍니다.

도메인 셰이더는 헐 셰이더 출력 제어 지점, 헐 셰이더 출력 패치 상수 데이터 및 단일 테셀레이터 uv 좌표 집합을 사용하여 표면 기하 도형(고정 함수 테셀레이터 단계에서 생성됨)을 변환합니다.

도메인 셰이더를 만들려면

  1. 도메인 셰이더를 디자인합니다. 방법: 도메인 셰이더 디자인을 참조하세요.

  2. 셰이더 코드를 컴파일합니다.

  3. ID3D11Device::CreateDomainShader를 사용하여 도메인 셰이더 개체를 만듭니다.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. ID3D11DeviceContext::D SSetShader를 사용하여 파이프라인 단계를 초기화합니다.

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

헐 셰이더가 바인딩된 경우 도메인 셰이더를 파이프라인에 바인딩해야 합니다. 특히 기하 도형 셰이더를 사용하여 헐 셰이더 제어점을 직접 스트리밍하는 것은 유효하지 않습니다.

Direct3D 11을 사용하는 방법

테셀레이션 개요