bagginsbill opened this issue on Oct 25, 2007 · 273 posts
bagginsbill posted Thu, 25 October 2007 at 11:00 AM
Don't use that wacro. It should not attach AO to the Specular_Value. Specular reflections simulate the direct bouncing of light from the light source to the camera. Such light beams are not ambient at all, but are direct illumination from a particular spot, reflected towards the eye. The presence of nearby objects does not stop a specular reflection in real life, unless they are directly in the path of the beam. In other words, ordinary shadows handle this correctly. So you shouldn't model that in your shader.
Imagine you have a shiny ball at the bottom of a coffee cup. You shine a spot light into the cup. Should you see a specular reflection on the ball? Yes you should, unless (and only unless) the rim of the cup blocks the light directly. If you suppress that specular with an AO node, it won't be real. The specular reflection is not coming from all over, so should not be decreased just because there are object nearby but not in the way.
Diffuse reflection, however, is a collection of light beams bounced from lots of different directions. So you do want to block the diffuse component of a shader using AO, so that it reacts properly to the presence of geometry nearby, in pretty much any direction.
My attached image demonstrates. First is without any AO. Second is with AO on Diffuse_Value of all cup, ball, and ground. Third is with AO on Diffuse_Value and Specular_Value. Notice how much the ball's specular is supressed. This is wrong. It's hard to notice, but the specular on the lower part of the cup handle has also been modified slightly by the AO - this is not realistic.
If I posed a character's hand near the cup handle, the speculars would go away, even if the hand does not block the spotlight.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)