Real Time Rendering은 컴퓨터 화면에 장면을 그리는 기술이다.
마치 애니매이션 한장 한장을 그려내듯이 컴퓨터 화면의 한 프레임 한 프레임 그리는 것이다.
리얼 타임 렌더링에 대해 아주 아주 기초적인 내용들을 정리해 보자
1. 실시간 렌더링은 다양한 기술과 방법이 혼합된 기술이다.
실시간 렌더링은 크게 두가지 영역으로 나눈다.
하나는 Precalculated Rendering 미리 계산하는 렌더링과 Real Time Rendering 찐 실시간 렌더링이다.
상황에 따른 솔루션이 여러개가 될 수 있어서 다양한 기술들이 복합적으로 사용된다.
예를 들어 오클루전 시스템(Occlusion System)의 경우 어떤 물체가 보이는지 아니면 어딘가에 가려서 안보이는지를 결정한다
즉 화면에 어떤걸 보이게 하고 어떤걸 보이지 않게 할지 정하는 것이다.
오클루전 시스템 중에는 미리 계산하는 렌더링 단계도 있지만 실제 실시간 렌더링 단계도 있다.
어떤게 보이는 대상인지에 판단하는 방법은 매우 다양하기에 실시간 렌더링은 하나의 기술이 아니라 복합 융합적 기술이다.
2. Scalability, 필요, 충분조건으로 그래픽 품질을 위해 렌더링 품질을 언제든 바꿀 수 있다.
렌더링 품질이 렌더링 도중에 스케일을 조절하여 그래픽 품질을 낮춰 속도를 높이거나 속도를 낮춰 품질을 높일 수 있어야한다.
이는 어떤 기기에서도 스케일을 자유롭게 조절하여 실시간 렌더링을 가능하게 한다.
언리얼 에디터의 명령어 중 'r.' 으로 그래픽의 품질을 변경할 수 있다. 다음 명령어로 그림자의 표현 품질을 조절 할 수 있다.
r. shadowquality
3. Deferred Rendering & Forward Rendering
렌더링에는 두가지 방법이 있는 하나는 디퍼드 렌더링(Deferred Redering)과 포워드 렌더링(Forward Rendering)이 있다.
언리얼 엔진는 기본적으로 디퍼드 렌더링이지만 포워드 렌더링으로 변경할 수 있다
일반적으로 디퍼드 렌더링은 고사양 애플리케이션에 안정적으고 더 나은 성능을 보여주고
포워드 렌더링은 한정된 하드웨어나 간단한 용도에서 더 빠른 성능을 보여준다.
또한 디퍼드 렌더링에서 더 많은 기능을 지원하지만 안티 에일리어싱 (Anti Aliasing)의 경우 포워드 렌더링에서 더 잘 구현된다.
디퍼드 렌더링의 경우 TAA(Temporal Anti Aliasing)만 제공하는데 TAA에서는 약간의 고스트 현상이 나타난다.
4. GBuffer
디퍼드 렌더링에서 GBuffer를 사용하는데 GBuffer란 각 프레임에서의 이미지들의 그룹이다.
오브젝트의 색상, 법선 벡터, 깊이 정보 등 렌더링에 필요한 다양한 정보가 담겨 있다.
5. Pixel and Vertex Shaders
렌더링에는 간단한 계산을 무지막지하게 많이 해야 하는데 이를 담당하는 것이 셰이더(Shader)이다.
셰이더의 종류로는 픽셀 셰이더(Pixel Shader)와 버텍스 셰이더(Vertax Shaer)가 있다.
셰이더는 입력값을 받고 계산한 후에 저장한 후 새롭게 출력해준다.
픽셀 셰이더는 픽셀단위로 작업하고 버텍스 셰이더는 버텍스 단위로 작업한다.
리얼 타임 렌더링의 기초적인 것들을 알아 보았는데 익숙하지 않은 용어들이 태반이다.
앞으로 각 내용들에 대해 하나씩 알아가야 겠다.
참고 :
💻Real-Time Rendering Fundamentals
'Real-Time Rendering Fundamentals' 카테고리의 다른 글
Anti-Aliasing 안티 에일리어싱 - 반 계단 현상 (1) | 2024.10.31 |
---|