你好:
最近发现在移动端使用SceneCapture的时候,帧率会有严重下降的情况。Insight发现是有SceneCapture的时候,渲染线程和RHI线程都会出现长时间的wait,导致帧率下降。
这是正常渲染的情况
[Image Removed]
这是使用了SceneCapture的情况
[Image Removed]
针对帧率下降的问题,有什么解决方法呢?
非常感谢!
你好:
最近发现在移动端使用SceneCapture的时候,帧率会有严重下降的情况。Insight发现是有SceneCapture的时候,渲染线程和RHI线程都会出现长时间的wait,导致帧率下降。
这是正常渲染的情况
[Image Removed]
这是使用了SceneCapture的情况
[Image Removed]
针对帧率下降的问题,有什么解决方法呢?
非常感谢!
Hi, 理论上这个Flush不是必须的,在一帧内只要在最后一个renderer flush就好了
但是这个提交是5.6才提交的,相对与5.4,RDG进行了比较多的改动…
https://github.com/EpicGames/UnrealEngine/commit/782fb3303a63dd8275c87445186b2d6f90b8b77f
可以试一下 Engine\Source\Runtime\Renderer\Private\DeferredShadingRenderer.cpp ,将
调用 GraphBuilder.SetFlushResourcesRHI() 的地方需要加一些条件判断一下
感谢回复。
我们目前走的是前向管线,而5.6的代码确实和5.4相差非常大。EndFlushResourcesRHI()除了SetFlushResourcesRHI会执行,同时也会在SceneCaptureRendering的UpdateSceneCaptureContentMobile_RenderThread函数中的GraphBuilder.Execute()中被调用,导致出现问题
[Content removed]
[2025.06.21-17.21.04:062][654]LogAndroid: Error: Fatal error: [File:./Runtime/RHI/Private/PipelineStateCache.cpp] [Line: 925]
[2025.06.21-17.21.04:062][654]LogAndroid: Error: Consolidate was hit while Get/SetPSO was running
[2025.06.21-17.21.04:062][654]LogAndroid: Error: [Callstack] 0x0000007AA19C8838 libUnreal.so(0x000000000C6E1838)!TSharedPipelineStateCache<FRHIComputeShader*, FComputePipelineState*>::ConsolidateThreadedCaches()
[2025.06.21-17.21.04:062][654]LogAndroid: Error: [Callstack] 0x0000007AA19C7854 libUnreal.so(0x000000000C6E0854)!PipelineStateCache::FlushResources()
[2025.06.21-17.21.04:062][654]LogAndroid: Error: [Callstack] 0x0000007AA1C892BC libUnreal.so(0x000000000C9A22BC)!FRDGBuilder::EndFlushResourcesRHI()
[2025.06.21-17.21.04:062][654]LogAndroid: Error: [Callstack] 0x0000007AA1C95718 libUnreal.so(0x000000000C9AE718)!FRDGBuilder::Execute()
[2025.06.21-17.21.04:062][654]LogAndroid: Error: [Callstack] 0x0000007AA4349BB0 libUnreal.so(0x000000000F062BB0)!UpdateSceneCaptureContentMobile_RenderThread(FRHICommandListImmediate&, FSceneRenderer*, FRenderTarget*, FTexture*, FString const&, FRHICopyTextureInfo const&, bool, FGenerateMipsParams const&)
想了解一下如果是在5.4引擎,目前有没有比较好的正规修复方案呢?
非常感谢,期待回复~
Hi,能否试一下在MobileShadingRenderer.cpp的这段,改成下面这样?
if (bIsFirstSceneRenderer && !Views[0].bIsSceneCapture) { GraphBuilder.SetFlushResourcesRHI(); }