3D graphics engine designed for rapid prototyping and extensibility
C++ Other
Failed to load latest commit information.
Analytics Remove function coverage from report Nov 11, 2014
ContinuousIntegration Line endings Feb 16, 2016
Demo01-WindowManager [Demo01] Add example of log channels Jul 19, 2017
Demo02-GL [ionGraphics] [ionGraphicsGL] Rename IShaderProgram and I*Shader clas… Jul 7, 2017
Demo03-GUI Remove references to ionFramework.lib Jul 2, 2017
Demo04-Scene [Demo03] Add missing shader copy for *nix build Aug 6, 2017
Demo05-Application [ionGraphics] [ionGraphicsGL] Rename IShaderProgram and I*Shader clas… Jul 7, 2017
Dependencies Update build to C++17 standard Aug 3, 2017
Documentation [ionCore] [ionFramework] [ionApplication] Split ionFramework contents… Jul 2, 2017
Include Remove ionFramework from ionEngine.h Jul 2, 2017
Properties Update build to C++17 standard Aug 3, 2017
TestConfig Add configuration test program Feb 16, 2016
TestDeployment Fix cmake/gcc build Jun 22, 2017
TestUnits [ionCore] Swizzle-style constructors for vec3 and vec4 Jul 29, 2017
ionAnimation [ionAnimation] Fix some compilation issues with spline class Aug 1, 2017
ionApplication [ionApplication] Better handling of turning WASD/ArrowKeys off/on for… Aug 16, 2017
ionCore [ionCore] Clamp GetPixel bounds for images Aug 13, 2017
ionGUI [ionGUI] Switch to 32bit indices for gui rendering Jul 3, 2017
ionGraphics [ionGraphics] [ionGraphicsGL] Rename IShaderProgram and I*Shader clas… Jul 7, 2017
ionGraphicsGL [ionGraphicsGL] Compiler warning fix Aug 12, 2017
ionMath [ionMath] Add method to get normal of a line segment Jul 23, 2017
ionScene [ionScene] Add option to load obj meshes with names Aug 17, 2017
ionScience [ionScience] Fix clang compilation error and std::function pessimization Aug 12, 2017
ionWindow [ionWindow] Add key input modifiers to SKeyboardEvents Aug 12, 2017
.gitattributes Add .gitattributes with *.h language setting (C++) Dec 6, 2016
.hgignore [Demo03] Add missing shader copy for *nix build Aug 6, 2017
.hgtags Added tag 0.4.3 for changeset 6d7e4805ef83 Jun 21, 2017
.travis.yml Re-enable travis.ci RELEASE builds with new, fixed ray-box intersecti… Jun 12, 2017
CMakeLists.txt Fix ION_PROJECT_BASE_DIRECTORY definition for cmake build Aug 9, 2017
Dockerfile Codeship configuration Feb 18, 2016
LICENSE.txt Change license back to MIT, functionally equivalent and much more rec… Feb 8, 2016
README.md Update README.md Jul 3, 2017
appveyor.yml Add appveyor config Jun 22, 2017
ionEngine.sln [ionCore] [ionFramework] [ionApplication] Split ionFramework contents… Jul 2, 2017
ionEngine.sublime-project Update sublime project Feb 8, 2016




Branch Status
release Build Status GitHub release
master Build Status Build status GitHub


ionEngine is a C++ application framework designed to aid in the creation of high-performance rendering applications. It is modular and generic, designed for use in both game engines and scientific data visualization. The primary goal of ionEngine is to improve the DX (Developer Experience) of writing graphics programs, from small educational examples to full production game engines.

ionEngine includes many modular components, including:

  • ionCore: basic typedefs and boilerplate, some string and file helpers, standard library helpers
  • ionMath: vector classes for 2, 3, and 4 dimensions. A custom “color” class that encapsulates a vec3 or vec4 with implicit conversions between float and byte colors. Other geometric primitives including rays, lines, boxes, triangles, etc.
  • ionWindow: generic interface and helpers for operating system utilities, in particular window/context creation
  • ionGraphics: generic and modular interface for any rendering API, in particular for OpenGL
  • ionScene: scene interface that provides basic mesh loading, encapsulated renderable objects, and extensibility to add multipass rendering and other advanced functionality
  • ionScience: algorithm implementations useful for various scientific applications, including long/lat classes, marching cubes, ear clipping, volumetric data rendering

📝 Features

ionEngine provides features through a large number of optional modules so that only the necessary components need to be included in a project.

Features included in ionEngine or additional modules are:

  • Component-entity based scene graph which is renderer-agnostic to maximize extendability
  • Forward and deferred lighting systems implemented using OpenGL
  • Bloom, SSAO, depth-of-field, and other post-processing effects
  • Volumetric utilities such as a shader-based raycast volume renderer and marching cubes implementation
  • GUI elements provided through dear imgui
  • Windowing and input provided through GLFW

📦 Distribution

Source code distributions are available at Bitbucket and GitHub

Further information can be found at ionengine.io.

Documentation can be found at docs.ionengine.io.

🔨 License

The ionEngine is licensed under the MIT license