Reproduced Crash on 4.18.3, 4.19.2, and Main CL 4081612.
Licensee states:
Based on a quick inspection of the code, it seems FVectorFieldVisualizationVertexFactory::ShouldCache() returns false (requires a RHI Feature Level of SM4) so the shader wasn't cached, but vector field scene proxies are created and added to the scene without checking rendering capabilities. As a fix we're thinking of modifying UVectorFieldComponent::CreateSceneProxy() to prevent the creation of the proxy if the feature level of the scene isn't at least SM4 - is this reasonable, or is there a preferred alternative?
Result: Crash
LoginId:77ac66cf4b506a51a458c382c4ec63c2
EpicAccountId:5caf2c99925243e8b9b1bdcc9cd0e6cf
Fatal error: [Link Removed] [Line: 1928] Couldn't find Shader TMobileBasePassVSFNoLightMapPolicyHDRLinear64 for Material Resource LevelColorationUnlitMaterial! RenderMeshShaderMap 0, RenderThreadShaderMap 1 GameMeshShaderMap 0, GameThreadShaderMap 1, bShaderWasFoundInGameShaderMap 0 With VF=FVectorFieldVisualizationVertexFactory, Platform=PCD3D_ES31 ShouldCache: Mat=1, VF=0, Shader=1 MaterialUsageDesc: LightingModel=MSM_Unlit, BlendMode=BLEND_Opaque, SpecialEngine=1, TwoSided=0, TSNormal=1, Masked=0, Distorted=0, WritesEveryPixel=1, ModifiesMeshPosition=0, Usage={}
UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:419]
UE4Editor_Engine!FMaterial::GetShader() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\materials\materialshared.cpp:1915]
UE4Editor_Renderer!GetUniformMobileBasePassShaders<0,0>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.h:517]
UE4Editor_Renderer!GetMobileBasePassShaders<FUniformLightMapPolicy,0>::GetMobileBasePassShaders<FUniformLightMapPolicy,0>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.h:594]
UE4Editor_Renderer!FDrawMobileBasePassDynamicMeshAction::Process<0>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.cpp:410]
UE4Editor_Renderer!ProcessMobileBasePassMesh<FDrawMobileBasePassDynamicMeshAction,0>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.h:1046]
UE4Editor_Renderer!FMobileBasePassOpaqueDrawingPolicyFactory::DrawDynamicMeshTempl<0>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.cpp:460]
UE4Editor_Renderer!FMobileBasePassOpaqueDrawingPolicyFactory::DrawDynamicMesh() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.cpp:538]
UE4Editor_Renderer!FMobileSceneRenderer::RenderMobileBasePass() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobilebasepassrendering.cpp:775]
UE4Editor_Renderer!FMobileSceneRenderer::Render() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\mobileshadingrenderer.cpp:233]
UE4Editor_Renderer!RenderViewFamily_RenderThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenerendering.cpp:2749]
UE4Editor_Renderer!TGraphTask<`FRendererModule::BeginRenderingViewFamily'::`33'::EURCMacro_FDrawSceneCommand>::ExecuteTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\async\taskgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:574]
UE4Editor_RenderCore!RenderingThreadMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:331]
UE4Editor_RenderCore!FRenderingThread::Run() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:465]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:76]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-59408 in the post.
2 |
Component | UE - Platform - Mobile |
---|---|
Affects Versions | 4.18.3, 4.19.2, 4.20 |
Target Fix | 4.20 |
Created | May 21, 2018 |
---|---|
Resolved | Jun 14, 2018 |
Updated | Sep 16, 2019 |