Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!

Concept behind BRDF that reflects according to Gaussian function

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 Large J   Members   -  Reputation: 123


Posted 27 February 2013 - 06:15 AM

Hi all,


The last few days I am kind of confused about the concept behind a BRDF that uses a normalized Gaussian function to describe it's reflection behavior. More specifically, I am writing a hair shader using the Marschner hair model and in this model light is reflected in a lobe described by a Gaussian function. Since the standard deviation expressed in radians, is very close to zero, the normalized Gaussian function returns values larger than one for angles close to the expected value. When using this function as a BRDF, the reflection will be greater than one for some of the angles. This confuses me, since it does not make sense that for some angles the reflected light will be larger than the incoming light.


Now I have read that this normalized function is a PDF and that you have to integrate it to find the probabilities. But how would I use this normalized Gaussian function then to compute the amount of reflected radiance?


#2 Bacterius   Crossbones+   -  Reputation: 10560


Posted 27 February 2013 - 09:51 AM

Careful - the BRDF doesn't describe the amount of reflected energy, but the reflected radiance, which is a measure of intensity per solid angle (power over area over solid angle) dependent on view angle. If you look at the definition of solid angle, you'll see the "cells" (when integrating over a sphere) have different surface areas depending on the angle made by the light ray with the normal (this is the solid angle part). Similarly, the effective area also depends on view angle, in a different way - if you look at a sheet of paper at a grazing angle, the area taken by the paper's surface in your field of vision is much smaller than if you were facing the sheet of paper at normal incidence (this is the area part)


This means that the BRDF itself can take values greater than 1, without violating conservation of energy (since the BRDF doesn't represent energy). In fact, the specular BRDF is a Dirac function, and is infinite at a unique, infinitesimal angle (the specular reflection angle) and zero everywhere else, though it correctly integrates to 1, as expected for conservation of energy.


To get the actual energy reflected in a particular direction by the BRDF, you need to integrate the radiance for a given outgoing (or incoming) direction over all possible incoming (or, respectively, outgoing) directions. This will add up to at most 1. If the BRDF is physically correct, I mean.


This BRDF stuff is tricky to grasp at first, but it makes a lot of sense.

Edited by Bacterius, 27 February 2013 - 10:28 AM.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.


- Pessimal Algorithms and Simplexity Analysis

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.