Share via


방법: 헐 셰이더 만들기

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

헐 셰이더는 꼭짓점 셰이더의 입력 제어점 집합을 출력 제어점 집합으로 변환합니다. 입력 및 출력 지점의 수는 변환에 따라 내용 및 수에 따라 달라질 수 있습니다(일반적인 변환은 기본 변환임).

헐 셰이더는 도메인 셰이더 및 테셀레이터에 대한 테셀레이션 요소와 같은 패치 상수 정보도 출력합니다. 고정 함수 테셀레이터 단계는 테셀레이션 요소뿐만 아니라 헐 셰이더에 선언된 다른 상태를 사용하여 테셀레이션할 양을 결정합니다.

헐 셰이더를 만들려면

  1. 헐 셰이더를 디자인합니다. 방법: 헐 셰이더 설계를 참조하세요.

  2. 셰이더 코드 컴파일

  3. ID3D11Device::CreateHullShader를 사용하여 헐 셰이더 개체를 만듭니다.

    HRESULT CreateHullShader(
      const void *pShaderBytecode,  
      SIZE_T BytecodeLength,  
      ID3D11ClassLinkage *pClassLinkage,  
      ID3D11HullShader **ppHullShader
    );
    
  4. ID3D11DeviceContext::HSSetShader를 사용하여 파이프라인 단계를 초기화합니다.

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

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

Direct3D 11을 사용하는 방법

테셀레이션 개요