1. 认识.rec.upipelinecache文件
在UE4引擎的PSO(Pipeline State Object)缓存系统中,.rec.upipelinecache文件扮演着关键角色。作为开发者,我们经常会在项目目录的Saved/CollectedPSOs/文件夹下发现这些二进制文件。它们记录了游戏运行时实际使用的PSO信息,但需要注意这些文件与常见的.stable.upipelinecache或.scl.csv等文件有本质区别。
1.1 文件存储位置与基本特性
.rec.upipelinecache文件默认生成路径为:
code复制项目根目录/Saved/CollectedPSOs/[构建版本号]/*.rec.upipelinecache
这些文件具有以下典型特征:
- 二进制格式,不可直接阅读
- 文件体积通常较小(多数在1MB以下)
- 每个文件对应一次游戏运行会话中捕获的PSO使用记录
- 文件名通常包含时间戳或会话ID作为标识
注意:不同UE4版本可能略有路径差异,建议通过
FPaths::ProjectSavedDir()API获取准确路径
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. .rec.upipelinecache内容解析
2.1 文件包含的核心信息
通过逆向分析UE4源码和实际文件内容,我们可以确认.rec.upipelinecache主要包含以下数据结构:
-
文件头信息:
- 魔数(标识文件类型)
- 版本号
- 记录条目数量
- 平台标识符
-
PSO使用记录数组:
- 每个条目约100-300字节
- 包含完整的PSO描述符
- 着色器阶段哈希值(VS/PS/HS/DS/GS)
- 渲染状态配置(混合/光栅化/深度模板)
-
元数据区块:
- 构建版本信息
- 捕获时间戳
- 硬件配置摘要
2.2 关键不包含的内容
需要特别强调的是,该文件不包含以下内容:
-
Shader二进制码:
- 仅存储哈希引用(SHA-1或MD5)
- 实际Shader代码存储在项目的DerivedDataCache中
-
PSO对象本身:
- 不包含可直接加载的GPU驱动对象
- 需要运行时重新编译生成
-
资源引用:
- 无纹理/材质路径信息
- 无网格数据引用
-
稳定映射关系:
- 不包含Shader稳定键(StableKey)
- 需要依赖.scl.csv等文件进行转换
3. Expand PSO的核心价值
3.1 从瞬时记录到稳定缓存
Expand PSO过程的本质是将.rec.upipelinecache中的瞬时记录转换为稳定可复用的PSO缓存。这个转换过程涉及几个关键步骤:
-
哈希解析:
- 提取记录中的Shader哈希
- 通过DDC(DerivedDataCache)查找对应Shader
-
稳定键映射:
- 查询.scl.csv获取StableKey
- 建立材质路
