Reflectance Distribution Function
BRDF #
“Bidirectional Reflectance Distribution Function” Function with 3 parameters:
- incomming light direction in polar coordinates
- surface point
- outgoing light direction in polar coordinates
result is the area the fractions of the light bands from the incomming light vector that is reflected to the outgoing light vector
vec3 brdf(vec2 in, vec2 x, vec3 out) {
return radiance(x, out) / irradiance(x, in);
// == radiance(x, out) / (radiance(x, in) * cos(theta))
}
Properties #
- Positivity
- Helmholz Reciprocity
- Energy conservation
Two interpretations #
-
You can use it to ask for incomming light, and and outgoing direction, how much light will be reflected there
-
For a given output direction, you can ask for the contributions from any incomming light directions.
Isotropic BRDF #
where:
= zenith angles;
= azimuth angle difference
Anisotropic BRDF #
SVBRDF #
“Spatially varying BRDF”
where:
consists of zenith and azimuth angles
: 2d position on the surface
BSSRDF #
“Bidirectional surface scattering RDF”
where:
= light entrance position
= light exitance position
BTF #
“Bidirectional texture function”
Includes non-local scattering effects like shadowing, masking, interreflections or subsurface scattering