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.
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.