HDRP7.4.1 jenkinsでビルドしたexeを実行すると、UnityEngine.Rendering.CoreUtils:CreateEngineMaterialでNullReferenceExceptionになる

トラブルシューティング
NullReferenceException: Object reference not set to an instance of an object.
UnityEngine.Rendering.CoreUtils:CreateEngineMaterial(Shader)
UnityEngine.Rendering.HighDefinition.HDRenderPipeline:.ctor(HDRenderPipelineAsset, HDRenderPipelineAsset)
UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset:CreatePipeline()
UnityEngine.Rendering.RenderPipelineAsset:InternalCreatePipeline()
UnityEngine.Rendering.RenderPipelineManager:PrepareRenderPipeline(RenderPipelineAsset)
UnityEngine.Rendering.RenderPipelineManager:DoRenderLoop_Internal(RenderPipelineAsset, IntPtr)

Unity2019.4.3 HDRP7.4.1

エディタでビルドした場合は正常です。つまりコマンドラインビルドで問題が起きてるようです(未検証

スポンサーリンク

原因

HDRP build: Cannot create required material because shader is null
I've finished migrating my game from Unity 2018.3 to Unity 2019.1, with HDRP 5.13. The game builds, but when running it, it hangs on the splash screen....

HDRenderPipelineResources.assetResolveMotionVecPSの項目がNoneになってます!

m_MotionVectorResolve = CoreUtils.CreateEngineMaterial(asset.renderPipelineResources.shaders.resolveMotionVecPS);

そのためHDRenderPipeline.csのコンスタラクタの上記箇所でNullエラーになってしまいます。

対策

根本治癒

  • HDRenderPipelineResources.assetをアセットをAssets以下に持ってきて正しい値を設定する
  • C:\Users\???\AppData\Local\Unity\cache\packages\packages.unity.com\com.unity.render-pipelines.high-definition@7.4.1 にある.assetを修正したもので上書き

package上書き

  • LibraryPackageCachecom.unity.render-pipelines.high-definition@7.4.1Packagesに移動
  • HDRenderPipelineResources.assetを正しい値に設定する