Environment & image-based lighting
Light your whole 3D scene with a single sky or HDRI — soft fill from every direction, plus the reflections that sell shiny surfaces.
Most great-looking renders start with the environment. Instead of placing dozens of lights, you wrap the scene in an image (or a procedural sky) and let it do the lighting for you. Bright parts of that image push light into the scene; the whole image shows up in reflections on metal, glass, and glossy materials.
This is often called image-based lighting (IBL). It pairs beautifully with a few light.dynamic lights for accents.
What the environment does
The environment contributes two things at once:
Ambient light — soft illumination arriving from all directions. A bright sky lifts the tops of objects; a warm ground bounces colour back up underneath. This is what stops shadowed areas from going dead black.
Reflections — the environment image is what you see mirrored in shiny surfaces. A polished sphere reflects the whole room; a rough surface reflects a blurred, smeared version of it.
Rougher materials get blurrier reflections automatically, so a brushed-metal look and a chrome look both read correctly from the same environment. Material response is set per surface — see Materials.
A clean studio HDRI gives you flattering, predictable lighting in seconds. Outdoor HDRIs bring strong directional sun plus colourful sky fill. Swapping the environment is one of the fastest ways to change the entire mood of a render.
Using an HDRI or a procedural sky
Add an environment to your scene with the environment.ibl node. You can feed it an HDRI image (load one with image.load) or use the built-in procedural sky for a quick gradient that you can tint and brighten.
The environment also typically appears as the backdrop behind your objects, so the sky you light with is the sky you see. If you'd rather composite over your own background, you can show the lighting without drawing the sky — see the node's controls.
| Parameter | Type | Default |
|---|---|---|
mode | String | "Image" |
channels | OneOf([Field, FieldOf(Color)]) | — |
color | Color | rgba(0.15, 0.15, 0.20, 1.00) |
sun_elevation | Number | 45 |
sun_azimuth | Number | 180 |
air | Number | 1 |
dust | Number | 1 |
ozone | Number | 1 |
altitude | Number | 0 |
ground_albedo | Number | 0.300 |
rotation | Number | 0 |
intensity | Number | 1 |
tint | Color | rgba(1.00, 1.00, 1.00, 1.00) |
visible_in_background | Boolean | true |
Rotation, intensity, and tint
Three controls do most of the day-to-day work:
Rotation — spin the environment around the scene to aim the brightest part (the sun, a window) where you want highlights and shadows to fall. This also rotates what shows up in reflections.
Intensity — scale how much light the environment throws. Turn it down to let your accent lights dominate, or up for a bright, airy look.
Tint — push the overall colour of the lighting warm or cool without editing the source image.
Rotation is your key-light direction. Before adding any extra lights, rotate the environment until the shading on your subject already looks good — then add lights only for the accents it's missing.
Lighting stays physically sane
DNA keeps all lighting math in a single linear working space and only converts to your display look at the very end, so environment light, light.dynamic lights, and materials all add up correctly. Bright skies can push values well above white (that's what gives you punchy highlights and bloom); the final film-style look is applied by the renderer's tone mapping, which you set on the canvas. See Colour management.
Reflections come from the environment and your scene's lights, not from full ray-traced bounces between objects. For mirror-accurate object-to-object reflections you'd reach for screen-space effects (see Post effects). Third-party path-traced renderers are a planned future extension point; today DNA ships its built-in GPU renderer only.