This plugin offers the following optimizations and tools :
By default all Unreal materials have the decal response set to "Color,Normal,Roughness". This is useful only for decals placed on
lightmapped surfaces. If your projects uses only dynamic lights, setting the DecalResponse to None will save up
By default this option is off and is only meant for materials that will always have roughness = 1. This option will search all materials that don't have any value connected
to the roughness output or where that value is constant or not needed like in the case of a few transparency options.
This option will list all animations imported at over 30 frames per second. In some projects artist may have exported animations at unrealistic rates like say 240 FPS and then
those animations will consume a lot of memory, this will list in the output log a list of such animations and their resample rates.
Particle Systems' lights can consume a lot of GPU miliseconds. This option will tick off VolumetricScatteringIntensity, bHighQualityLights and ShadowCastingLights options from
all Particle Systems so you don't have to search them manually in a large project.
In large projects when creating a lot of materials and material instances there are situations where a specific scalar/vector parameter is not actually overriden in the material
instance. Having a material parameter instead of hardcoding that value in the material as a constant can be costly. Having a constant instead of a parameter can reduce
total shader instructions in some cases by ~14 instructions/parameter depending on how frequently it's used.
Roughness 1 / 6
Color 6 / 6
This material has 6 MaterialInstances, and only 1 overrides Roughness while all 6 override Color. It's safe to assume Color shouldn't be touched but you could make it so that
the overriden value from the instance is actually the default value in the material and then make that value constant, assuming you don't need any new instances of this material.
LogTemp: /Game/FantasyVillage/Materials/M_MasterBlend.M_MasterBlend NumMaterialInstances=4
Blend Invert Height 0 / 4
height contrast 0 / 4
In this case you can go ahead and make these 2 parameters constant with the values from the base material. You'll save quite a few instructions with no visual impact.
This is a complex tool that analyzes frequent issues with assets, StaticMeshes in particular and lists them.
This will list all screensizes and triangle counts of all meshes. This can help identify issues like let's say all your trees have screen sizes 1,0.5,0.25,0.1 but
1 tree has 1,0.8,0.5,0.1 signaling that it will not change LODs similar to the other assets and will consume more GPU performance.
This will list the meshes where LOD[n+1] has more triangles than LOD[n]
This will list the meshes where any ScreenSize from any LOD is 0. All screensizes must be greater than 0.
This will list the meshes where a mesh has say 3 sections but only 1 material. This will hinder performance and usually signals a problem at export. You should merge all objects with the
same material into one prior to importing to unreal.
This will list the meshes where a mesh only has 1 LOD. This may be intended or a forgotten asset that can hinder performance if left without LODs.
This will list all meshes' Maximum UVChannels for each LOD level. While not an error, having more than one UV channel when not using lightmapping can consume more memory or create issues
where you're not sampling from the correct texcoord index.
This will list the meshes where screensizes are not set up in descending order. For example a mesh with screen sizes 1,0.5,0.7,0.2 is in an invalid state and you should correct it.
(This option is still experimental) It will try to safely move all nodes connected to a texture sample's UV coordinates to the vertex shader. This will increase vertex shader instructions
and reduce pixel shader instructions. In most projects pixel shaders are the GPU bottleneck you need to watch out for so this option will increase performance.
For some reason, the editor will sometimes save duplicate foliage instances in the same position/rotation. This is probably a bug and if this is the case it will show you what levels are affected
If you have a lot of static mesh actors that you wish were turned into foliage for performance reasons, use this option. It will look into the level's foliage types and only the meshes
that have foliage types will get converted. No selection is required. If you don't have any foliage types yet, first create them and add them to the foliage type list in the foliage edit mode
then choose this option.
Assigns LodForCollision on selected assets. Use ot.AssignLodForCollision.TargetLOD (default is 1) to specify which LOD to assign for collision.
This will reduce memory usage.
Use this on selected assets to create opaque material instances where masked material instances are used (like trees & foliage).
Use ot.AssignOpaqueMaterialsToMesh.StartLOD (default 2) to specify from which LOD level to assign opaque materials.
This will significantly improve performance.
- OptimizationTools ( Editor )
Number of C++ Classes:2
Network Replicated: (Yes/No) No
Supported Development Platforms: Win64, Max, Linux
Supported Target Build Platforms: None
Documentation: Documentation.txt inside package
Example Project: N/A