Node Material and PBR

Creating PBR materials

It is incredibly easy to utilize Physically Based Rendering with Node Materials thanks to the PBRMetallicRoughness block.

You can use these playgrounds and materials as starting points for your own experiments to create PBR materials in the NME (note that the node material may take some time to load in the PG - the mesh will stay black until the material is loaded):

The inputs of the different PBR blocks are using the same names as in the PBRMetallicRoughnessMaterial class, so you can refer to this doc for explanations about them.

Some of the parameters are available as properties when clicking on the block in the NME.

For eg, for Reflection:

Reflection properties

Or for PBRMetallicRoughness:

PBR properties

As for the standard PBRMaterial, if no texture is provided for the Reflection / Refraction texture, the one declared at the scene level (scene.environmentTexture) is used instead.

By default, if something is connected to the a input of the FragmentOutput block, alpha blending is enabled. If you don't need alpha blending, don't connect this input.

Regarding the PBRMetallicRoughness block, you have access to each output component separately (ambient, diffuse, specular, ...) if you want or you can directly use lighting to get the composite output. In the names of the separate outputs, dir means direct (component from direct lights) and Ind means Indirect (component from indirect lighting, meaning the environment).

A note about image processing and manual compositing: Note that the composited lighting output of the PBRMetallicRoughness block also adds image processing from the scene. If you desire to to add additional components to the standard lighting setup, you will want to do the compositing yourself, using the separated components. The outputs of the separated components are in Linear color space. This is important because if you desire to calculate scene image processing in your manual composite, you'll need the ImageProcessing block. This block assumes input values in gamma color space by default and runs an internal conversation to a linear color space output. You will need to turn this conversion off in the ImageProcessing block properties to pass linear through without a conversion.