A downloadable Graphics Engine

A custom engine I built myself that supports basic rendering, shaders, lighting, skinned animation, frustum culling, collision checking, particle system, and utilizes a simple object hierarchy. Built using C++ and the DirectX 11 API.

Source Code

My Role

Features I Implemented
  • Skinned Animation
  • Frustum Culling
  • Sphere-to-Plane Collision Checking
  • Loading Textured models from FBX files with a custom FBX file exporter
  • Loading Animation Data from FBX files with a custom FBX file exporter
  • Dynamic Directional, Point, and Spotlights
  • Skybox implementation
  • Memory Management Techniques
    • Sorted Pool algorithm
    • Free List algorithm
    • Linear Allocator
  • Look-At and Turn-To Matrix Behaviors
  • FPS-style camera controls


Skinned Animation

Here I am demonstrating the implementation of skinned animation. I am using an external application I built using the FBX SDK that reads in basic mesh data, material data, and animation data from FBX files and exports that data into 3 binary files respectively. I am then able to read the data from those binary files to render the mesh and animation. In the clip, you can see I am able to step through each keyframe of the animation individually as well as play out the animation by interpolating from one frame to the next.

Frustum Culling & Matrix Behaviors

The way the frustum culling works is I am using sphere-to-plane collision detection to determine if the AABB's are within the frustum. If they are the AABB's color changes from blue to orange.

If you've noticed the floating matrices they are following two different behaviors. the one on the top right is following a look-at method, meaning it is always facing the direction of the "player". The matrix towards the left is following a turn-to method where it is gradually turning to face the direction of the "player".

Particle Emitters

The emitter in the center is using a sorted pool algorithm to spawn the particles while the outer four emitters are using a free list algorithm and all sharing particles from the same pool.

While I wouldn't imagine this being a viable particle system, as it is based on the CPU and not the GPU, it does take advantage of a few memory management techniques like the sorted pool, free list, as well as a linear allocator where all the lines (particles) are stored.

(The grid pop in is due to the fact that I have drawing the grid bound to the 'G' key and I am using the Windows game bar to record which means I'm pressing 'Win + G' every time I start/stop a recording)


Developed between December 2020 - February 2021.

StatusReleased
CategoryOther
Release date Feb 28, 2021
AuthorJustin DaSilva
Tags3D, Animation, directx, graphics, portfolio, sourcecode
Code licenseMIT License
LinksSource code

Leave a comment

Log in with itch.io to leave a comment.