Setup
- New Project
- Preset > Film
- Enable raytracing
- Preset > Film
- Editor preferences >
- Level Editor >
- Viewports > Controls >
- Invert middle mouse pan : on
- Advanced >
- Use distance-based camera speed : on
- Orbit camera around selection : on
- Viewports > Controls >
- General >
- New TRS Gizmo >
- Enable new Gizmos : on
- New TRS Gizmo >
- Level Editor >
- Project settings >
- Engine >
- Rendering > Substrate >
- Substrate materials (experimental) : on
- Substrate opaque material rough refraction : on
- Rendering > Substrate >
- Engine >
- Setup look dev scene
- Lookdev level
- Add Level, lets call it material_lookdev
- Add HDRI Backdrop
- on sky light set specified cube mat to an hdri
- HDRI Backdrop > skylight (in the details hierarchy) > Light > Source type > SLS Specified cubemap
- Set to the same as the top level one
- HDRI Backdrop > skylight (in the details hierarchy) > Light > Source type > SLS Specified cubemap
- Optinally
- Lighting distance Factor >
- Set this to 0 if you do not want the ground area to recieve lighting/shadows
- use camera projection
- Enable this to not get the hdri projected to the ground
- Lighting distance Factor >
- on sky light set specified cube mat to an hdri
- Add look dev meshes
Note that you can filter on static meshes to find the geo faster- Shader Ball
- Engine > SM_MatPreviewMesh_01
- Tip!
- Open the mesh in the sm editor (Ctrl + E)
- In the Material Slots section, you can click the isolate checkbox to visualize the parts that are assosiated with the slot
- Color calibrator
- Engine > SM_ColorCalibrator
- Shader Ball
- Post Process Volume
- Unbound
- Exposure
- Metering Mode : Manual
- Exposure Compensation : 10 (ish)
- pathtracing options
- Lookdev level
Materials
Basic Plastic / Metal
- Create Material
- Content Browser > RMB > Material
- Call it M_basic
- Open the material
- Delete the Substrate UE4 Default Shading
- Add Substrate Slab
- Add Substrate Slab
- Tab > ‘slab..’ > Substrate Slab
- Connect the output of the slab to the Front Material input of the material output node
- Add Substrate Slab
- BaseColor
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm BaseColor
- Connect to Diffuse Albedo of slab
- Organize
- With the parm selected, details > Material Expression >
- Group : 01 - BaseColor
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Vector 3 parameter
- F0
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm F0
- Connect to F0 of slab
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - F0
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Vector 3 parameter
- Roughness
- Add Scalar parameter
- Add constant 1 vec : 1 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm BaseColor
- Tip!
- Hold S + LMB click to create a scalar parm directly
- Connect to Roughness of slab
- Organize
- With the parm selected, details > Material Expression >
- Group : 03 - Roughness
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Scalar parameter
- Normal
- *Add Texture Sample node
- This will be used when no normal texture is specified
- Note Not a Texture Sample Parameter.
- tab > ‘texture…’ > TextureSample
- In the details panel (of tex sample node) Set the default texture to a Flat Normal texture
- *Add Texture Sample Parameter node
- Copy and paste the texture sample node
- RMB Click > Convert to Parameter
- Give it the name Normal Texture
- Add a Static Switch Parameter
- tab > ‘static…’ > StaticSwitchParameter
- Call it “Use Normal Texture”
- Connecty the Texture Sanple Parameter to the True input
- Connecty the Texture Sanple to the False input
- Connct the output of he switch to the Normal input of the slab node
- Organize
- With the parm selected, details > Material Expression >
- Group : 03 - Roughness
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add a Normal map UV transform
- See below in the Material Functions setction how to do this
- tab > ‘uv xfo…’ > ‘UV Xform Normal’
- Connect to the input of the Uvs of the Normal Texture Sample Parametr node
- *Add Texture Sample node
Glass
- Create Material
- Content Browser > RMB > Material
- Call it M_glass
- Open the material
- Delete the Substrate UE4 Default Shading
- Add Substrate Slab
- Add Substrate Slab
- Tab > ‘slab..’ > Substrate Slab
- Connect the output of the slab to the Front Material input of the material output node
- Add Substrate Slab
- Material Detail Setup
- Select the material output node (or just click on empty graph space)
- Material > Bleand Mode : TranslucentColoredTransmittence
- Translucency > Lighting Mode : SurfaceForwardShading
- Refraction > Refraction Method : Index of Refraction
- BaseColor
- Add Vector 3
- Add constant 3 vec : 3 + LMB click
- Set value to 0 (of all components)
- You can use the value V input (of the HSV inputs) to set all components at once
- Connect to Diffuse Albedo of slab
- Note I willnot promote to parameter since so far I know I will not need to change this
- Add Vector 3
- SSS MFP
- This is the way we will conytrol the color of the glass
- Add a Substrate Transmittance-To-MeanFreePath node
- tab > ‘free…’ > Substarte Helpers > Substrate Transmittance-To-MeanFreePath
- Connect to MFP output to the SSS MFP input of the Slab node
- Glass Color*
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm Glass Color
- Connect the output to the Transmittance Color of the Substrate Transmittance-To-MeanFreePath node.
- Organize
- With the parm selected, details > Material Expression >
- Group : 01 - BaseColor
- Sort Priority : 1
- With the parm selected, details > Material Expression >
- Add Vector 3 parameter
- F0
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm F0
- Set the default value to 0.04
- this is the default value of the F0 input of the slab node
- you can see this by hovering the mouse pointer over the F= input of the slab
- Connect to F0 of slab
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - F0 / F90
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Vector 3 parameter
- F90
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm F90
- Set the default value to 1.0
- Connect to F90 of slab
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - F0 / F90
- Sort Priority : 1
- With the parm selected, details > Material Expression >
- Add Vector 3 parameter
- Roughness
- Add Scalar parameter
- Hold S + LMB click
- Call the parm Roughness
- Connect to Roughness of slab
- Hold S + LMB click
- Organize
- With the parm selected, details > Material Expression >
- Group : 03 - Roughness
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Scalar parameter
- IOR
- Add Scalar parameter
- Hold S + LMB click
- Call the parm IOR
- Connect to Refraction (Index of Refraction) of Material output node
- Hold S + LMB click
- Organize
- With the parm selected, details > Material Expression >
- Group : 06 - IOR
- Sort Priority : 0
- With the parm selected, details > Material Expression >
- Add Scalar parameter
- Normal
- TODO
Car Paint
- Create Material
- Content Browser > RMB > Material
- Call it M_carpaint
- Open the material
- Delete the Substrate UE4 Default Shading
- Add Substrate Slab
- Add Substrate Slab
- Tab > ‘slab..’ > Substrate Slab
- Connect the output of the slab to the Front Material input of the material output node
- Add Substrate Slab
- Base Color
- We will add a Flip / Flop options to our material
- Base Flip Colr
- Color
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm Base Flip Color
- Organize
- Group : 01 - Base
- Sort Priority : 0
- Color
- BaseColor Flop
- Color
- Add Vector 3 parameter
- Add constant 3 vec : 3 + LMB click
- RMB click constant > Convert to Parameter
- Call the parm Base Flop Color
- Organize
- Group : 01 - Base
- Sort Priority : 1
- Color
- Control Blend
- Lerp
- we will use a lerp node to blend between the colors
- L + LMB click
- connect the Flip Color to A and Flop to B
- Fresnell
- We willuse a frasnell node to control the Alpha ampunt of the lerp
- tab > ‘fre…’ > Utility > Fresnell
- Connect to the Alpha of the lerp node
- Flip/Flop Amount
- Create scalar parm and (S + LMB)
- call it Flip/Flop Amount
- Set default to 1.0
- Organize
- Group : 01 - Base
- Sort Priority : 2
- Lerp
- Connect Diffuse Albedo
- Connect the output of the lerp to the Diffuse Albedo input of the slab
- Flake Color
- Copy and paste the setup we did for the Base Flip / Flop colors
- Rename the Parameter names from Base to Flake
- Renamber to rename the Groups as well
- Connect to the F0 inpuit of slab
- Flake Roughness
- Add Scalar parameter
- Hold S + LMB click
- Call the parm Flake Roughness
- Set default to 0.5
- Connect to Roughness of slab node
- Hold S + LMB click
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - Flake
- Sort Priority : 4
- With the parm selected, details > Material Expression >
- Add Scalar parameter
- Flake Density
- Add Scalar parameter
- Hold S + LMB click
- Call the parm Flake Density
- Set default to 15
- Connect to Glint Density of slab node
- Hold S + LMB click
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - Flake
- Sort Priority : 5
- With the parm selected, details > Material Expression >
- Add Scalar parameter
- Flake Scale
- To render the flakes we need uvs
- Add a Texure Coordiantes node
- Add Scalar parameter
- Hold S + LMB click
- Call the parm Flake Scale
- Set default to 10
- Hold S + LMB click
- Organize
- With the parm selected, details > Material Expression >
- Group : 02 - Flake
- Sort Priority : 6
- With the parm selected, details > Material Expression >
- Multiply
- To scale the flakes uvs we multiply the uv coords with the flake scale aprm
- Connect to Glint UVs of slab
- To render the flakes we need uvs
- Clear Coat
- Creat a Substrate Slab for the clear coat
- Tab > ‘slab..’ > Substrate Slab
- Diffuse Albedo
- Create a vector, set the value to (0,0,0) and connect to Diffuse Albedo of the clear coat slab
- We will not make a parameter of this
- F0
- Create a constant 1, set the value to 0.05 and connect to F0 o9f the clear coat slab
- We will not make a parameter of this
- Clear Coat Roughness
- Create a scalar parm, call it Clear Coat Roughness and connect to The rouhgness of the clear coat slab
- Set the default to 0.01, min to 0, max 1.0
- Organize
- Group : 10 - Clear Coat
- Sort Priority : 0
- To make the clear coat transparent
- We ass a Substrate Transmittance-To-MeanFreePath node
- tab > ‘free…’ > Substarte Helpers > Substrate Transmittance-To-MeanFreePath
- Connect to MFP output to the SSS MFP input of the clear coat slab node
- Creat a Substrate Slab for the clear coat
- Blend the Base & Clear Coat slabs
- Add a Substrate Vertical Layer
- tab ‘verti…’ > Substrate Vertical Layer
- Connect the Clear Coat slab to the top input
- Connect the Base slab to the bottom input
- Create a scalar parm, call it Clear Coat Thickness
- Set the default to 0.003
- Connect the Clear Coat Thickness parm to the Top Thickness of the Substrate Verticale Layer
- Add a Substrate Vertical Layer
Material Functions
MF_uv_xform_normal
Ctrl-C
Tiles and rotates tex coords. The groups are named to fit in the normal section of a material
- UV Xform Normal
- Create a folder called functions and step inside
- RMB > Matrials > Material Functon
- call it UV_xform_normal
- Add a Texture Coordinate node
- tab > ‘coo…’ > TextureCoordinate
- Add a U Tiling parm
- S + LMB click
- Parm name : Normal U Tiling
- Material Expression >
- Group : 04 - Normal
- Sort Priority : 20
- S + LMB click
- Add a V Tiling parm
- S + LMB click
- Parm name : Normal V Tiling
- Material Expression >
- Group : 04 - Normal
- Sort Priority : 21
- S + LMB click
- Append the 2 scalars
- Append Vector
- Multiply the TexCoord
- with the resulting UV Vector
- Add a Custom Rotator
- tab > ‘rot…’ > ‘Custom Rotator’
- Add a scalar Parm > callit it Normal UV Rotation Amount
- Material Expression >
- Group : 04 - Normal
- Sort Priority : 22
- Material Expression >
- Connectr the rotator:
- Connect the multiplied tex coords to the UVs input of the rotator
- Connect the ‘Normal UV Rotation Amount’ parm to the Rotation Angle of the rotator
- Connect the output of the rotator to the Output result node
- Expose to Library
- Click on an empty section of the Material Function graph
- Enable the Material Function > Expose to Library checkbox
Tips
- Nested Instances
- Note that you can create a Material Instance of another Material Instance
- This can be handy if you want to create material that should inherit properties, but do some minor tweaks to lets say normal map or roughness
- If we need to tweak the BaseColor of the parent MI it will adjsut all child instances aswell.
- Note that you can create a Material Instance of another Material Instance
- Chrome
- If we want to create a Chrome material set the FO to white and the Roughness to 0
- Set the BaseColor to black
- If the F0 is set to (1,1,1) white the BaseColor has no effect
- Darker chrome
- Set the F0 to a darker color (0.5, 0,5, 0.5)
- Make sure that the BaseColor is at (0,0,0) (black)…
- …since when we lower the FO it will start to have an effect
- Gold
- introduce some saturaton in the F0
- Can also play with the Roughness
- Exagerate Glas Reflections
- The FO of a glass material should probably be at 0.04 but you can “increase” the reflaction by increasing the F0 value. You can even tint it to give a colored refelction.