Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
August 21, 2019
arrowPress Releases

If you enjoy reading this site, you might also want to check out these UBM Tech sites:


Image-Based Ambient Lighting

by David Rosen on 04/20/10 05:29:00 am   Expert Blogs

2 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


Ambient light (or indirect light) is light that is not coming directly from a bright light source. For example, in an outdoor scene, the sun is a direct light, and the ambient light comes from the sky and the ground.

Here's a picture of the shadowed side of an Overgrowth character, showing how it's lit by scattered light from the sky and the ground:

Historically, ambient lighting has been represented by a uniform grey light that fills the entire scene, eliminating any pure black shadows.

This works to make the lighting less stark, but it doesn't fulfill any of the other functions of real ambient lighting: reacting to surface shapes and environmental coloring in order to add definition and bring the scene together.

Here's a comparison of uniform ambient lighting and Overgrowth ambient lighting.

I found that image-based lighting is the most intuitive and efficient way to achieve this effect. The method used in Overgrowth is based on cubemaps, which are groups of six images that combine to form the faces of a cube.

We start out with the cubemap containing the sky and distant terrain, and blur it to create a diffuse lighting cubemap. To blur the cubemap we just perform a cylindrical blur around each axis, as shown here:

This is very fast because the lighting cubemap can be quite small -- ours has faces of size 128*128. To prevent banding artifacts, we have to use a floating-point texture for the blurring, but afterwards it's stored in a DXT1 RGB texture for efficiency.

Now, to find the ambient light color for an object, we can just look up the cubemap in the direction of the surface normal. That's all there is to it! I really like this technique because it's fast, simple, and effective.

It's limited in that it only works well for uniform outdoor scenes, but since that is the most common setting in Overgrowth, it works well for us!

Follow us on the Wolfire Blog!

Facebook iconModDB iconSteam iconTwitter iconYouTube icon

Related Jobs

Deep Silver Volition
Deep Silver Volition — Champaign, Illinois, United States

Senior Animation Programmer
Wargaming Sydney
Wargaming Sydney — Sydney, New South Wales, Australia

UI Programmer
Wargaming Sydney
Wargaming Sydney — Broadway, New South Wales, Australia

Gameplay Programmer, C++ - Vehicle Physics
Wargaming Mobile
Wargaming Mobile — Berlin, Germany

Senior Game Designer

Loading Comments

loader image