Optimization Tools

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

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

  • DetectAnimationsImportedAtResampleRateOver30FPS;

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.

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

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

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.

  • AnalyzeMeshes

This is a complex tool that analyzes frequent issues with assets, StaticMeshes in particular and lists them.

ScreenSizes

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.

WrongLODOrder

This will list the meshes where LOD[n+1] has more triangles than LOD[n]

ScreenSize0

This will list the meshes where any ScreenSize from any LOD is 0. All screensizes must be greater than 0.

DuplicateSections

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.

1LOD

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.

UVChannelsOver1

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.

ScreenSizesInvalidOrder

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.

  • MoveTextureSamplingDependenciesToVS

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

  • DetectDuplicateFoliageInstances

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

  • MoveStaticMeshesToFoliage

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.

  • AssignLodForCollision

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.

  • AssignOpaqueMaterialsToHigherLods

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.

  • DenanitizeAssets

This option will disable nanite on all static meshes assets with a twist : Internally nanite produces “replacement meshes” for raytracing which typically have 1-4% of the triangles of a mesh with millions of triangles. This option fetches this percentage and makes LOD0 equal to that percentage then proceeds with adding up to 7 LOD levels up until the last LOD is under 100 triangles. Each subsequent LOD has half the screen size and half the triangles of the previous LOD.

Technical Details

Features:

– SetDecalResponseToNoneForAllMaterials

– AutomaticallySetFullyRoughToAllMaterials

– DetectAnimationsImportedAtResampleRateOver30FPS

– OptimizeParticleSystems

– DisplayMaterialParameterStats

– AnalyzeMeshes

– MoveTextureSamplingDependenciesToVS

– DetectDuplicateFoliageInstances

– MoveStaticMeshesToFoliage

– AssignLodForCollision

– AssignOpaqueMaterialsToHigherLods

– DenanitizeAssets

Code Modules:

  •  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:


VIP Downloads Today: 0 of 0

BECOME A VIP


PRODUCT LICENSE

You can contact us at any time and request that the asset you want be added to the site from the Request Asset section.

Check Also

Special forces ski-fi soldier

Description Rate the asset and get a free coffee as a gift!(to do this, specify …