평생 배우는 개발자

Graphics Rendering Pipeline 본문

개발면접준비

Graphics Rendering Pipeline

개발지식 블로그 2025. 1. 18. 21:10

서론

그래픽스 관련 개발자 면접 중 필수 질문인 렌더링 파이프라인에 대한 질문에 AtoZ를 술술 말할 수 있게 준비해 보자

본론

렌더링 파이프라인이란?

3차원의 오브젝트를 2차원인 스크린에 띄우기 위해서 거쳐야 하는 과정이다.

설명을 위해 간단한 예시와 함께 설명하겠다. 예시로 정육면체에 대해서 그려보자

Input Assembler - 

position, normal, uv, color 등에 대한 정보를 담고 있는 vertex와 각 vertex의 순서를 담고 있는 index를 buffer라는 메모리에 담아서  GPU가 잘 읽을 수 있게 정리하여 CPU로부터 보낸다. 이후 GPU가 이 정보들을 읽어서 포지션을 바꾼다. CPU에서 보낸 position은 모델에 대한 좌표이기 때문에 model->world space ->view space->clip space -> screen space의 순으로 좌표들을 계산해 나가야 한다. (MVP_변환)

위 과정이 vertex shader에서 진행된다.

projection - view space에서 clip space로의 변환 과정

culling - Frustrum 밖 물체 제거( 경계선에 걸쳐져 있는 부분은 아직 제거하지 않음)

clipping - NDC에 의해 Frustrum 영역에 걸쳐있는 부분도 제외시킴

 

tesselation shader(필수 X) 단계에서 vertex들을 더 세분화해서 표현할 때 쓰임, LOD 메커니즘을 구현할 수 있음

geometry shader(필수 X) 단계에서 vertex shader에서 생성되지 않은 정점을 추가하거나 삭제할 수 있음, 그림자, 큐브 맵핑을 한 번의 처리로 렌더링 할 때 주로 쓰임.

 

Rasterization

Rasterization과정에서 NDC to Screen 좌표 계산 후, 우리가 완전히 계산한 좌표를 바탕으로 보간(interpolation)하여 픽셀을 만들어준다. 즉 primitive를 통해 프래그먼트를 생성하고 이 프래그먼트를 채우는 픽셀을 이끌어낸다.

 

Fragment shader에서 각각의 픽셀에 대한 색을 결정한다. 또한 depth나 stencil 등을 이용해 그림자, 투명도, 텍스쳐 처리를 한다. 각 픽셀들의 색상과 깊이 값을 출력으로 전달한다. 깊이 값은 Z-buffer에 색상 값은 Color-Buffer에 저장한다.

Output Merge단계에서 각각의 픽셀들의 색상이 정해진 후 (color, depth, stencil, alpha) 등의 정보를 통해 겹쳐진 픽셀들에 대한 색을 계산하여 화면에 나타낼 최종적인 색을 정한 후 스크린에 출력한다

 

 

결론

렌더링 파이프라인에 과정에 대해 알아보았다.

 

마무리

위의 내용을 바탕으로 개발자 면접 간

1. 렌더링 파이프라인을 설명해 주세요

 

헷갈리는 부분은 보완하기! 찡긋 O.<

 

틀린 부분이나 보완해줬으면 하는 내용이 있으면 댓글로 알려주세요! 추가 설명이 필요하신 부분도 댓글로 알려주세요.

어떠한 피드백도 환영입니다. 긴 글 읽어주셔서 감사합니다.

 

앞으로 할 것 : texture fetch, mim map,brdf,pbr,ibl,ray tracing,clipmapping,shadow mapping,uv,clamping,illuminance,luminance,Backface Culling Occlusion Culling

'개발면접준비' 카테고리의 다른 글

mipmap  (3) 2025.01.21
Texture Fetch  (5) 2025.01.20
내적과 외적  (4) 2025.01.11
참조 매개변수  (4) 2025.01.10
컴퓨터 메모리 관리의 핵심: Stack, Virtual Memory, 그리고 Page Fault의 유기적 관계  (9) 2025.01.06