DONTNOD Physically based rendering chart for Unreal Engine 4
April 14, 2014 40 Comments
With permission of Dontnod entertainment http://www.dont-nod.com/
I get the permission from Dontnod entertainment to release the graphic chart I, Sophie Van de Velde (Lead environment) and Laurent Harduin (Lighter) made for the artists to help them with the physically based rendering (PBR) workflow present in the Unreal engine 4. This chart is an updated version of the previous chart I post on this blog DONTNOT specular and glossiness chart.
To save the chart, just right clik and chose save link target as… The chart is a PNG 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 Dontnod team and with Unreal engine 4 convention for textures based on the Disney “principled” BRDF use in the Unreal engine 4 [1]. The chart is use as predefined value that the artist color pick and use when creating textures. For the different meaning of the parameters except the Porosity you can refer to the Unreal engine 4 documentation: https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/index.html
For the details of some values, refer to the other article from this blog like feedding a physically based shading model or GDCEurope 2013 talk : The art and rendering of Remember Me.
BaseColor
The color is provide in sRGB 0-255.
The diffuse part of the base color (the one use by the non-metallic) must be in the range of the first gradient 50-243. There is some sample values of real world material in sRGB below the gradient. Some of these values are base on real world measured material (from misc sources, not done by us) and other are have been generated by Laurent Harduin. He take calibrated raw picture of representative material, take the luminance histogram in Photoshop and use the value of the medium axis for the luminance. Then he blur the picture and take one pixel inside the blurred region and use that as the color value. This explain why in few case like the clean cement the color and the luminance doesn’t match perfectly. We also lower a bit the value to take into account the invevitable specular present during the capture.
The reflectance part (the one use by metallic) must be in the range 186-255 (not present in the chart). Some example are provided below the grey square. Most of the time the metallic color of material match what the eye see.
Metallic
Simple monochrome linear parameter. Range is 0-1 but the gradient is from 0-255. The yellow sphere below represent in-engine capture of a sphere and a cube.
Roughness
The specular part of Disney “principled” BRDF is a GGX BRDF. It use a roughness parameter. This roughness is the “Disney roughness”, not the real GGX roughness. Disney Roughness = sqrt(Roughness). When use at runtime this Disney Roughness is transform to the GGX roughness with roughness = Disney Roughness * Disney Roughness.
The gradient display roughness from 0 for smooth (left) material to 1 for rough material (right).
The grey gradient are from 0 to 255 and red segments are displayed every 1/10 with a sphere like object 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 roughness.
The first row of sphere like object represent metallic object, the second row represent non-metallic object.
Note: The roughness here is coupled with the BRDF used by the Unreal engine 4, it may not be compatible with other engine or offline renderer.
Porosity
The Dontnod chart include an unusual parameter named Porosity. This parameter is the “open porosity” of a material. It can be used for driving weathering and aging effect (Pollution, rain, aging…). More details on its usage can be found in previous blog post: Water drop 3a – Physically based wet surfaces and Water drop 3b – Physically based wet surfaces. In practice Dontnod use it mainly with the dynamic wet formula provided in the mentionned previous post.
The range is remapped from 0-1 to 0-70% of open porosity. There is real worl image to try to give a feeling of what the value mean. An extremely porous material is the clay (70%), but open porosity can vary a lot for same material, clay could also be only 50%.
From Kevin Hnat thesis [2]. French translation from top to bottom. Clay, chalk, sand, limestone, granite.
Note: The porosity parameter is not used in the BRDF formulation. More research need to be done on this topic and currently there is only one porosity BRDF paper available which doesn’t fit with the current need.
Reflectance
There is no chart for the reflectance value of the Unreal engine 4, just let the value by default and apply a cavity map on it.
Difference with the old chart
The previous chart was based on modfied Unreal engine 3 where I introduced a new physically based renderer based on Blinn-Phong BRDF. This new chart is based on the Disney “principled” BRDF use in the Unreal engine 4 which is based on the GGX BRDF. The glossiness of the previous chart and the roughness of this one do not match. Moreover, the range is inversed. Previous specular value for metalic can be reuse for Unreal engine 4 reflectance parameter. UE4 use a mapped range of 0-1 to 0.08, so you need to do the conversion. But in practice there is so little difference that’s it is not necessary to use the precise values.
Reference
[1] Burley, “Physically based shading at Disney”, http://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf
[2] Hnat, thesis “Influence of surfaces micro-geometry on realistic rendering” in French, http://epublications.unilim.fr/theses/index.php?id=4820
Just an FYI, if you had saved the chart as a PNG file it would be smaller than the ZIP’d TGA and wouldn’t require the file extension hack.
Yes, I am aware of that. But I want toa void any lossy compression algorithm which may alter the value for the color picker. But still I am agree that the file is heavy 🙂
Since when is PNG lossy compression?
Haha, you are totally right and I am just stupid.
Don’t know why I was guessing that, messing with jpeg I think.
Thanks for the feedback I updated the post.
Hello and thank you for the chart. If I am not using a texture, but a constant to drive my base color I assume I would need to use the linear values like 0.04 for charcoal and such?
For baseColor the chart is only about texture. If you use constant, UE4 expect a linear RGB value [0-1]. You are right.
Merci 🙂
Pingback: Confluence: Sales
Very informative, thanks!
Hi ya – looking at the Siggraph paper for UE4 stuff, I had thought that “Disney’s roughness” was roughness^2, _not_ sqrt(roughness). Am I misunderstanding something?
Hi,
Be careful about what we are talking about.
What is present in the chart is the Disney roughness (the one which is perceptually linear).
When use in the engine you need to transform it to GGX roughness. This is roughness = DisneyRoughness * DisneyRoughness.
What I write in the article is the reverse. I said how to retrieve the DisneyRoughness based on GGX roughness
disneyRoughness = sqrt(roughness)
What does N&B refer to?
Haha, that is indeed a good question . N&b (noir et blanc in French ) mean b&w (black and white), i.e the texture is monochrome.
I haven’y spot this before , so thanks for the report 🙂
I update the base color description to explain a bit where the value of color albedo come from (Thanks to Steve Hill to ask the origin).
Pingback: Physically Based Rendering in Substance
Pingback: Experimenting with Physically based rendering in Blender Cycles | extremeistan
Pingback: NegativeMindException | 物理ベースレンダリングのためのマテリアル設定チートシート
Pingback: Simple PBR Shader for Blender 2.72 Cycles |
Pingback: PBR en Element 3D v2 (parte 3) | Dan Garotte Portfolio
Pingback: PBR in Element 3D v2 (part 3) | Dan Garotte Portfolio
Pingback: PBR a Element 3D v2 (part 3) | Dan Garotte Portfolio
Pingback: [Data] Dieletric Materials Brightness Value | Hap|仲林: The Artisteer
Pingback: 物理ベースレンダリングのためのマテリアル設定チートシート
Pingback: Weekly Summary:13 – Abigail Hookham's Game art and design journal
Pingback: Level Creation using Blender & Unreal – Part 11 – Side table creation & materials | Swimming Shop
Reblogged this on mark gicharu and commented:
really good reference to PBR reflectance values for the unreal engine https://www.unrealengine.com/what-is-unreal-engine-4
Pingback: Diary Entry (27/2/17 – 10/3/17) | Becky Saunders
Pingback: RAW to Albedo – Vito Malcolm, CG Artist
Pingback: Realtime Rendering Technology 資料 – Tech masuk
Pingback: ALBEDO TRONG THIẾT KẾ KIẾN TRÚC – Lumion Việt Nam
Pingback: Setting Up Atmospheric Forest Lighting in UE4
Pingback: Adagio VR – Part 1: Terrain – Imaginary Spaces
Pingback: Adagio VR – Partie 1: Terrain – Imaginary Spaces
Pingback: Setting Up Atmospheric Forest Lighting in UE4 – DFX.lv
Pingback: Working on the Fabric Materials for UE4 80lvl – DFX.lv
Pingback: Confluence: RF Revolution
Pingback: Confluence: RF Revolution
Pingback: 無極5註冊_硬核乾貨!各路專家編製+騰訊翻譯的《PBR指引手冊》(二) | 摩登3注册-摩登3测速官网
Pingback: 無極5平台網址_3D 貼圖硬核乾貨!各路專家編製+騰訊翻譯的《PBR指引手冊》(一) | 摩登3注册-摩登3测速官网
Pingback: Bringing Life to Legends: Character Art in Baldur’s Gate 3 – Trois dimensions