見出し画像

NVIDIA版unreal Engine(NvRTX)のエラーを撲滅していく。

NvRTXって?

一言で言うと、Unreal Engineのソースコードをフォークして光や水面の表現が強化されたunreal Engineです。

ここにソースコードがアップされています。
プライベートなリポジトリなのでここを参考にアカウント接続しないと404エラーが出ます。
自分は、NvRTX_Caustics-5.1を使用しました。

セットアップ手順

Githubにも書いてありますが、以下の手順です。

  1. Visual Studio Community 2022をインストールします。
    →Githubには2019と書いてありますが、2022をインストールします。
    UE5 開発に適したコンポーネントをインストールするには、「C++ によるゲーム開発」ワークロードにチェックが入っていることを確認します。右側の「インストールの詳細」セクションで、次のコンポーネントも選択します:
    ・C++プロファイリングツール
    ・C++ AddressSanitizer (オプション)
    ・Windows 10 SDK (10.0.18362 またはそれ以降)

  2. Windows エクスプローラでフォルダを開き、Setup.bat を実行します。

  3. GenerateProjectFiles.bat を実行します。

  4. UE5.sln が作成されるのでダブルクリックして開きます。

  5. ソリューション構成を Development Editor に、ソリューションプラットフォームを Win64 に設定し、ソリューションエクスプローラーのUE5 を右クリックして Build を選択します。

  6. スタートアッププロジェクトを UE5 に設定し、F5 を押してデバッグを開始すれば、Visual Studio からエディタを実行できます。

Visual Studioを2019から2022に変更する以外にも、その通りにやるとビルド出来なかったので、以下にエラーの対処法を書いていきます。

■Setup.bat実行後に出るエラー

●Thread abort is not supported on this platform. ・・・

下記画像のように、エラーが出ます。現環境の.NETのバージョンだとThread.Abortが非推奨ということです。代わりにCancellationTokenを使ってくださいとのことです。

Setup.batを実行後に出るエラー。Thread abort is not supported on this platform.

方法

  1. Visual Studio 2022をインストール。

  2. Visual studio installer個別のコンポーネント.NET SDKにチェックを入れてインストール。

  3. UnrealEngine-NvRTX_Caustics-5.1\Engine\Source\Programs\GitDependencies\GitDependencies.csprojをVisual studio 2022で開く。

  4. UnrealEngine-NvRTX_Caustics-5.1\Engine\Source\Programs\GitDependencies\Program.csの1088行あたりで下記を参考にAbortが例外を出すので、推奨されているCancellationTokenに変更。

  5. Visual Studio 2022のメニューバーのビルドソリューションのビルドでビルドを開始する。DevelopmentAny CPUとした。

  6. UnrealEngine-NvRTX_Caustics-5.1\Engine\Source\Programs\GitDependencies\bin\Development にビルド結果ができる。

  7. UnrealEngine-NvRTX_Caustics-5.1\Engine\Binaries\DotNET\GitDependencies\win-x64にコピペ。

4.CancellationTokenへ変更


●The remote server returned an error: (403) Forbidden. (WebException)

下記画像のようにエラーが出ます。自分の場合は、プロキシを通すことでエラーを回避できました。

Setup.batを実行後に出るエラー。The remote server returned an error: (403) Forbidden. (WebException)

方法

  1. Setup.batを編集で開いて、以下を@echoの次の行に追加。http以下は、それぞれのプロキシのURLに置き換えてください。

set HTTP_PROXY=http://proxy.jp
set HTTPS_PROXY=http://proxy.jp

2.Setup.batを管理者で実行。画面が自動的に消えるまで待つ。



■GenerateProjectFile.bat実行時のエラー

●Error nu1301: https://www.nuget.org/api/v3/index.json ソースのサービスインデックスを読み込めません。

このエラーもプロキシを通してないことで出る。

方法

  1. C:\Users\[UserName]\AppData\Roaming\NuGet\Nugget.Configを開き、valueのところは自分のプロキシのURLにする。

<configuration> 
<config> 
<add key="http_proxy" value="http://proxy_hostname_or_ip:3128" /> 
<add key="https_proxy" value="http://proxy_hostname_or_ip:3128" /> 
</config> 
<packageSources> 
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources> 
</configuration>


■Visual StudioでUE5をビルド時のエラー

●LINK1104 "UnrealEditor-ConcertClientSharedSlate-Win64-Debug-supported.exp”が見つかりません。

下記のようなエラーが出る。

LINK1104 "UnrealEngine-nvrtx-5.1\Engine\Plugins\Developer\Concert\ConcertUI\ConcertClientSharedSlate\Intermediate\Build\Win64\UnrealEditor\Debug\ConcertClientSharedSlate\UnrealEditor-ConcertClientSharedSlate-Win64-Debug-supported.exp”が見つかりません。

