Using Physically Correct Brightness in Cycles

a Blender Case Study

In order to better understand the lighting system in the Cycles render engine, I've decided to dive into understanding how Cycles uses physically based units to accurately measure the intensity of emissive materials. On the surface, the values used by Cycles seem somewhat arbitrary. But digging deeper I've found that once again, Cycles has a facet of accuracy quite underestimated by the common user.

So let's dig in.

Converting to units of Lux

cycles-lamp-emission

To start off, according to the documentation, Sun and Mesh lamp brightness in Cycles is measured in units of Irradiance (We'll ignore the other lamp types for sake of simplicity because they are measured using another system), otherwise known as the SI unit of Watt per Square Meter (W/m2) which is used in the fields of physics and radiometry to measure the intensity of light sources by calculating the power received by a surface per unit area. But, as you might have guessed, this isn't a very common unit, so for the sake of finding resources for lighting with correct brightnesses, these values need to be converted to the slightly more commonly known unit of Lux, otherwise known as lumens per square meter (lumen/m2). You can convert from W/m2 to Lux units using the following conversion factor:

1.000 W/m2=683.0 lumen/m2 (Lux) at the wavelength of 555.0 nm

Something also to be noted: This conversion factor is a rough estimate, because of how W/m2 is calculated, it doesn't convert simply to Lux while still accounting for the various wavelengths of light sources. But since the human eye can only see a relatively short range of wavelengths in the electromagnetic spectrum, this isn't that much of an issue and can be overlooked in our calculations by simply using the most common wavelength in the visual spectrum of 555.0 nm.

spectrum-visible-light

Now that we know how to convert from W/m2 to Lux, we can easily convert whatever Lux values we find to W/m2 by flipping the conversion factor:

1.000 lumen/m2 (Lux)=1/683.0 W/m2=0.001464 W/m2

Now we can multiply 0.001464 by whatever Lux intensity we find, and use that value to input into our Cycles lamp emission strength.

Inputting Values into Cycles

Phew! That was some heavy stuff. But now using these units, proper intensities can finally be found for our Cycles lamps. Though as it turns out, we aren't done yet, since finding sources for the Lux intensities of common light sources can be slightly difficult. To save time, I've compiled a shortlist of some common values of various environments. But if you need a specific value for a certain light bulb type or certain environment, Google is your friend! Also, something to notice, these are the total intensities for an environment (presumably measured with a light meter), so if you are using multiple light sources, your strengths should add up to a total of whatever values are listed below.

Light Intensity in W/m2

intensities-of-light-sources

One more thing! Take note of the possibility of small inaccuracies in these values. Since the Lux values are measured with a light meter, the lit surfaces are being measured (usually to measure light for workspace requirements), rather than the source itself. As such, the value of something like the sun is somewhat inaccurate and in reality should be a slightly higher than listed for total accuracy.

Creating an Accurate Sun intensity Model

As I said, the values given aren't totally accurate due to the way they are measured. However, we can calculate an even more accurate model of the sun by using some slightly more complex methods that I learned from this post on the Blender subreddit. So I'll be borrowing stuntduddude's math here. To start, the earth receives 1367 W/m2 of light from the sun on average. The intensity can change based upon the distance from the earth to the sun, but for the sake of rendering, we don't need to go that specific.

Now, it may seem like we're done. But the problem with the above value is that it does not calculate in the limited range of wavelengths in the visual spectrum, or subtract the light that is absorbed and scattered by the earth's atmosphere before hitting the ground. (unless that is, you're using a physically accurate earth and atmosphere inside Blender.) To account for this, we need to do some further calculations.

earth-atmosphere-sunlight

Of the 1376 W/m2 hitting the earth, only 1120 (82%) makes it to the ground as either direct or indirect light. To further break it down, that's 1050 (77%) of direct light and 70 (5%) of indirect light. Now we can use these values and measure how much of that light is within the visual spectrum. According to Wikipedia, these are the values for sunlight:

52-55% infrared
42-43% visible light
3-5% ultraviolet

Since only about 42% is the visual spectrum, we can multiply our direct and indirect light values by 0.42 to give us our final values. Which come out to as follows:

Direct Light: 441 W/m2
Indirect Light: 29 W/m2

And now we have the proper intensity for the sun. We can use the direct light value for our sun lamp, and the indirect light value as our world background strength that will give us the effect of the scattered light in the blue sky.

Correcting Exposure using Filmic

As you might have noticed, when using some of these values for your Cycles lights everything becomes either very dark or blown out. To amend this, we need to switch to the new (since Blender 2.79) Filmic Color Management. This will allow us to work in a far more dynamic color space. Which, in turn, will allow us to change the exposure of a scene similar to how a physical camera works. We can use this to bring up or down the exposure to more reasonable levels while still maintaining physically accurate light intensity. To adjust the exposure, use the exposure slider under Color Management in the Scene tab of the properties panel.

Default color lut

Default Color Lut

Filmic color lut

Filmic Color Lut

False color lut

False Color Lut

We can further aid these adjustments by using the False Color look located under the look section of Color Management. This will give a visual representation of the exposure of the image by highlighting the bright areas in bright red and yellow and the darker areas in green, blue, and purple. We can then see if we don't have any overly light or dark areas by making sure only small amounts of red and purple are present.

Using Proper Color Temperature

To wrap op this study of physically accurate light, I want to cover how to use proper color for lighting as well. Luckily, this process is much simpler than with intensity, since Blender has the tools we need built right in.

Cycles color temperature

A few years ago, Thomas Dinges (known as dingto in the commit logs) implemented a blackbody node for using Kelvin color temperature, and a wavelength node for inputting wavelengths to represent color.

Cycles blackbody wavelength nodes

For our uses, we can use the blackbody node to define the color of our light. The blackbody node uses Kelvin to output a color close to the color of light emitted at a certain temperature. This way, we can properly find the color of a light simply by finding the temperature of the emitter. For manmade lights, most manufacturers list the kelvin color temperature either on their website or on the bulb documentation included with the product. For natural light, professional light/color meters can measure the exact kelvin color temperature of an emitter.

1850 KCandle flame, sunset/sunrise
2400 KStandard incandescent lamps
3000 KWarm fluorescent and LED lamps
3200 KStudio lamps, floods
4150 KMoonlight
5000 KHorizon daylight, Tubular fluorescent
5500 - 6000 KVertical daylight
6500 KDaylight, overcast
15,000 - 27,000 KClear blue sky

However, unless you're creating lights for a specific use case some approximated values can work perfectly well to help save you a couple thousand dollars on buying a decent color meter. So for quick recreation of lights, you can use the above chart as a guide for inputting values into the blackbody node.

Further Research

Before we conclude, I wanted to list a few of the great sources I used to compile this study that could be useful if you want to dig deeper into this subject.

Great, technical post on finding the correct value for sunlamps in Cycles:
https://www.reddit.com/r/blender/comments/4i3j2c/realworld_lighting_values_for_cycles_lights/

One of the best article on Filmic color management out there:
http://blog.thepixelary.com/post/160247878572/filmic-colors-in-blender-and-light-linearity

The Blender Docs, since the revamp of the docs, they've become a treasure trove of little-known info.
docs.blender.org/manual/en/dev/render/cycles/nodes/types/shaders/emission.html

If all else fails, Wikipedia is still one of the most thorough informational sources you can find.
www.wikipedia.org

That concludes this study in light intensity. I hope you enjoyed this rabbit trail into the measurement of light. And who knows? You might even of learned something useful for rendering in this jumble of questionably useful knowledge! If you have any feedback, be sure to shoot a comment down below.

P.S. Big thanks to Jeffrey Hepburn as well as my Physics teacher for helping on some parts of this post!

Author
Johnson Martin
Johnson Martin

Want to stay up to date with our latest articles? You can enter your name and email address to be notified whenever we have something to share :)