最初に
この記事はUE4にて「Compiling Shaders」が走る際の速度改善を試す方法の記事となります。間違いや更に良い方法があった場合にはそっとTwitter( @ろっさむ )やコメント、修正リクエストなどでお知らせ頂けるととても有難いです。
作業環境
記事内で使用する作業環境は以下の通りとなります。
- Unreal Engine:4.23.1
- Visual Studio:Community 2017 or Community 2017 for Mac or Enterprise 2019
まず「Compiling Shaders」が全然終わらない!
→IncrediBuildをアンインストール
アンインストール手順
IncrediBuildのアンインストール手順は少し複雑なので一応残しておきます。
- Visual Studio InstallerからインストールしているVisual Studioの
変更
を押下し、インストールの詳細
内にある、C++関連のオプションでIncrediBuild - ビルドのアクセラレーション
が有効になっていないか確認してください。なっている場合はチェックを外して変更を行ってください。 - 次に
C:\Program Files (x86)
にあるIncrediBuild
フォルダ下にあるinstall
を起動します(ここでフォルダ移動などしてパスが異なる場合はC:\直下に置きなおしてください。じゃないとゴミが残ったり削除しきれません)。 - ロゴマークなどが出てくる画面になりますので、Nextで進んでいってください。そうするとアンインストールする項目がでるはずなので、そちらを押下し、削除します(もし出ていない場合は一旦I、Installをし直してから再度お試しください)。
- 念のためにPCの再起動をかけといてもいいと思いますが、これでUE4起動し、新規マテリアルを開いても無事シェーダーコンパイルが通るようになると思います。
→IncrediBuildの無効化
無効化手順
-
..\UnrealEngine\UnrealBuildTool
下にあるBuildConfiguration.xml
の記述内で、bAllowXGE
という項目を無効にします。
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<BuildConfiguration>
<bAllowXGE>false</bAllowXGE>
</BuildConfiguration>
</Configuration>
→Avast Antivirusをアンインストール
shaderのコンパイルをブロックしている、という報告がいくつか発見できました。
心当たりがある人は一度アンインストールしてから検証してみてください。
速度向上その1(XGEShaderCompile)
XGEシェーダーコンパイルを無効にします。
ロックアップが発生しなくなり、可能な限りのCPUを使用してシェーダーをコンパイルすることができます。
C:\Program Files > Epic Games\UE_xxx\Engine\Config\ConsoleVariables.ini
の r.XGEShaderCompile= 0
をコメントから外す。
速度向上その2(Shader Compilerの優先度を上にする)
※こちらの方法は低スペックのPCで行わないでください。Shader Compilerの優先度を上げると他のプログラムの優先度が低くなって遅延やフリーズが発生する可能性があります。
Engine > Source > Runtime > Engine > Private > ShaderCompiler > ShaderCompiler.cpp
を開いて、1770行目付近にある変数の値を変更します。
// int32 PriorityModifier = -1; //bellow normal
int32 PriorityModifier = 1; //bellow normal
こうすることでシェーダーコンパイル処理の優先順位が上がります。