개발하는 리프터 꽃게맨입니다.

[Real-time Rendering] Chapter 1. Introduction 본문

컴퓨터 그래픽스

[Real-time Rendering] Chapter 1. Introduction

파워꽃게맨 2025. 1. 23. 12:31

실시간 렌더링은 컴퓨터에서 이미지를 빠르게 생성하는 것을 다룬다. 화면에 이미지가 나타나면, 사용자는 행동하고 반응하며, 이 피드백이 다음에 생성되는 이미지를 결정한다.

이러한 반응과 렌더링은 Cycle은 충분히 빠른 속도로 이루어져야 한다. 그러면 사용자는 개별 이미지를 보는 것이 아니라 역동적인 과정에 몰입할 수 있게 된다.

 

이미지가 표시되는 속도(rate)는 FPS(초당 프레임 수) 또는 Hz(헤르츠)로 측정된다.

1 FPS에서는 상호작용의 느낌이 거의 없으며, 사용자는 새로운 이미지가 갱신되기까지의 텀을 고통스럽게 인식하게 된다.

6 FPS 부터 상호작용의 느낌이 형성되기 시작하며, 비디오 게임은 30, 60 , 72 .. 혹은 그 이상의 FPS 를 목표로 한다.

 

영화 프로젝터는 24 FPS로 영상을 보여주지만 일반적인 24 FPS는 깜박임이라는 현상이 발생한다. 이는 프레임 수가 낮을 때 프레임과 프레임 사이의 전환이 뚜렷하게 인식되는 현상을 의미한다. 이를 방지하기 위해서 각 프레임을 2~4 번 정도 표시하는 셔터 시스템을 사용한다. 이를 '새로 고침 속도' (refresh rate) 라고 부르며, 프레임을 세 번 비추는 셔터는 72Hz의 새로 고침 속도를 가진다.

LCD 모니터도 'refresh rate'와 'display rate'를 구분한다.

 

24 FPS 라는 것은 상호작용하기에 무리가 없는 속도지만 응답 시간 'response time'을 최소화하기 위해서는 더 높은 FPS가 필요하다. 15 ms의 시간 지연만으로도 상호작용을 느리게 하고 방해할 수 있다. (66 FPS 이다.) 예를 들어, 가상 현실용 헤드 마운트 디스플레이는 지연 시간을 최소화하기 위해 종종 90 FPS가 필요하다.

 

실시간 렌더링에서 상호작용성, FPS 보다 더 가치가 높은 것은 3차원 이미지를 생성하는 것이다.

 

그래픽 하드웨어의 발전은 인터랙티브 컴퓨터 그래픽 분야에서 연구의 폭발적인 증가를 촉진시켰다. 우리는 속도를 높이고 이미지 품질을 향상시키는 방법을 제공하는 데 중점을 둘 것이며, 동시에 가속 알고리즘과 그래픽 API의 특징과 한계에 대해서도 설명할 것이다. 모든 주제를 깊이 다룰 수 없기에 우리의 목표는 핵심 개념과 용어를 제시하고, 이 분야에서 가장 견고하고 실용적인 알고리즘을 설명하며, 추가 정보를 얻을 수 있는 최적의 장소를 안내하는 것이다.

 


목차

 

chapter 2. 그래픽스 렌더링 파이프라인

실시간 렌더링의 핵심은 장면 묘사를 받아들이고 그것을 우리가 볼 수 있는 무언가로 변환하는 일련의 단계이다.

 

chapter 3. 그래픽 처리 장치(GPU)

현대의 GPU는 고정 기능과 programmable unit의 조합을 사용하여 렌더링 파이프라인의 단계를 구현한다.

 

chapter 4. 변환

변환은 객체의 위치, 방향, 크기, 형태와 카메라의 위치와 시점을 조작하는 기본 도구이다.

 

chapter 5. 쉐이딩 기초

머테리얼과 조명의 정의, 이를 사용하여 현실적이거나 스타일리시하거나.. 원하는 표면을 그려내는 방법에 대한 논의가 시작된다. 또한 안티앨리어싱, 알파 블랜딩, 감마 보정을 통한 이미지 품질 향상과 같은 외관 관련 주제도 소개된다.

 

chapter 6. 텍스처링

실시간 렌더링을 위한 가장 강력한 도구 중 하나는 표면에 이미지를 신속하게 접근하고 표시할 수 있는 능력이다. 이 과정을 텍스처링이라고 하며, 이를 적용하는 다양한 방법이 있다.

 

chapter 7. 쉐이딩

장면에 그림자를 추가하여 현실감과 이해도를 높인다. 그림자를 신속하게 계산하는 인기있는 알고리즘을 소개한다.

 

