A licensee wanted to report some missing PSO Precaching they found, which they have fixed locally:
1. UCableComponent doesn't implement CollectPSOPrecacheData or call CheckPSOPrecachingAndBoostPriority/PrecachePSOs
2. UNiagaraRibbonRendererProperties::IsBackfaceCullingDisabled() reports the wrong value if bUseMaterialBackfaceCulling=true instead of Material->IsTwoSided(), which results in caching the wrong PSO
3. FBasePassMeshProcessor::ShouldDraw should ignore the AutoBeforeDOFTranslucencyBoundary > 0 if Scene == nullptr (IE, it's the PSO precaching instance) so that those variants are cached also.
4. MD_LightFunction materials do not reliably precache and cause hitches. UMaterialInstance::PostLoad() does not check for MD_LightFunction like UMaterial::PostLoad does, which misses instances with static permutations, and even with that caching, CreateSceneProxy() on the LightComponents doesn't wait for precaching before creating the FLightSceneProxy, which causes hitches despite EPSOPrecacheProxyCreationStrategy::DelayUntilPSOPrecached
Steps to Reproduce
Run with r.PSOPrecache.Validation=2
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-314647 in the post.
0 |
Component | UE - Rendering Architecture - RHI |
---|---|
Affects Versions | 5.6 |
Created | Aug 20, 2025 |
---|---|
Updated | Aug 20, 2025 |