Kevin Andersen

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


— PROJECT

Raw Data

— PLATFORM

Windows PC, PS4 (PSVR)

— ROLE

Lead Technical Artist

— DATE

2016

My first shipped game. I had been working with Survios on the prototype, (inexplicably named ‘Bullettime: Apex’) since early 2015, as the nascent company was preparing to wow investors for its second round of funding. I was originally hired as a 3D modeler and texture artist, but soon took on more roles since the art team was minuscule and I was the most knowledgeable about Unreal Engine specifically. I made a few of the mesh assets and some of the effects that are in the final product, but the most significant contribution I made was in lighting, material effects, and optimization. I was responsible for lighting every environment in the game, and keeping the GPU times under vsync for both mid-spec PC and the PS4.

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

Raw Data’s main hub is the ‘Show Room.’ It was a huge undertaking for a first-time lighter like me. When the player first enters, the entire place was to be powered-off, dark, and with the window closed. The player was then to turn on the power, which also opens the window. Given our performance constraints and reliance on baked lighting, this took a lot of planning and compromise to get it to work in-game. An additional lighting scenario, with the morning sun gleaming in through the window, was added for players who beat the game. I’ve never learned more on one project than I did working on this one environment.


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

The Title Screen Earth

When the player starts the game, the title screen is a stage-like platform out in space with a view of the entire world. I made all the materials myself, with textures courtesy of NASA’s online archive. The globe turns slowly and the player can see the cities light up on the night side. I used cheap material logic to fake SSS on the oceans and clouds.

The City View

The vista outside the window is one of the few pieces of environment art I made. I made a bunch of building models and scattered them in-engine using the foliage tool, to minimize the draw-call load of the scene. Then I made several larger hero buildings that would get their own individual placement. A fog plane, an emissive ground plane, height fog, and glowing billboards helped give the city more atmosphere, while distant particle systems spawning endless car sprites provided the traffic movement that makes it feel more alive. The window is an unlit material with a cube-map capture of the room on it to fake the reflection.

The Rain

The rain effect was a multi-part challenge. There is a basic falling-rain effect over the player that follows them around, and small emitters on every light for the rain-near-a-light effect. The splashes had to be a large number of individually placed emitters for three reasons: First, they needed to LOD. Second, they needed to cull. Third, they had to be different sizes to fit on top of different things. The running-water effect on all the surfaces was created by making a material instance of everything in the level and changing the shading model to clear-coat. I turned on a new (at the time) feature in Unreal that allows you to have a separate normal map for the second specular calculation on a clear-coat material. I then fed a constantly scrolling 3D noise (‘fast gradient’, the cheapest possible) into the hackiest vector math you’ve ever seen to make the additional normal map look like flowing water. It worked fairly well and was still just cheap enough to work on PS4.

The Data Core

Usually, this many overlapping translucencies, with all of the Data Core’s other functionality, eating up pixel instructions would be forbidden, especially by myself. But the majority of this effect is done with masked materials with a noise texture. The rising rings at the bottom are being animated in the vertex shader, they are not an emitter.