Chapter 8. 빛과 색상

물리 기반 렌더링을 수행하기 전에 먼저 빛과 색상을 정량화하는 방법을 이해해야 한다. 그리고 물리적 렌더링 과정이 끝난 후에는 화면과 시청 환경의 특성을 고려하여 결과 값을 디스플레이 값으로 변환해야 한다.

 

Chapter 9. 물리 기반 쉐이딩

물리 기반 쉐이딩 모델을 기초부터 이해한다. 이 장은 기본적인 물리 현상부터 시작하여 다양한 렌더링 재료에 대한 모델을 다루고, 재료를 혼합하고 앨리어싱을 방지하며 표면 외관을 유지하기 위한 필터링 방법으로 끝난다.

 

Chapter 10. 국소 조명

보다 정교한 광원을 표현하기 위한 알고리즘을 탐구한다. 표면 쉐이딩은 빛이 특유의 형태를 가진 물리적 객체에서 방출된다는 점을 고려한다.

 

Chapter 11. 전역 조명

빛과 장면 사이의 다중 상호작용을 시뮬레이션하는 알고리즘은 이미지의 현실감을 더욱 높여준다. 환경 차폐 및 방향성 차폐와 같은 주제와 함께 확산 및 반사 표면에 대한 전역 조명 효과를 렌더링하는 방법, 그리고 몇 가지 유망한 통합 접근 방식에 대해 논의한다.

 

Chapter 12. 이미지 공간 효과

그래픽 하드웨어는 빠른 속도로 이미지 처리를 수행하는 데 능숙하다. 먼저 이미지 필터링 및 재투영 기술에 대해 논의한 후, 렌즈 플레어, 모션 블러, 심도 효과와 같은 몇 가지 인기 있는 후처리 효과를 살펴본다.

 

Chapter 13. 폴리곤을 넘어서

삼각형은 항상 가장 빠르거나 가장 현실적인 객체 설명 방식은 아니다. 이미지, 포인트 클라우드, 복셀 및 기타 샘플 세트를 사용하는 대체 표현 방식은 각각 장점이 있다.

 

Chapter 14. 체적 및 반투명 렌더링

체적 재료 표현의 이론과 실제 및 광원과의 상호작용에 중점을 둔다. 시뮬레이션된 현상은 대규모 대기 효과에서부터 얇은 모발 섬유 내의 빛 산란까지 다양하다.

 

Chapter 15. 비포토리얼리스틱 렌더링

장면을 현실적으로 보이게 하는 것은 렌더링의 한 가지 방법일 뿐이다. 만화 쉐이딩 및 수채화 효과와 같은 다른 스타일을 조사한다. 선 및 텍스트 생성 기술도 논의된다.

 

Chapter 16. 폴리곤 기법

기하학적 데이터는 다양한 출처에서 오며, 때로는 빠르고 잘 렌더링되도록 수정이 필요하다. 폴리곤 데이터 표현 및 압축의 다양한 측면이 소개된다.

 

Chapter 17. 곡선 및 곡면

더 복잡한 표면 표현은 품질과 렌더링 속도 간의 균형을 조절할 수 있고, 더 컴팩트한 표현 및 매끄러운 표면 생성을 가능하게 하는 등의 장점을 제공한다.

 

Chapter 18. 파이프라인 최적화

애플리케이션이 실행되고 효율적인 알고리즘을 사용할 때, 다양한 최적화 기술을 사용하여 더욱 빠르게 만들 수 있다. 병목 현상을 찾고 이를 해결하는 것이 주제이다. 멀티프로세싱도 논의된다.

 

Chapter 19. 가속 알고리즘

동작을 가능하게 한 후, 이를 빠르게 만드는 방법을 다룬다. 다양한 형태의 컬링과 레벨 오브 디테일 렌더링이 포함된다.

 

Chapter 20. 효율적인 쉐이딩

장면 내의 많은 수의 광원은 성능을 크게 저하시킬 수 있다. 표면 조각을 실제로 보이기 전에 완전히 쉐이딩 처리하는 것은 또 다른 낭비되는 사이클의 원인이다. 이러한 비효율성과 다른 형태의 비효율성을 해결하기 위한 다양한 접근 방식을 탐구한다.

 

Chapter 21. 가상 및 증강 현실

이들 분야는 빠르고 일관된 속도로 현실적인 이미지를 효율적으로 생성하기 위한 특정한 도전과 기술을 가지고 있다.

 

Chapter 22. 교차 테스트 방법

