共享 DDC 的作用是:当同一网络内共享 DDC 的人只要有一个人编译了 DDC,其他人就无需重新编译,节省 Shader 的编译时间,提高效率。
所以,一般情况下只需要在局域网内部署一个高 IO 吞吐的机器,每个人都把该机器的共享目录挂载到本地,就可以实现 DDC 的共享,因为 DDC 的目录是相对于网络路径的,所以每个人的修改都会影响到其他人,从而实现一个编译多人共享的效果。
UE 的文档里介绍了三种设置的方法:
- 修改
DefaultEngine.ini
添加DerivedDataBackendGraph
项; - 系统中添加
UE-SharedDataCachePath
环境变量; - 在 UE 的
Editor Preferences
-Global
-Shared Derived Data Cache
设置共享的 DDC 目录;
UE 推荐的是使用第一种方法,但是具体实践和文档中介绍的略有不同。
对于源码版引擎,使用 DDC 文档中介绍的第一种方法,在项目的 DefaultEngine.ini
中添加以下项:
1 | [DerivedDataBackendGraph] |
但是对于安装版引擎(Installed),要把 DerivedDataBackendGraph
改成InstalledDerivedDataBackendGraph
:
1 | [InstalledDerivedDataBackendGraph] |
这是因为引擎在 Developer/DerivedDataCache/Private/DerivedDataBackends.cpp
中对安装版和源码版做了区分:
1 | FDerivedDataBackendGraph() |
在设置完之后就可以通过 Commandlet 来执行 DDC 的生成了:
1 | Engine\Binaries\Win64\UE4Editor.exe Client\Client.uproject -run=DerivedDataCache -fill |
该 Commandlet 定义在Editor/UnrealEd/Classes/Commandlets/DerivedDataCacheCommandlet.h
。
如果想要在配置文件添加之后关闭掉 DDC,可以在 Editor 启动时添加参数-ddc=noshared
。