Inexpensive Indoor Global Illumination in Alien Isolation

I just loaded up Alien Isolation recently to check out some of their first person animations, but I was struck with how fast and nice their GI solution is. I don’t think it’s particularly detailed, but being fast and dynamic, it definitely looks better than static lighting (especially in a game where lighting changes frequently).

Does anyone know what they’re doing and if a similar solution would be possible in UE4? I know most of the fully dynamic solutions being mentioned in some of the other threads are targeted more at large outdoor scenes, but I haven’t seen much dealing with point and spot lights.

Here’s a video I recorded of a couple scenes where the dramatic lighting shows their broad-scale GI in action:
http://www.gamersyde.com/thqstream_alien_isolation_global_illumination_lighting_fixed_levels_-rwQ3TihNqRz76GLA_en.html

Cheers!

Are you sure that they used an actual GI solution? I haven’t played the game, but based on those screencaptures I’m not convinced they aren’t just using strategically placed bounce lights to fake the effect.

Especially for those initial moving spotlights a great trick is to do a trace from the light location and placing a dim unshadowed light at the hit location. Vary the intensity and color based on the distance from the light and the surface material and you have pretty decent fake bounce lighting.

Yeah, I was doing some more poking around and found this article on AMD’s website. They’re using a kind of light probe system that measures the incoming light and then reflects it back into the environment, which fits with my original assumption that it was a fairly generalized system.

But even so, the generalized light bounces in enclosed indoor spaces like that work pretty darn well even if they’re not able to handle points of contact (plus it runs smooth as butter and is a nice example of something that a game has actually shipped with).

I’m still interested if some kind of generalized system like this based off light probes (or reflection captures?) could be implemented.

Left has no radiosity/GI, while the right has it enabled.

https://community.amd.com/servlet/JiveServlet/showImage/38-1134-2064/ai_radiosity.png

https://community.amd.com/servlet/JiveServlet/showImage/38-1134-2062/ai_radiosity2.png

Looks good, but it’s a very specific implementation for a very specific style. Most of the game is situated in dark corridors where you don’t really see a lot (including the frigging alien incidentally…) It did have a fairly big team behind it too.

Looking at the two images I can’t fully understand what’s happening, but the one on the left looks like world-space generated Texture Coordinates. I wonder if perhaps they’re doing a low-density Volume Texture and sampling from that, possibly interping between samples or something. It wouldn’t be very high quality but could potentially be quite fast depending on the density of the VT, and for Alien which takes place in dark environments (where you won’t see a lot of the artefacts) it’s probably ideal for them.

EDIT:
Okay so I was kind of close, they’re generating CubeMaps on the fly for radiosity and sampling from those, and using DirectCompute (aka, compute shaders) to do it and basically create ‘textures’ on the fly. They probably spread that workload out over the course of several frames too, so you don’t get huge hitches. That’s definitely a very specific approach, and not something you could do on any platform other than high-end PC realistically (check the performance stats at the bottom of the page).

Very cool, but very specific to their implementation I think. I bet the Console lighting is significantly worse.

A GTX 750 ti can run Alien Isolation at 1080p with a minimum of 60 FPS, might be one of the most optimized PC games in a long time, and ran on last and current gen consoles. The PS3 version does seem to be missing some of the indirect lighting, but there isn’t a huge difference.

Ok, yeah seen this before. Here’s a neat demo you can run right in your browser with a not dissimilar effect: http://codeflow.org/entries/2012/aug/25/webgl-deferred-irradiance-volumes/

They got it to be surprisingly effective for their game, though you can clearly see lightleak everywhere, which is bad with diffuse and kills with highly shiny specular materials. C’mon GTAV, where’ your screenspace reflections at least! Looking at a rainy street to see all the light shine right through the cars, eeeurgh. Regardless, the problem with this, and the above, is scalability. It works really well considering what it’s doing for small, tight corridor scenes. But as soon as you trying scaling it up to anything larger and your performance goes down exponentially, a long with a lot of other problems.

Ooh, the deferred irradiance volumes are cool, but it’s too bad the performance suffers so much with scale. I’m at a point, though, where I’d like something, anything that could give some kind of GI (whether accurate or not) to indoor scenes with dynamic lights.

Right now if you want to have lights switch on and off or have a flashlight/spotlight/point light controlled by the player, you either bake the scene with GI permanently in place, which looks awful when the lights are turned off, or you have the scene either be pitch black or have a muddy ambient color wash over everything regardless of the actual lights in the scene.

Basically if you’re not making an outdoor scene with a big directional sun, you’re out of luck at the moment unless everything is going to be permanently baked and unchangeable :\

I still consider 750Ti at least moderate > High spec, though I agree it does run very well. I’m willing to bet they had to make several compromises in other areas though to hit those 60 frames. I wonder if their renderer would stand up well in a brightly lit environment instead.

I still believe it’s a very targeted solution, and works fine for the game it’s designed for. I don’t think it would scale very well at all. Problem with GI is there doesn’t seem to be a one-size-fits-all solution.