DONTNOD specular and glossiness chart
April 30, 2012 21 Comments
With permission of my company : Dontnod entertainment http://www.dont-nod.com/
Edit: There is a more recent version of this chart for UE4 here.
I get the permission from my company to release the graphic chart I made for our artists to help them with our new physically based rendering (PBR) workflow.
In the past I provided a blurred and reduced version of it in my blog post: feeding a physical based shading model.
Any feedback are welcome and if this chart is useful for you, tell us.
I generate the chart by programming with Paint.net at high-resolution (2048×2048). I strongly advice again resizing or compressing (jpeg, png) the image because the value may be incorrect after the filtering.
Caution : The full resolution version of the chart is a tga file in a .zip that I rename to “.pdf” as WordPress don’t support zip file. So just right-click on the image below, save the pdf file then change the extension to “.zip”, decompress and you get the tga file.
(Real world pictures courtesy of Andrea Weidlich from “Exploring the potential of layerer BRDF models” siggraph asia 2009)
The chart has been design for my team and with our convention for textures. The chart is use as predefined value that the artist color pick and use when creating textures.
The chart is divide in two parts.
The upper is for specular color of material, the second is used for glossiness (roughness on the image).
We use a RGB DXT1 texture to store colored specular with sRGB encoding. All displayed value are sRGB in this part. To be clear: artist color pick values, create their texture, save texture as usual and at runtime the shader convert the sRGB value to linear RGB value.
To force artists to use right range of values for specular color, we define two gradient of color displayed on the left. One for dielectric material (no metallic) and one for metallic material.
The range of value for no metallic material goes from 40 to 75, which mean 0.017-0.067 in linear space which overlap the range 0.02-0.05 of common dielectric material.
The range of value for no metallic material goes from 155 to 255, which mean 0.33-1.0 in linear space which overlap the range 0.5-1 of common metallic material.
For both range we show with red line the value for common material. A “U” shape red line mean that the range of values inside the “U” can represent the material. The right values depends on its properties.
On the right we provided some common sample with exact values, or a range of values (indicate by the “<->”).
Note that even if your eyes don’t make the difference, there is different values in a range.
We use the alpha channel of the normal map DXT5 to store the grey level value of glossiness (roughness on the image). All values displayed are in linear RGB. To be clear: artist color pick values, create texture, save texture as usual and at runtime the shader use the value directly.
The gradient display glossiness from 0 for rough (left) material to 1 for smooth material (right).
The grey gradient are from 0 to 255 and red segments are displayed every 1/10 with a sphere below to show the in-game result of the designated value.
The first row of real world image above represent no metallic object, the second row represent metallic object. Goal is to give artist a better feeling of what is glossiness.
The top blank highligh on the top of the sphere is generated by an analytic point light in order to show the matching between analytic highligh and blurred cubemap.
Note : The glossiness chart is strongly coupled with the glossiness range chose in your game engine. These values are for our game engine glossiness range of 2-2048.