교차 테스트는 렌더링, 사용자 상호작용 및 충돌 감지에 중요하다. 일반적인 기하학적 교차 테스트를 위한 가장 효율적인 알고리즘을 광범위하게 다룬다.

 

Chapter 23. 그래픽 하드웨어

여기서는 색상 깊이, 프레임버퍼 및 기본 아키텍처 유형과 같은 구성 요소에 중점을 둔다. 대표적인 GPU의 사례 연구가 제공된다.

 

Chapter 24. 미래

추측해 보세요

 


수학적 표기법

 

이 책에서 벡터는 컴퓨터 그래픽스 세계에서 일반적으로 사용되는 열 벡터 형식으로 표현된다.

책의 일부에서는 (x, y, z) 형식을 사용하기도 하는데  이는 읽기 더 쉽기 떄문이다.

 

동차 좌표계에서는 좌표는 네 개의 값 (x, y, z, w) 로 표현된다. 여기서 벡터는 w = 0 이고 점은 w = 1 이다.

때때로 3차원 벡터를 이용하여 벡터와 점을 사용하기도 하지만, 모호성을 피하기 위해서 4차원 벡터를 사용한다. 행렬을 다루기 위해서는 벡터와 점에 동일한 표기법을 사용하는 것이 매우 유리하다.

 

평면은 nx + d = 0 으로 표기되며, 이는 평면의 수학적 공식인 평명의 법선 벡터 n과 스칼라 d를 표함한다. 법선 벡터는 평면이 향하는 방향을 설명한다. 평면은 nx + d > 0 인 '양의 반공간'과 nx + d < 0인 '음의 반공간'으로 나눈다고 한다. 이를 제외한 모든 점들은 평면의 위에 있다고 한다.

추가적인 수학 연산자와 그 표기법을 제시한다.

 

연산자 8, 9는 쉐이딩 계산에서 일반적으로 사용되는 클램핑 연산자이다.

연산자 8은 음수 값을 0으로 클램핑한다.

 

연산자 9는 값을 0과 1사이로 클램핑한다.

 

좌표계에서 일반적으로 사용하는 평면은 x = 0, y = 0, z = 0 으로 정의된다.

이러한 평면을 '축 정렬 평면' (Axis-Align) 평면이라고 부른다.

 

축 ex (1, 0, 0) ey(0, 1, 0) ez(0, 0, 1) 은 주 축, 주 방향 등으로 부르며, 이러한 축은 종종 표준 기저 벡터라고 한다. 별도로 언급되지 않는 한, 표준 기저 벡터를 직교 정규 기저 로 사용할 것이다. 이들은 서로 독립적이고 직교하는 단위벡터이다.

 

atan2(y, x) 는 자주 사용되기에 주목할 가치가 있다. 이는 수학 함수 arctan(x)의 확장이다. tan 는 x가 πn/2 일 때, 값이 정의되지 않는다. (무한대로 발산한다.) 

 

함수의 정의를 만족하기 위해서는 arctan은 위와같이 정의할 수 밖에 없으먀, 이 경우 치역은 -90 ~ 90 사이로 제한된다.

atan2는 인자를 2개 받아 치역을 -180~180으로 늘려주는 연산이다.

 

해당 책에서는 (더하여 일반적인 컴퓨터 그래픽스 분야는)  오른손 좌표계를 사용하며, [0, 1]로 정규화된 RGB 색상요소를 사용한다.

 


기하학적 정의

 

렌더링 프리미티브 혹은 드로잉 프리미티브라고 부르는 것은 일반적인 점, 선, 삼각형과 같이 원시적인 도형 요소를 말하며 거의 모든 그래픽 하드웨어에서 사용된다. 이 책 전반에 걸쳐, 우리는 기하학적 개체의 집합을 모델(Model) 또는 객체(Entity)라고 부를 것이다. Scene은 렌더링될 환경에 포함된 모든 것을 구성하는 모델들의 집합이다. Scene은 모델들, 머테리얼 디스크립션, 조명과 시청 사양을 포함할 수 있다.

 

객체의 예로는 자동차, 건물, 선 등이 있다. 객체는 프리미티브 혹은 조금 더 복잡한 곡면등으로 표현될 수 있으며, 객체가 다른 객체로 구성될 수도 있다.

 


쉐이딩 (음영)

 

쉐이딩 혹은 쉐이더 등은 2가지 개념을 나타내기에 문맥에 따라 잘 구분해서 이해해야 한다.

1. 컴퓨터가 생성하는 시각적인 Surface (쉐이딩 모델, 쉐이딩 방정식, 툰 쉐이딩 등..)

2. 렌더링 파이프라인에서 Programable 한 요소 (Vertex Shader, Shading Language 등..)