Trying to recreate warehouse lamps with IES textures

Hi guys

Trying to somewhat accurately recreate a lamp like this:

IES textures don’t seem to work with area lights. How would you do this?

Check this out:

Ah very interesting, thanks!

IES works best with very small light sources where the increase in size is so small it doesn’t hurt the IES definition too much. Using bigger lights would be required to get the proper soft shadows, but then you completely loose the IES definition. IES is not an all time solution to better realism. You’re better off modelling it, which should be trivial in that case.

1 Like

Thanks for the info!

I’m also worried about performance. I need to hang a lot of these in a very big scene while keeping it fairly interactive so the less geometry and mesh lights I can use the better.

Besides that, it would also be fairly insane to model the white glass and the emitter inside to generate the right light pattern.

why would you not just model a simple cylinder with an emissive texture? The reflector does most of the light pattern shaping anyway

As far as I know, IES texture is the cheapest method to make a realistic lamp. It is implemented by using texture sampling to get light information. The main difference compared to spotlights is the extra memory overhead (assuming you are using GPU rendering), which is based on each unique IES file. If you use a large number of light sources that use the same IES profile, the performance is basically the same as if you used the same number of spotlights.

No, an area light won’t hurt the IES definition. In fact, the IES file is designed to be used with area light. For example, in DIAlux Evo, when importing an IES file, you have to specify the shape of the emitter and not use it directly as a point light.

1 Like

I’m talking about Blender, not DIAlux. Considering how badly the spread is implemented in Blender (fading to 0), I lean towards Blender not having the best implementation of IES possible. A post I found on DIAlux (I’m not a user):

The IES file just describes the light emitting surface. This is a weak point of this format. But to support IES files in DIALux anyway we have implemented following behaviour. 1. By default the height of the housing is 0,1m or as height as the light emitting surface. 2. The user can override the default height with the correct height.

Sounds to me they think IES have limitations too.

I used to agree. But in recent tests me and others have done recently, lamp based lights aren’t that convincingly better anymore compared to emission geometry when surface areas are sufficient. Most of the time, as I’m doing large office venues (or simple rooms within), I’m mostly dealing with recessed ceiling tile lights though. For actual work surface lights like hanging fixtures like yours, I’d still model the tubes and make them emission visible to camera rays (and glare, don’t forget to utilize cryptomatte), even if I use area lamps within each instance for lighting. Unless you can see sharp reflections of the tubes in surfaces in such a way that the housing surface itself isn’t overexposed, using area lights to do the actual job will work just fine. IES or not in this case isn’t what’s going to make or break the result.

1 Like

The exact lamp I need also has a lens in front. Nevertheless I can’t rely on caustics, reflective or refractive to light up the scene.

I’m talking about Blender, not DIAlux. Considering how badly the spread is implemented in Blender (fading to 0), I lean towards Blender not having the best implementation of IES possible.

I mention DIAlux because it is a dedicated software in the field of lighting design, Its use of IES as area light can prove that the area light does not affect the characteristics described by IES too much.

IES profile does have its own limitations, but due to the limited computing power, it is almost the only way to simulate real artificial lighting in a rendering engine.

In addition, Blender’s IES implementation is very powerful and flexible, although not very user-friendly. With some math, it is possible to fit irregular emitters almost perfectly.

Maybe so, but again, this is about Blender and its implementation. Here is what I get from the same IES (Pixar ScatterLight.IES copied into internal text file):


I used the scatter one because it’s the wildest in that collection and easiest to see. I also turned off bounces to not reduce the sharpness. White lights, white diffuse shader. Obviously you wouldn’t normally think of this kind of distribution with a recessed tile light, but not inconceivable with some optical lensing in there. But in Blender, using this IES that has a lot of definition with the intended area light size to get the proper shadow softness, pretty much all definition is lost.

If I’m doing it wrong, attach an example of how to do it right. Fagerhults Clarico-Up has a fairly interesting light distribution for a recessed tile light.

That is how a real light works. For a large area light, you have to scale up the whole scene to see its IES characteristics, otherwise the light intensity at each point will be averaged out by the light coming from different angles.

Ehm, how is making the scene bigger any different from making the light smaller? But still, no, we can’t get the definition out of a large area light no matter what the source is - caustics, reflectors, or geometric features. It wouldn’t be hard to come up with a geometric fixture that can’t be represented with a large area light. I guess this would be an example. I don’t have the IES, but obviously any caustic pattern it creates will be lost when the area lamp gets big.

Btw, try this contraption for ceiling lights: GN-CeilingLight_ForSharing.blend (1.4 MB)
It’s not visible tube lights like in OP, but more like a diffusion glass above and below (like this), but I’m sure it’ll be easy enough to tweak to suit your purpose. Has independent up (indirect)/down (direct) power, controllable dimensions, can set spread without affecting camera and glossy rays (unlike vanilla spread). I sometimes use these for working surface illumination in addition to regular recessed ceiling tile lights.

It would be more correct to tweak the power based on directionality rather than fade to 0, instead I’m just using a lower value overall as this (to me) is enough to control antialiasing stepping problems with bright lights. Vanilla lamps spread fades to 0, which to me is an absolutely ridiculous approach and completely unusable (in most cases).

.IES only measures the angular intensity of a point light source. it’s the equivalent of an HDRI background. it has data for every angle, but nothing defining the position of lighting. you can fake it a bit, but if you are fixated on realism, why fake it?