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

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

スポンサーリンク

原因

https://forum.unity.com/threads/hdrp-build-cannot-create-required-material-because-shader-is-null.678832/

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