개발/언리얼 엔진
[UE4] 렌더 하드웨어 인터페이스(RHI, Render Hardware Interface)
김디트
2021. 11. 2. 17:57
728x90
개요
DynamicRHI 헤더에는 해상도 등 화면에 대한 정보를 알아오는 인터페이스들이 모여 있습니다.
플랫폼 별 타겟 RHI를 프로젝트 설정 내부에서 설정할 수 있습니다.
여기서 RHI는 어떤 의미일까요.
RHI란
플랫폼 별로 그래픽 API가 다를 수 있습니다. (윈도우에서는 DirectX, 모바일에서는 OpenGL)
그리고 각 API 별로 기능과 사용 방법(인터페이스)이 다릅니다.
하나의 사용법으로 각 API를 모두 통제하려면 그 API 모두를 아우르는 상위 인터페이스가 필요합니다.
그걸 뜻하는 것이 바로 RHI입니다.
RHI는 그래픽 API들을 래핑한 공용 C++ 인터페이스입니다.
피쳐 레벨
플랫폼 별 그래픽 API는 성능 등의 이유로 지원하는 수준이 다를 수 있습니다.
그래서 RHI는 그 수준에 따라 단계를 나눠 피쳐 레벨로 정의되어 있습니다.
해당 플랫폼이 특정 피쳐 레벨을 지원할 수 없으면 피쳐 레벨의 단계를 낮추어 설정해야 하죠.
아래는 언리얼 피쳐 레벨의 정보입니다.
위에서 아래 순으로 고성능입니다.
SM5 | 일반적으로 D3D11 셰이더 모델 5 에 해당하는데, 유일한 차이점은 OpenGL 4.3 제한때문에 텍스처를 16 개만 사용할 수 있다는 점입니다. 테셀레이션, 컴퓨트 셰이더, 큐브맵 배열을 지원합니다. 디퍼드 셰이딩 패스가 지원됩니다. |
SM4 | D3D11 셰이더 모델 4 에 해당하며, 일반적으로는 SM5 와 같지만 테셀레이션, 컴퓨트 셰이더, 큐브맵 배열이 없습니다. 디퍼드 셰이딩 패스는 지원됩니다. 시각 순응도 컴퓨트 셰이더를 사용하므로 지원되지 않습니다. |
ES2 | 대부분의 OpenGL ES2 모바일 디바이스에 지원되는 피처에 해당합니다. 긴축된 포워드 셰이딩 패스를 사용합니다. |
RHI 피쳐 레벨 설정
엔진의 프로젝트 세팅, 즉 DefaultEngine.ini에서 타겟팅된 RHI를 설정할 수 있습니다.
728x90