효과 렌더링(Direct3D 11)
효과를 사용하여 정보를 저장하거나 상태 그룹을 사용하여 렌더링할 수 있습니다. 각 기술은 꼭짓점 셰이더, 헐 셰이더, 도메인 셰이더, 기하 도형 셰이더, 픽셀 셰이더, 컴퓨팅 셰이더, 셰이더 상태, 샘플러 및 텍스처 상태, 정렬되지 않은 액세스 뷰 상태 및 기타 파이프라인 상태 집합을 지정합니다. 따라서 상태를 효과로 구성한 후에는 효과를 만들고 렌더링하여 해당 상태에서 발생하는 렌더링 효과를 캡슐화할 수 있습니다.
렌더링 효과를 준비하기 위한 몇 가지 단계가 있습니다. 첫 번째는 HLSL 언어 구문 및 효과 프레임워크 규칙에 대한 코드와 같은 HLSL을 확인하는 컴파일입니다. API 호출을 사용하여 애플리케이션에서 효과를 컴파일하거나 효과 컴파일러 유틸리티 fxc.exe사용하여 오프라인으로 효과를 컴파일할 수 있습니다. 효과가 성공적으로 컴파일되면 다른(하지만 매우 유사한) API 집합을 호출하여 만듭니다.
효과를 만든 후에는 효과를 사용하기 위한 두 가지 단계가 남아 있습니다. 먼저 HLSL에서 초기화되지 않은 경우 상태를 설정하는 여러 메서드를 사용하여 효과 상태 값(효과 변수의 값)을 초기화해야 합니다. 일부 변수의 경우 효과를 만들 때 한 번 수행할 수 있습니다. 애플리케이션이 렌더링 루프를 호출할 때마다 다른 항목이 업데이트되어야 합니다. 효과 변수가 설정되면 기술을 적용하여 효과를 렌더링하도록 런타임에 지시합니다. 이러한 topics 아래에 자세히 설명되어 있습니다.
효과 사용에 대한 성능 고려 사항은 당연히 있습니다. 효과를 사용하지 않는 경우 이러한 고려 사항은 대부분 동일합니다. 상태 변경의 양을 최소화하고 업데이트 빈도에 따라 변수를 구성하는 등의 작업을 수행합니다. 이러한 전술은 CPU에서 GPU로 전송해야 하는 데이터의 양을 최소화하여 잠재적인 동기화 문제를 최소화하는 데 사용됩니다.
섹션 내용
항목 | 설명 |
---|---|
효과 컴파일 |
효과를 작성한 후 다음 단계는 구문 문제에 대한 검사 코드를 컴파일하는 것입니다. |
효과 만들기 |
효과 프레임워크에 컴파일된 효과 바이트 코드를 로드하여 효과를 만듭니다. 효과 10과 달리 효과를 만들기 전에 효과를 컴파일해야 합니다. 메모리에 로드된 효과는 D3DX11CreateEffectFromMemory를 호출하여 만들 수 있습니다. |
효과 상태 설정 |
일부 효과 상수는 초기화하기만 하면 됩니다. 초기화되면 효과 상태가 전체 렌더링 루프에 대한 디바이스로 설정됩니다. 렌더링 루프가 호출될 때마다 다른 변수를 업데이트해야 합니다. 효과 변수를 설정하기 위한 기본 코드는 각 변수 형식에 대해 아래에 나와 있습니다. |
기술 적용 |
상수, 텍스처 및 셰이더 상태가 선언되고 초기화되면 디바이스에서 효과 상태를 설정하는 것만 남았습니다. |