Skip to content

tataliya7/HorizonEngine

Repository files navigation

Horizon Engine

Horizon Engine is an open-source 3D rendering engine, focusing on modern rendering engine architecture and rendering techniques. Serving a different purpose than game engines, this project aims to build a highly scalable rendering framework to improve the productivity of prototype projects and academic research, but also to serve as an educational tool for teaching rendering engine design and implementation from scratch.

Horizon Engine is currently only supported on Windows and only target modern graphics APIs (Direct3D 12, Vulkan, Metal).

Discord

Introduction

Goals:

  • Efficent and Flexible Rendering
  • Fast Rendering Techniques Experimentation, eg. Hybrid Rendering with DXR or Vulkan Ray Tracing KHR

Horizon Engine Architecture:

image

Daisy Renderer Architecture:

Inspired by Halcyon

image

Features:

  • Modularization using C++20 modules
  • Fiber-Based Job System
  • Bindless
  • Render Graph
  • ECS (Entity-Component-System)
  • Hybrid Render Pipeline
  • Deferred Render Pipeline
  • Path Tracing
  • Physics Engine Integration (PhysX)
  • Sound Engine Integration (miniaudio)

Roadmap:

  • Super Resolution Algorithms (DLSS 2, FSR 2, etc)
  • Visibility Buffer (Also Called Deferred Texturing or Deferred Material Shading)
  • Surfle GI
  • Native Graphics API Support (Direct3D 12, Metal 2)
  • Multi-GPU Rendering
  • Plugin System (Live-Reloadable Plugins)
  • Machine Learning (TensorRT Integration)
  • VR/AR Support
  • Cross-Platform (MacOS and Linux Support)

Screenshots

Scene Editor image

FSR image

Raytraced Shadows image

Sky Atomsphere image

Particles image

Cornell Box image

See here for more examples.

Requirements

  • Windows 10 SDK (10.0.20348.0)
  • NIVIDIA Graphics Cards (Geforce RTX 20-series or 30-series) and keep your graphics drivers up to date (https://www.nvidia.com/Download/index.aspx)
  • Vulkan SDK 1.3.216.0, this repository tries to always be up to date with the latest Vulkan SDK (https://vulkan.lunarg.com/sdk/home)
  • CUDA SDK (11.7)
  • Visual Studio 2022, and make sure C++ Modules for v143 build tools (x64/x86 - experimental) is installed (Currently, I'm working with Preview Version 17.4.0, it may not compile successfully if you use another version)
  • C++ 20

Getting Started

  1. Clone this repository

git clone https://github.com/harukumo/HorizonEngine

  1. Run "GenerateProjects.bat"

Third Party

Documentation

Reference Manual

API Specification

Programming Guide

Q&A:

See Q&A where common questions are answered.

Debug Tools

Vulkan/D3D12 debugging:

Optix debugging:

CPU profiling:

Contribution

Contributions are welcome.

Sponsors

Lisence