EMTE

Euclidean Manifold Topology Engine, or EMTE, is the focus of my dissertation. It's a prototype toolset and lightweight renderer for authoring non-Euclidean scenes. These spaces are implemented through portals, transitions between two points in space.

Renderer

The renderer was created using DirectX 12. DirectX 12 was chosen thanks to its:

Portals

I implemented portals through the (somewhat old-fashioned) render texture technique. This was primarily in the interests of time - the timeframe for this project was short and the goal was only to produce an initial prototype. Render to texture is simple, but far from the most effective way of rendering portals. Rendering directly to the back buffer, as opposed to a seperate render target, using a stencil pass is a far more efficient way of rendering rasterizer portals. That's a Wrap, The Manifold Garden rendering retrospective, talks about the subject excellently.

A screenshot of EMTE, showing a pair of portals.

Reflection

EMTE was a difficult project. It was my first time using a low-level graphics API. Overcoming the unfamiliarities and complexities of DirectX 12 took up the bulk of my time at the start of the project. I found that DirectX Tool Kit's tutorial helped massively in grasping the basics of a high-level API. I then used the DirectX Graphics Samples to help me understand the intricacies of the system.

The portals did not come out the way I would've liked. Once I've had ample time to reflect and recharge, I'd be interested in implementing a stencil pass approach in the same vein as Portal's or Manifold Garden's. Additionally, there are some inconsistencies with the portals' angles: I fail to reposition the portals' virtual cameras according to player displacement. To do this, I need to also implement some way of accurately culling geometry in front of a portal's other side.

Also, the GUI left a lot to be desired. I used the fantastic Dear ImGui for the GUI, but I took on board some criticism following the user study that was a part of this project. The GUI is going to be overhauled in the future with some quality of life changes, taking on what I learned in DirectX 11 Advanced Graphics.