Skip to main content

Software Design Specification

grender_cpu


1. 개요

본 문서는 grender_cpu 모듈의 Software Design Specification (SDS) 를 정의한다.

grender_cpugrender 모듈의 렌더링 인터페이스를 기반으로 동작하는 CPU 기반 렌더링 구현 모듈이다.

이 모듈은 GPU API에 의존하지 않는 software rasterizer 구조를 제공하며 CPU에서 동작하는 렌더링 파이프라인을 구성한다.

렌더링 파이프라인은 다음 처리 단계를 포함한다.

  • vertex processing
  • primitive clipping
  • rasterization
  • fragment processing
  • framebuffer 기록

2. 설계 목표

grender_cpu 모듈의 설계 목표는 다음과 같다.

  • CPU 기반 렌더링 파이프라인 구현
  • 렌더링 단계의 모듈 분리
  • framebuffer 기반 pixel 기록 구조 제공
  • primitive rasterization 구현

본 모듈은 CPU에서 동작하는 software rasterizer 설계 구조를 제공한다.


3. 모듈 구조

grender_cpu 모듈은 다음 하위 모듈로 구성된다.

grender_cpu
├─ common
├─ framebuffer
├─ pipeline
│ └─ raster
└─ device

각 모듈의 역할은 다음과 같다.

모듈역할
common공통 데이터 타입 정의
framebufferframebuffer 데이터 구조
pipeline렌더링 파이프라인 처리
rasterprimitive rasterization
deviceCPU render device 구현

4. 렌더링 파이프라인 구조

grender_cpu는 다음 렌더링 처리 단계를 사용한다.

Vertex Input

Vertex Stage

Primitive Clipping

Rasterization

Fragment Processing

Framebuffer Write

각 단계는 pipeline 모듈의 구성 요소에서 수행된다.


5. 주요 설계 구성 요소

5.1 Vertex Stage

vertex stage는 입력 vertex 데이터를 처리하여 screen-space vertex 데이터를 생성한다.

이 단계는 다음 기능을 수행한다.

  • vertex 좌표 처리
  • screen-space 좌표 생성

5.2 Primitive Clipping

primitive clipping 단계는 primitive가 화면 영역 내부에 존재하는지 판단한다.

해당 단계는 화면 영역 밖 primitive를 제거한다.


5.3 Rasterization

rasterization 단계는 primitive를 pixel fragment로 변환한다.

지원 primitive

  • triangle
  • line
  • point

이 단계는 pipeline/raster 모듈에서 수행된다.


5.4 Fragment Processing

fragment processing 단계는 rasterization 단계에서 생성된 fragment에 대해 다음 처리를 수행한다.

  • depth 비교
  • color buffer 기록

fragment 결과는 framebuffer에 기록된다.


6. 데이터 구조

grender_cpu는 다음 주요 데이터 구조를 사용한다.

데이터설명
CpuVertexvertex 입력 데이터
ScreenVertexscreen-space vertex
RasterTriangletriangle rasterization 입력
RasterLineline rasterization 입력
RasterPointpoint rasterization 입력
FramebufferViewframebuffer 접근 구조

7. 모듈 의존성

grender_cpu 모듈은 다음 모듈과 연동된다.

모듈역할
grender렌더 디바이스 인터페이스
ghost플랫폼 window 시스템

내부 의존성

device

pipeline

raster

framebuffer

common

8. 설계 제약

grender_cpu 모듈은 다음 설계 제약을 가진다.

  • CPU 기반 렌더링만 사용해야 한다.
  • GPU API 의존성을 가져서는 안 된다.
  • framebuffer 기반 pixel 기록 구조를 사용해야 한다.

9. 요약

grender_cpu는 CPU 기반 렌더링을 수행하는 software rasterizer 구현 모듈이다.

본 모듈은 다음 구조로 구성된다.

  • common
  • framebuffer
  • pipeline
  • raster
  • device

각 모듈은 CPU 렌더링 파이프라인의 특정 단계를 담당하며 이를 통해 software rendering 시스템이 구성된다.