Rendering Tech Tricks

For the full presentation slides, click the picture at the bottom of this post!  The Brisbane Unity Developers is a great group to be a part of – check them out by clicking here to view their MeetUp Page.

 

I recently did a short presentation for the Brisbane Unity Developers group, on the world of rendering and general technological debauchery.  This is built off the core fact that everything you render is subject to some sort of compromise, such as usability, speed, requirements or scalability.  Another big cost to pay is the man-hours dedicated to getting up to speed in the first place; something that rendering tech has a massive problem with – why would you ever dedicate a team member to it when you could have them scripting your mechanics or building your art assets?  The goal of the talk was to show people that rendering isn’t mystical black art, nor some kind of witchcraft, and that decent results can be found from quite modest investments in time and effort.

ViewFromCubemap

The Shader Graph Editor from Unity, and the previous Strumpy’s, SF, and Amplify, as well as the Unreal and other solutions are the key to this.  By translating the usual operations (add divide, dot product) into nodes that plug into each other, it means that beginners don’t have to worry about using the wrong types, names, or trying to do an operation of incompatible value types.

Gamma Nodes

This is Shader Forge, but they all work pretty much the same way, using the same nodes, with basically the same outputs.

One simple application is in coloring your FX.  You’ll come across many different types.  Fire and flames, liquids like water, electricity and glowing energy beams.  I go over multiple methods to achieve these and more; colour extinction, blackbody radiation, gamma coloring, and some alternative UV usage.

2 mystery blackbody

Another point of interest is the distortion apparent in most games.  Since realtime applications (almost?) always use single point projection; projecting rays from one point through the near plane out to the far plane, the only time where no distortion is apparent is when the player’s face is in exactly the right position.

If the player moves their head back a bit, or increases the field of view of the game camera, it’s common to see horrible stretching around the edges of the screen, while the center gets much smaller.  This is illustrated in the image below – check out the shape of the sun!

For reference, the vertical field of view is 90 degrees, so if you expand the bad image (left one) and then move your eyeball one (image height) away from the screen directly in front of it, the perspective will be right and the sun will look circular again.  In every other circumstance, the image on the right looks better.

Also note that since the camera is rotated 5 degrees left, there’s some new mountains clipping into existence in the background!  That’s why you have a good distance fog setup, to hide that when it happens so players don’t see things popping in when they just turn the camera or move.  On the topic of fog, remember that it doesn’t just change the colour of objects based on how far away they are, but it can also blur them.  The most obvious example is light getting scattered underwater, and the most simple, easiest, quickest way of dealing with it is to just use the depth of field effect that Unity has.

water_room

I sunk the Render Pipeline scene….Depth of Field in the Post Processing Stack does a good job of blurring distant objects, runs fairly fast, and you don’t even have to write any new code.

For the full presentation slides, click the picture below.  The Brisbane Unity Developers is a great group to be a part of – check them out by clicking here to view their MeetUp Page.
Unity Slides Preview Pic

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s