스토리텔링 개발자

[UE4] 렌더 하드웨어 인터페이스(RHI, Render Hardware Interface) 본문

개발/언리얼 엔진

[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
Comments