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:
特征:
-SetDecalResponseToNoneForAllMaterials
-全自动材料
-检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物
-优化分离系统
-显示材料参数
-分析
-MoveTextureSamplingDependenciesTovs
-DetectDuplicateFoliageInstances
-MoveStaticMeshesToFoliage
-分配
-AssignOpaqueMaterialsToHigherLods
-DenanitizeAssets
代码模块:
- OptimizationTools(编辑器)
蓝图数目:0
C++类数:2
网络复制:(是/否)否
支持的开发平台:Win64、Max、Linux
支持的目标构建平台:无
文档:文档。txt内包
示例项目:N/A
重要/附加注意事项:
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.
此插件提供以下优化和工具 :
- N.材料,材料
默认情况下,所有虚幻材质的贴花响应设置为”颜色、法线、粗糙度”。 这仅适用于放置在贴花上的贴花
光映射表面。 如果您的项目只使用动态光源,则将DecalResponse设置为None将节省
- 全自动、全自动、全自动、全自动、全自动、全自动、全自动、全自动、全自动、全自动、全自动
默认情况下,此选项为off,仅适用于粗糙度始终为1的材质。 此选项将搜索没有任何价值的所有材料。
到粗糙度输出或该值是恒定的或不需要的地方,如在一些透明度选项的情况下。
- 检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物,检测动物;
此选项将列出以每秒超过30帧的速度导入的所有动画。 在一些项目中,艺术家可能以不切实际的速度导出动画,比如说240FPS,然后
这些动画将消耗大量内存,这将在输出日志中列出此类动画的列表及其重采样速率。
- 优化分离系统;
粒子系统的灯光可以消耗大量的GPU毫秒。 此选项将勾选VolumetricScatteringIntensity,bHighQualityLights和ShadowCastingLights选项
所有粒子系统,因此您不必在大型项目中手动搜索它们。
- 显示材料参数
在大型项目中,当创建大量材质和材质实例时,有些情况下,特定的标量/矢量参数实际上并未在材质中复盖
实例。 使用材质参数而不是将材质中的值硬编码为常量可能会产生很大的成本。 有一个常数而不是一个参数可以减少
在某些情况下,着色器指令总数为~14个指令/参数,具体取决于使用频率。
示例输出:
/游戏/FantasyVillage/材料/M_Puddle01.M_Puddle01NumMaterialInstances=6
粗糙度1/6
颜色6/6
此材质有6个MaterialInstances,只有1个复盖粗糙度,而所有6个复盖颜色。 假设颜色不应该被触摸是安全的,但你可以这样做
实例中的复盖值实际上是材质中的默认值,然后使该值保持不变,假设您不需要此材质的任何新实例。
LogTemp:/游戏/FantasyVillage/材料/M_MasterBlend.M_MasterBlend NumMaterialInstances=4
混合反转高度0/4
高度对比0/4
在这种情况下,您可以继续使这2个参数与基础材料的值保持不变。 您将保存相当多的指令,没有视觉影响。
- 分析,分析
这是一个复杂的工具,可以分析资产的常见问题,特别是StaticMeshes并列出它们。
屏幕保护程序
这将列出所有网格体的所有屏幕和三角形计数。 这可以帮助识别问题,比如说你所有的树都有屏幕大小1,0.5,0.25,0.1,但是
1树有1,0.8,0.5,0.1信号,它不会改变类似于其他资产的Lod,并且会消耗更多的GPU性能。
错误顺序
这将列出lod[n+1]比lod[n]具有更多三角形的网格
屏幕保护程序
这将列出来自任何LOD的任何屏幕截图为0的网格。 所有屏幕保护程序必须大于0。
重复部分
这将列出一个网格有3个部分但只有1个材料的网格. 这会阻碍性能,并且通常会在出口时发出问题。 您应该将所有对象与
在导入到虚幻引擎之前,将相同的材质转换为一个材质。
1LOD
这将列出网格只有1个LOD的网格。 这可能是有意或被遗忘的资产,如果没有Lod,可能会阻碍性能。
UVChannelsOver1
这将列出每个LOD级别的所有网格体的最大Uvchannel。 虽然不是错误,但在不使用光照贴图时拥有多个UV通道可能会消耗更多内存或产生问题
你没有从正确的texcoord索引中采样。
N.屏风,屏风
这将按降序列出未设置屏幕截图的网格。 例如,屏幕尺寸为1,0.5,0.7,0.2的网格处于无效状态,您应该更正它。
- 移动,移动
(此选项仍在实验中)它将尝试安全地将连接到纹理样本UV坐标的所有节点移动到顶点着色器。 这将增加顶点着色器指令
和减少像素着色器指令。 在大多数项目中,像素着色器是您需要注意的GPU瓶颈,因此此选项将提高性能。
- [医]检测装置
出于某种原因,编辑器有时会将重复的植物实例保存在相同的位置/旋转中。 这可能是一个错误,如果是这种情况,它会告诉你什么级别受到影响
- N.运动,运动
如果由于性能原因,您希望将许多静态网格体actor变为植物,请使用此选项。 它将查看关卡的叶子类型和网格体
有叶子类型的将被转换。 不需要选择。 如果您还没有任何植物类型,请先创建它们并将它们添加到植物编辑模式中的植物类型列表中
然后选择此选项。
- 分配/分配
在选定的资产上分配LodForCollision。 使用ot。AssignLodForCollision.TargetLOD(默认为1)用于指定要为碰撞分配的LOD。
这将减少内存使用。
- 分配材料;分配材料
在选定的资源上使用此选项可创建使用遮罩材质实例(如树和植物)的不透明材质实例。
使用ot。AssignOpaqueMaterialsToMesh.StartLOD(默认2)用于指定从哪个LOD级别分配不透明材质。
这将显着提高性能。
- [医]脱氧核糖核酸
此选项将在所有静态网格体资源上禁用nanite:在内部,nanite为光线追踪生成”替换网格体”,这些网格体通常具有数百万个三角形的网格体的三角形的1-4%。 此选项获取此百分比并使LOD0等于该百分比,然后继续添加最多7个LOD级别,直到最后一个LOD低于100个三角形。 每个后续LOD都有一半的屏幕大小和一半的三角形的前一个LOD。
评论(0)