UE安卓端的PSO处理

官方文档

在虚幻引擎中使用PSO缓存优化渲染 | 虚幻引擎 5.2 文档 | Epic Developer Community

采集流程

1.设置

a.打开项目的 DefaultEngine.ini 或其 (Platform)Engine.ini ,没有(Platform)Engine.ini则自己创建。

Engine.ini 文件中设置以下值:

[DevOptions.Shaders]

NeedsShaderStableKeys=true

b.DefaultGame.ini 文件中,设置以下值:

[/Script/UnrealEd.ProjectPackagingSettings]

bShareMaterialShaderCode=True

bSharedMaterialNativeLibraries=True

或者打开项目,在项目设置-项目-打包下勾选对应设置。

c.如果你是从头开始,请确保 (Project)/Build/(Platform)/PipelineCache 中没有文件。烘焙器会在这个位置寻找记录的缓存文件。如果这是你首次采集PSO,此文件夹可能根本不存在。

d.打开项目,输入控制台命令r.ShaderPipelineCache.Enabled 1,打包项目。(以防万一,手动输入

2.采集PSO缓存

a.在设备中安装项目

b..\Android\data\com.epicgames.ProjectWuKong\files\UnrealGame\ProjectWuKong\下添加一个UECommandLine.txt,内容为:-logPSO

c.打开项目,执行尽可能多的路径。例如,运行应用程序的所有关卡,所有特效

d.Log中应该会有相关内容,如LogRHI: Display: Encountered a new compute PSO: 359318230

e.不需要一次采集所有PSO缓存,可以多次运行。

f.每次运行应用程序时,系统将在 Saved\CollectedPSOs\ 下生成记录的缓存文件(rec.pipelinecache),将所有缓存文件复制到电脑里。

3.转换PSO缓存

a.打开项目对应的平台烘焙缓存,如Android

.\ProjectWuKong\Saved\Cooked\Android_ASTC\ProjectWuKong\Metadata\PipelineCaches\

将稳定的着色器密钥 (.shk) 复制到你放置 rec.pipelinecache 文件的文件夹。例如:F:\PSOCaches

b.打开win控制台,使用下面的参数运行ShaderPipelineCacheTools命令:

C:\UE_5.2\Engine\Binaries\Win64\UnrealEditor-Cmd.exe -run=ShaderPipelineCacheTools expand C:\PSOCache\.rec.upipelinecache C:\PSOCache\.shk C:\PSOCache\[YourPrefix]_[ProjectName]_[ShaderFormatName].spc

提供的文件名应该由以下内容构成:

[YourPrefix] – 任意字符串,通常指定采集发生的时间。例如,这可能是当前构建的变更列表。

[ProjectName] – 项目的名称。例如:ShooterGame。这必须与你的项目名称完全匹配,否则无法选取。

[ShaderFormatName] – 项目的着色器格式,必须与着色器格式的名称完全匹配。.rec.upipelinecache或者.shk文件命名上有格式。

例如D:\UE_5.2\Engine\Binaries\Win64\UnrealEditor-Cmd.exe -run=ShaderPipelineCacheTools expand F:\PSOCaches\.rec.upipelinecache F:\PSOCaches\.shk F:\PSOCaches\20250312_ProjectWuKong_SF_VULKAN_ES31_ANDROID.spc

或者

D:\UE\UE_5.3\Engine\Binaries\Win64\UnrealEditor-Cmd.exe -run=ShaderPipelineCacheTools expand E:\PSOCaches\++UE5+Release-5.3-CL-29314046-ProjectWuKong_SF_VULKAN_ES31_ANDROID_F9E60B6098FB425D9E07462CE6247B89.rec.upipelinecache E:\PSOCaches\ShaderStableInfo-Global-SF_VULKAN_ES31_ANDROID.shk E:\PSOCaches\ShaderStableInfo-ProjectWuKong-SF_VULKAN_ES31_ANDROID.shk E:\PSOCaches\20250422_ProjectWuKong_SF_VULKAN_ES31_ANDROID.spc

最后生成一个 .spc 文件。

4.应用PSO缓存

a.将生成的 .spc 文件放到项目\Build\[PlatformName]\PipelineCaches 文件夹中。例如:

b.再次打包项目,Log中应包含

5.测试PSO缓存

a.使用 -logPSO 命令运行新打包的应用程序观察Log,应该能看见类似于以下内容的行

LogRHI: Opened FPipelineCacheFile: ../../../ProjectWuKong/Content/PipelineCaches/Android/ProjectWuKong_SF_VULKAN_ES31_ANDROID.stable.upipelinecache with 422 entries.

该数量必须与打包日志中写入的二进制PSO数量一致。

b.还应该检查构建是否在日志中打印"Encountered a new graphics PSO"。如果你在与缓存采集期间相同的条件下(例如相同的可扩展性设置)看到相同的内容,则不应出现此种情况。

更多内容见官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值