---
title: "Horizon Engine – C++20으로 만든 Vulkan 기반 3D FPS 게임 엔진"
published: 2026-01-10T22:23:36.000Z
canonical: https://jeff.news/article/644
---
# Horizon Engine – C++20으로 만든 Vulkan 기반 3D FPS 게임 엔진

C++20과 Vulkan 1.3 기반의 3D FPS 게임 엔진. Deferred Rendering, ECS(EnTT), Jolt Physics, 3D 오디오 등을 갖추고 있으며 최근 OpenGL에서 Vulkan으로 렌더러를 완전 재작성함.

C++20과 Vulkan 1.3으로 처음부터 만들고 있는 3D FPS 게임 엔진 Horizon Engine이 공개됨. 최근 OpenGL에서 Vulkan으로 렌더러를 완전히 재작성했고, ECS 아키텍처와 물리 엔진까지 갖춘 꽤 본격적인 구성임.

## 렌더링 파이프라인

Vulkan 1.3 기반 Deferred Rendering 파이프라인이 핵심임. G-Buffer 레이아웃은 Albedo, Normal, ARM, Emission, Velocity로 구성되어 있고, PBR + IBL 라이팅을 지원함. 후처리도 TAA, SSR, SSAO, Bloom, Tonemapping(ACES/Filmic)까지 현대적인 렌더링 기법을 거의 다 구현해둠. Cascaded Shadow Maps에 PCF 필터링도 적용되어 있음.

Vulkan RHI(Render Hardware Interface) 레이어를 따로 두어서 Vulkan의 복잡한 부분을 추상화한 구조가 눈에 띔.

## 엔진 아키텍처

- **ECS**: EnTT 기반으로 엔티티-컴포넌트-시스템 아키텍처 채택
- **물리**: Jolt Physics로 리지드바디 및 캐릭터 컨트롤러 구현
- **오디오**: miniaudio로 3D 공간 오디오 지원
- **에셋 파이프라인**: glTF, KTX 포맷의 비동기 로딩
- **메모리 관리**: 커스텀 메모리 아레나 및 할당자 사용

ImGui 기반 인게임 에디터, JSON 씬 직렬화, 셰이더 핫 리로딩 같은 개발 편의 기능도 갖추고 있음.

## 기술 스택

Vulkan, GLFW, GLM, EnTT, Jolt Physics, spdlog, miniaudio, Dear ImGui, tinygltf, Catch2 등으로 구성됨. 빌드에는 CMake 3.25+와 C++20 컴파일러, Vulkan SDK 1.3+가 필요함.

## 로드맵

GPU-Driven Rendering(Mesh Shaders), Ray Tracing, Volumetric Fog, 에디터 기즈모/에셋 브라우저 등이 계획되어 있음.

학습 목적으로 시작한 프로젝트라고 하지만, Deferred Rendering + Vulkan RHI + ECS + 물리엔진까지 직접 통합한 구성은 상당히 완성도가 높음. 특히 OpenGL에서 Vulkan으로의 마이그레이션을 완료한 점이 인상적임.

## 핵심 포인트

- Vulkan 1.3 기반 Deferred Rendering 파이프라인 (G-Buffer, CSM, TAA, SSR, SSAO, Bloom, PBR+IBL)
- EnTT ECS + Jolt Physics + miniaudio 3D 오디오 통합
- Vulkan RHI 추상화 레이어로 렌더링 복잡도 관리
- glTF/KTX 비동기 에셋 로딩, ImGui 에디터, 셰이더 핫 리로딩 지원
- GPU-Driven Rendering, Ray Tracing, Volumetric Fog 등 로드맵 진행 중

## 인사이트

학습 프로젝트로 시작했지만 Vulkan Deferred Renderer + ECS + 물리엔진 + 에셋 파이프라인까지 직접 통합한 구성이 인상적. OpenGL에서 Vulkan으로의 전환을 완료한 점에서 실행력이 돋보임.
