Skip to main content

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렌더링 파이프라인 단계
rasterprimitive 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 관리

4. 렌더링 파이프라인

현재 CPU 렌더링 파이프라인은 다음 단계를 따른다.

CpuVertex


Vertex Stage
(run_vertex_stage)


ScreenVertex


Clip Test
(trivially_reject_triangle_ndc)


Rasterization
(raster module)


Fragment Operations
(write_fragment)


Framebuffer Write

5. 모듈 의존 관계

렌더링 모듈 간 의존 관계는 다음과 같다.

common


framebuffer


pipeline


pipeline/raster


device

설명

모듈의존성
pipelinecommon, framebuffer
rasterpipeline, framebuffer
devicepipeline, raster

6. 테스트 구조

각 모듈은 독립적인 테스트 실행을 지원한다.

현재 테스트

grender_cpu_smoke
grender_cpu_raster_pipeline

테스트 목적

테스트목적
smoke모듈 기본 동작 확인
raster_pipelinerasterization 동작 검증

7. 아키텍처 특징

본 렌더링 아키텍처는 다음 특징을 가진다.

모듈 분리

각 렌더링 단계는 독립된 모듈로 분리된다.

테스트 가능 구조

모듈 단위 테스트 실행이 가능하다.

CPU 기반 파이프라인

GPU API 의존 없이 CPU에서 렌더링 수행.

엔진 인터페이스 분리

grender 인터페이스와 CPU 구현이 분리되어 있다.


8. 요약

grender_cpu 렌더링 시스템은 다음 계층 구조를 가진다.

Common Types

Framebuffer

Pipeline

Rasterization

Render Device

이 구조는 CPU 기반 렌더링 파이프라인을 모듈화된 형태로 구현한다.