POV-Ray : Newsgroups : povray.general : Energy conservation for diffuse lighting? Server Time
31 Oct 2024 12:15:55 EDT (-0400)
  Energy conservation for diffuse lighting? (Message 1 to 8 of 8)  
From: Xplo Eristotle
Subject: Energy conservation for diffuse lighting?
Date: 24 Mar 2000 15:05:38
Message: <38DBCBB4.C1D38A54@unforgettable.com>
Seems to me that the higher an object's reflection is, the less its
pigment should have any effect on its appearance (provided that you're
using non-metallic reflection), until you reach reflection 1, at which
point the pigment would cease to be relevant.

However, this isn't the case in POV-Ray. An RGB 1 object with reflection
1 ends up being unrealistically bright, which is fine for special
effects I suppose, but bad if you're trying to model realistic
materials.. and unfortunately, lowering the diffuse finish only works
with constant reflection; those using Fresnel reflection are out of
luck. The conserve_energy keyword in the MegaPatch only affects the
amount of light that's transmitted through an object and not the diffuse lighting.

So this is sort of a combination question/feature request: Am I right in
thinking that light works this way and that it's a problem, and if so,
is anyone willing to hack this feature in? I'd do it myself, except my
programming skills are pretty rusty, and I wouldn't know what numbers to crunch.

-- 
Xplo Eristotle
http://start.at/xplosion/


Post a reply to this message

From: Markus Becker
Subject: Re: Energy conservation for diffuse lighting?
Date: 27 Mar 2000 04:39:08
Message: <38DF2CCC.36B8EACE@student.uni-siegen.de>
Xplo Eristotle wrote:
> 
> Seems to me that the higher an object's reflection is, the less its
> pigment should have any effect on its appearance (provided that you're
> using non-metallic reflection), until you reach reflection 1, at which
> point the pigment would cease to be relevant.

What's wrong with using:

#declare _refl = 0.3;	// change this
#declare _diff = (1-_refl);
:
:
finish
{
   diffuse _diff;
   reflection _refl;
}?

This is, what I use if I want to have "physically" correct
surfaces.

Markus


Post a reply to this message

From: Xplo Eristotle
Subject: Re: Energy conservation for diffuse lighting?
Date: 27 Mar 2000 12:29:15
Message: <38DF9B94.D864B7BA@unforgettable.com>
Markus Becker wrote:
> 
> Xplo Eristotle wrote:
> >
> > Seems to me that the higher an object's reflection is, the less its
> > pigment should have any effect on its appearance (provided that you're
> > using non-metallic reflection), until you reach reflection 1, at which
> > point the pigment would cease to be relevant.
> 
> What's wrong with using:
> 
> #declare _refl = 0.3;   // change this
> #declare _diff = (1-_refl);

It's clumsy.

-- 
Xplo Eristotle
http://start.at/xplosion/


Post a reply to this message

From: Xplo Eristotle
Subject: Re: Energy conservation for diffuse lighting?
Date: 27 Mar 2000 12:46:38
Message: <38DF9FA6.85A7E43@unforgettable.com>
Xplo Eristotle wrote:
> 
> Markus Becker wrote:
> >
> > Xplo Eristotle wrote:
> > >
> > > Seems to me that the higher an object's reflection is, the less its
> > > pigment should have any effect on its appearance (provided that you're
> > > using non-metallic reflection), until you reach reflection 1, at which
> > > point the pigment would cease to be relevant.
> >
> > What's wrong with using:
> >
> > #declare _refl = 0.3;   // change this
> > #declare _diff = (1-_refl);
> 
> It's clumsy.

...and, I forgot to add, it doesn't work at all for variable reflection.

-- 
Xplo Eristotle
http://start.at/xplosion/


Post a reply to this message

From: Nathan Kopp
Subject: Re: Energy conservation for diffuse lighting?
Date: 28 Mar 2000 09:14:14
Message: <38e0be36$1@news.povray.org>
Xplo Eristotle <inq### [at] unforgettablecom> wrote...
> Seems to me that the higher an object's reflection is, the less its
> pigment should have any effect on its appearance (provided that you're
> using non-metallic reflection), until you reach reflection 1, at which
> point the pigment would cease to be relevant.

Actually, diffuse, phong, and specular (and blinn in MegaPov) model
first-order reflections (light that comes directly from light sources, hits
the object, and is reflected to the camera).   The "reflection" property, on
the other hand, models higher order reflections (light that hits one object,
is reflected, hits the second object (and possible more), then hits the
camera).

Because they model different phenomenons, you can't create a give/take
relationship between them as you suggest.

It would be more benificial to create such a relationship between the
various BRDFs (diffuse, phong, and specular).

Actually, it's a bit more complicated than this when you get into photons
and radiosity, which also model higher order reflections.  Making all of
these different lighting models work together in unison is very difficult.

-Nathan


Post a reply to this message

From: Xplo Eristotle
Subject: Re: Energy conservation for diffuse lighting?
Date: 28 Mar 2000 15:03:50
Message: <38E11151.E39ACA5E@unforgettable.com>
Nathan Kopp wrote:
> 
> Xplo Eristotle <inq### [at] unforgettablecom> wrote...
> > Seems to me that the higher an object's reflection is, the less its
> > pigment should have any effect on its appearance (provided that you're
> > using non-metallic reflection), until you reach reflection 1, at which
> > point the pigment would cease to be relevant.
> 
> Actually, diffuse, phong, and specular (and blinn in MegaPov) model
> first-order reflections (light that comes directly from light sources, hits
> the object, and is reflected to the camera).   The "reflection" property, on
> the other hand, models higher order reflections (light that hits one object,
> is reflected, hits the second object (and possible more), then hits the
> camera).
> 
> Because they model different phenomenons, you can't create a give/take
> relationship between them as you suggest.
> 
> It would be more benificial to create such a relationship between the
> various BRDFs (diffuse, phong, and specular).
> 
> Actually, it's a bit more complicated than this when you get into photons
> and radiosity, which also model higher order reflections.  Making all of
> these different lighting models work together in unison is very difficult.

So what you're saying is until/unless some more advanced and unified
lighting model is written, I'm basically screwed and I have to guess?

-- 
Xplo Eristotle
http://start.at/xplosion/


Post a reply to this message

From: Xplo Eristotle
Subject: Re: Energy conservation for diffuse lighting?
Date: 28 Mar 2000 16:16:57
Message: <38E12272.9AFBD381@unforgettable.com>
Nathan Kopp wrote:
> 
> Xplo Eristotle <inq### [at] unforgettablecom> wrote...
> > Seems to me that the higher an object's reflection is, the less its
> > pigment should have any effect on its appearance (provided that you're
> > using non-metallic reflection), until you reach reflection 1, at which
> > point the pigment would cease to be relevant.
> 
> Actually, diffuse, phong, and specular (and blinn in MegaPov) model
> first-order reflections (light that comes directly from light sources, hits
> the object, and is reflected to the camera).   The "reflection" property, on
> the other hand, models higher order reflections (light that hits one object,
> is reflected, hits the second object (and possible more), then hits the
> camera).
> 
> Because they model different phenomenons, you can't create a give/take
> relationship between them as you suggest.

I've given this some more thought (and if you've studied this for years
and I'm missing some vital piece of information that causes me to spout
uneducated nonsense, forgive me), and I don't see why this is true.

Light is light, whether it comes from the sun, a light bulb, a firefly,
or bouncing off of other objects. The frequencies and intensity vary,
but the behavior is essentially the same. When light hits a
non-reflective object, what's really happening is that the light is
being reflected in a zillion random directions (which also holds for
light that radiates off of other objects; in this sense, you could say
that illumination from radiosity is actually "diffuse reflection"). But
when light hits a reflective object, the light bounces off in some
uniform direction (or, if it hits a curved surface, according to some
uniform angle-of-incidence formula).. which means that when you shoot
light at a reflective object, it should bounce off such that less of it
actually reaches the viewer. A totally reflective sphere, existing
within a space which is totally black except for a point light, should
appear as a tiny dot (where the light reflects towards the viewer.. and
even that dot would be so small as to be nearly invisible, but in the
real world, nothing is PERFECTLY reflective, and you'd probably perceive
a tiny glare halo in addition to the teensy-tiny highlight).

Of course, raytracers don't shoot light, they shoot imaginary camera
rays. But it seems to me that an optional diffuse/reflected light
tradeoff is an improvement over not having one, even if it's not
perfectly accurate (in the real world, a reflective object would reflect
radiosity as though it were photons, and I don't know whether the
current photon implementation provides for this, or indeed COULD provide
for this). And as I've pointed out, you can hack the numbers to produce
this effect for uniform reflection, but there's presently no way to make
variable reflection conform properly.. which is why I think one is needed.

-- 
Xplo Eristotle
http://start.at/xplosion/


Post a reply to this message

From: Nathan Kopp
Subject: Re: Energy conservation for diffuse lighting?
Date: 29 Mar 2000 10:03:09
Message: <38e21b2d@news.povray.org>
Xplo Eristotle <inq### [at] unforgettablecom> wrote...
>
> So what you're saying is until/unless some more advanced and unified
> lighting model is written, I'm basically screwed and I have to guess?

It is my understanding that this is correct.

I'll explain (this is a response to your other post).

Let's say that we have an object with a surface BRDF.  The BRDF
(bi-directional reflection distribution function) is a statistical
distribution function that describes the intensity of light reflected from
the surface, given an incoming direction and an outgoing direction.
Integrating the BRDF over the hemisphere of reflection (defined by the
surface normal) should yeild 1.0 (100%).

In POV, a surface's BRDF is the sum of lambertian diffuse and specular
components.  In POV, the specular component can be described using either
"phong", "specular", or both.  In MegaPov it can also be described using
"blinn".

The light emitted by an object at an intersection point in a specific
direction is found by integrating by integrating the BRDF multiplied by the
incoming flux (light intensity) over the hemisphere of reflection.

Unfortunately, this is not computationally efficient for a ray-tracer.
Therefore, traditional ray-tracers estimate this by splitting the main
lighting equation into multiple parts.  Each part handles a specific source
of incoming light, and sometimes a specific component of the BRDF.

* The first term, known in POV as the sum of "diffuse", "specular", and
"phong", only includes light that comes from the point light sources in the
scene.  It models both the specular and diffuse components of the BRDF.
* The second term, known in POV as "reflection", takes care of light that
comes from other objects in the scene.  This component only incorporates the
specular component of the BRDF.
* The third term, known in POV as "refraction", also takes care of light
that comes from other objects in the scene.  This component does not
correspond to the BRDF.
* The fourth term, radiosity, takes care of light that comes from other
objects in the scene, like reflection.  This component, unlike reflection,
only incorporates the diffuse component of the BRDF, and also only
incorporates light that was emitted from the other objects via the diffuse
component of their BRDF.
* The fifth term, photons, takes care of light that comes from other objects
in the scene.  This component incorporates both the specular and diffuse
components of the BRDF, but it only includes light that was emitted from the
other objects via the specular component of their BRDF (or via refraction).

When you add all of these terms together, you should end up with a good
estimate of all incoming light as it interacts with all parts of the BRDF.

Unfortunately, POV doesn't use the same BRDF for different parts of this
model.  For example, the first term uses "phong" and "specular" to describe
the specular component of the BRDF.  However, the third term uses the
"reflection" property to describe this same specular component.  This
discrepancy is what leads to the limitation that you want to correct.  The
proper solution would be to define a single BRDF for the object's finish,
and then POV would use this BRDF for all terms in the lighting model.
Hopefully we will be able to address this issue in POV 4.0.

-Nathan


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.