0
\$\begingroup\$

I'm working on a physically-based renderer, and I've come to a sort of crossroads regarding the Fresnel factor. I'm having trouble finding the best way to represent it. I know that Schlick's Fresnel approximation is based off IOR, but IORs can go up to 38.6 for a meta-material, and 4.05 for a natural element, which will make representing these in a 0-1 image difficult and confusing. I also noticed that no one really uses IOR maps.

I also read a paper on Unreal's PBR integration, and I discovered that they initially wanted to use a F0 of 0.4, for non-metals. What would be the F0 for metals, in this case, and isn't the static value of 0.4 worth the limitations for that tiny bit of memory? I believe the F0 tends to the base color, as it becomes more metallic, but I'd like confirmation.

Finally, there's reflectivity or specular, as is used in modern PBR equations. Is there a standard for this, in regard to getting an F0? It seems arbitrary; is it a float value up to that directly maps to F0?

I am not sure if there are any real reasons to not combine specular color and base color, as Unreal has done this, before. I can't think of a single real reason, even for more stylized implementations.

What is the best PBR real time Fresnel function?

\$\endgroup\$
1
  • 2
    \$\begingroup\$ Can you be more explicit about the criteria you're using to evaluate what's "best"? I see "Fresnel factor should map naturally to a 0-1 range" but I'm less clear on what else you consider desirable in a solution. This question might also be more suited to the Computer Graphics StackExchange, since in game development a lot of us are more often just using whatever lighting models are provided by our current tools, rather than implementing new ones. ;) \$\endgroup\$ Commented Sep 2, 2016 at 3:27

1 Answer 1

0
\$\begingroup\$

I cross-posted on gamedev.net, for anyone who is interested in an answer: http://www.gamedev.net/topic/681857-what-is-the-best-pbr-real-time-fresnel-function/.

Basically, I've received the following answers:

  • IOR Is not used for F0 directly, usually, because it varies so much.
  • The metalness workflow usually combine diffuse and specular into a base color. That is the main point of a metalness workflow. It limits inputs, and prevents people from going crazy with some inputs, as well as takes less resources on the G-Buffer, but also may give way to bugs, and fails to replicate some more eccentric materials.
  • The specular workflow simply demands that the user makes MOST dielectrics have a black specular, and most metals have a black diffuse, except for more eccentric subtances. This is basically what metalness does.
  • The metalness uses 0.4 for dielectrics (nonmetals), and base color for metals for the F0 usually.

I didn't ask this, but it's it's useful to remember glossiness=1-roughness.

So in summary, don't use IOR, Specular is a bit more complex and uses more resources, but is more accurate than metalness.

\$\endgroup\$
0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.