Lamp Shades

Total Posts: 390

In the past, I have been challenged by rendering lamp shades. Often, the shade geometry blocks the light source unless using a transparent glass material. Materials with enough transparency to allow light to pass through, often do not provide the desire affect…glass-like and direct, whereas a cloth lamp shade should diffuse the light.

Here is a technique I have come up to mimic a cloth lamp shade that uses the new light emitting Material feature in Shaderlight.

**Short Form Solution**

- Select a material for your lamp shade
- In the Shaderlight material editor, make this matt, smooth
- Assign the material to the interior face of your shade geometry
- Copy the material and in the Shaderlight material editor, make the material a light emitting material with an appropriate cd/M2 luminance setting (more on this later).

Now the shade will cast a diffuse light.

**More Detail**

*Build your geometry*

My lamp shade is an irregular cylinder with a 14-inch diameter open base and a 12-inch diameter open top.

Three areas are important to record:
- area of the top opening: PI()*6^2
- area of the bottom opening: PI()*7^2
- surface area of the shade: 409.91 square inches

*Place your light source.*

I created a model of an LED A19 bulb, using IES data for a 1000 lumen 2700k bulb. If you do not expect the bulb to be visible i your scenes, you can skip the bulb geometry use a bare ies light.

Make note of the lumen (1000), and the temperature (2700k) for later.

*Pick a Material*
I wanted a cloth-like material. I used the SU woven carpet, adjusted the colour settings and shrunk the image size to 1”. The detail of the material is lost in the rendering, straight colour is probably good enough.

Apply this material to the interior of the shade.

*Do Some Math*

For the exterior material we need a realistic light emission (luminance) value.
My method is probably not perfectly correct, but it seams to be good enough to give favourable outcomes.

First, our variables:
- Light strength from our ies file in candela (LSc)
- Area of the top opening (Aa)
- Area of the bottom opening (Ab)
- Area of our shade surface (Ac)
- Total area (At) = (Aa) + (Ab) + (Ac)

Find the lamp shade surface’s share of total area as a percentage (Ap) = (Ac) / (At)

Find the share of direct candela hitting the shade (LSSc) = (LSc) * (Ap)

Adjust for loss: a lot of the light from the bulb will be lost by reflection on the interior or absorption by the fabric in the material. Here you have to apply some guesswork. I have guessed that 60% or the light was lost, therefore, the light emitted from the glowing shade will be 40% of the original light strength (this may be too high, you can experiment. Different materials would have different outcomes). Light emitted (LEc) = (LSSc) * 0.4

Now divide the total light emitted by the area of the lamp shade surface (in square meters) to find the luminance value = (LEc) / (Ac) in m2.

If, like me, you are working with square inches, you may convert your (Ac) In2 value to M2 by multiplying (Ac) in inches by 0.00064516 before calculating the luminance value.

Make a copy of the material you used for the interior of the shade (assuming they are the same, some shades will have a white lining and textured exterior).  In the Shaderlight material editor, set the luminance to the value we just calculated.

Set the correlated colour temperature to match the temperature of your light source (2700k for me).

Apply this material to the exterior of your shade.

Finally, we need to adjust the light source. This is an optional step, but more accurate.  In the model, all the light is blocked by the lampshade and (mostly) redirected out the open top and bottom. At the same time, we are adding light from the shade, so technically we are over-stating the light.  The rough adjustment factor I used was total light minus the light we added to th shade as a percentage of total light, or ((LSc)-(LEc))/(LSc) * 100. Use this percentage for your ies light dimmer.

My Numbers:

- (LSc) = 1000 lumen = 100 candela
- (Ac) = 0.26 m2
- (Ap) = (Ac) / (At) = 0.26 / 0.44 = 61%
- (LSSc) = (LSc) * (Ap) = 60.29 candela
- (LEc) = (LSSc) * (1 - [lost light]) = 60.29 * (1 - 0.6) = 24.12 candela
- Luminance = LEc / (Ac) = 24.12 / 0.26 = ~91 candela/m2
- IES Dimmer = ((LSc)-(LEc))/(LSc) * 100 = (100 - 24.12) / 100 * 100 = 76

Side note:
If you do not know the candela for your ies file you should be able to find the Lumen from the website you got the ies file from. Google Lumen to candela Calculator, you will need “Apex Angle” Use “360” degrees as a “good enough” approximation (technically this means the light is a perfect sphere emitting from all directions, its not, but again, good enough)

