Material recommendations in Unreal
The materials you use can directly affect how well your projects run in Unreal Engine. This page acts as a quick-start for the basic settings you should be using to get the best performance out of your mixed reality applications.
Using CustomizedUVs
If you need to provide UV tiling on your material, use CustomizedUVs rather than modifying the UV of the texture node directly. CustomizedUVs let you manipulate UVs in the Vertex shaders rather than the Pixel shader.
You can find material details in the Unreal Engine documentation and best practice examples in the screenshots below:
Non-recommended material setup
Changing Blend Mode
We recommend setting the blend mode to opaque unless there's a strong reason to do otherwise. Masked and Translucent materials are slow. You can find more details on materials in the Unreal Engine documentation.
Updating lighting for mobile
Full precision should be turned off. Lightmap lighting can be dialed down by turning of directional information. When disabled, lighting from lightmaps will be flat but cheaper.
Adjusting Forward Shading
These options improve visual fidelity at the cost of performance. They should be turned off for maximum performance.
Setting material translucency
Indicates that the translucent material should not be affected by bloom or DOF. Since both those effects are rare in MR, this setting should be on by default.
Optional settings
The following settings may improve performance, but note that they disable certain features. Only use these settings if you're sure you don't need the features in question.
If your material doesn't require reflections or shine, then setting this option can provide a tremendous performance boost. In internal testing, it's as fast as "unlit" while providing lighting information.
Best practices
The following aren't "settings" as much as they're best practices related to Materials.
When creating parameters, prefer to use "Static Parameters" wherever possible. Static Switches can be used to remove an entire branch of a material with no runtime cost. Instances can have different values, making it possible to have a templated shader set up with no performance loss. The downside, is that several permutations are created that will cause shader recompilation. Try to minimize the number of static parameters in the material and the number of permutations of those static parameters that are used. You can find more details on rendering material parameters in the Unreal Engine documentation.
When creating Material Instances, preference should be given to Material Instance Constant over Material Instance Dynamic. Material Instance Constant is an instanced Material that calculates only once before runtime.
The material instance created via the Content Browser (right-click > Create Material Instance) is a Material Instance Constant. Material Instance Dynamic are created via code. You can find more details on material instances in the Unreal Engine documentation.
Keep an eye on the complexity of your materials/shaders. You can view the cost of your Material on various platforms by clicking on the Platform Stats icon. You can also find more details on materials in the Unreal Engine documentation.
You can get a quick idea of the relative complexity of your shader via the Shader Complexity View mode.
- View Mode Hotkey: Alt + 8
- Console command: viewmode shadercomplexity