Spite: Equilibrium
Project Specifics
Context: TGA project #5 (Diablo 3 clone)
Reference game: Diablo 3
Duration: 10 Weeks (half-time)
Team size: 23 People
Engine: Custom DX11 engine
My Contributions
- My Graphics engine from TGP
- Cascaded shadowmaps
- Shadowmap baking
- Animation layering and blending
- Animation blending and layering editor
- 2D and 3D Particle system
- Particle system editor
- Auto instanced rendering
- Improved SSAO
- Frustum culling
- Cutout shader
- Depth fog
- Decals
- SG and TA Pipelines
Trailer
Gameplay
Personal Highlights
Graphics Engine
I was responsible for our graphics engine so I collaborated tons with our artists, animators and technical artists, building features to fit our artistic direction and needs.
I didn’t know what video to put here so I threw in a cool Nsight rendering timelapse. 😀
Rendering Optimizations
Due to the high light count demands of our game (~200 pointlights in the crypt level) I had to make a lot of different optimizations to keep the framerate in check.
I added shadowmap baking as well as frustum culling for meshes, lights, decals and particle emitters, even stopping animation and particle updates when out of view. I also added auto-instanced rendering.
Projected Decals
Using a box volume, I created projected decals, projecting on surfaces based on a dot product with the surface normal and the box volumes up vector. I added support for both unlit and lit decals, correctly blending PBR textures.
Screen Space Ambient Occlusion
I implemented an improved SSAO over the one we’re taught in the TGP course, using the implementation from Introduction to 3D Game Programming with DirectX 11 by Frank Luna as reference.
Particle System
Maintaining close communication with our technical artists, I created an extensive particle system based on their needs.
It supports particle, ribbon, beam, mesh and decal emitters, and has many different emission shapes, behaviours and forces. You can even attach a particle system to the joint of a skeletal mesh.
Animation Blending
I implemented highly customizeable interpolation between animation frames and states, making animations smooth even when animation framerate is low or when transitioning to another animation.
I also added layered animations, allowing many animations to play at once from different joints.
Particle and Animation Editor
An in-engine tool I made for easier creation of particle systems, allowing real time loading, editing and saving of our particle systems. This tool has been used extensively by our technical artists for all of our particle effects going forward.
I later expanded upon this tool to also include animations so animators can load, edit and save transitions and layering of animations in real time.
You can read more about this tool here.
I am part of The Game Assembly’s internship program. As per the agreement between the Games Industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 15th. Any internship offers can be made on April 27th, at the earliest.