Grap Rendering System Architecture
1. 개요
본 문서는 Grap 엔진의 CPU 기반 렌더링 서브시스템인 grender_cpu 모듈의 아키텍처 구조를 기술한다.
문서는 실제 코드 구조를 기반으로 렌더링 시스템의 구성 요소와 모듈 간 책임을 설명한다.
본 시스템은 다음 목표를 가진다.
- CPU 기반 렌더링 파이프라인 구현
- 명확한 모듈 분리
- 테스트 가능한 구조
- 엔진 렌더링 인터페이스와 CPU 구현 분리
2. 시스템 구성
렌더링 시스템은 다음 계층으로 구성된다.
grender_cpu
├─ common
├─ framebuffer
├─ pipeline
│ ├─ vertex
│ ├─ clipper
│ ├─ fragment_ops
│ └─ raster
└─ device
각 모듈은 명확한 책임을 가진다.
| 모듈 | 역할 |
|---|---|
| common | 공통 데이터 타입 |
| framebuffer | 렌더 타겟 |
| pipeline | 렌더링 파이프라인 단계 |
| raster | primitive rasterization |
| device | 렌더링 디바이스 구현 |
3. 모듈 구조
3.1 common
공통 데이터 타입 정의 모듈
정의 위치
grender_cpu/common
포함 기능
- CpuVertex
- ScreenVertex
- 색상 패킹 함수
역할
- 렌더링 파이프라인 데이터 정의
3.2 framebuffer
렌더 타겟 저장 모듈
정의 위치
grender_cpu/framebuffer
구성
- ColorBuffer
- DepthBuffer
- FramebufferView
역할
- 픽셀 데이터 저장
- depth 테스트 데이터 저장
3.3 pipeline
렌더링 파이프라인 단계 구현
정의 위치
grender_cpu/pipeline
구성
- vertex_stage
- clipper
- fragment_ops
역할
- vertex 변환
- primitive rejection
- fragment 처리
3.4 raster
primitive rasterization 모듈
정의 위치
grender_cpu/pipeline/raster
구성
- triangle_rasterizer
- line_rasterizer
- point_rasterizer
- barycentric
- edge_function
역할
- primitive → fragment 변환
3.5 device
렌더링 디바이스 구현 모듈
정의 위치
grender_cpu/device
구성
- CpuRenderDevice
역할
- 렌더링 명령 실행
- framebuffer 관리