본문 바로가기
IT/Teckweek

Rendering Pipeline

by YEON-DU 2022. 11. 12.
반응형

Rendering Pipeline이란?

Rendering :  2차원의 화상에 광원·위치·색상 등 외부의 정보를 고려하여 사실감을 불어넣어, 3차원 화상을 만드는 과정을 뜻하는 컴퓨터그래픽스 용어 [두산백과]

Pipeline : 생산 라인 등과 같이 여러 공정별로 생산 라인이 나열되어 있고 동시에 공정별 프로세서가 가능하게 하는 것. [컴퓨터인터넷IT용어대사전]

 

즉, 렌더링 파이프라인이란 3차원으로 만들어진 모델을 2차원에 투영하는 렌더링 공정을 자세하게 표현한 것이라고 볼 수 있다.

 

 

렌더링 과정은 간단하게 요약하면 다음과 같다. (렌더링 API 마다 구체적인 과정은 다르지만)

 

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012
The Graphics Pipeline

 

점(vertices)을 3개 받아온다 → 점의 위치를 그린다 (화면 밖의 점은 그리지 않음) → fragment를 찾아낸다 (Rasterizer) → fragment를 그려준다 (색을 칠한다)

 

삼각형을 하나씩 받아와서 하나씩 그린다. → 용량 차지를 덜한다.

또한 삼각형을 그릴 때 앞에 물체부터 그린다. 이때 조명을 생각하지않고 그린다.

삼각형과 카메라 간의 거리를 일일이 측정하고 이전에 그렸던 것들보다 멀리 그려졌을 경우 그리지 않는 방식으로 이미지를 그린다.

 

Vertex processor : 삼각형의 세 점이 어디로 가는지 계산한다.

Clipper and primitive assembler : 보이지 않는 부분을 자른다.

Rasterizer 삼각형의 꼭지점 내부에 있는 모든 픽셀(fragment)들의 위치를 찾는다.

Fragment processor : 각각의 fragment마다 색을 칠한다.

 

위치 정하기와 Fragment processor를 과거 칩으로 했던 것을 이제는 프로그램으로 짠다.

그리고 그 계산을 GPU가 한다. GPU는 단순하지만 수많은 작업을 처리할 수 있게 하기 위해 병렬로 처리할 수 있는 능력을 가지고있다.

 

Vertex processor Shader, 우리가 직접 Shader를 짜야 한다.

면이 조명을 바라보면 밝고 그렇지 않으면 어둡게 하는 방식. local lighting

 

OpenGL에서의 렌더링 파이프라인은 아래와 같다.

 

Graphics Programming and Applications

Vertex Specification

(Vertex/Index Buffer Input assembler)

IA 단계는 CPU로부터 렌더링을 수행할 도형의 정점 정보를 Vertex Buffer에 담아서 전달 받는다. GPU는 CPU의 자원에 직접 접근할 수 없으므로 CPU에서 Buffer라고 부르는 메모리에 필요한 정보를 담아 GPU로 전달해준다.

 

Vertex Shader

정점 정보로 생성된 도형이 갖고 있는 Local Space의 좌표를 World Space의 좌표로 변환한다.

또한 실제 플레이어가 바라보는 카메라가 중심이 되는 View Space로 변환한다.

 

Tessellation (Optional)

모델의 정점을 더 잘게 쪼개서 디테일하게 표현할 때 사용한다.

 

Geometry Shader (Optional)

기본 도형에서 정점을 추가하거나 삭제하여 모델을 변경할 수 있는 셰이더이다. Geometry Shader로 정점 정보를 조금 추가하여 표현할 수 있는 모델이라면 그만큼의 정점 정보를 빼고 저장할 수 있으니 디스크 용량과 그래픽 메모리 절약에 도움이 될 수도 있으며, 테셀레이션 등으로 추가된 정점들을 표현할 때도 사용된다.

 

Rasterization

정점 정보를 완전히 결정한 3D 도형을 실제 픽셀 데이터로 변환해주는 단계이다. 이때 우리가 가진 정점 데이터는 말그대로 정점의 데이터이고, 정점 사이의 공간은 보간(Interpolation)을 통해 메워주어야 한다.

 

Fragment Shader (Optional)

Pixel Shader라고도 부르며, 래스터화된 도형에 텍스쳐 매핑, 범프 매핑, 노말 매핑 등의 기법으로 텍스쳐를 입혀 색을 표현한다. 또한, 정점의 법선 벡터 정보를 통해 조명(Lighting) 처리도 해당 셰이더에서 이루어진다.

 

 

https://velog.io/@cedongne/Graphics-렌더링-파이프라인-요약

반응형

'IT > Teckweek' 카테고리의 다른 글

Forward Rendering vs Deferred Rendering  (0) 2022.12.29
GPGPU (General Purpose GPU)  (0) 2022.12.13
BlendMode  (0) 2022.11.05
SCM (Software Configuration Management)  (0) 2022.10.26
CI/CD  (0) 2022.10.06

댓글