** Finishing Touches**

I also added a few touches to increase the realism of the shade.

After creating and applying the materials to the lamp shade, I created two bands around the top and bottom of the lamp shade by dividing the shade surface into rings (I intersected the lamp shade geometry with flat planes to create the bands).

At this point my shade consists of a 0.25 cm band, a 0.5 cm band, the majority of the shade, another 0.5 cm and another 0.25 cm band.

To the exterior 0.25 cm bands, I applied the same material used in the interior.  This mimics a shadow from a wire rim frames of the shade, through which no light would travel.

For the 0.5 cm bands, I copied the exterior material and reduced the light emission by half. This mimics areas where the shade material is folded over (doubled) to enclose the wire frame.

I then created vertical band on the main section of the frame and applied the same half-strength exterior material. This mimic an overlap in the material at the seam.

I hope this is helpful to someone (Its not as complicated as I’ve made it sound once the steps make sense, and the outcome seems to work well. I built a calculator in Excel that only requires for inputs: Ac, Ab, Ac and LSc—nt sure how to best share that though).



Image Attachments
Click thumbnail to see full-size image
Total Posts: 390

Here is a link to the led bulb in my Lights for Shaderlight collection in the 3DWarehouse:

Image Attachments
Click thumbnail to see full-size image
Total Posts: 279

Hi Andrew,

Great attention to detail and very effective!

Can anything be done to remove or reduce the shadow that is being cast towards the corner of the room (I’m guessing it’s part of the upright)? Maybe the geometry of the lamp doesn’t allow the IES light to be positioned directly above the upright?


Total Posts: 390

Thanks, Kim.

To be sure, this is a workaround subject to limitations.

That particular shadow is being cast from an area light used for general ambient light in the scene.

I’ve attached two renderings at different exposures without the area light. As shown, when the lamp is the only light source, the shadow you flagged disappears. The lamp is on an arm that extends from the upright, so some shadow is expected from the post.  The bigger issue is the “black hole” directly below the lamp, caused either by a disk-like feature of the arm, or the bulb geometry itself (the bottom half of the bulb is solid.

In my “real” version of this lamp, a) the room is never perfectly dark so some additional light is provided to that area; and b) the inner surface of the lampshade appears to reflect more light downward at various angles to light this area.

Another limitation of this workaround is what happens when the lamp is in a bright room.

On the lamp I modelled this after, if the light is greater on the exterior of the shade, the shade should reflect light and look bright; but in Shaderlight, the light-emitting material does not reflect light, so when the emission is less than the ambient lighting, the surface appears dark, which is incorrect (I think). I’m not sure how emitted light stacks with reflected light, but I would think it should be at least the greater of the two if not the combined total of the two light levels at the surface.

Another Limitation (or at least complexity) is how to address differences between the colour of the lampshade and the colour of the light from the light source.  Here I have used the correlated temperature of the bulb as the light emission for the shade. Conveniently, my shade is practically white, so it would make sense intuitively to take on the hue/correlated temperature of the source.  But if I had a coloured shade (say blue), I’m not sure how I would adjust that as yet.

As with all my “quick” experiments to find fast workarounds, it seems this one is getting complicated, quickly, but I am interested in taking it as far as it can go.  Any feedback or ideas are appreciated.



Image Attachments
Click thumbnail to see full-size image
Total Posts: 279

Ah, I see. It’s curious that the black hole below the lamp is so pronounced – is there no global illumination in this render?

You are right that light-emitting materials don’t reflect light from other sources. This is a result of the material being based on an idealised black-body radiator model, which absorbs all incoming radiation. This is generally good enough to render direct light sources like bulbs and TV screens but needless to say, such idealised materials don’t exist in real-life, so it is our intention to improve the model in future releases.

When the shade is not white, I wonder if you can get plausible results by using ‘SketchUp Color’ rather than colour temperature as the Shaderlight material colour? I guess the problem might be that the colour ends up being too saturated.


Total Posts: 390

That’s exactly what happened! I thought I was using global illumination but must have bumped into direct illumination without noticing.

Here are the images again without the black holes.

Some of the subtleties are less obvious where the cast light from the lamp shade hit the wall - makes sense given more indirect light will be hitting those areas now so the contrast will be reduced.

Image Attachments
Click thumbnail to see full-size image
Total Posts: 279

OK – that makes sense… Looks great!

Thanks for sharing your techniques grin

Shaderlight support