grender_cpu
1. 개요
grender_cpu 모듈은 Grap 엔진의 CPU 기반 렌더링 구현 라이브러리이다.
이 모듈은 grender 렌더링 인터페이스를 기반으로 CPU에서 동작하는 소프트웨어 렌더링 파이프라인을 구현한다.
렌더링은 다음 단계로 구성된다.
Vertex Processing
Primitive Rejection
Rasterization
Fragment Processing
Framebuffer Write
본 모듈은 GPU API(OpenGL, Vulkan 등)에 의존하지 않고 CPU 기반 렌더링 파이프라인을 독립적으로 구현한다.
2. 목적
grender_cpu의 목적은 다음과 같다.
- CPU 기반 렌더링 파이프라인 구현
- 엔진 렌더링 인터페이스(
grender)의 CPU 백엔드 제공 - 렌더링 알고리즘 검증 환경 제공
- 테스트 가능한 렌더링 시스템 제공
3. 모듈 위치
소스 코드 위치
grender_cpu/
렌더링 모듈은 Grap 엔진의 다음 모듈과 연동된다.
gbase
gmath
gcore
ghost
ginter
grender
grender_cpu
ged
app
4. 모듈 구조
grender_cpu는 다음 하위 모듈로 구성된다.
grender_cpu
├─ common
├─ framebuffer
├─ pipeline
│ ├─ vertex_stage
│ ├─ clipper
│ ├─ fragment_ops
│ └─ raster
└─ device
각 모듈의 역할은 다음과 같다.
| 모듈 | 역할 |
|---|---|
| common | 렌더링 공통 데이터 타입 |
| framebuffer | 색상 및 depth 버퍼 |
| pipeline | 렌더링 파이프라인 단계 |
| raster | primitive rasterization |
| device | CPU 렌더링 디바이스 |
5. 렌더링 파이프라인
현재 CPU 렌더링 파이프라인은 다음 흐름으로 동작한다.
CpuVertex
│
▼
run_vertex_stage
│
▼
ScreenVertex
│
▼
trivially_reject_triangle_ndc
│
▼
Rasterization
│
▼
Fragment Operations
│
▼
Framebuffer Write
6. 주요 구성 요소
6.1 Common
공통 데이터 타입을 정의한다.
대표 타입
CpuVertex
ScreenVertex
6.2 Framebuffer
렌더링 결과를 저장하는 버퍼를 제공한다.
구성 요소
ColorBuffer
DepthBuffer
FramebufferView
6.3 Pipeline
렌더링 파이프라인 단계 구현
구성
vertex_stage
clipper
fragment_ops
6.4 Raster
primitive rasterization 구현
지원 primitive
Triangle
Line
Point
6.5 Device
CPU 렌더링 디바이스 구현
대표 타입
CpuRenderDevice
7. 모듈 의존 관계
렌더링 모듈 간 의존 관계는 다음과 같다.
common
│
▼
framebuffer
│
▼
pipeline
│
▼
pipeline/raster
│
▼
device
8. 테스트
grender_cpu 모듈은 다음 테스트를 포함한다.
grender_cpu_smoke
grender_cpu_raster_pipeline
테스트 목적
| 테스트 | 목적 |
|---|---|
| smoke | 기본 렌더링 모듈 동작 확인 |
| raster_pipeline | rasterization 파이프라인 검증 |
9. 특징
grender_cpu 렌더링 시스템의 특징은 다음과 같다.
CPU 기반 렌더링
GPU API에 의존하지 않는 소프트웨어 렌더링 구현
모듈 분리
렌더링 단계별 모듈 구조
테스트 가능 구조
모듈 단위 테스트 제공
엔진 통합
grender 인터페이스 기반 렌더링 백엔드
10. 요약
grender_cpu는 Grap 엔진에서 사용되는 CPU 기반 렌더링 구현 모듈이다.
주요 구성
Common Types
Framebuffer
Pipeline
Rasterization
Render Device
이 모듈은 CPU 환경에서 동작하는 소프트웨어 렌더링 파이프라인을 제공한다.