I’m trying to set up a background for a scene. The idea is to render a local, Sun-like star, a bunch of background stars, and a nearby planet. To get the planetary scale right, I’ve set this up in real units (km) with a 1000:1 unit ratio.
Then I’ll setup the main scene with more human-scale units and use the background render as an HDRI for the main scene. This allows me to use physically-accurate scales for both astronomical objects and local objects without precision issues. Yay.
Right now, I’m working on procedural creation of the background. I want to render the local sun as accurately as possible, so I looked up the star on Wikipedia and did some math. Given the fictional planet’s distance, the sun would subtend 0.3695° from our perspective (about 69% of the Sun’s apparent size on Earth) and provide 325 W/m² of illumination in the local space (about 24% of what Earth gets above the atmosphere).
A couple shader nodes later and I have a 0.37° spot on the background that I can rotate around the scene depending on the time of year I need. Thanks to the Blackbody node, it’s even the right color. However, getting the Strength right is non-trivial.
If the shader was on an object, the Strength field would tell us the brightness, in W/m², of the object’s surface. So a 1m x 1m square with a Strength of 1 would emit 1 Watt of visible light. A 20m x 5m square (100m²) with a Strength of 4.5 would emit 450 Watts of visible light. Etc.
But the world background doesn’t have an actual size, so I can’t directly compute the size of the sun to figure out how bright it needs to be.
I’ve made the following assumptions, and it seems pretty close to what I’m used to when using the Sun-style light for scenes.
- A purely white background with a Strength of 1 would result in 1 W/m² in local space.
- A disc with 0.37° radius subtends about π(0.37°)² = 0.107 square degrees.
- Wikipedia says the entire sky subtends about 41253 deg².
- Therefore my sun needs to be 41253 / 0.107 = 384713 times brighter than otherwise expected to provide the desired amount of light.
- For 325 W/m², that equates to a Strength of 125,031,725.
- I need to turn the exposure down to about -5 stops to get good contrast.
I tried just using a Sun-style light at 325 W/m², but it was way too bright, even with the exposure at -10 stops. Realizing I had the unit scale set to 1000, I divided the brightness by the square root of 1000. The result looks almost identical to my world background.
Is my method of calculating local illumination strength correct? Obviously, I can just play with it until it looks decent. But I’d like to know I’m actually working the math correctly.
Render using the world background:
Render using a Sun-style light: