Kevin Andersen

Technical Lighting Artist. Or maybe VFX and Material Artist. Also Optimization and some other stuff. Changes from project to project, really.


— PROJECT

Creed: Rise To Glory

— PLATFORM

Windows PC, PS4 (PSVR)

— ROLE

Lead Technical Artist

— DATE

2018

I did the lighting for only a few of the environments in Creed: RTG, and acted more as a tech-art consult for the others, i.e. fixing dozens of lighting, material, texture, and reflection artifacts for the environment artists. I created a material effect for the bruising feature that reddens and swells opponents' skin where they are hit. I also came up with optimization solutions like shadow proxies for all of the characters, ensuring dynamic shadows would not be too expensive on low-spec PCs and PS4. This project was also an early test bed for two special features that would later be refined and re-used in Westworld Awakening, the lightwrap skin shader and specular occlusion meshes. You can see the skin shader at work on the non-crowd characters in-game: the fighters, the coaches, the ref, and the announcer.


All shots are in Unreal Engine 4, as they appear in the game.

Lightwrap SSS Shader

Survios only makes VR games and VR games look better in Unreal’s forward renderer. It provides MSAA and per-object optimizations that the deferred renderer precludes by its nature. Unfortunately, not everything in Unreal has been fixed to work in forward, including all of Unreal’s SSS (sub-surface scattering) shading models. Just like with the Sprint Vector toon shader, I made a prototype light-wrap shader using the Unreal material editor’s node graph. Since you can’t make an actual shading model in the material editor, my prototype only supported one directional light (‘atmospheric light vector’ and ‘atmospheric light color’ nodes). I then showed the material graph to our rendering engineer. He and I worked together getting that logic into an actual shading model that could be used in the forward renderer.

The best part about the lightwrap logic is that it is exceptionally cheap for how good it looks. Only 8 more instructions than the basic Unreal surface shader.


After refining the shader logic and lots of tuning, the shading model was added to our custom UE4 branch and is now used in both Creed: RTG and Westworld Awakening.

The shading model in-game. At least one dynamic light is required for the effect to show up well, but thats fine since characters in this game always have a spotlight on them.

Specular Occluder Proxies

This environment does not use a planar reflection on its glossy hardwood floor. Instead, I placed very simple, cheap meshes beneath tall objects that would mask out the specular response on the floor. I had an engineer expose the custom depth buffer to opaque materials so I could read from it in the floor material, then sampled it multiple times to blur it into a convincing specular mask. I only wanted samples that would be along the floor, perpendicular to the player’s view, but in VR you can tilt your head, so a simple screen-space offset won’t work. I used the normalized cross product of view vector and world up, transformed into screen space, to offset the samples and blur the mask only along the ground plane. The effect is subtle here, but grounding objects is extremely important to immersion in VR.

Bruising Effect

The opponent skin material also had to keep track of damage to 19 different areas on the characters' bodies. The actual result was a simple reddening of the diffuse and a transform of the vertices along their own normals, but it sells the beating really well, as you can see in this test animation.

Keeping track of 19 different things in a material is messy business if you do not exercise proper discipline. Fellow tech artists: PLEASE take the time to organize your material graphs so your colleagues don’t have to sift through some top-ramen looking nonsense just to understand what you did in there. Here is the node layout for the for the bruising effect’s logic.