Node Material and PBR
Creating PBR materials
It is incredibly easy to utilize Physically Based Rendering with Node Materials thanks to the PBRMettalic_Roughness 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):
- Full use of all PBR blocks:
- PG: PBR Blocks Playground
- Material: PBR Blocks NME
- PBR material with sheen only:
- PBR material with clear coat only:
- PBR material with sub surface only:
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
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.
PBRMetallicRoughness block, you have access to each output component separately (
specular, ...) if you want or you can directly use
lighting to get the composite output. In the names of the separate outputs,
direct (component from direct lights) and
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.