Rendering: Clearing Doubts About The Rendering Equation

From what I understand, the rendering equation can be considered in two ways:

  1. as a double integral with respect to the horizontal and vertical angles in a hemisphere, in spherical coordinates
  2. as a (single) integral where the differential is dw, a differential solid angle.

The rendering equation is recursive, because the incoming light can be thought of as the outgoing light from a different surface, thus, the rendering equation accounts for indirect illumination as well.

Due to the continuous nature of the equation, in order to solve it in realtime, one has to discretize it by breaking it up into a bunch of samples (e.g. SSAO) or by voxelizing the scene (e.g. GI with Voxel Cone Tracing).

If the (1) is true, why is it that in SSAO, the sample points are in the space within the hemisphere? Shouldn’t the sample points be located at a random point on the hemisphere’s “surface”?

[quote]If the (1) is true, why is it that in SSAO, the sample points are in the space within the hemisphere? Shouldn’t the sample points be located at a random point on the hemisphere’s “surface”?
[/quote]
The hemisphere has no “surface.” It is the infinitely large half-sphere above a surface point P. The meaning/reason of this is that any potential source of light within this infinitely large half-sphere has potentially a contribution on the incident light of point P.

However, even Screen-Space Ambient Occlusion is such a huge approximation of the rendering equation, such that:

  • Essentially SSAO is “somewhat” a local lighting model, because:
  • we assume the scene is being lit by a constant “ambient” white light coming from everywhere within the local hemisphere of a given surface point P
  • we break the recursiveness of the rendering equation by not taking into account the incident light of point P coming from other surfaces

The hemisphere has no “surface.” It is the infinitely large half-sphere above a surface point P. The meaning/reason of this is that any potential source of light within this infinitely large half-sphere has potentially a contribution on the incident light of point P.

However, even Screen-Space Ambient Occlusion is such a huge approximation of the rendering equation, such that:

  • Essentially SSAO is “somewhat” a local lighting model, because:
  • we assume the scene is being lit by a constant “ambient” white light coming from everywhere within the local hemisphere of a given surface point P
  • we break the recursiveness of the rendering equation by not taking into account the incident light of point P coming from other surfaces
    [/quote]
    Thanks for the reply :smiley:

But in the case of SSAO, since we’re specifying a radius for the hemisphere so that there’s sort of a bound within which the sample points can be generated, doesn’t that mean the hemisphere isn’t infinitely sized?

Besides, what I really don’t get is, assuming that we could solve the rendering equation in its continuous form, would the size of the hemisphere really matter? Any arbitrarily-sized hemisphere would capture every possible direction of light.

Also, can you confirm that my understanding of the rendering equation (what I described in the main post before I asked the question about SSAO) is correct? Thanks :slight_smile:

The thing is: The rendering equation says that “I want to know the incident light coming from any direction in the hemisphere.” And that is summed over all possible directions via the integral.

However, what we have to break it down to in order to actually implement it is:
“Yeah, we know that we have to get the incident light coming from that direction somehow. And if we were to do it correctly we’d have to actually shoot a ray into that direction and gather the incident light that this ray would contribute.”

With SSAO however, we are not really interested in the actual incident light coming from any direction, but we are interested in the direction this light would not come from, since that direction is blocked somewhere by other geometry. And since we also don’t want to shoot actual rays and intersect them with the geometry, we sample. So we have to just decide where we would like to sample. The simplest approach is just define some distance and sample there. Another solution could be sample multiple times with some stepping interval/strategy.

Ahhh, I see what you mean. So the “hemisphere radius” we define is just something we do because we can’t have an indefinite radius, since we need a bound for our samples, and the “hemispherically-bounded” sampling kernel in SSAO isn’t the hemisphere that the rendering equation involves.

What about the first part of my main post?:

^Is my understanding of the rendering equation correct?