Zero Leagues: Setting Up Shaders for Organic Scene
I have always been an artist for as long as I can remember but ended up attending Rochester Institute of Technology working towards a degree in programming for games. About a year into it, I decided to shift my focus onto art and effectively taught myself environment art using online resources while also completing my degree. Before finishing my degree, I also had the incredible honor of participating in the Denius-Sams Gaming Academy in Austin learning about leadership and studio culture from Warren Spector, Joshua Howard, and David Cohen.
Since Velan is my first full-time job in the industry, I haven’t yet had the opportunity to see a full game project pipeline from start to finish, but I am incredibly excited by the work I am doing here. In my personal time, I am participating in my own challenge of daily practice, either doing small projects or chipping away at larger environments.
The majority of my art education was done through mentorships and tutorials online. I think that in order to progress through plateaus in your artistic development you need to get mentorship, so for me, taking CGMA courses was simply a matter of helping myself progress. Specifically, I felt that I was lacking some skills of working with organics and I wanted to get a fast primer on industry workflows.
Both the show Lost and Stalenhag’s Electric State have an air of mystery; foreboding and intriguing, I wanted to capture that feeling as best I could. Neither served as a direct reference for any element but acted more like guides for the types of emotions that I feel looking at Stalenhag’s prints.
Working on Organics
The majority of the organics were started in ZBrush as a high poly sculpt and either baked down to a texture or retopologized in Maya. When it came to sculpting organics, I trended towards a slightly more stylized loo. I think form and shape can be exaggerated and details subdued slightly in order to get an easier read, especially for a visually busy scene like the one I was working on.
For capturing the textures, I used ZBrush’s render doc to pull a heightmap, colormap, and normal. For the normal map generation, I used toms_normalRGBMat as it produces better results. Those data textures were fed into Designer to do final details and author a full set of PBR textures to be imported into Unreal.
The trunks and cards were built and placed inside Maya; each tree started as a simple Curve which was then converted to a cylinder mesh using QuickPipes. Using splines allowed for quicker iteration on shapes; in the end, they remained as simple meshes with a tiling texture since the level of detail needed on them was minimal. For the cards, I found that bending them on multiple axes helped to hide the flatness of the mesh.
The scene itself was assembled inside Unreal; since I was using Unreal’s terrain system to build the world mesh I didn’t use Maya for much scene building. The terrain shader was a simple multi-material blend that ultimately proved to be a bit unwieldy to work with due to compile times.
One of the biggest challenges of the scene was authoring a moss shader. I wasn’t satisfied with the standard moss shader in Unreal and got inspired looking at some of the breakdowns from Uncharted 4 – specifically, a paper from Waylon Brinck and Andrew Maksimov which detailed both a high-level view and code snippets for how they achieve more interesting moss shading. While they are able to utilize all (or some) of their light sources in the calculations, Unreal can only utilize the directional light’s vector.
Another technical trick that I picked up from a friend at work was playing around with Unreal’s diffuse shading. It comes standard using lambert shading which doesn’t give you a very accurate light interaction. In its place, I enabled Gotanda shading which essentially utilizes the roughness to calculate how the surface is lit. Unreal comes with lots of shading models built into its shader code and it is fairly easy to turn them on or even make them an option within the material editor.
The final piece of the puzzle was building a flexible shader for painting moss and dirt onto the rock mesh in the scene. Initially, I started by experimenting with distance-field based blending and while the results were good, having SDFs on caused the desired lighting to be more difficult to achieve. Below is a quick example of the effects you can achieve as well as the material graph for how to get the mask and adjust the vertex normals to remove the seams.
Ultimately, the rock shader turned out to be a simple blend between uniquely baked textures, tiling world-space textures, and moss and dirt based on vertex color.
The submarine was simple hard-surface sub-d modeling. It utilized a fair amount of floating or non-welded geometry. The low poly ended with three unique texture sets in order to keep a consistent texel density across the entire mesh. It was then brought into Painter to be baked and textured.
As for cables, I knew I needed flexibility in them since they needed to sit realistically in the environment but also act as very explicit leading lines to the subject. Based on that, I utilized a spline mesh blueprint that I built for a previous environment – it simply duplicates a mesh along the spline a given number of times. For this project, the splines worked fine because they were mostly sitting on the ground level and going in a straight-ish line. Unfortunately, Unreal’s splines have some issues with wrapping around themselves or making extreme turns that cause them to implode.
The scene originally started in Unreal 4.18 so many of the current changes to physical lighting weren’t available. After the physical lighting started coming online I based my scene on the rule of sunny 16 to determine a baseline for values for my sun and sky.
I generally work in passes of lighting, getting my sky, sun, shadows & fog down before adding the in-world lights and then finally fake lights to highlight or push elements of the scene. I knew I also needed to push the fog color in order to sell the depth of the scene; to that end, I used a simple multi-colored fog post-process to gain more explicit control over my colors.
I made use of fill lights to flood areas with value or color to help create a more pleasing composition. Fill lights are just large emissive planes that act as soft light emitters. Generally, now rect lights could replace the planes but this scene was finalized prior to the rect lights being added in.
When finalizing your lighting, it is really important to do some quick blur or squint tests of your scene. By blurring the image you can see where your hotspots of color and value are. I’ll even go further and break my image into color and luminosity to see what is really popping. Another trick that I used was simply bending the scene to fit a composition and create some implicit and explicit leading lines to further reinforce the focal point. In the image below, you can see examples of the different testings all done within Photoshop.
The biggest challenge that I struggled with while building this scene had nothing to do with the production itself. During my work, I suffered from a mental block that David Bayles and Ted Orland refer to as annihilation in their book Art & Fear. Artists tend to associate themselves with their work very strongly. Without a proper perspective, it can lead you to corrosive outlooks. To paraphrase from the book, if you associate yourself with your own art to the point that it is a part of your very being, when you fail at your artwork it is almost like you are failing at being you. And when failure pressures you to stop doing work at all it is almost like you cease to exist, you annihilate yourself.
Part of my learning to overcome this downward spiral was helped by understanding the vicious circle, but also by changing my approach to artwork – I started to treat it more as continuous practice and not something that has an endpoint which can be failed or succeeded. To that end, I began doing daily practice, partly as a discipline but also to help hone my ability to turn on my creative brain and not rely on inspiration.
I believe CGMA’s course Vegetation and Plants for Games as a whole was an excellent primer on organic sculpting and foliage workflows. Jeremy Huxley has a great sense of how to approach the topics for beginners and give them the feedback they need to hear in order to progress.
Besides overcoming a difficult mental hurdle, I got a better handle on the hands-on portion of sculpting and how to properly take an organic asset from start to finish and get good results. My next step as an artist is to continue practicing daily and pushing towards finishing new environment pieces.