3D graphics engine designed for rapid prototyping and extensibility
C++ Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Analytics Remove function coverage from report Nov 11, 2014
ContinuousIntegration [Build] Fix GLFW install script. Nov 25, 2017
Demo01-WindowManager [Build] This might be necessary to build on outdated travis ld Nov 25, 2017
Demo02-GL [Build] Fix order of library dependencies in cmake build Nov 25, 2017
Demo03-GUI [Demo03] Replace deprecated function call Dec 29, 2017
Demo04-Scene [Build] Fix order of library dependencies in cmake build Nov 25, 2017
Demo05-Application [Build] Fix order of library dependencies in cmake build Nov 25, 2017
Dependencies Update imgui to v1.53 Dec 28, 2017
Documentation Document style cleanup May 7, 2018
Include Remove ionFramework from ionEngine.h Jul 2, 2017
Properties [Build] "Fix" annoying issues related to Visual Studio not managing W… Apr 4, 2018
TestConfig Clean up and organize CMake build Nov 24, 2017
TestDeployment [Build] "Fix" annoying issues related to Visual Studio not managing W… Apr 4, 2018
TestUnits Dependency update Nov 28, 2017
ionAnimation Clean up and organize CMake build Nov 24, 2017
ionApplication [ionWindow] [ionApplication] Window creation setting to set vsync on/… Jan 13, 2018
ionCore [ionCore] Add ArcSin and ArcCos to ion:: namespace Mar 14, 2018
ionGUI [ionGUI] Fix template-hidden compiler error Jan 21, 2018
ionGraphics [ionGraphics] [ionGraphicsGL] Add support for 16-bit fixed point text… Mar 9, 2018
ionGraphicsGL [ionGraphics] [ionGraphicsGL] Add support for 16-bit fixed point text… Mar 9, 2018
ionMath [ionMath] Add missing `const` on SRect2 equality Nov 28, 2017
ionScene [ionScene] LineSceneObject also supports boxes Mar 14, 2018
ionScience Clean up and organize CMake build Nov 24, 2017
ionWindow [ionWindow] [ionApplication] Window creation setting to set vsync on/… Jan 13, 2018
.gitattributes Add .gitattributes with *.h language setting (C++) Dec 6, 2016
.gitignore Remove some mercurial artifacts and unused Dockerfile, and organize .… Nov 21, 2017
.travis.yml Attempt to fix travis build by using shared libs on OS X, static on L… Nov 25, 2017
CMakeLists.txt Dependency update Nov 28, 2017
LICENSE.txt Change license back to MIT, functionally equivalent and much more rec… Feb 8, 2016
README.md Add appveyor release branch badge to README Nov 19, 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

README.md

Logo

ionEngine

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

Overview

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