Digital Dive Studio: 所有产品五折优惠

Optimization Tools

CiprianStanciu - 4月 5, 2021

Optimization Tools

  • 支持的平台
  • 支持的引擎版本
    4.24 - 4.26
  • 下载类型
    引擎插件
    此产品包含一款代码插件,含有预编译的二进制文件以及与虚幻引擎集成的所有源代码,能够安装到您选择的引擎版本中,并根据每个项目的需求启动。


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 usual 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 cases where LOD[n+1] has more triangles than LOD[n]

ScreenSize0

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

DuplicateSections

This will list cases 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 cases 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 cases 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.

技术细节

Features:

 - SetDecalResponseToNoneForAllMaterials

- AutomaticallySetFullyRoughToAllMaterials

- DetectAnimationsImportedAtResampleRateOver30FPS

- OptimizeParticleSystems

- DisplayMaterialParameterStats

- AnalyzeMeshes

- MoveTextureSamplingDependenciesToVS

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: