Many times when we create scenes we think a lot about the composition color and even light. But one thing that we often forget is the throw pattern of our lights. This is where IES comes in.
IES lighting is essentially a text file that outlines how intense a light will be in any direction. This allows us to create custom throw patterns of light instead of relying on the standard omnidirectional lighting of a point lamp or the perfect light cone from a spotlight.
In this article we will explore how we can create our own throw patterns for light objects and import them for use in Blender.
IES lighting currently only works with Cycles and not with Eevee. But other engines, such as Unreal engine also have support for IES, so this is not strictly a Blender thing.
Here are some examples:
To do this, we will use an open source tool called Easy IES. You can download it here:
External content: Easy IES Github download page
Currently, it seems to only be available for Windows.
Once on the page, select the zip-file of the latest version and download. Right now, the latest version is 1.3. Unzip it and you will find an .exe file within. Start it and if you get a warning, you can press “more info” and “run anyway”.
When the program starts, you will see a user interface divided into three sections. In the first section, we have two parameters.
First, the intensity value and the resolution. We can keep both at their default values. If you are sure exactly what intensity you want, you can set that. For instance, if you are trying to mimic a specific light and you know the luminance, you can use that value here. Otherwise, we can adjust the intensity once we are in Blender.
The resolution is basically how much information we will pack into this IES’s light profile. However, 50 works well since Blender will smooth between the different intensities in the throw pattern.
The export button is where we press once we are done and want to save our IES file. This file is later imported to Blender. We will cover this process once we created a profile.
The “Set IES Base” let us change the intensity we start with.
If you look at the circle below, it is black. This means that with the current IES profile, no light will be thrown in any direction.
If we change the IES base to 50% or 100% the circle will become mid gray with 50% and white with 100%. But it is often easier to start with no light and add it as we go. So let’s look at how we can add some light.
On the right side of the interface, we have an “add layer” button.
We can add a full 360 or an angle range. These are essentially two different kinds of selection or masks. Think of it as telling Easy IES where you want to light.
We can use angle range the most since full 360 will select everything. We want to be more precise than that.
If we select the angle range, we get two sliders. Angle and range. When you slide them, nothing will seem to happen to our circle.
Before we see any change, we will need to specify what will happen to this range.
To see what we are doing, press “add operation” and select “adjust intensity”.
This will create an intensity change for this area, and we can now see where this angle range is selected around the circle.
So how do we know what direction we should light? Let’s take a point light as an example.
The easiest light to use with IES is a point light. This is because the throw pattern is cast from one point both in the light and in the IES profile. They basically match perfectly.
Imagine using a point light that you put next to a wall. The circle in Easy ISE then represents the throw pattern you would get on the wall.
An IES profile with only black in the upper part of the circle would therefore not cast light upwards in the local Z direction in Blender. However, once in Blender, we can rotate the light the way we want.
Let’s get back to Easy IES. So far we added an angle range and an adjust intensity operator.
Each angle range can have as many operators as we want and we can stack as many angle ranges as we want.
The limitation here is that an angle range is always mirrored.
We already looked at the operator “adjust intensity”. But let’s look at the other operators now.
- This operator creates a blend between two values from the bottom to the top, creating a smooth gradient. If you want to see this or other gradients more clearly, you can temporarily increase the resolution.
- Simple curve
- This is similar to interpolate, but here we get an additional value between interpolating between three values.
- Adds a noise pattern to the light giving us a noise scale and intensity to work with and a handful of modes.
- I am not entirely sure about the mask but what it seems to do is create a toggle that disables all the operators below it.
Appart from the operator, we also have blend modes. We can’t blend between operators, instead, we blend between the ranges.
By default, we have the override blend mode. This blend mode will replace values in its range with its own values. All other blend mode will make some kind of interpolation with other angle ranges above it in the stack.
These are the blend modes we have access to.
Once we stacked our angle ranges and operators to our hearts’ content, we can finally export an IES file.
To export, press the export button, browse for a location, and name your IES file.
How to use IES lighting in Blender
Let’s open Blender and see how we can use this.
Like I said before, we need to use Cycles. Eevee does not currently support IES files.
We can use IES with all kinds of lights. Even with mesh lights using the emission shader.
We will look at using a point lamp and then how it works with an emission plane.
To set up my test scene, I use the default cube. I start by removing 3 faces on the sides. Then I select the light and move it to the 3D cursor.
Now I pull the lamp closer to the back wall so we can clearly see the throw pattern on the wall behind the light.
Then I switch to Cycles and go to the shading workspace. Select the lamp and check the “use nodes” in the shader editor header.
In the 3D viewport, I also go to rendered view to get an accurate preview of the light.
In the shader editor press “Shift+A” or go to the add. In the texture submenu, select “IES Texture”.
Place it in the node editor and connect the “fac” to the “strength” of the emission shader.
Since IES is basically a text file, we may store the IES profile inside blender or as an external file. In our case it is an external file. Select “external” and browse for the IES file we created with Easy IES.
Depending on the intensity setting you had in Easy IES and the scale of your scene, you might have to adjust the strength on the IES Texture to compensate.
Else you might only see white light all over if the light is too intense. At once point during my testing I put the strength as low as 0.0005 on the IES texture to get a good dimmed down light to clearly see the throw pattern.
This is one of my tests.
One downside of IES lighting is that it generally increases the noise of your scene. The smaller the light source, the more noise. If we have a very noisy pattern or slim streaks of lights setup in the IES file, this may create a noise problem that we have to deal with.
Since we have access to all the light nodes, we can also combine IES light with other nodes. We may do something simple, like dialing the intensity of the IES node with a math node or we can combine it with an image texture to create a color pattern almost like a projector.
Here is an example where I use my custom IES together with an image from Pixabay to give it some color.
Here is the node setup on the point lamp I placed in the middle of the scene.
Easy IES is a nice simple and open source software to create your own throw patterns for the lights in your scene. We can then easily use them in Blender with Cycles thanks to the IES texture node.
If you find this kind of content helpful, please help me share this article with others.
Thanks for your time.