[Bf-committers] Physical plausibility - Was about adding boost uBLAS
ypoissant2 at videotron.ca
Thu Jan 29 05:00:22 CET 2009
From: "joe" <joeedh at gmail.com>
Sent: Wednesday, January 28, 2009 12:36 PM
> Interesting. Any specific papers on the topic you'd recommend?
That is one difficult question to answer and I don't have an answer. I guess
you refer to physically plausible material representation. You know that
papers authors rarely publish code.
It is all related to the concept of BRDF but papers about BRDF all go into
theoretical details and no implementation details and the more modern papers
just assume that the reader already understand the concept of BRDF. And
since the BRDF concept is a difficult concept to grab, it is difficult to
find good introductory papers. The set of papers by Christopher Schlick
about his "inexpensive BRDF for everyday use" are nice ones with nice
introductory material about the fundamental concepts. It is a relatively
easy model to implement too but there are better ones today. That said, the
beauty of BRDF is that they are building blocs. A better BRDF model can
replace an old one easily and the rendering will work just as well if not
On paper, BRDFs tend to look like your regular shader and in fact, a lot of
them are often converted verbatim as shaders. That is why BRDF can be used
with scanliner or raytracers or GI as well. But the similarity with shader
is because it is not obvious that BRDF are really probabilistic reflectors
and are in fact designed to be used with probabilistic renderers. In this,
one can see shaders as a subset of probabilistic renderer where the
probabilities already decided. So a BRDF is much more general than a shader
and is much more powerfull than a shader.
Another important concept is the conservation of energy. A surface can never
reflect more light than it receive. This statement seems simple but there
are very important implications related to that. Think about a typical
legacy CG material description with its diffuse, specular, ambient, mirror,
(let's stop there, we already have enough to be dangerous). Think about what
those properties mean. Diffuse represent the reflection of *light* by a
rough material. Specularity represent the reflection of *light* by a
variably smooth material. Ambience represent the reflection of the
*environment* by a perfectly rough material and mirror represent the
reflection of the *environment* by a perfectly smooth material. You can
already see several conflicting representations. The difficulty is how to
balance those components so the surface looks physically convincing. It is
algorithmically possible to achieve this balance when the concept of BRDF
and the implication of conservation of energy is well integrated. All those
visual properties can be controled by one "roughness" property. For example,
the specularity tightness represents the roughness. Received light is
scattered above the surface but the incoming light energy is conserved. As
specularity tightnedd gets tighter, its brightness also increase in
proportion of the incoming light that is more tightly reflected. Same for
the the balance between the specularity tightness and brightness and the
mirror strength and falloff distance. They are related.
This type of knowledge you will acquire through reading a lot of BRDF
related papers. But there is one book that I found covers those concept
surprisingly well. It is "Real-Time Rendering" Third Edition by
Akenine-Moller, Haines and Hoffman. This book covers a lot of ground,
explains a lot of tricky issues and answers a lot of questions that arize
when reading BRDF related papers.
You can see that with a single property, the roughness, you can control, in
a physically plausible way, several of the legacy CG properties which are
all numerically controled so the reflectance is always energy conserving and
thus plausible. For anisotropic material, you would have two roughness
properties. This is a much simplified model for users to control. Its
control is always consisitent and it becomes intuitive very quickly.
A more general concept to the BRDF is the BSDF. This covers material that is
reflective and/or transmissive. The more recent BRDF papers are focused on
multiple layer materials. Once you have your BSDF system in place, you can
achieve the look of a large bunch of man made materials through layers of
BSDF. This is at the same time extremely powerfull and very simple and
intuitive to ajdust.
Concerning implementation documentation, I would direct you to the book
"Physically Based Rendering" by Pharr and Humphrey, also known as PBRT. I
would not suggest implementing the code in there because it is designed to
be easily understandable but is far from optimized, and also, I find the
implementation overly complex. There is no need for such a complexity. But
you get to see the actual code that implements the concepts. And you get to
see how BRDFs are designed to be used. There is no other place that I know
of where you can see the full implementation of the BRDF/BSDF concept like
Another book I would recommend is "Realistic Image Synthesis Using Photon
Mapping" by Jensen. The first part of the book that covers the fundamental
concepts up to page 66, even if you don't plan to implement a photon mapping
algorithm, is well worth reading IMO.
Other papers I would recommend (and you can find on the web) are:
"Arbitrarily Layered Micro-Facets Surfaces" By Weidlick and Wilkie, 2007.
Start with this paper to get a good idea of what this is about. It is fairly
recent and have very good examples.
"Distribution Based BRDFs" by Ashikhmin and Premoze, 2007
"A Simple Layered RGB BRDF Model" by Granier and Heidrich, 2003
"A Microfacet Based Coupled Specular-Matte BRDF Model with Importance
Sampling" by Kelemen and Szirmay-Kalos, 2001. Szirmay-Kalos papers are
generally too theoretical for my taste but this paper gives a hint of the
work by this group.
"A Practicioners' Assessment of Light Reflection Models" by Shirley, Hu,
Smits, Lafortune 1997.
"A Coupled Matte-Specular Reflection Model" by Shirley, Hu, Lafortune,
"An Inexpensive BRDF Model for Physically-Based Rendering" by Schlick, 1994.
He shows a very simple scheme for automatically balancing the diffuse,
specular and mirror factors from the roughness property and also gives the
warping equations for importance sampling the BRDF. This is an important
"A Comprehensive Physical Model for Light Reflection" by He, Torrance,
Sillion, Greenberg, 1991
If you start with those papers and follow the threads from the
bibliographies, you should have a wide coverage os the topic.
Sorry for not being more specific with my explanations. I can only provide
public references because I'm under a NDA with my employer.
More information about the Bf-committers