Reflection intensity based on lighting

So a little fun story: A few days ago I went with a friend by car somewhere in the city. As we were waiting outside for another person to arrive, we happened to park in the sunlight yet near the shadow of a tree.

I noticed something interesting, even if perhaps obvious: The body of our car is much more reflective in shadowed areas, while the reflection is barely visible in places where sunlight hits. The reflection doesn’t seem to be only washed out, but also looks as if it changes its tone based on how lit the surface is.

I actually snapped a photo of this effect for reference. In it you can see how hidden the reflection is where the sun hits, but how visible it is on the areas where the tree is casting a shadow over the body of the car.


Obviously I’m curious: How do I ensure this sort of effect in Blender, ideally both Cycles and Blender Internal? I typically do hyper-realistic rendering, so this sort of thing is something I like being on the lookout for.

I actually went ahead and did a test render just now, out of curiosity before posting this: Turns out Glossy doesn’t take shadows at all… which makes sense since it’s just the reflection. A mix of 0.25 GlossyBSDF & 0.75 DiffuseBSDF seems to yield precisely this effect however! Still thought I’d ask for opinions just to be sure though; Perhaps I might also want to use brightness or a ray type filter?


Interesting observation.

I’m wondering if it’s because the vehicle paint is oxidized (because of age) and that has an affect on the reflection properties. Whether this is an SSS effect or something else, I don’t know.

I once had an aging Triumph Spitfire (1972, I think) and the only time the paint shone was when it was wet. Otherwise, it was dull in both direct light and shadow.

its a mind trick, the shadows arent more reflective, its the rougher glossy coat drowning out the sharper over coat.

try mixing a colored rough GGX (EDIT: i forgot about SSS) and a Sharp together, maybe based off of fresnel?

i dont claim to be an expert on this topic. i could be way off. :smiley:

Yep - I suspect the above explanation is correct. The slight roughness to the top coat is causing a bloom off bright areas which is drowning out the more subtle sharper reflections.

I have tried to recreate the effect here:


It’s not that the weaker sharp reflection isn’t there - it’s simply swamped by the bloom. It’s probably a similar principle to a car windscreen. You can drive along pretty happy and can see perfectly well out of the windscreen, until you turn into the sun, then all the dust, imperfections in the windscreen etc cause bloom which can make seeing very difficult indeed. The windscreen hasn’t become any less transparent - but the bloom caused by the bright illumination swamps the view.

Very interesting… I didn’t think about the bloom explanation, dust on the car or other properties of the paint might be a likely cause. That example looks very good and simple too, will definitely keep it in mind for this, thanks!

Daedalus is right, it’s a matter of perception : the surface is equally reflective either in the light or in the shadows, it’s just that we can see the reflected environment better in the shadowed parts beause it is drowned-out in the brightly lit parts. Just like on a still water surface where we can see the bottom of the puddle only in the shadows of the tree trunks (anywhere else it’s the reflection taking over).

Our miraculous eyes are capable of detecting over 20 f-stops worth of differences in illumination, because we scan the scene with our eyes and construct our perception of it in our brain.

Node-based rendering (and compositing) are your best friends here. To mimic what your eyes can see, you effectively set up two rendering solutions, then use the shadow as a mask to choose between them. In places where the shadow hits, the reflection light-source can be seen. Where it does not, it’s washed away by sunlight.