The EDGY Engine is a rendering engine built in TypeScript and WebGL. It uses a non-photorealistic perspective technique known as exponential perspective to quickly and efficiently render a 3D scene using two-dimensional, pre-rendered images. Our official demonstration is also available on this site here.
The EDGY Team consists of Emily Bartman, Dakota Jones, Garrett Steffen, and Yi Zong.
We are supported by our mentor and sponsor, Dr. James Palmer, whose novel research is the subject of our demonstration. His information is available on his Northern Arizona University profile.
The EDGY Rendering Engine takes advantage of the qualities of exponential perspective which has some distinct advantages over other techniques.
Arcana for the Super Nintendo Entertainment System used hand-drawn images pre-rendered in linear perspective. Because walls, floors and ceilings for each unit of distance must be hand-drawn, it would require a much greater effort from the artist in order to increase the obviously low frame-rate.
F-Zero attempted to solve this problem by taking large images and sacrificing their height to create depth. This technique was used to warp the race track in the example above. This technique allows for a higher frame-rate, but resulted in a loss of detail.
Objects rendered in exponential perspective have a special relationship with depth. Both of the statues on the right are rendered in exponential perspective. They are geometrically identical, so for every unit of distance, the statue is scaled by half. This means we can reuse images to create depth. The statues on the left do not share this quality, and each scene would have to be drawn separately by an artist.
Using this technique, we can take the assets required to create a scene, scale them appropriate and finally display them to achieve the appearance of smooth forward and backward movement through three dimensional space.
We produced several artifacts to support the success of our implementation, including graphs that describe the results of our user testing and measurements of the frame-rate achieved by the engine.
User Testing Results
Integration Testing Results

Collaboration and Version Control
Git: Source code management that allows code tracking, merging and comparing versions.
Google Docs: Cloud-supported word processor for collaborative document creation.
Trello: Online project task management.

Software Stack
WebGL: (Web Graphics Library) JavaScript API for rendering interactive 3D computer graphics and 2D graphics within any compatible web browser without the use of plug-ins.

Development Tools
TypeScript: Typed superset of Javascript that compiles to plain Javascript.
Visual Studio Code: Text editor with TypeScript support and compiler.