Brett Lajzer

78 Followers
74 Following
275 Posts

Doin' stuff with computers.

Current: Fictions
Former: Annapurna Interactive, Velan Studios, Vicarious Visions, 1st Playable.

Opinions are my own.

Websitehttps://brettlajzer.com
PronounsHe/Him
🏳️‍🌈🏳️‍🌈
Devastated to find out that they _do not_ process time into temporal honey.
I don't remember why but I apparently made this meme back during Solar Ash
Also, the DS's GPU supports actual quads with correct interpolation, which looks amazing compared to triangle interpolation.

Some fun outtakes from when I was implementing the large-scale, cascaded SDF clouds in Solar Ash. I'll eventually write up some stuff about how these work, probably.

#SolarAsh #rendering #gamedev

Before I pivoted to implementing opaque SDF clouds for #SolarAsh, we were considering using density clouds instead. The problem with those is that it gets harder to read the density gradient as you get closer to them, so I was playing around with having a solid isosurface that would appear around you.

This worked, but we ultimately decided that opaque clouds were more in line with the visual style of the rest of the game (and easier to optimize too).

#rendering

The last component was the specular response (we've just been talking about diffuse for the most part here).

We ended up going with a toon specular model that had been floating around on the forums based on a modification of Unreal's D_Blinn() because the artists were familiar with it.

It's not energy conserving and thus hard to control, so that's left to future research.

It's used sparingly across the whole game; the fresnel stands in for it in most places.

4/4

Here's some comparisons of changing the wrap and banding, and the manual I made for the artists on what the various fresnel/rim features did. The near fade feature was really important for getting those gradients I mentioned earlier.

Also worth noting that I had to pack all of those settings into 32-bits of space because we used Unreal's deferred renderer. The fresnel palette was pretty wonky -- not sure I'd do that again.

3/?

We ended up settling on a model that uses a wrapped diffuse calculation with stabilized bands: i.e. the banding calculation is applied to the raw NdotL and then plugged into the wrapped diffuse, rather than applying the banding at the end. This meant that the band locations wouldn't change as the wrap parameter changed.

Having two, opposing rim highlights was also important, but straightforward.

Here's a video of the ShaderToy that first captured this:
2/?

At an abstract level, the #SolarAsh shading model is fairly similar to other toon models, but there were some specific qualities we were trying to hit:

1. Gradients and lots of them
2. Hard light cuts

If these two seem at odds, you're not alone in thinking that. It took a healthy amount of back and forth with art to home in on the feature set that would let us hit those goals. 1/?