UE4 用 fastbuild 实现并行编译 Shader
其实也是用网上代码改的,参见这里 https://github.com/fastbuild/fastbuild/issues/539
然后自己集成进去就可以,参考 XGE 的实现即可,几个需要改的地方
1: UE4 ShaderCompiler.cpp 里面有个地方把 Shader mapping directory 从相对路径给转换成绝对路径了,这个需要去掉,同时保证UE4引擎和项目处于同一个盘上。
2: 编译机器上需要把 VC 2017 redistributable 和 DX 的 runtime 都装上,前者有很多地方可以下载,后者搜索 dxwebinstaller,从微软站上下了以后把 directx 的库都装齐
3: 依赖关系需要增加一些,需要修改 ShaderCompilerFASTBuild.cpp 里面,之前只有 .ush 和 .usf 的依赖,请照葫芦画瓢增加 .h .hlsl .glsl 的依赖,此外依赖文件除了 Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\d3dcompiler_47.dll 之外,还需要增加下面这几个依赖
Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\WinPixEventRuntime.dll
Engine\\Binaries\\Win64\\dxcompiler.dll
Engine\\Binaries\\Win64\\dxcompiler_sc.dll
Engine\\Binaries\\Win64\\dxil.dll
加上以后重新编译 UE4,配置好 fastbuild 即可,比花钱买 IncrediBuild 还是划算很多。
请问楼主用的ue和fastbuild的哪个版本呢?
我最近想在ue4.24版本上使用fastbuild0.99,但是编译中vs会看到msb3073和3075的错误。
在日志中会看到failed due can nout find fild xxxxx.action_0的错误,这个楼主遇到过吗?
没有, ue4 用 ubt 编译那部分我没用 fastbuild, 我只是把 shader 部分给用 fastbuild 了,原理不是太一样。