I tend to do a major iteration on the overall scene composition in Steel Hunters every month or two and since the public trailer is now approaching, I decided to just did one six-seven hour block fo sitting at my computer until I was happy with the results. It should be obvious that this iteration started like most: “just a few quick tweaks.”
I’ve done iterations on all of these various systems/components in the past, but generally I’ve focused on one or two aspects of the composition at a time. I wanted this iteration to focus on the entire gamut of influencing factors.
Ideally, I’d tackle each problem in that list one at a time. And, for the most part, that’s what I did. The issue is how all of these various systems exist in relation to each other. Which brings me to:
The entire world state is managed by my “world simulation” — anything that related to or occurs within the environment is in some way or another related to this system. In the case of lighting, volumetrics, atmospherics, and relevantpost-processing data, the relation to the world simulation is direct: the simulation manages each of these explicitly.
The process, basically, goes like this: start a problem (almost in the order described above, except the sky simulation and resulting coloring was the first problem I took on), work towards an acceptable result, and move on to the next problem.
By the time I started on the second problem, that process was pretty much gone. Changing the sky simulation data resulted in some dramatic composition changes that affected the overall scene exposure, the lighting intensity/colors, and the look and intensity of the haze. Really, the only thing that wasn’t affected by this was my volumetrics solution (based heavily on NVIDIA’s Volumetric Lighting research/implementation advice) as I was previously manually managing the volumetric light color/intensity.
So, obviously, I updated the world simulation’s code to ensure that the volumetric light color/intensity to also be managed by the world simulation in respect to its various light entities (a directional light and sky light). THERE. Now a single change affects ALL THE THINGS. I sure showed that what’s what. Admittedly: this also addressed the problem I was having with the volumetrics being out of sync with a dynamic time-of-day (especially at night), so that’s neat at least.
Note: Unfortunately, I didn’t properly create screenshots of each specific step along the way, but I do have a few iterations that I used to compare each tweak round. So those will appear shortly.
With the exception of the odd issue with the “sun” showing as a large blue halo when obscured (and the volumetrics coloring when in an obscured location relative to the sun), I ended up with this first-pass result:
This is definitely a step in the right direction compared to the starting point. And I remember this first iteration being worse than it actually is (in retrospect), but looking at it now, I remember my issues with it:
I really should have written this post yesterday after doing all this work because, looking at this pass’s screen shot looks, basically, like “… why did I just make everything worse?”
This pass’s goal:
I call this pass “lighting, volumetrics, and composition exposure adjustments that made everything worse”.
Which is mostly true; I can’t remember the specifics of what I did in this pass, but I was focused primarily on getting the lighting in the final composition to be more complex (not flat).
AND I SUCCEEDED. If you ignore the fact that the entire scene is now grim-dark and the mech details are basically completely lost.
I focused primarily on light intensity values, the brightness of the trueSKYbrightness levels (which were pushing the composition’s exposure histogram far outside the range of the rest of the scene), and getting the haze to cooperate.
I did another round of light intensity modifications in conjunction with the trueSKY light wavelengths and yet-again-more haze tweaks. AND THIS TIME: THEY WORKED.
Oh, and I changed the entire volumetrics simulation settings from being Mie-based scattering to using a Henyey-Greenstein phase function for scattering. This iteration, in particular, took the most time to really get right-ish because it so dramatically impacted the entire composition
Note: I’ll show some debug shots of what the volumetrics themselves look like in the final composition later.
The overall composition still hasn’t quite hit the overall exposure level I’d like and the “sun” still had no strong presence in the composition. And so I decided: unacceptable. The “sun” must bend to my will.
After more volumetrics, eye adaptation, color grading, and light intensity passes, I ended up at a result that I’m pretty happy with. It’s still leaning a bit too close to orangey-orangyness-orannnnge, but at the moment I’m not entirely convinced that’s a bit thing for this environment (especially since, once I started adding VFX to the scene, that will have a pretty dramatic effect on color variation).
AND THE SUN BENT TO MY WILL.
And since I promised some debug screen shots, here is the resulting composition exposure:
And a debug visualization of what the volumetrics look like on their own (you can probably tell where I went to give the “sun” a bit of help in the prominence department):
I really enjoy doing iterations like this. And this was fun enough to help me maintain sanity in the twelve hours of camera system work that followed.
Fun Fact: The Steel Hunters “announce” trailer release date is not too far away.
By reader demand, here’s a quick-and-dirty slideshow GIF of the progress (it loops so the beginning/end are, uh, hopefully recognizable):