Recently i started playing around with angle-dependent lights to imitage IES Lighting Profiles with Cycles. This trick works with Mesh-Lighting (Emission Shader), as well as Area Lights. I’ve found the Area Lights to behave better than Emission-Planes, mainly because you can independantly adjust the Size and Strength without influencing each other.
Change Lamp Size to vary “fuzzyness” (doesn’t influence overall brightness, unlike emission-planes).
Play around with the ColorRamp to achieve different effects.
How it works
I get the angle between the normal and the incoming ray into the light to determine the light characteristics for this angle: vector-dotproduct: ab=|a||b|cos(phi). both vectors are normalized, so |a| and |b| are both 1, we get cos(phi)=ab
Then this drives a Colorramp to determine the Color/Strength depending on “the angle”. For simplicity i don’t use the angle - arccos(ab) - but just ab, because it’s in the right range [0;1] and i don’t need a linear scale.
The additional Light Falloff Node helps reducing the overly bright spots near the lamp, so it’s not “physicly correct” but can help alot reducing noise/fireflies.
To use real .ies files, someone would simply have to write an converter to write the data into an image file, which could then replace the ColorRamp-Node. This could be a very nice feature for people doing architectural renders. making some image files as a library for different lights.
I hope this can be of use to some uf you