일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 포워드 렌더링
- multiset
- 스택
- std::vector
- rasterization
- occlusion culling
- 이중우선순위큐
- vertex shader
- 힙
- Page Fault
- 디퍼드 렌더링
- Mipmap
- 개발자면접
- DrawCall
- Fetching
- 코테
- Input Assembler
- graphics rendering pipeline
- 데이터분석
- im뱅크
- Tesselation
- c++
- 그래픽스 파이프라인
- Stack
- 취준
- bvh
- UnReal
- 어레이
- 외적
- Output Merge
- Today
- Total
평생 배우는 개발자
Graphics Rendering Pipeline 본문
서론
그래픽스 관련 개발자 면접 중 필수 질문인 렌더링 파이프라인에 대한 질문에 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 |