Thanks to visit codestin.com
Credit goes to github.com

Skip to content

dmitrii-konarev/Vk-Engine

 
 

Repository files navigation

Jai Game Engine

⚠️ This project is under active development ⚠️

Warning: you might not be able to clone the project if all my GitHub LFS bandwidth has been used. I have to find a solution to put assets outside of the main repository.

Warning: due to a compiler bug, the program can fail to compile. If you see a circular dependency error, or undeclared identifier errors about things that get generated by the metaprogram such as Asset_Types or a Module struct, build the program again.

Started as a toy engine project to learn Vulkan and advanced rendering techniques, this is now taking the direction of a fully fledged game engine.

There is still a lot to do on the graphics side of things, but currently I am directing my efforts on game/core engine stuff.

Supports Linux and Windows.

Features:

  • No "big idea" (e.g. ECS), simple and pragmatic entity system
  • Hot reloadable engine modules
  • Custom gizmos
  • Multi editor viewports
  • Graphics abstraction layer
  • Shader hot reloading
  • Ref counted asset system
  • Asset hot reloading
  • Highly backward and forward compatible serialization system using manual indices
  • Simple CPU profiler
  • Simple GPU profiler
  • Skinned meshes
  • Physically based opaque surface shading
  • Image based lighting
  • HDR textures
  • Cascaded shadow maps
  • Parallax occlusion mapping with self shadowing
  • Bloom
  • Omnidirectional shadow maps
  • Clustered forward rendering

To explore/implement next:

Graphics:

  • Global illumination
  • Non pre-baked reflections
  • GTAO
  • Subsurface scattering
  • Volumetric clouds
  • Automatic texture transition barriers
  • Variance shadow maps
  • Particle system
  • Only render point shadow maps when something changes
  • Use multiple GPU queues concurrently

Editor:

  • Undo/Redo
  • Gizmo interaction improvements and rework
  • Texture viewer

Core:

  • Async asset loading/asset streaming
  • Pipelining
  • Input system

Animation:

  • Animation system
  • Animation graph (ideally a UE like graph that's more of a general purpose visual scripting tool)
  • Animation joint attachments

Physics:

  • Collision detection queries (we can probably use a physics engine)
  • Physics engine integration (probably Jolt)

Goals

  • Having a player running, jumping and mantling around (see Unreal Engine Advanced Locomotion System)
  • Sponza running at 155 FPS with all point lights casting shadows

Gallery

General Showcase

Multi viewport

Multi viewport

Custom editor gizmos

Gizmos

Parallax occlusion mapping, with self shadowing

Parallax Occlusion Mapping With Self Shadowing

Custom file browser

File Browser

500 moving point lights

Light Ballet

About

Vulkan based rendering engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jai 48.4%
  • C++ 44.7%
  • C 5.7%
  • GLSL 0.7%
  • Python 0.4%
  • CMake 0.1%