方法

  1. UnrealEngine-nvrtx-5.1engine\Binaries\Win64を削除する。ビルド時かGenerateProjectFile.bat起動時に再生成される。


●LNK1181 'OpenColorIO.lib' を開けません。

下記のようなエラーが出る。OpenColorIO.libがなぜか生成されていないので、"D:\UnrealEngine-NvRTX_Caustics-5.1\Engine\Plugins\Compositing\OpenColorIO\Source\ThirdParty\OpenColorIO\BuildForWindows.bat"を使用して生成する。

●LNK1181 'D:\UnrealEngine-NvRTX_Caustics-5.1\Engine\Plugins\Compositing\OpenColorIO\Source\ThirdParty\OpenColorIO\Deploy\OpenColorIO-2.1.0\lib\Win64\OpenColorIO.lib' を開けません。

方法

  1. BuildForWindows.batは、CMakeとgitがインストールされ、環境変数に登録されていることが前提になっている。CMakeは、Visual studio installerにある[C++によるデスクトップ開発]に同梱されているため、これをインストールする。

  2. gitも環境構築する。自分は環境構築せずに、GithubからDownload Zipした。

  3. 環境構築しなかったので、BuildForWindows.batから必要な部分だけ抜き出し、コマンドプロンプトで実行する。2でダウンロードしたファイルを解凍し、そのパスまでコマンドプロンプトでcd(Change Directory)する。

  4. 下記2つを順番にコマンドプロンプトに貼り付けて実行する。最初の部分のcmakeは、環境変数に登録していない場合は以下に置き換える。
    C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe

cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON -DOCIO_BUILD_STATIC=OFF -DOCIO_BUILD_TRUELIGHT=OFF -DOCIO_BUILD_APPS=OFF -DOCIO_BUILD_GPU_TESTS=OFF -DOCIO_BUILD_NUKE=OFF -DOCIO_BUILD_DOCS=OFF -DOCIO_BUILD_TESTS=OFF -DOCIO_BUILD_PYGLUE=OFF -DOCIO_BUILD_JNIGLUE=OFF -DOCIO_STATIC_JNIGLUE=OFF -DOCIO_USE_BOOST_PTR=OFF -DOCIO_PYGLUE_LINK=OFF -DCMAKE_INSTALL_PREFIX:PATH=.\install
cmake --build build --config Release --target INSTALL

5.OpenColor-2.1.0\build\install\lib\OpenColorIO.libが出来るので、UnrealEngine-NvRTX_Caustics-5.1\Engine\Plugins\Compositing\OpenColorIO\Source\ThirdParty\OpenColorIO\Deploy\OpenColorIO-2.1.0\lib\Win64\OpenColorIO.libにコピペする。


● IDE0003 名前を簡素化できます

方法

エラーが出ているファイルを開き、下記を追加する。

#pragma warning disable IDE0003

● IDE0025 プロパティに式本体を使用する

方法

エラーが出ているファイルを開き、下記を追加する。

#pragma warning disable IDE0027


●LNK2019 未解決の外部シンボル NvAPI_D3D12_GetRaytracingCaps が関数 "public: virtual void __cdecl FD3D12DynamicRHI::Init(void)" (?Init@FD3D12DynamicRHI@@UEAAXXZ) で参照されました

方法

恐らく宣言されているNvAPI_D3D12_GetRaytracingCapsが定義されていないためにエラーが出ています。直し方が分からなかったので、以下のソースコードのNvAPI_D3D12_GetRaytracingCapsをコメントアウトして対応しました。

UnrealEngine-NvRTX_Caustics-5.1\Engine¥Source¥ThirdParty¥NVIDIA¥napier.h

NVAPI_INTERFACE NvAPI_D3D12_GetRaytracingCaps(
__in ID3D12Device* pDevice
__in MvAPI_D3D12_RAYTRACING_CAPS_TYPE type,
__out void* pData,
__in size_t dataSize);

Engine¥Source¥Runtime¥D3D12RHI¥Private¥Windows¥D3D12Device.cpp

NvStatusSER =NvAPI_D3D12_GetRaytracingCaps(

GetAdapter().GetD3DDevice(),

NVAPI_D3D12_RAYTRACING_CAPS_TYPE_THREAD_REORDERING

&ReorderCaps,

sizeof(ReorderCaps));


まとめ

以上の対処法で、NvRTX版UE5が起動でき、デフォルトのUE5では出来ない光の表現も出来ていることも確認しました。

いいなと思ったら応援しよう!