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,...

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を正しい値に設定する