PBR Textures
Physically based rendering, or PBR, is a method of producing materials in 3D applications which simulates how light interacts with similar materials in the real world. The goal of physically based rendering is to produce an end product in your 3D rendering engine that provides photorealistic results on your object's surfaces.
Modo has several base materials available which use the PBR model, such as the Principled Shader,Unity Material, and Unreal Material.
Materials that support the PBR model offer a series of inputs which control how light and surface attributes are evaluated for final rendering. Specular Amount, Roughness, and Metallic are some of the inputs you might expect to see on a PBR material.
You can control these inputs through a series of UI controls and sliders within the material in the Shader Tree, or you can import textures into the Shader Tree, where each texture map is assigned to a specific input on the material. The value of each pixel within the imported texture map controls the intensity, color, or value of the specific input.
PBR Loader
You can use the Modo PBR loader to import textures for use in PBR materials. Click Texture > PBR > Load PBR, or click the PBR icon in the Shading tab above the Shader Tree in the Modo layout.
PBR Textures Filename Conventions
Make sure your textures follow naming conventions when importing them for PBR materials. The PBR loader in Modo assumes that the name and input type of the image are separated by an underscore ("_"). For example, myImageName_inputType.tga, inputType_myImageName.tga are both valid conventions.
The PBR loader searches the image name string and looks for any matches defined in the Shader PBR + Effects popover. You can enter definitions in the Shader PBR + Effects popover to tell Modo which Effect should be assigned to imported textures in the Shader Tree.
For example, an artist enters Diffuse in the Diffuse Color property of the
Note: Effect in the Shader Tree tells Modo what kind of effect the selected layer should have on the object's surface. See Layer Effects for more information.
Note: You can assign type names for material inputs in the Shader PBR + Effects popover. These definitions are not case sensitive. See PBR Textures for more information.
Importing Unreal PBR Textures with the PBR Loader
1. | From the Texture > PBR menu, open the Preferences Popover. |
The Shader PBR + Effects popover opens.
2. | Expand the UE4 menu and click Enable. |
All definitions under the UE4 menu are enabled.
3. | Under the UE4 menu, enter a string that Modo can search for during import next to each of the texture map types you want to import. |
For example, if you use the word basecolor in your diffuse map filenames, type basecolor into the Base Color property, and if you use the word normal in your normal map filenames, type normal into the Normal property.
Note: These terms do not need to be case sensitive, but they need to match the exact term in the filename which has to be separated by an underscore from the rest of the filename, for example myTextureMap_basecolor.png.
Tip: If you use several terms to define your texture maps, you can use multiple definitions for one input by separating each definition with a semi-colon. For example, Albedo;Base;Col.
4. | Under the Variables menu, select Unreal from the Create Material dropdown. |
An Unreal material is created for your PBR textures once you import them.
5. | Under the Variables menu, ensure Create Folder and Use Folder Name are enabled, then close the Shader PBR + Effects popover. |
A folder layer is created in the Shader Tree for your PBR textures once textures are imported, and the folder layer is named after the folder containing the textures on disk.
6. | From the Texture > PBR menu, click Load PBR. |
7. | Select all the textures you want to import for your Unreal material and click Open. |
The textures are imported to the Shader Tree and each assigned an Effect based on the definitions created in step 3.
Tip: Select the material folder layer and use the Polygon Tag dropdown in Properties > Texture Layers to assign the material to a set of polygons.
Adding Custom Definitions
If there are no definitions available for your preferred workflow in the Shader PBR + Effects popover, you can add your own custom definitions. The following example walks you through how to add a custom definition for diffuse color textures that you want to use as ambient occlusion maps. Diffuse color maps can be used as ambient occlusion maps as a quick way to obtain ambient occlusion:
- From the Texture > PBR menu, click Preferences Popover.
- Under Additional Definitions, click Add.
- Enter the filename convention for your ambient occlusion maps in Search String, for example: AO.
- In the RGBA dropdown, select Diffuse Color.
- In the Blend Mode dropdown, select Multiply.
A new definition is added to the popover and options are exposed.
To learn more about the PBR loader filename conventions, see PBR Textures Filename Conventions. The PBR loader searches the imported texture or material name for this string, and assigns the RGBA effect.
The Diffuse Color effect is applied to textures imported with AO in the filename.
The Multiply blend mode is assigned so darks and lights within the texture are multiplied on top of textures below this layer, creating the effect of shadows and highlights.
Adding Definitions for Packed Maps
Packed texture maps allow you to have a single texture which packs different map types into each RGBA channel. For example, you could have a single texture file named OcclusionRoughnessMetallic where the red channel contains the ambient occlusion map, the green channel contains the roughness map, and the blue channel contains the metallic map.
The PBR loader supports the loading of packed maps, and assigns each channel the desired effect.
To define effects for packed maps and their channels:
- From the Texture > PBR menu, click Preferences Popover.
- Under Additional Definitions, click Add.
- Enter the filename convention for your packed maps in Search String, for example: packed.
- Enable Packed.
- Select the desired effect for the red channel from the Red dropdown.
- Select the desired effects for the Green, Blue, and Alpha channels. Set (none) if you don't want an effect defined for that channel.
For example, if your red channels contain the roughness map, select Roughness from the dropdown.
PBR Loader Options
Click Texture > PBR or click the PBR button in the Shading tab above the Shader Tree in the Modo layout to access the PBR loader options.
Loading PBRs
You can load PBR textures by clicking the Load PBR option. This options allow you to select an image or multiple images to import. Once an image is selected, the loader imports the image and any image in the same folder that has the same name into the Shader Tree. If multiple files are selected, Modo loads just those in without searching for others.
For example, the PBR loader assumes myimagename_2k is the name of the texture, and looks for other files in the same folder with myimagename_2k in the filename: myimagename_2k_diffuse.tga.
If you only want to import a single PBR texture, click Load Single With Effect. This option does not search for other textures in the same folder with the same name.
Each imported image is then assigned an Effect in the Shader Tree based on the input type defined in the file name. In the following example, the PBR loader assumes diffuse is the input type: myimagename_2k_diffuse.tga.
Note: You can define input types in the PBR Textures.
Setting Effects
You can assign Effects to existing layers in the Shader Tree using the Set Effects options. These layers do not have to contain image clips, and depending on which Set Effect option you select, Modo searches either the layer name or the image clip name for the name and PBR definition.
To set effects to existing layers in the Shader Tree:
1. | Click Texture > PBR > Preferences Popover and make sure the Shader PBR + Effects popover is populated with the PBR definitions you require. |
See Importing Unreal PBR Textures with the PBR Loader and PBR Textures for more information.
2. | Select a layer in the Shader Tree you would like to automatically assign an Effect to. |
Note: The image clip in the layer or the layer name must use the PBR naming conventions based on the definitions you set in the Shader PBR + Effects popover. See PBR Textures Filename Conventions.
3. | Click Texture > PBR > Set Effects (Selected Layers) if you'd like to automatically assign an effect to only the selected layer based on the layer's image clip, OR |
Click Set Effects (Selected and Related) if you'd like to automatically assign effects to the selected layer and all layers sharing the same image clip name, OR
Click Set Effects (Whole Tree) if you'd like to automatically assign effects to all layers in the Shader Tree based on each of the layer names, regardless of whether the layer contains an image clip or not, OR
Click Set Effects (Selected, Item Name) if you'd like to automatically assign effects to the selected layer and all layers sharing the same layer name, regardless of whether the layer contains an image clip or not.
PBR Loader Preferences
Click Texture > PBR > Preferences Popover, or click the PBR button > Preferences Popover in the Shading tab above the Shader Tree in the Modo layout to access the PBR Loader preferences. This opens the Shader PBR + Effects popover.
Variables
Variables settings affect the way PBR textures are imported into the Shader Tree.
When enabled, a single folder layer is created in the Shader Tree for the textures imported with the PBR loader. |
|
When enabled, the folder created with Create Folder is renamed to match the name of the folder on disk to which the imported textures belong to. |
|
When enabled, a single texture locator is created and each imported texture is assigned to it. When disabled, each imported texture is assigned to its own texture locator. |
|
When enabled, any normal maps imported with the PBR loader have their Colorspace property set to None. When disabled, the Colorspace of imported normal maps is set to default. |
|
When enabled, a listener is added to listen for item rename operations, and when a texture layer is renamed in the Shader Tree, the appropriate Effect is assigned to the item in the Shader Tree. For example, if a texture layer is renamed to myImageLayer_Normal, the Effect is set to whatever Normal is defined as in the Preferences Popover. |
|
Select one of the following options from the Create Material dropdown to add the selected material to the bottom of the group of imported textures in the Shader Tree: • None - Adds no material layer. • Physically Based - Adds a Material layer with the Shading Model set to Physically Based. • Principled - Adds a Material layer with the Shading Model set to Principled. • Unreal - Adds an Unreal Material layer. • Unity - Adds a Unity Material layer. • GLTF - Adds a glTF Material layer. |
Common
Common definitions add PBR effects commonly used by shaders such as diffuse maps to the imported textures. These effects can usually be found in the Basic Channels menu in the Effects column of the Shader Tree.
Note: Definition names are not case sensitive.
Enable all Common definitions. Common definitions are used during the import of texture files through the PBR loader. |
|
Disable |
Disable all Common definitions. No Common definitions are used during the import of texture files through the PBR loader. |
Diffuse Color |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Diffuse Color effect to the imported texture if it is found. For example, entering diffuse into the property means any texture imported using the PBR loader with diffuse within the filename, separated by an underscore ("_") are assigned the Diffuse Color effect in the Shader Tree. |
Bump |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Bump effect to the imported texture if it is found. For example, entering bump into the property means any texture imported using the PBR loader with diffuse within the filename, separated by an underscore ("_") are assigned the Bump effect in the Shader Tree. |
Displacement |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Displacement effect to the imported texture if it is found. For example, entering displacement into the property means any texture imported using the PBR loader with displacement within the filename, separated by an underscore ("_") are assigned the Displacement effect in the Shader Tree. |
Normal |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Normal effect to the imported texture if it is found. For example, entering normal into the property means any texture imported using the PBR loader with normal within the filename, separated by an underscore ("_") are assigned the Normal effect in the Shader Tree. |
Specular Amount |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Specular Amount effect to the imported texture if it is found. For example, entering specAmt into the property means any texture imported using the PBR loader with specAmt within the filename, separated by an underscore ("_") are assigned the Specular Amount effect in the Shader Tree. |
Roughness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Roughness effect to the imported texture if it is found. For example, entering rgh into the property means any texture imported using the PBR loader with rgh within the filename, separated by an underscore ("_") are assigned the Roughness effect in the Shader Tree. |
Diffuse Amount |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Diffuse Amount effect to the imported texture if it is found. For example, entering diffAmt into the property means any texture imported using the PBR loader with diffAmt within the filename, separated by an underscore ("_") are assigned the Diffuse Amount effect in the Shader Tree. |
Principled
Principled definitions add Principled PBR effects to the imported textures. These effects can usually be found in the Principled menu in the Effects column of the Shader Tree.
Enable all Principled definitions. Principled definitions are used during the import of texture files through the PBR loader. |
|
Disable |
Disable all Principled definitions. Principled definitions are not used during the import of texture files through the PBR loader. |
Metallic |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Metallic effect to the imported texture if it is found. For example, entering mtl into the property means any texture imported using the PBR loader with mtl within the filename, separated by an underscore ("_") are assigned the Principled > Metallic effect in the Shader Tree. |
Specular Tint |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Specular Tint effect to the imported texture if it is found. For example, entering specTint into the property means any texture imported using the PBR loader with specTint within the filename, separated by an underscore ("_") are assigned the Principled > Specular Tint effect in the Shader Tree. |
Sheen |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Sheen effect to the imported texture if it is found. For example, entering sheen into the property means any texture imported using the PBR loader with sheen within the filename, separated by an underscore ("_") are assigned the Principled > Sheen effect in the Shader Tree. |
Sheen Tint |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Sheen Tint effect to the imported texture if it is found. For example, entering shnTint into the property means any texture imported using the PBR loader with shnTint within the filename, separated by an underscore ("_") are assigned the Principled > Sheen Tint effect in the Shader Tree. |
Flatness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Flatness effect to the imported texture if it is found. For example, entering flat into the property means any texture imported using the PBR loader with flat within the filename, separated by an underscore ("_") are assigned the Principled > Flatness effect in the Shader Tree. |
Anisotropic |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Principled > Anisotropic effect to the imported texture if it is found. For example, entering anis into the property means any texture imported using the PBR loader with anis within the filename, separated by an underscore ("_") are assigned the Special Effects > Anisotropic effect in the Shader Tree. |
UE4
UE4 definitions add Unreal PBR effects to the imported textures. These effects can usually be found in the Unreal menu in the Effects column of the Shader Tree.
Enable all UE4 definitions. UE4 definitions are used during the import of texture files through the PBR loader. |
|
Disable |
Disable all UE4 definitions. UE4 definitions are not used during the import of texture files through the PBR loader. |
Metallic |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Metallic effect to the imported texture if it is found. For example, entering mtl into the property means any texture imported using the PBR loader with mtl within the filename, separated by an underscore ("_") are assigned the Unreal Metallic effect in the Shader Tree. |
Base Color |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Base Color effect to the imported texture if it is found. For example, entering color into the property means any texture imported using the PBR loader with color within the filename, separated by an underscore ("_") are assigned the Unreal Base Color effect in the Shader Tree. |
Roughness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Roughness effect to the imported texture if it is found. For example, entering rgh into the property means any texture imported using the PBR loader with rgh within the filename, separated by an underscore ("_") are assigned the Unreal Roughness effect in the Shader Tree. |
Specular |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Specular effect to the imported texture if it is found. For example, entering spec into the property means any texture imported using the PBR loader with spec within the filename, separated by an underscore ("_") are assigned the Unreal Specular effect in the Shader Tree. |
Emission |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Emissive Color effect to the imported texture if it is found. For example, entering emisCol into the property means any texture imported using the PBR loader with emisCol within the filename, separated by an underscore ("_") are assigned the Unreal Emissive Color effect in the Shader Tree. |
Normal |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Normal effect to the imported texture if it is found. For example, entering norm into the property means any texture imported using the PBR loader with norm within the filename, separated by an underscore ("_") are assigned the Unreal Normal effect in the Shader Tree. |
Bump |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Bump effect to the imported texture if it is found. For example, entering bump into the property means any texture imported using the PBR loader with bump within the filename, separated by an underscore ("_") are assigned the Unreal Bump effect in the Shader Tree. |
Ambient Occlusion |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Ambient Occlusion effect to the imported texture if it is found. For example, entering AO into the property means any texture imported using the PBR loader with AO within the filename, separated by an underscore ("_") are assigned the Unreal Ambient Occlusion effect in the Shader Tree. |
Subsurface Color |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Subsurface Color effect to the imported texture if it is found. For example, entering srfCol into the property means any texture imported using the PBR loader with srfCol at the end of the file name are assigned the Unreal Subsurface Color effect in the Shader Tree. |
Clearcoat |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Clearcoat Amount effect to the imported texture if it is found. For example, entering clr into the property means any texture imported using the PBR loader with clr within the filename, separated by an underscore ("_") are assigned the Unreal Clearcoat Amount effect in the Shader Tree. |
Clearcoat Roughness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Clearcoat Roughness effect to the imported texture if it is found. For example, entering clrRgh into the property means any texture imported using the PBR loader with clrRgh within the filename, separated by an underscore ("_") are assigned the Unreal Clearcoat Roughness effect in the Shader Tree. |
Opacity |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unreal Opacity effect to the imported texture if it is found. For example, entering opacity into the property means any texture imported using the PBR loader with opacity within the filename, separated by an underscore ("_") are assigned the Unreal Opacity effect in the Shader Tree. |
Unity
Unity definitions add Unity PBR effects to the imported textures. These effects can usually be found in the Unity menu in the Effects column of the Shader Tree.
Enable all Unity definitions. Unity definitions are used during the import of texture files through the PBR loader. |
|
Disable |
Disable all Unity definitions. Unity definitions are not used during the import of texture files through the PBR loader. |
Metallic |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Metallic effect to the imported texture if it is found. For example, entering mtl into the property means any texture imported using the PBR loader with mtl within the filename, separated by an underscore ("_") are assigned the Unity Metallic effect in the Shader Tree. |
Albedo |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Albedo effect to the imported texture if it is found. For example, entering albedo into the property means any texture imported using the PBR loader with albedo within the filename, separated by an underscore ("_") are assigned the Unity Albedo effect in the Shader Tree. |
Smoothness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Smoothness effect to the imported texture if it is found. For example, entering smooth into the property means any texture imported using the PBR loader with smooth within the filename, separated by an underscore ("_") are assigned the Unity Smoothness effect in the Shader Tree. |
Emission |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Emission effect to the imported texture if it is found. For example, entering emis into the property means any texture imported using the PBR loader with emis within the filename, separated by an underscore ("_") are assigned the Unity Emission effect in the Shader Tree. |
Normal |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Normal effect to the imported texture if it is found. For example, entering normal into the property means any texture imported using the PBR loader with normal within the filename, separated by an underscore ("_") are assigned the Unity Normal effect in the Shader Tree. |
Bump |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Bump effect to the imported texture if it is found. For example, entering bump into the property means any texture imported using the PBR loader with bump within the filename, separated by an underscore ("_") are assigned the Unity Bump effect in the Shader Tree. |
Ambient Occlusion |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Ambient Occlusion effect to the imported texture if it is found. For example, entering AO into the property means any texture imported using the PBR loader with AO within the filename, separated by an underscore ("_") are assigned the Unity Ambient Occlusion effect in the Shader Tree. |
Detail Mask |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Detail Mask effect to the imported texture if it is found. For example, entering detailMask into the property means any texture imported using the PBR loader with detailMask within the filename, separated by an underscore ("_") are assigned the Unity Detail Mask effect in the Shader Tree. |
Detail Albedo x2 |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Detail Albedo x2 effect to the imported texture if it is found. For example, entering detailAlbedo into the property means any texture imported using the PBR loader with detailAlbedo within the filename, separated by an underscore ("_") are assigned the Unity Detail Albedo x2 effect in the Shader Tree. |
Detail Normal |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the Unity Detail Normal effect to the imported texture if it is found. For example, entering detailNormal into the property means any texture imported using the PBR loader with detailNormal within the filename, separated by an underscore ("_") are assigned the Unity Detail Normal effect in the Shader Tree. |
GLTF
GLTF definitions add glTF PBR effects to the imported textures. These effects can usually be found in the glTF menu in the Effects column of the Shader Tree.
Enable all GLTF definitions. GLTF definitions are used during the import of texture files through the PBR loader. | |
Disable |
Disable all GLTF definitions. GLTF definitions are not used during the import of texture files through the PBR loader. |
Metallic |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Metallic effect to the imported texture if it is found. For example, entering mtl into the property means any texture imported using the PBR loader with mtl within the filename, separated by an underscore ("_") are assigned the glTF Metallic effect in the Shader Tree. |
Base Color |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Base Color effect to the imported texture if it is found. For example, entering color into the property means any texture imported using the PBR loader with color within the filename, separated by an underscore ("_") are assigned the glTF Base Color effect in the Shader Tree. |
Roughness |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Roughness effect to the imported texture if it is found. For example, entering rgh into the property means any texture imported using the PBR loader with rgh within the filename, separated by an underscore ("_") are assigned the glTF Roughness effect in the Shader Tree. |
Emission |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Emission effect to the imported texture if it is found. For example, entering emis into the property means any texture imported using the PBR loader with emis within the filename, separated by an underscore ("_") are assigned the glTF Emission effect in the Shader Tree. |
Normal |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Normal effect to the imported texture if it is found. For example, entering normal into the property means any texture imported using the PBR loader with normal within the filename, separated by an underscore ("_") are assigned the glTF Normal effect in the Shader Tree. |
Ambient Occlusion |
The PBR loader looks for the name entered here in the filename of imported textures and assigns the glTF Ambient Occlusion effect to the imported texture if it is found. For example, entering AO into the property means any texture imported using the PBR loader with AO within the filename, separated by an underscore ("_") are assigned the glTF Ambient Occlusion effect in the Shader Tree. |
Export Definitions
Bulk Enable
Disable All |
Disables all definitions in the Shader PBR + Effects popover. |
Enable All |
Enables all definitions in the Shader PBR + Effects popover. |
Additional Definitions
The additional definitions allow you to add custom definitions and effects for materials and imported textures in the Shader Tree. You can also add definitions for packed maps with these options.
Adds a new custom definition to the list. Click to display the following options:
See Layer Effects to learn about all the available effects. See Invert to learn more. See Layer Blend Modes to learn more. See Layer Effects to learn about all the available effects. Note: Each time you click Add, a new definition is added to the list. |
|
Removes the last custom definition in the list. |
Additional Options
Click More at the bottom of the Shader PBR + Effects popover to expose the following common options in each menu:
Colorspace |
Automatically assigns a colorspace to the imported texture or material defined in this definition. If you are defining a map that uses scalar data (such as roughness, normal, or bump maps) select none. Otherwise, select default. See Colorspace on Image Maps/Sequences for more information. |
Invert |
See Invert to learn more. |
Blending Mode |
See Layer Blend Modes to learn more. |