Hey, I'm Simon and I'm making a game!! :)
Support me: Wishlist & Play Demo on Steam

A basic outdoor light setup would contain a reddish sun and a blueish ambient light to fake some global illumination of the sky. But in AC3 i noticed a third source of light: bouncing light. It’s just the sun light coming back from the ground.

I don’t know how they did it, but i would guess they just created a third light on the opposite site of the sun & below the ground. Because you don’t want to have the ground shadows affected by this light.
I tried this in a small render and i think the third light gives a very nice contrast and more volume. I used the same color as the sun had, but with less intensity but more saturation instead.

Left: Sun + blue ambient light source. Right: Sun + Ambient + “Bounce” light source.

I tried to find out if UDK has something like this in their light settings so you wouldn’t need to create a 3rd light source but i couldn’t find it on the first look. Feel free to drop a comment if you know how this is done on modern engines.

Update 1
Thanks to gamepat & Félix we have some links to look at! Visit the comment section (also for their text) or check the links directly:

Crytek Global Illumination Paper
UDK GI Movie
Crytek GI Movie
Blender GI Movie
Mirrors Edge Light Presentation

16 thoughts on “Assassins Creed 3 – Bouncing Light

  1. Félix Arsenault

    Really looks faked with a third light. Usually, light will bounce on an object using the color of what it bounced from. So with the color of the ground, the color bouncing should be brown’ish/green’ish.

    UDK, Cryengine, frostbite, unity and all recent engine have GI (Even Naughty Dog engine looks like it has GI, especially in Last Of Us), and it works great, not like what’s in AC. Frostbite being the best exemple IMO (Last video Gamepat linked).

    There is a nice exemple too being made in Blender : http://www.youtube.com/watch?v=xsV9Ln_TLa8

    And there is the Mirror’s Edge trick :
    http://fr.slideshare.net/DICEStudio/henrikgdc09-compat

    Reply
    1. Simon

      Thank you! I added you links & name to the post :) The ME presentation is awesome. Would love to hear what they said during showing this :)

      Reply
    2. Doug

      We have some bounced lighting from the flashlights in The Last of Us but our overall lighting is achieved through lightbaking and light probes that sample values at different locations and interpolate between them to apply color values to things in the environment. A full on runtime GI would most likely not be doable on the current hardware this game runs on.

      Having a third light would not really be faking it because that light would have to be a dynamic process that would have to factor all sorts of color information. My guess (albeit still costly to store) would be light bakes with the data in a lookup table and interpolating between those values based on different factors like time of day and maybe if it was starting to rain with more cloud cover. All very stateful though. I feel like I’m being intrusive with my reply so I apologize for that :P

      Reply
    3. Simon

      Hi Doug, first of all: you’re totally NOT intrusive! For me (and hopefully other readers too) it’s great when people comment here and even more great when they know something and share their knowledge!

      So with lookup table you mean a small texture with some color values in (bright yellow, dark blue depending on day time) and every surface pointing away from the sun would be tinted with it?

      Reply
    4. Doug

      Well the LUT would contain color information but it wouldn’t be in the form of a texture. Most likely just a bunch of numerical data that could be read as color information.I know that sounds like a texture still but i think its not as expensive as a texture on memory. The sun would be positioned in maybe three different positions. Early morning. Midday. And late evening. Then the lighting is all baked into 3 different maps and then all three of those maps then have their data stored in one single LUT. Then you would interpolate between the values based on the time of day is my guess. Of course then you might have the night cycles in there too. I’m only speculating here though.

      Reply
    5. Simon

      Sounds logical :) Remembers me on a tech of color adjustement where you make a screenshot, change the colors how you like in Photoshop and then the game stores the difference somehow and is able to blend the different post process steps.

      It’s not a problem to speculate, that’s what i’m doing here all the time. Until a developer of the specific project writes some comments and tells me how it “really” works. This is the best which can happen but unfortunately it happens not very often. So i’m very happy that you as a next gen dev share your knowledge with us :)

      Reply
  2. Mr. Cash

    Yep that’s a cool and often used trick I guess. I also use a “bottom light” in 3dsMax when presenting assets. Its a quit subtile one, but I only use it to avoid 100% black shadows when working with directional lights.
    This gives me the possibility to use very intensive shadows without loosing texture- or shape-information of my mesh.

    Anyway, sweet you figured out that it’s used in games too.

    Cheers

    Reply
    1. Simon

      Oh i didn’t say that they did it that way. I have no idea, maybe they’ve some other fancy tech. But for me it looked like that and even if not, it’s a nice “fake” for engines without any GI calculation.

      Reply
    1. Simon Post author

      That PDF is just crazy! Have to read it in more detail later, but it’s so full of awesome tech details :) Thank you very much! And thank you also for liking my blog :)

      Reply

Leave a Reply to Doug Cancel reply

Your email address will not be published. Required fields are marked *