User Tools

Site Tools


01_user_documentation:05_object:02_light:12_shaders:04_ggx

This is an old revision of the document!


GGX

A GGX (Trowbridge-Reitz) microfacet BRDF shader.

The BRDF is:

$f_r = k_d / π + D(h) · F(l,h) · G(l,v) / (4 · cos θ_i · cos θ_o)$

where:

D(h) := GGX normal distribution function:

$D = α² / (π · (cos²θ_h · (α²−1) + 1)²)$

F(l,h) := Schlick Fresnel approximation:

$F = F₀ + (1−F₀)(1−cos θ_{lh})⁵$

, where F₀ = specular

G(l,v) := Smith height-correlated masking-shadowing:

$G = G₁(l) · G₁(v), G₁(v) = 2/(1 + √(1 + α² tan²θ_v))$

Importance sampling uses GGX NDF half-vector sampling:

$θ_h = atan(α √(ξ₁/(1−ξ₁))), φ_h = 2π ξ₂.$

Transmission is supported via the optional transparency, which enables Fresnel-weighted straight-through (delta BTDF) in the CPU light model only.

01_user_documentation/05_object/02_light/12_shaders/04_ggx.1790080652.txt.gz · Last modified: (external edit)