CG: Microfacet BTDF

What is Microfacet BTDF

Microfacet BTDF stands for microfacet bidirectional transmission distribution function, which is a mathematical model used to describe how light is transmitted through a rough surface. In other words, it is a way to quantify how much light passes through a surface with tiny, microscopic bumps and valleys that affect the way light is reflected and transmitted.

Microfacet BTDF is commonly used in computer graphics and rendering to simulate the behavior of materials with complex surface structures, such as frosted glass or skin. The model takes into account the shape and orientation of the microfacets on the surface of a material, as well as the refractive indices of the material and the surrounding medium, to predict how light will be transmitted through the surface.

By accurately modeling the behavior of light at the microscale, microfacet BTDF allows for more realistic and detailed rendering of materials in computer graphics. It is an important tool for creating realistic simulations of light transmission through complex surfaces, which can be used in a variety of applications, from movie special effects to product design.

Microfacet BTDF vs. Normal BTDF

Simple Direct Light Rendering with Normal BRDF

Simple Direct Light Rendering with Microfacet BRDF

The main difference between microfacet BTDF and normal BTDF (bidirectional transmission distribution function) lies in the level of detail and complexity of the surface structure they consider.

Normal BTDF assumes that the surface is perfectly smooth and homogeneous, which means that it does not take into account the microscopic bumps and valleys that exist on most real-world surfaces. This simplification can work well for smooth surfaces like glass, but it is not suitable for materials with complex surface structures, such as frosted glass or skin, where the surface roughness plays a crucial role in light transmission.

Microfacet BTDF, on the other hand, takes into account the shape and orientation of the microfacets on a rough surface, allowing for more accurate modeling of how light is transmitted through the surface. It can simulate the scattering, absorption, and transmission of light at a microscale level, making it more suitable for materials with complex surface structures.

Evaluate the Microfacet BRDF

Here we apply approximation methods to evaluate microfacet BRDF&BTDF. Various approximation methods, such as the Beckmann approximation or the Trowbridge-Reitz approximation, can be used to simplify the microfacet BTDF and make it more computationally efficient. These methods can be useful for real-time rendering or other applications where speed is a priority. The formula is given as follows:

Where Geometry factor(G) is given like this:

The microfacet BRDF gives us a value like this around a sample point:

Similarly, by extending the formula to the other side of the sample point with Fresnel being well-considered, we can get a working microfacet BTDF.

Sample Microfacet BTDF

For using the Multi Importance Sampling technique, except for weight values in different directions, we’ll also need to map the sample points to the distribution we need. This is the PDF(probability density function) we need for it:

This can be done using the following sequence of steps:

  1. Decide between a diffuse or a specular reflection by comparing a uniform variate $\xi_1$ against$k_s$

  2. Scale and potentially offset the uniform variate  $\xi_1$ so that it can be reused for a later sampling step (similar to DiscretePDF::sampleReuse)

  3. In the diffuse case, generate a cosine-weighted direction on the sphere

  4. In the specular case:

    1. Sample a normal from the Beckmann distribution using  Warp::squareToBeckmann that I previously implemented.

    2. Reflect the incident direction using this normal to generate an outgoing direction.

Rendering Result

Rendering of the Ajax bust with a very rough refractive material.

Previous
Previous

Game Design: 1. Initial Proposal & Nondigital Prototype

Next
Next

CG: Wavelength-dependent Dispersion Path Tracing Rendering