
0. 렌더링의 결과물과 화면 출력 (Final Storage & Presentation)
Framebuffer는 그래픽스 파이프라인의 모든 연산이 완료된 최종 데이터가 저장되는 VRAM의 특정 메모리 영역입니다.
이전 단계인 Color Blending을 통해 확정된 픽셀 색상들이 이곳에 기록되며, 우리가 모니터를 통해 보는 한 장의 '프레임'이 완성되는 곳입니다.
1. Framebuffer의 구성 요소 (Memory Buffers)
Framebuffer는 단순히 색상 정보만 담는 것이 아니라, 렌더링 과정에서 사용된 여러 보조 버퍼들의 집합체입니다.
- Color Buffer : 실제로 화면에 출력될 RGB 색상 값이 저장되는 버퍼입니다.
- Depth Buffer (Z-Buffer) : 각 픽셀의 깊이 정보가 저장됩니다. 다음 프레임 렌더링 시 가시성 판단의 기준이 됩니다.
- Stencil Buffer : 특정 영역을 마스킹하거나 특수 효과를 제어하기 위한 정수 데이터가 저장됩니다.
2. Swap Chain과 Double Buffering : 화면 찢어짐 방지
GPU가 화면을 그리는 속도와 모니터가 화면을 출력하는 속도는 서로 다릅니다. 이 차이로 인해 발생하는 Tearing (화면 찢어짐) 현상을 막기 위해 Swap Chain 메커니즘을 사용합니다.
- Front Buffer : 현재 모니터에 실제로 출력되고 있는 버퍼입니다.
- Back Buffer : GPU가 다음 프레임을 열심히 그리고 있는 '작업용' 버퍼입니다.
- Swap (Present) : Back Buffer의 그림이 다 그려지면, Front Buffer와 역할을 순식간에 교체하여 사용자에게 완성된 그림만 보여줍니다.
3. V-Sync와 모니터 출력
완성된 프레임은 모니터의 주사율(Refresh Rate, 예 : 60Hz)에 맞춰 전송됩니다.
- V-Sync (Vertical Synchronization) : 모니터가 화면을 다 그릴 때까지 기다렸다가 버퍼를 교체하는 설정입니다. 찢어짐은 방지하지만, 프레임 드랍 시 입력 지연(Input Lag)이 발생할 수 있습니다.
- Refresh Rate : 모니터가 초당 몇 번 화면을 갱신하는지를 나타내며, 게임의 최종 FPS는 이 수치와 밀접한 관련이 있습니다.
4. 게임 클라이언트 개발자 관점의 포인트 (Optimization)
파이프라인의 끝단에서 개발자는 하드웨어 자원의 한계와 사용자 경험을 조율해야 합니다.
- Resolution & Memory : 해상도가 높아질수록(4K 등) Framebuffer가 차지하는 메모리 용량이 급격히 늘어납니다. 이는 VRAM 부족 문제로 이어질 수 있습니다.
- Post-Processing (After Framebuffer) : 렌더링이 끝난 Framebuffer의 내용을 다시 입력으로 사용하여 Bloom, Depth of Field, Tone Mapping 등의 후처리 효과를 적용합니다. 이 과정 역시 추가적인 GPU 자원을 소모합니다.
- Frame Pacing : 단순히 높은 FPS를 찍는 것보다, 프레임이 일정한 간격으로 Present되도록 관리하는 것이 부드러운 조작감을 만드는 핵심입니다.
5. 핵심 요약 및 시사점
Framebuffer는 파이프라인의 모든 노력이 결실을 맺는 '전시장'입니다.
- Collection of Buffers : Color, Depth, Stencil 버퍼가 모여 하나의 프레임을 이룹니다.
- Swap Chain : 완성된 그림만을 부드럽게 노출하기 위한 이중 버퍼링 구조를 가집니다.
- The Bridge : 디지털 데이터가 우리 눈에 보이는 빛(모니터 신호)으로 변하는 마지막 관문입니다.
'CS > 그래픽스' 카테고리의 다른 글
| [Rendering Optimization] Stage 1 : Input Assembler (Data Fetch & Assembly) (0) | 2026.01.20 |
|---|---|
| [Rendering Optimization] Stage 0 : Application Stage (CPU Strategy) (0) | 2026.01.20 |
| Rendering Pipeline] Stage 7 : Color Blending & Output Merger (0) | 2025.12.25 |
| [Rendering Pipeline] Stage 6 : Fragment Shader (0) | 2025.12.25 |
| [Rendering Pipeline] Stage 5 : Rasterization (0) | 2025.12.25 |