본문 바로가기
Unreal Pipeline/Rendering Pipeline

02 Intro - Unreal Engine

by pp336 2025. 7. 6.


Intro

 

 

 

 

 

 

 

 

 렌더링 과정은 보통 하드 드라이브나 SSD와 같은 보조저장장치(Secondary Memory) 에서 데이터를 찾는 것으로 시작이 됩니다. 보조저장장치(Secondary Memory)에서 주기억장치(Main Memory)를 거쳐 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)에 3D 데이터를 전달합니다. 작업 중인 데이터는 주기억장치(Main Memory)에 저장이 되고, CPU와 GPU 사이를 왕복하게 됩니다. 일부 작업은 CPU에서 진행하고 일부작업은 GPU에서 진행이 되며 그 사이에서 시스템을 일치 시키기 위해 동기화하는 작업을 거치게 됩니다. 각 단계에서 전송 되는 데이터는 하드웨어의 대역폭에 영향을 받게 됨으로 리얼 타임 렌더링 작업자는 각 하드웨어간에 부담을 분산시키는 방법을 이해해야할 필요가 있습니다.

 

 

 

 

 

 예를 들어 CPU가 GPU 보다 많은 작업을 하고 있다면, 둘 사이의 데이터를 일치 시키는 동기화 과정 중에 CPU의 처리되는 속도가 느려지는 만큼 딜레이가 생기게 됩니다. CPU의 부담을 GPU로 옮겨주는 작업을 진행 해야합니다. 둘 중 느린쪽이 서로의 병목으로 작용하게 되는 만큼, 두 장치가 부담을 나눠 갖는 방식을 알아야 부담을 처리할 수 있게 됩니다.

 

 

 

 

 

 

 

 

 


 

 실시간 렌더링(RealTime Rendering)

 

 

 

 

 

 

 렌더링 파이프 라인에서 소개 했던 개념을 반복하자면, 렌더링은 3D 정보를 2D 이미지로 변환하는 과정 입니다. 렌더링을 통해 만들어진 단일 정지 이미지(Frame)를 연속적으로 재생하여 움직이는 영상을 만들어 냅니다. 이를 초당 프레임(Fps)이라는 뜻을 내포한 Frame rate라는 표현으로 사용 합니다. 인간의 눈은 초당 24프레임의 이상의 속도로 재생 되어야 자연스러운 움직임을 감지할 수 있습니다. 영화가 24 프레임인 이유이기도 합니다. 그리고 실시간 렌더링의 경우는 플레이어 조작이 더해지기 때문에, 일반적으로 초당 30프레임 혹은 60프레임의 속도로 재생이 되어야 합니다. 일반적이란 단어를 사용한 이유는 초당 프레임은 발열, 배터리(모바일), 모니터의 주사율 등 여러가지 요소와 연관이 되어 있기 때문입니다.

 

 

 

 

 

 

 

 

 

 

 


 

렌더링 이전(Before Rendering)

 

 

 

 

 

 

 

 

 Intro에서는 컴퓨터의 구조에 관한 개요, 실시간 렌더링(Realtim Rendering)에서는 초당 프레임(fps)의 중요한 하게 작용되는 이유와 단일 이미지의 프레임의 개념에 대하여 알아보았습니다. 이제부터는 언리얼 엔진에서 GPU에서 이미지를 렌더링하기 전, 즉 렌더링 이전 영역을 살펴보려 합니다. 먼저 간단한 그래프로 요약하자면 다음과 같습니다.

 

 

 

 

 A라는 단일 이미지(A Frame)을 렌더링 한다고 가정 했을때, CPU Threads는 렌더링을 시작하기전의 영역을 결정해 줍니다. 언리얼 엔진에서 같은 3D 오브젝트를 사용 했을 경우, 오브젝트가 레벨 상의 어디에 위치해 있는지와 같은 부분을 판단합니다. 이 작업이 완료되면 CPU에 있는 Draw Threads 로 처리된 A Frame의 정보가 넘어오면서 필요한 추가 연산을 진행 합니다. 마찬가지로 Draw Threads 에서도 필요한 작업이 완료되면 GPU Threads로 이전까지 완료된 A Frame에 대한 정보를 전달하게 됩니다. GPU에서는 실제로 렌더링을 시작합니다.

 되짚어 보자면 CPU Threads 에서 A Frame을 처리하는데 33ms, Draw Threads 에서 A Frame을 처리하는데 33ms. 실제 렌더링은 CPU Threads의 계산이 시작 되고 66ms 이후에 GPU에서 처리되기 시작된다는 이야기가 됩니다.

 

 

 

A Frame이 다음 스레드로 작업을 위해 처리되는 속도가 33ms일 경우, GPU 렌더링 시작까지는 66ms가 지연되게 된다.

 

 

 또한 Draw Threads에서 A Frame을 처리하는 동안 CPU Threads에서는 B라는 새로운 단일 이미지에 대한 정보를 처리합니다 B Frame 렌더링 이전에 사용되는 계산 입니다. 그리고 여기까지의 과정이 모든 과정이 일련의 동기화를 거치게 됩니다. 예를 들자면 CPU에서 B Frame 작업이 빠르게 처리되도, CPU Threads는 B Frame을 Draw Threads가 A Frame을 GPU로 전달 할때까지 기다리게 됩니다. Draw Threads로 B Frame를 보내야 하기 때문입니다.

 

 

 

 

Draw에서 A Frame에 대한 정보를 처리하는 동안, Cpu에서는 B Frame의 렌더링 이전에 필요한 정보를 준비한다.

 

 

 

 

'Unreal Pipeline > Rendering Pipeline' 카테고리의 다른 글

03 Cpu & Draw - Unreal Engine  (0) 2025.09.06
01 Rendering Pipeline Process - Unreal Engine  (0) 2025.04.21