Over the course of the semester, this project involved building a simple 3D game engine in C++ using Direct3D 11. The engine supports textured 3D objects, z-buffering, real-time lighting, animations, models, collision detection, and post-processing effects like bloom. Each lab built incrementally upon the previous one—starting with triangle rendering and culminating in environment interaction and effects rendering. Multiple shader programs were implemented in HLSL, including mesh shaders, normal mapping, and lighting models.
The engine was developed through eleven cumulative lab assignments as part of a college course. Each module layered new functionality over a rendering framework, ranging from basic vertex processing to skinned animation, lighting pipelines, and post-processing effects. A custom math library was developed for transformations, and an SIMD-optimized version was written separately. The final lab integrated bloom using additive blending and Gaussian blur across downsampled framebuffers. Collision detection was implemented with AABBs, and a multithreaded job system allowed asynchronous processing of tasks like culling and animation.