Optimization Tools

CiprianStanciu - Apr 5, 2021

Optimization Tools

  • Supported Platforms
  • Supported Engine Versions
  • Download Type
    Engine Plugin
    This product contains a code plugin, complete with pre-built binaries and all its source code that integrates with Unreal Engine, which can be installed to an engine version of your choice then enabled on a per-project basis.

This plugin offers the following optimizations and tools :

- SetDecalResponseToNoneForAllMaterials

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 project uses only dynamic lights, setting the DecalResponse to None will save up

After selecting this option a lot of shaders might recompile, this is normal. Also the changes won't be saved. To save changes select File->Save All

- AutomaticallySetFullyRoughToAllMaterials

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.

After selecting this option a lot of shaders might recompile, this is normal. Also the changes won't be saved. To save changes select File->Save All

- DetectAnimationsImportedAtResampleRateOver30FPS;

This option will list all animations imported at over 30 frames per second. In some projects an 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.

- OptimizeParticleSystems;

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.

To save changes to all Particle Systems select File->Save All

- DisplayMaterialParameterStats

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 any 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.

Example output:

/Game/FantasyVillage/Materials/M_Puddle01.M_Puddle01 NumMaterialInstances=6

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.

Technical Details

Features: (Please include a full, comprehensive list of the features of the product)

 - SetDecalResponseToNoneForAllMaterials

- AutomaticallySetFullyRoughToAllMaterials

- DetectAnimationsImportedAtResampleRateOver30FPS

- OptimizeParticleSystems

- DisplayMaterialParameterStats

Code Modules: (Please include a full list of each Plugin module and their module type (Runtime, Editor etc.))

  •  OptimizationTools ( Editor )

Number of Blueprints:0

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

Important/Additional Notes: