Mindbend Engine

The Mindbend Engine is my first attempt at writing a custom rendering engine. Inspired by Marble Marcher and the articles by Inigo Quilez i decided to write a small game engine to push the limits of modern game development.

In essence, the Mindbend Engine is a rendering engine that uses SDFs (Signed Distance Fields) and Raymarching to visualize mathematically defined structures. The potential of the theory is mind-blowing. Shapes that are impossible or incomputable to draw with traditional triangle based engines become the norm. Additionally procedural effects and other recursive rendering have no added costs. This allows for amazing effects, like bending geometry over time (think of Inception), multiplying objects and boolean mesh operations.

If it is so great, then why aren’t people using this already?
A big part comes from the technical limitations. Similarly to ray tracing, ray marching requires very expensive per pixel computations. This highly limits the amount of objects allowed at one time and requires more high end hardware. None the less Nvidia and AMD have been working very hard towards improving support for these technologies in the latest years. In a few years, this technical limitations won’t be a problem anymore.

From a game development standpoint I believe that we haven’t seen many games using these technologies extensively because there simply aren’t the right tools around. My goal with Mindbend is to create an engine that allows designers to prototype objects at runtime, by writing SDFs and assigning dynamic parameters. Established concepts like meshes and traditional rigidbody physics algorithms fall apart, objects need to be defined in a purely algebraic form and physics needs to be approximated using point-based approximations. Once the appropriate tools are put in place to properly take care of these limitations, new games will be born that challenge our understand of reality.

This project is still in it’s early stages and is not more than a proof of concept. Currently I am working on creating a runtime interface to allow runtime definition of SDFs and consequently quick runtime Shader compilation.