GrapCore
Overview
GrapCore는 Grap 프로젝트의 엔진 아키텍처를 구성하는 모듈형 시스템이다.
엔진은 여러 계층의 모듈로 구성되며, 각 모듈은 특정 기능을 담당한다.
현재 문서는 GrapCore의 다음 계층을 설명한다.
- Core Library 계층
- 플랫폼 인터페이스 계층
- 렌더링 인터페이스 계층
- 렌더링 백엔드 계층
- 에디터 시스템 계층
Core Modules
gbase
엔진 전반에서 사용되는 foundation utility 라이브러리이다.
주요 기능
- 기본 타입
- 타입 안전 ID 시스템
- 전처리 매크로
- 범용 유틸리티
gbase는 GrapCore의 최하위 foundation 레이어이다.
gmath
엔진에서 사용하는 수학 라이브러리이다.
주요 기능
- scalar math
- vector types
- matrix types
- numeric helpers
- geometry primitives
gmath는 gbase 위에서 동작하는 수학 연산 레이어이다.
gcore
엔진의 핵심 데이터 모델과 시스템 인터페이스를 정의하는 모듈이다.
주요 기능
- 이벤트 데이터 모델
- 프레임 컨텍스트
- 프레임 루프 인터페이스
- 애플리케이션 상태 인터페이스
- 로깅 인터페이스
gcore는 엔진의 Core Concept Layer이며
엔진 시스템이 사용하는 데이터 구조와 인터페이스를 정의한다.
ghost
ghost는 Grap 시스템에서 플랫폼 상호작용을 담당하는 라이브러리 계층이다.
이 모듈은 운영체제(OS)와 직접 통신하여 다음 기능을 제공한다.
- Window 생성 및 관리
- OS 이벤트 수집
- 플랫폼 시간 제공
- CPU Writable Surface 제공
ghost는 엔진 개념 레이어(gcore)와 운영체제 사이의 인터페이스 계층으로 동작한다.
이 계층은 플랫폼 API를 직접 사용하는 코드를 격리하여
엔진 레이어가 플랫폼에 의존하지 않도록 설계되어 있다.
ginter
ginter는 Grap 시스템에서 플랫폼 이벤트를 엔진 이벤트로 변환하는 브릿지 계층(Event Bridge Layer) 이다.
이 모듈은 ghost에서 생성되는 Native Event를
gcore 이벤트 시스템에서 사용하는 Engine Event로 변환한다.
주요 기능
- Native Event 해석
- Keycode 매핑
- Engine Event 생성
- EventBus 전달
ginter는 플랫폼 이벤트 시스템과 엔진 이벤트 시스템 사이의
이벤트 의미 해석 계층(Event Interpretation Layer) 으로 동작한다.
grender
grender는 Grap 시스템에서 렌더링 인터페이스 계층(Rendering API Layer) 을 제공하는 라이브러리이다.
이 모듈은 렌더링 구현과 엔진 시스템 사이의 렌더링 API 계약 계층을 구성한다.
grender는 다음 요소를 정의한다.
- 렌더링 장치 인터페이스
- 렌더링 명령 구조
- 렌더링 데이터 타입
- 렌더링 리소스 핸들
- 렌더링 열거형
grender는 실제 렌더링 알고리즘이나 GPU API를 구현하지 않는다.
렌더링 구현은 별도의 backend에서 수행된다.
예
- CPU Software Renderer
- GPU Hardware Renderer
grender는 엔진 시스템이 렌더링 구현에 의존하지 않도록 하는 추상화 계층으로 설계되어 있다.
grender_cpu
grender_cpu는 Grap 시스템에서 CPU 기반 렌더링 백엔드(Rendering Backend) 를 제공하는 라이브러리이다.
이 모듈은 grender에서 정의된 렌더링 인터페이스를 기반으로 CPU에서 동작하는 소프트웨어 렌더링 파이프라인을 구현한다.
주요 기능
- CPU Software Rasterizer
- Framebuffer 관리
- Primitive Rasterization
- Fragment 처리
grender_cpu는 GPU API(OpenGL, Vulkan 등)에 의존하지 않는
CPU 기반 소프트웨어 렌더링 구현 모듈이다.
Editor System
ged
ged는 Grap 시스템에서 에디터 기능을 제공하는 라이브러리 계층(Editor System Layer) 이다.
이 모듈은 에디터 상태 관리, 사용자 입력 처리, 작업 실행 및 Undo / Redo 기능을 제공한다.
주요 구성
- Editor
- EditorState
- Tool System
- Command System
- UndoStack
- UI System
Editor
에디터 시스템의 중심 객체이다.
주요 기능
- Tool 관리
- 이벤트 라우팅
- UndoStack 관리
- EditorState 관리
- UI 루트 관리
Tool System
사용자 입력을 처리하는 시스템이다.
구조
Tool │ ├─ SelectTool └─ TransformTool
Tool은 이벤트를 처리하고 필요 시 Command를 생성한다.
Command System
작업 실행 및 Undo / Redo 기능을 제공한다.
구조
Command │ ├─ SelectCommand └─ TransformCommand
Command 실행 히스토리는 UndoStack이 관리한다.
UI System
에디터 사용자 인터페이스 구조를 정의한다.
구성 요소
UiRoot Dockspace
패널
ViewportPanel OutlinerPanel PropertiesPanel
Layer Structure
현재 구현된 GrapCore 레이어 구조
ged ▲ │ ginter ▲ │ ghost ▲ │ gcore ▲ │ gmath ▲ │ gbase
각 레이어 역할
| Layer | Responsibility |
|---|---|
| ged | 에디터 시스템 |
| ginter | 플랫폼 이벤트 → 엔진 이벤트 변환 |
| ghost | 플랫폼 인터페이스 |
| gcore | 엔진 개념 모델 |
| gmath | 수학 연산 |
| gbase | foundation utility |
Rendering Layer
렌더링 시스템은 Core 레이어 위에 렌더링 인터페이스 계층과 렌더링 백엔드 계층으로 구성된다.
application ▲ │ engine systems ▲ │ grender (Rendering API) ▲ │ Rendering Backend (grender_cpu / GPU backend)
각 레이어 역할
| Layer | Responsibility |
|---|---|
| engine systems | 엔진 렌더링 시스템 |
| grender | 렌더링 API 인터페이스 |
| Rendering Backend | 실제 렌더링 구현 |
Extended Engine Layers
향후 엔진 확장 시 다음 레이어 구조로 확장될 수 있다.
application ▲ │ engine systems ▲ │ grender ▲ │ ged ▲ │ ginter ▲ │ ghost ▲ │ gcore ▲ │ gmath ▲ │ gbase
각 레이어 역할
| Layer | Responsibility |
|---|---|
| application | 애플리케이션 로직 |
| engine systems | 렌더링 / 시뮬레이션 시스템 |
| grender | 렌더링 API 인터페이스 |
| ged | 에디터 시스템 |
| ginter | 플랫폼 이벤트 → 엔진 이벤트 변환 |
| ghost | 플랫폼 시스템 인터페이스 |
| gcore | 엔진 개념 모델 |
| gmath | 수학 연산 |
| gbase | 기본 유틸리티 |
Rendering Backend Structure
CPU 렌더링 백엔드는 다음 구조로 구성된다.
grender_cpu ├─ common ├─ framebuffer ├─ pipeline │ ├─ vertex_stage │ ├─ clipper │ ├─ fragment_ops │ └─ raster └─ device
각 모듈 역할
| Module | Responsibility |
|---|---|
| common | 렌더링 공통 데이터 타입 |
| framebuffer | color/depth buffer 관리 |
| pipeline | 렌더링 파이프라인 단계 |
| raster | primitive rasterization |
| device | CPU 렌더링 장치 구현 |
Summary
GrapCore는 Grap 엔진의 기본 라이브러리 계층, 렌더링 시스템, 에디터 시스템 구조를 구성하는 모듈 집합이다.
현재 구성
gbase: foundation utilitygmath: 수학 라이브러리gcore: 엔진 개념 모델ghost: 플랫폼 인터페이스ginter: 이벤트 브릿지 계 층grender: 렌더링 API 계층grender_cpu: CPU 렌더링 백엔드ged: 에디터 시스템
이 구조는 엔진 시스템이 플랫폼 의존성과 렌더링 구현을 분리하고 모듈형 구조를 유지하도록 설계된 아키텍처이다.