Engine Proof Video

This was a quick video I put together after our Engine Proof presentation.  It shows off all of the graphical features I’d put into the engine at this point.  Watching it reminds me that the glow outlines weren’t implemented until after this milestone, so chronologically this video comes after GoodGraphics12.png.

Also, the first (terrible) iteration of shadow mapping made it in before the milestone.  You’ll notice the intense flickering which was the result of using a perspective projection to create the shadow map.  You might ask yourself why I’d do that.  The answer is that it was a very misguided attempt to make the shadow map fit the scene regardless of the scene’s world width.  I figured out shortly after that this was a really bad idea.

This video was taken on 10/2/12.

GoodGraphics14.png, Glowing Glow Outlines

My memory is a little fuzzy on the exact dates, but I believe this was the last screen capture before our Engine Proof milestone.  I took the outlines further and started the glow process to make them more like what they were intended to imitate:  Left 4 Dead.  I think they looked fairly cool, but I was not really getting the glow effect that I was aiming for, and it would be months before I actually fixed the problem.  Part of that was shifting priorities, but part of that was just being stupid about the problem as the solution ended up being very easy.

This was also when I first implemented my process management system.  I encapsulated a render target with the blend, depth stencil, and rasterization state changes and rendering calls needed to achieve a specific effect.  This made the main draw loop very small, as it was just a series of ProcessSet and ProcessRender calls.  While I have still not found the time to make the process manager smart enough to gather scene data and pick the appropriate processes and order them correctly (one day!), I’m still very happy with the system and how it’s made my life so much easier as I add new effects and render passes to the engine.

This image was taken on 10/15/12.

GoodGraphics13.png, Glow Outlines And Trying To Avoid Transparency

Designers wanted to give the player the ability to toggle seeing through walls so they could understand their progress and goals.  At the time, I was given to believe transparent model drawing was a scary thing and attempted to provide alternate solutions to the problem rather than actually tackle it.  This was the start of the (at the time) solution: glow outline silhouettes.

The idea was to do them like Left 4 Dead where certain objects of interest could be outlined in a glowing color, and that outline would not be occluded by any world geometry.  This was the first step, to outline objects.  You’ll notice that that’s all that’s happening here; you can’t limit what’s being outlined, you can’t specify color, and they don’t glow.  It might even look like they’re occluded by geometry, but in keeping with the aesthetic of Left 4 Dead, they were cumulative.  It can just be hard to tell that that’s what’s going on.

This image was taken on 10/10/12.

GoodGraphics12.png, Skydomes And Spatial Partitioning

I got a skydome implemented with day/night multi-texturing and cloud translation.  It allowed me to update the lighting system to provide a rudimentary day/night cycle system.

While it’s not as obvious, this was the first implementation of our real spatial partitioning system utilizing an octree.  In the early iteration, every cell was assigned a scaled version of the white crate model, and cells outside of the view radius got drawn as models and branch and bounded.  It kept performance high regardless of how many objects were in a cell, but it wasn’t very feasible from a content creation standpoint and was eventually abandoned.

This image was taken on 9/22/12.

GoodGraphics11.png, Fun With Animation

The next major update to the graphics engine was to handle basic skeletal animation.  This required updates to both the graphics engine and the FBX conversion pipeline.  This was also the first model to use specular maps, so support for that also had to be built into the engine.  This initial specular mapping was actually wrong, but looked correct enough on models with small enough triangles that I didn’t notice the bug for a long (5 months!) time. Also, artists were very happy that I finally corrected the issue with my loadtime normals calculation undoing their work on smoothing groups.

This was also the birth of the scuttle, which despite not fitting the current theme of the game and never being intended as an actual game asset was beloved by the team and our game instructors and is still in the game to this day because of it.  A lot of people also feel a real need to kill it.  It’s kind of a 50/50 split.

This image was taken on 9/17/12.