3
$\begingroup$

I'm testing out an edge case in Cycles.

Here's the setup: I have two area lights: a large dim one and a small bright one. There's also a ground plane. Each light has a box behind it prevent light from shining from the back side. The large dim light emits a small amount of light downward and the small bright one emits light upward. The small one is positioned between the large one and the ground plane. Here's a diagram of the setup:

The scene setup

When I render the scene, I would expect that light from the small light should reflect off the large light and onto the ground plane below. However, that's not the case here. When I change the brightness of the small light, the illumination of the ground plane doesn't change at all. That suggests that there is no light being reflected off the large light source. Here are some example renders:

renders at brightnesses: 10, 100, 1000

When I hide the large light, the light from the small one bounces off the object that was behind the large light and, as expected, illuminates the ground plane below. Some examples:

renders at brightnesses: 10, 100, 1000

So my question is: why don't Emission BSDFs reflect light? In theory, they should; even the Sun reflects light (albeit a minuscule amount compared to what it emits). Is this a design choice or a bug? If it's a design choice, then why?

$\endgroup$
  • $\begingroup$ Have you tried adding a Glossy Shader to the large plane? $\endgroup$ – Dontwalk Apr 13 '17 at 18:08
  • $\begingroup$ @Dontwalk Do you mean the ground plane or the larger area light? $\endgroup$ – Justin Apr 13 '17 at 18:19
  • 1
    $\begingroup$ The Geometry node has backface output, you can use it to shoot light only in one direction from the plane - plug it into emission strength (through multiply node for adjusting strength). You will save the box;) $\endgroup$ – Jaroslav Jerryno Novotny Apr 13 '17 at 20:37
4
$\begingroup$

This is expected behavior for Cycles and in line with the way a physically based render engine is supposed to work.

By assigning a purely emission shader to a surface you are telling the render engine that that surface has no other light path component interaction, and is only emitting photons, no light is absorbed, no light is reflected, no light is refracted.

If you expect more light path behaviors from said surface you have to add the corresponding shaders for those.

What this means is practically you have to use a Mix shader to mix the emission with other materials cabale of reflecting light from other sources, in this case a simple Diffuse or Glossy shader will do.

For clarity sake the "strong light" is red colored and the weaker one is blue in my scene.

Light reflection

Also as mentioned by Cegaton, you don't specifically need those boxes, if your only intent is to stop light. You can either use actual Lamp objects set to Area which will by default only emit light in one direction, or use a node setup similar to the one below to limit a certain shader to the front facing geometry only.

Shader filtering

$\endgroup$
  • 2
    $\begingroup$ As a side note, you don't really need to build a box behind the emitters to control the direction of the emission, a shader mix using the geometry>backfacing socket will allow you to control the direction of the light on the emitting planes. $\endgroup$ – cegaton Apr 13 '17 at 19:18
  • $\begingroup$ @Duarte Farrajota Ramos That makes sense. So the idea is: if it's not there, don't put it there. $\endgroup$ – Justin Apr 13 '17 at 19:30
  • $\begingroup$ Duarte, Surely all light is absorbed, none is tranmitted - hence why hiding the lamp resulted in the light then reflecting off the surface behind in @Justin's example. Using an Add Shader to add 100% Transparent to 100% Emission would result in no light being absorbed while retaining the emission. $\endgroup$ – Rich Sedman Apr 13 '17 at 20:06
  • $\begingroup$ That's right, @RichSedman. I also just noticed that my node setup is wrongly formed, the Emission shader is connected to the factor socket instead of the shader. Will try to fix it $\endgroup$ – Duarte Farrajota Ramos Apr 13 '17 at 22:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.