This was a semester long project in which we implemented the basics of what is necessary for a render engine.

Physically Based Rendering

The math for the project took advantage of the SIMD nature of DirectX math allowing us to use parallelism on the CPU to make calculations be solved faster.

Animation Curve Helper

My interest in animation led me to create this large helper file and a long list of animation curves that can be easily access and used. It also visualizes the curve within a small graph to help the user visualize what they have chosen. Note that this tool is conveniently set up connecting it to ImGui and so linking a new animation using this system is very convienent for rapid prototyping.

Dither Shader

I had always found it very interesting when games opted to use dithering in order to imitate transparency over normal transparency. Until we actually began to implement transparency during the production of this project I never knew what a PAIN it was in order to do and how expensive it can be. I sought to implement my own rudimentary dithering pattern for myself in this engine that offered several different patterns, which can be swapped out for different textures, at different distances from point lights.

Lights

This engine allows for lights created from directional and point lights. Each have their own settings but both derive from a lighting objects.

Cameras

Cameras are perspective and allow the user to traverse the world. The options during runtime lets the player change the speed of the camera and to swap to a different one if desired.

Skybox

Able to change the skybox of the current scene using a cube map. Scenes appear in ImGui as another optional button that when pressed swaps out what set of objects are to called from.

Shadows

As seen in the video and screenshots this engine also is able to create shadow maps using depth buffers created from light sources.

Scene Management

This is a coinvent way to manage lights, objects, cameras, and the current skybox. Their ImGui updates accordingly to what the light type is.