Profile picture
Eric Arnebäck @erkaman2
, 26 tweets, 6 min read Read on Twitter
someone asked me a good question, so I will write down the reply as a twitter thread below :D
Question is something like: "Where do the BRDF formulas come from? How can we make our own?"
Answer:
I will mostly explain specular BRDFs, since they are most used.
the most common way of making them, is by approximating the material
surface as a bunch of small mirrors called microfacets.
for very rough materials, these microfacets will have normals pointing
in all kinds of directions(left image). For smooth materials, there is less normal variation(right image),
and very smooth materials will closely resemble a flat mirror surface.
people use use a formula called the Torrance Sparrow model(see image) for describing microfacet materials.
It consists of three terms D(normal-distribution function NDF), G(geometric shadowing function),
and F(fresnel function)
The NDF(D), describes the distribution of the microfacet normals of the surface.
If high roughness, then normals have great variation, and if low roughness,
there is little variation.
There are several choices of NDF, which can be found in the table below
[1] graphicrants.blogspot.com/2013/08/specul…
People mostly seem to favor GGX nowadays. It has longer tails than Beckman, which
seems to match real materials better. I think GGX first appeared in the below paper
[2] cs.cornell.edu/~srm/publicati…
And people dont seem to create and derive their own NDFs anymore nowadays. They just try out the NDFs already out there, and pick the one that has an appearance that they like.
The G function describes the geometric shadowing of the microfacets.
some microfacets will occlude other microfacets, and cause shadows to be formed(black in image) in the microsurface, and G function models this phenomenon.
You can just use one of the G functions in table [1] in your BRDF. For very detailed info on the topic of G, see the excellent paper by Heitz
jcgt.org/published/0003…
Finally, F describes the Fresnel reflectance, which describes how more light is reflected from the surface, if you view at it from a grazing angle.
The F function was originally derived from Maxwell's equations. See my old tweet
For possible values and approximations of F, see
graphicrants.blogspot.com/2013/08/specul…
pbr-book.org/3ed-2018/Refle…
to make your own BRDF with this model, you play around with different variations of choices of D, G, and F(from e.g. table 1), until you find one you like, and thats how most people seem to make their BRDFs nowadays.
Another thing people do, is that they take complicated BRDF models from research papers, and then curve-fit them and simplify them enough, until they can be used for real-time purposes. For an example of this, see e.g.
blog.selfshadow.com/publications/s…
And then there are of course people who are researchers and are developing new BRDFs. I will list some miscellaneous links below on the topic of improving and making and choosing BRDFs:
Good info and derivations of Microfacet models in PBR:
pbr-book.org/3ed-2018/Refle…
Physically-Based Shading at Disney
disney-animation.s3.amazonaws.com/library/s2012_…
Moving Frostbite to Physically Based Rendering 3.0
seblagarde.files.wordpress.com/2015/07/course…
Rendering the World of Far Cry 4
twvideo01.ubm-us.net/o1/vault/gdc20…
A Multi-Faceted Exploration
blog.selfshadow.com/2018/05/13/mul…
Multiple-Scattering BRDF
patapom.com/blog/BRDF/MSBR…
Real Shading in Unreal Engine 4
cdn2.unrealengine.com/Resources/file…
The Road Toward Unified Rendering with Unity's High Definition Render Pipeline
advances.realtimerendering.com/s2018/Siggraph…
See Laurent's publications on the topic
belcour.github.io/blog/publicati…
And also Eric Heitz
eheitzresearch.wordpress.com/research/
will probably add more links below, when I remember them.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Eric Arnebäck
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!