GoodGraphics15.png, Improved Glow Outlines

So, this was taken on the same day as the last screen capture.  I made some modifications to the glow outline system so that different outline colors could be handled simultaneously and specific objects could be set to glow.  This made the system viable for use as the designers wanted.  However, you’ll notice that the glows are still not blended correctly.  Turns out that sometimes I’m just really dumb about things.

Also, I fixed shadow mapping to use an orthogonal projection at this point so the shadowing improved greatly.

This image was taken on 10/15/12.

GoodGraphics15.png, selective glowing.

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.

GoodGraphics14.png, glowing outlines.

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.

GoodGraphics13.png, glow outline silhouettes.

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.

GoodGraphics12.png, skydomes and spatial partitioning.