[UE5] 내가 보려고 정리한 언리얼엔진5 - 최적화 기법

박원준·2023년 3월 2일
1

UE5

목록 보기
4/5

언리얼엔진5

리얼타임 3D 창작 툴
주소 : https://www.unrealengine.com


📌 DrawCall

  • 화면에 그려야 할 것들을 CPU가 GPU에게 전달할 때 발생
  • CPU는 매 프레임마다 플레이어가 바라보는 시야를 기준으로 렌더링이 필요한 오브젝트들만 선별하여 GPU로 전달. 이때 전달되는 오브젝트의 숫자에 비례하여 드로우콜이 생성되며 디바이스의 종류와 사양에 따라 프레임당 처리할 수 있는 드로우콜의 수가 다르기 때문에 디바이스에 맞춰 드로우콜의 수를 적절하게 관리해야 한다.

📖 DrawCall에 영향을 주는 요소

  • 메시, 머티리얼, 셰이더, 트랜스폼, 조명, 알파블렌딩
    이중에서 머티리얼과 메시의 개수가 드로우콜의 증가에 가장 많은 영향을 준다.

Ex) 5개의 개별 액터가 존재한다고 한다면 각각의 개별 액터들이 1개씩 드로우콜을 생성하여 총 5개의 드로우콜이 나온다. 이때 5개의 액터를 메시를 병합하여 하나의 액터로 만들경우 1개의 드로우콜만 생성한다. 이는 머티리얼도 마찬가지다.

드로우콜 최적화 : 컬링으로 불필요한 오브젝트 제거, 여러 메시를 하나로 병합, 텍스처 시트로 머티리얼 수 감소

때문에 드로우콜을 최적화하기 위해서는 여러가지 컬링 기법들과 함께 텍스처와 메시의 병합을 적절하게 활용하여 한번에 렌더링 되는 고유한 오브젝트의 개수를 줄여야 한다.


📌 LOD

플레이어와 멀어질수록 폴리곤이 적은 오브젝트로 대체


📌 HLOD

LOD에 드로우콜 관리가 결합된 형태
플레이어와 거리에 따라 폴리곤, 드로우콜 수 모두 감소


📌 컬링

현재 화면에 보이지 않아도 되는 오브젝트들을 렌더링에서 제외시켜 렌더링 계산의 부화를 줄여주는 최적화 기술

📖 Back-Face Culling

플레이어가 보고있는 오브젝트의 뒷면은 렌더링에서 제외하는 컬링 기법

📖 View Frustrum Culling (프러스텀 컬링) : 카메라의 시야 범위 밖에 존재

플레이어의 시야 범위에서 벗어나는 오브젝트들은 렌더링에서 제외하는 컬링 기법

📖 Occlusion Culling (오클리전 컬링) :

시야 범위 안에 있더라도 다른 오브젝트에 가려지면 렌더링에서 제외하는 컬링 기법
사용하기엔 매우 간편하지만 오브젝트끼리의 가려짐 여부가 실시간 계산으로 이루어지기 때문에 처리 비용이 비쌈

📖 Cull Distance (컬 디스턴스)

플레이어와의 거리가 설정된 거리보다 멀어지면 계산하지 않음
주로 작은 오브젝트에 사용

📖 Portal Culling (포탈 컬링)

복도식 구조나 창문, 문 등에 사용하여 포탈 너머의 공간을 컬링
포탈 너머가 보이면 포탈과 연결된 다음 공간이 그려짐
주로 인도어 엔진에서 사용되는 컬링 기법으로 완벽하게 닫혀진 공간에서만 사용 가능

📖 Potentially visible set - PVS (잠재적 가시성 검사)

인도어 엔진에서는 독보적인 최적화 기술
맵에 존재하는 모든 공간들에 서로 간의 가시성 검사를 사전에 계산해서 실시간 컬링의 계산량을 줄여줌

2개의 댓글

comment-user-thumbnail
2023년 3월 2일

좋은 글이네요
잘 보고 갑니다!!

답글 달기
comment-user-thumbnail
2024년 4월 1일

이해가 잘 되네요. 잘 보고 갑니다

답글 달기

관련 채용 정보