Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)

Enlighten SDK 3.10 Documentation
Results will update as you type.
  • Welcome to Enlighten
  • How Enlighten works
  • Artist workflow
  • Install Enlighten
  • Libraries
  • Implementation guide
  • Technical reference
  • Advanced techniques
  • Tools
  • Enlighten Mobile
  • White papers
    • Understanding Global Illumination
    • Enlighten Design Principles
  • Third-party licences
  • Release notes
    Calendars

You‘re viewing this with anonymous access, so some content might be blocked.
/
Understanding Global Illumination

    This is the documentation for Enlighten.

    Understanding Global Illumination

    Nov 21, 2019


    Overview

    Enlighten creates 'indirect' lighting effects. To get the most from Enlighten, it's a good idea to understand a few key concepts:

    • The terms 'Global Illumination' and 'Radiosity'.
    • The difference between direct and indirect light.
    • The difference between diffuse and specular reflection.
    • The difference between static and dynamic geometry.

    This topic provides a gentle introduction to these concepts.

    Global illumination

    Light's interaction with matter is complicated. To simulate it in realtime, you must make approximations. A helpful simplification is to assume that light striking a surface can do one of two things:

    • The light may be absorbed and removed from the calculation.
    • The light may be re-emitted back into the world.

    The direction of re-emission depends on the direction of the incoming light, and also on the properties of the surface. Often, the light can be bounced back in any direction, and will then strike another surface, where another portion of it may be bounced. This bouncing process continues until all light has been fully absorbed. (Some may have "escaped" out into the surrounding environment.)

    When you compute how light bounces around a world, you are simulating 'global illumination'. This is a catch-all term for all aspects of light interaction, including caustics, mirrors, glossy surfaces and radiosity.

    Diffuse and specular reflection

    Unfortunately, realtime GI is beyond today's hardware. To obtain realtime effects, you must make further approximations by breaking the problem into two pieces.

    The essential separation is between 'specular' and 'diffuse' bouncing of the incident light. Surfaces that mostly reflect light (that is, act like a mirror) appear shiny and we say they are highly specular. Surfaces that absorb and re-emit light appear matte and look the same regardless of what angle you look at them from. This is because they re-emit the light away from them in all directions, whereas specular surfaces tend to reflect light in one main direction. Mostly matte surfaces, such as chalk or paper, are said to be highly diffuse.

    In global illumination specular and diffuse bounces are combined into a single function known as the bidirectional reflectance distribution function, or BRDF. In Enlighten we maintain a separation between these two processes and compute them using different approaches. We allow the diffuse light to bounce around off of all surfaces. We call this process of bouncing diffuse light 'radiosity', and Enlighten updates this in real time.

    Direct and indirect illumination

    Enlighten takes as input a general description of the direct lighting in a scene and computes textures and light probes describing the indirect lighting environment. The Enlighten output textures store the colour and intensity of the indirect lighting, as well a representation of how the colour and intensity change depending on direction. This information can be used in your shaders to compute indirect specular reflections and light normal mapped surfaces. The light probes record similar information and allow you to relight entire objects at any point in space.

    The separation of lighting into direct and indirect lighting is as essential to Enlighten as the split between specular and diffuse lighting and should be kept in mind at all times. In particular, direct lights can be used to cast shadows on dynamic objects, whereas indirect light computed by Enlighten will only cast indirect soft shadows off the static geometry.

    Static and dynamic objects

    The final key concept behind Enlighten is the separation of the world into static geometry and dynamic objects. This is necessary because Enlighten requires static geometry to be precomputed to generate data for use at runtime. This precompute only involves geometry, not surface properties, so your world can be re-lit, re-textured and re-coloured dynamically.

    As the precompute is only applied to static geometry, this is the only part of the world that fully contributes to the radiosity. Dynamic objects respond to the local radiosity conditions and are lit in a consistent manner, but do not affect the indirect lighting. This means that Enlighten only casts indirect soft shadows off the static geometry.

    , multiple selections available,
    {"serverDuration": 16, "requestCorrelationId": "cc4b949bbb0f43b1be788e87eff22c84"}