Saturday, December 5, 2015

Metallic vs Specular


With technology and the advancement of lighting/shaders comes new ways to do what was used in the past. Real time rendering has gone from no polygons, to flat shaded polygons, to shaded polygons to shaders and materials together. As tech gets better, more options open to developers in making things more accurate.

Take for example the specular map, which comprises of a black and white image where white is the most reflective and black has no reflection.


Left : No specular Right: full specular

As you can see, specular allows for a surface to have a reflection value. Variation of how much light is reflected is in the lightness and darkness of the spec map. 

This has been the most common method for most 3D software and game engines to render. 

There is a problem though, it lacks proper variance control. Objects are either smooth or rough, flat or reflective and sometimes a mix of both. Take a car that has been in the junkyard for too long for example, the paint would have a reflection (provided it was a glossy paint), the metal will have its own reflection which might not be as bright as the paint, then the metal may be work or have rust that eats away the overall shine. This is an example of layers of variance. Specular is useful for this, but when it comes to more accurate reflection and object roughness, the metallic layer is the direction to go and has now become the standard for real-time graphics developers


A roughness layer from shiny to dull.


A metallic layer from 0-1

So the question is, can a metallic and roughness layer mimic a specular?


The answer is yes.

In fact, developers that are finding the value in metallic/roughness are now preferring it to specular/gloss. 

http://forum.unity3d.com/threads/official-specular-vs-metallic-workflow.274612/

Disney use and prefer physically based rendering and metallic/roughness to their older methods due to the accuracy it provides. 

https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf



Unreal Engine 4, Unity, Frostbite Engine, Fox Engine and many other modern engines have now moved on to this method. Technology moves and everyone should move with it. 















No comments:

Post a Comment

Note: Only a member of this blog may post a comment.