Forum: Poser - OFFICIAL


Subject: Skin tones and SSS

cedarwolf opened this issue on Jun 01, 2013 · 48 posts


stewer posted Thu, 27 June 2013 at 2:42 AM

Attached Link: http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/

Subtracting specular from diffuse isn't correct either. Conservation of energy must happen over the entire hemisphere that light can be reflected, not just one viewpoint:

Consider a perfectly diffuse surface with a color of (1,1,1). The total amount of light it reflects is (π, π, π) - the integral of (1,1,1) over a hemisphere. Now imagine the same being a perfectly specular surface, how should that reflect? It would reflect (π,π,π) in exactly one direction and (0,0,0) in all the other directions. Thus, clamping the output of lighting nodes to (1,1,1) is losing energy, and that's not even counting light sources with an intensity > 1.

Conservation of energy in a shader is about making sure that the total amount of light reflected in all directions does not exceed the light the surface received. Any math based on the output of a ligthing node is only taking one direction in account, not all of them. Your equations still let the diffuse reflection of light A be affected by the specular reflection of light B by subtracint all specular from all diffuse.

To turn a shader that's not conserving energy, such as the simple phong specular, into a shader that is conserving energy, you have to normalize it based on the specular exponent. See the attached link for an explanation.

You are right though, in the end what counts is how it looks when rendered, not how it looks on paper.