PBR Workflow: Tools, Resources and Additional Reading

Banner Image

An Industry-Wide Revolution

The addition of physically based rendering to WorldViz products brings us into the fold of an industry-wide revolution in artist workflows. Physically based rendering has a few new concepts and methods compared to older methods, as well as some amazing new capabilities that simplify artist workflows an make sure that once an asset has been made once, it can be used anywhere without having to retouch the source files. This is a list of tools and resources to help you on your way.

Krzysztof Narkowicz's Interactive PBR Example

The most intuitive way to get a feel for the capabilities of a shader is often to simply mess around with some sliders and see how it responds. Krzysztof Narkowicz's embedded below from Shadertoy does just that, and even includes a realtime display of what's going on at the microsurface level.


Permalink: https://www.shadertoy.com/view/4sSfzK

Babylon.js GLTF Exporter for 3DS Max

At the moment, the best way to export models for use with Vizard's new PBR workflow is the GLTF format. GLTF stands for GL Transmission Format, and is designed as an engine-neutral way to deliver models ready for use with PBR conventions. The most popular GLTF exporter for 3ds Max is the one produced by the good people at the Babylon.js project.

Instructions for download and use can be found here:
https://doc.babylonjs.com/resources/3dsmax_to_gltf

Be sure to use the "scale factor" option to convert the units to meters for Vizard/Vizible use. e.g. if your 3ds max system unit is set to 1 unit = 1 cm, the scale factor to use in the exporter is 0.01.

Comparison to the old OSGB workflow

One of the awesome things about the approach is that cube maps are now part of environments instead of individual objects, so objects can be easily transferred between scenes and just reflect what's around them. This is as compared to having to manage reflections on a per-object basis with the old OSGB workflow, and having to replace them on every object anytime you want to bring it to a new scene. With this workflow, you make a prop once and it's done forever.

The new workflow also allows reflections to be easily blurred for different levels of polish, and that blur is controllable with a map. The same approach works for non-metallic reflections as well (e.g. plastic), which are also automatic.

It also comes with some lighting improvements from interpreting color maps in a gamma correct way.

Sketchfab's Material Inspection Tools

In addition to the interactive viewer above, it's also possible to take a look at things the other way around. There are quite a lot of PBR ready models on Sketchfab, and if you like what you see and want to know what's going on in the individual textures to achieve that result, try out their inspection tools by clicking on a model and pressing "I" on the keyboard, or by clicking the icon that looks like a stack of planes. Here's one of mine, created from a scan and further processed in some additional tools:

Tools

Here at WorldViz the main tools in our Art-Dev toolbelt have long been Inspector, Adobe Photoshop and Autodesk 3ds Max. We use Max to make and bake our 3D models, Photoshop to texture them, and our visual editor Inspector to add additional options like realtime lights and particle effects. With the greater nuance possible with PBR, a set of additional tools comes in handy.

Cube Map Processing
A core component of Physically Based Rendering is Image Based Lighting - ambient light and refections that come from the scene around an object instead of a flat value and a reflection stored with the model. To do this, an HDR image needs to be specially processed. One such program to do this is Lys, from Knaldtech.

NVidia DDS Plugin and CubeMapGen
NVidia's DDS photoshop plugin, and AMD's CubeMapGen tool are a decade old at this point but still sometimes find a place in a modern workflow. DDS is one of the more unusual texture formats, specific to realtime 3D graphics, and is not widely supported outside of that realm. CubeMapGen is old and reliable, but lacks modern features and can be pretty clunky to to work with. Still, the modified version has a one step process for ambient cube maps, and it can also switch cube maps from strip style to the cross format needed for some programs.

Material Editing
If you've ever tried to create a material from scratch within Photoshop, you'll know that the more map types you have the tougher it is to keep everything synchronized. Want to move a bolt an inch to the right in your color map? You'd better do it in your normal map, gloss map, ao map and anything else you're using as well. For places where you'd normally us a tool like content aware fill, you simply can't. There's no way to duplicate the sampling to other similar layers.

In come 3rd party tools specifically designed for this purpose.

Substance Painter

One of my personal favorites is Substance Painter. Instead of working on a flat surface in photoshop, you instead do all your masking and details directly on the model. You still have layers and brushes, but each of these affects multiple map types at once. Want to paint roughed up metal to your base map, gloss, normal and metalness? You can! It comes with a large number of procedural materials as well. For each asset, Substance Painter require the input of both a realtime ready (low poly) mesh and a high detail mesh in order to obtain the best results.

Substance Designer

Wonder where those procedural materials come from in the first place? Substance Designer allows you to create base materials from algorithmic inputs. Hey, wasn't Allgorithmic the name of the company that makes it? You have a huge set of inputs and outputs that once again can be used to affect multiple properties at once. The result can be fed back into Substance Painter for widespread use.

ZBrush

ZBrush falls mostly under the category of digital sculpting. It's widely used in the creation of high poly meshes, both in the video game and film industries. It includes numerous tools for both organic and hard surface modeling, and also allows sculpting in the tens of millions of polygons through several innovative rendering tricks that can't be reproduced in low poly software like 3ds Max.

Quixel, Knald, Mudbox and 3D Coat also fulfill similar roles.

Additional Reading

The widespread adoption of Physically Based Rendering has led to a number of wonderful articles written on the subject from various sources. Everything from the basic theory, the practical application, the transition from a specular to a metalness workflow, and the inner workings of the underlying OpenGL code are all well documented across multiple sources. Some of the best are linked below.

Allegorithmic:
Allegorithmic, the creators of such tools as Substance Painter, Substance Designer, and Bitmap2Material have written an in-depth two part guide on the core concepts of Physically Based Rendering.

Marmoset:
The game engine Marmoset has their own detailed collection of articles as well. This and the docs by Allegorithmic are our go-to options for explaining PBR to people that are not yet familiar with it. Marmoset has its own tool for displaying models online, often seen on sites like ArtStation, which like Sketchfab has some wonderful texture viewing options.

> PBR Texture Conversion/
> Basic Theory of Physically Based Rendering
> Physically Based Rendering And You Can Too!

Filmic Worlds:
Everything is Shiny and Everything has Fresnel are two often shared articles among texture artists demonstrating that even objects that people don't think of as shiny, such as cardboard, still reflect some amount of light as specular highlighting, and the brightness of that highlight has a falloff dependent on the viewing angle.

Learn OpenGL:
Learn OpenGL is resource on getting a deep understanding of how rendering works in OpenGL, and what you need to know to write your own shaders. It can be a little complicated to go into if you don't have any experience with GLSL or the C++ programming language, but if you're comfortable with the technical side of things check out.

3D Coat Documentation:
3D Coat, the maker of 3D Coat, have created a short and clear guide with some nice illustrations to further get the point across.

Other Theory
> http://www.codinglabs.net/article_physically_based_rendering.aspx
> http://www.codinglabs.net/article_physically_based_rendering_cook_torrance.aspx
> http://blog.wolfire.com/2015/10/Physically-based-rendering

Assets and Resources

Textures and Materials
If you don't wish to capture your own photos for textures or wire up your own procedural ones, there are a variety of resources for obtaining suitable stock content.
> Textures.com (semi-free)
> Megascans (paid)
> HDRI Haven (100% free)
> Substance Source (paid)
> Substance Share (free)

Stock Imagery
> Pexels (free)
> Vecteezy (widely free)

3D Models
Similarly, there are also a variety of 3D model libraries, though the quality and standards of the content can vary.

> Sketchfab
> CG Trader
> Turbosquid