Skip to main content

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

gmathgbase 위에서 동작하는 수학 연산 레이어이다.


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

각 레이어 역할

LayerResponsibility
ged에디터 시스템
ginter플랫폼 이벤트 → 엔진 이벤트 변환
ghost플랫폼 인터페이스
gcore엔진 개념 모델
gmath수학 연산
gbasefoundation utility

Rendering Layer

렌더링 시스템은 Core 레이어 위에 렌더링 인터페이스 계층과 렌더링 백엔드 계층으로 구성된다.

application ▲ │ engine systems ▲ │ grender (Rendering API) ▲ │ Rendering Backend (grender_cpu / GPU backend)

각 레이어 역할

LayerResponsibility
engine systems엔진 렌더링 시스템
grender렌더링 API 인터페이스
Rendering Backend실제 렌더링 구현

Extended Engine Layers

향후 엔진 확장 시 다음 레이어 구조로 확장될 수 있다.

application ▲ │ engine systems ▲ │ grender ▲ │ ged ▲ │ ginter ▲ │ ghost ▲ │ gcore ▲ │ gmath ▲ │ gbase

각 레이어 역할

LayerResponsibility
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

각 모듈 역할

ModuleResponsibility
common렌더링 공통 데이터 타입
framebuffercolor/depth buffer 관리
pipeline렌더링 파이프라인 단계
rasterprimitive rasterization
deviceCPU 렌더링 장치 구현

Summary

GrapCore는 Grap 엔진의 기본 라이브러리 계층, 렌더링 시스템, 에디터 시스템 구조를 구성하는 모듈 집합이다.

현재 구성

  • gbase : foundation utility
  • gmath : 수학 라이브러리
  • gcore : 엔진 개념 모델
  • ghost : 플랫폼 인터페이스
  • ginter : 이벤트 브릿지 계층
  • grender : 렌더링 API 계층
  • grender_cpu : CPU 렌더링 백엔드
  • ged : 에디터 시스템

이 구조는 엔진 시스템이 플랫폼 의존성과 렌더링 구현을 분리하고 모듈형 구조를 유지하도록 설계된 아키텍처이다.