본문 바로가기
computer science/3d graphics

컴퓨터 그래픽스 렌더링 파이프라인의 개요

by 망고먹는 개발자 2021. 7. 26.

1. 렌더링이란?

컴퓨터로 모델 혹은 씬으로부터 영상을 만들어내는 모든 과정 

(출처 - wiki(http://ko.wikipedia.org/wiki/%EB%A0%8C%EB%8D%94%EB%A7%81))

 

컴퓨터에 존재하는 모델, 혹은 씬을 구성하는 수치들로부터 모니터 혹은 영상을 어떻게 나타낼 것인가에 대한 문제이다.

 

2. 렌더링 파이프라인이란?

렌더링 파이프라인이란 3차원 이미지(모델 혹은 모델로 구성된 씬)로부터 2차원 래스터 이미지를 표현하는 것이라고 할 수 있다.

우리는 모니터에 점과 선뿐만 아니라 면도 표현해야하기때문에 거의 모든 모니터 혹은 영상 기기가 벡터가 아닌 래스터 디스플레이를 채용하고 있다. 

 

벡터와 래스터 디스플레이의 차이 

 

래스터 디스플레이

벡터 디스플레이

 

3. 렌더링 파이프라인의 구성

3D 그래픽 표준으로는 DirectX와 OpenGL이 있는데 둘은 매우 비슷한 파이프라인을 채용하고 있고 그것은 다음과 같다.

(몇단계로 나뉘어지는지에 대해서는 여러가지 설명이 존재하지만 결국 같은 과정이다)

 

0) Model Transformation

3d model primitive을 로컬 좌표계에서 전역 좌표계로 바꾼다.

예를들자면 3dsmax와 같은 프로그램에서 만든 3d 모델을 씬의 전역 좌표계 상에 위치시킨다는 것

의자를 예로 들자면 의자는 스스로의 local coordinates을 가지고 있다. 

0.0.0에 의자의 발이 위치하고 있을 것이다

그러나 이 의자를 부엌이라는 global coordinates로 옮긴다면 의자의 발이 부엌 구석 바닥 30,40,0 쯤 위치할 수 있다. 이런 과정을 model transformation이라고 한다.

 

(주황색이 로컬좌표계 까만색이 전역좌표계)

 

 

1) Lighting

빛의 특성을 정의하고 위치시킨다. openGL과 같은 경우에 기본적으로 8개의 광원을 지원한다.

빛의 특성에는 밝기 혹은 빛의 방향(directional 혹은 point light와 같은) 것이 포함된다.

이 단계에서는 또한 물체의 material을 정의한다.

물체의 material은 간단하게 말하면 물체의 재질, 플라스틱이냐 금속이냐를 말하는 것인데 구체적으로 말하면 빛을 비췄을 때 어떤 방향에서 얼만큼 강하게 빛을 반사시키느냐에 따라 눈에 어떤 재질로 보여지는지가 달라진다.

 

2) Viewing Transformation

시점을 설정하고 내 시점을 전역좌표계의 원점으로 이동시킨다.

시점이 전역좌표계의 원점에 위치함에 따라 씬이 시점을 기준으로 통째로 이동된다고 보면 된다.

시점을 원점으로 이동시키는 이유는 나중에 부가적인 연산을 하기가 편하기 때문이다. (물체의 회전이나 이동 등..)

 

 

3) Projection Transformation

매우 중요한 단계. 이전까지의 이미지가 3차원 이미지였다면 이 단계를 통해 2D 이미지로 변화한다

시점과 씬이 있으면 해당 상태를 통해서 시점으로부터의 3차원 투영도를 그린다.

종류는 두가지가 있다

parallel 혹은 orthographic (직교 투영) : 나와 멀어지는 축 하나를 완전히 무시하고 그냥 찌부시킨다. 거리에 따라 물체를 단순히 sorting한다고 보면 되겠다. DOP(direction of projection)이 수직으로 나아간다. 

perspective(원근 투영) : 원근감을 살려서 투영시킨다. DOP가 시점으로부터 멀어질수록 퍼진다.

(자세한 건 리얼타임렌더링 3장 요약 포스팅 참고)

 

parallel projection

 

perspective projection

 

(출처 - http://www.moreprocess.com)

 

4) Clipping

시각적으로 디스플레이하기 위해서 모든 그래픽스 시스템은 화면 바깥에 놓여진 이미지를 잘라버린다.

윈도 혹은 뷰포트 밖으로 삐져나간 이미지 혹은 선을 제거하는 작업.

 

5) Viewport Transformation

해상도는 기기에 따라 언제든지 바뀌기 때문에, 2d이미지를 정규화해야 한다

화면의 한 축을 1과같은 단위길이로 만들어 이미지를 화면 해상도에 맞춰 출력.

 

6) scan conversion ( rasterization )

래스터 디스플레이에서 어떤 픽셀을 어떻게 밝힐것인지 결정하는 단계.

래스터 디스플레이에서 피해갈 수 없는 문제가 바로 앨리어싱인데, 이것을 해결하기 위한 여러가지 기법이 존재한다.

 

반응형

댓글