FPrimitiveViewRelevance FTextRenderSceneProxy::GetViewRelevance(const FSceneView* View) const { FPrimitiveViewRelevance Result; Result.bDrawRelevance = IsShown(View) && View->Family->EngineShowFlags.TextRender; Result.bShadowRelevance = IsShadowCast(View); Result.bRenderCustomDepth = ShouldRenderCustomDepth(); Result.bRenderInMainPass = ShouldRenderInMainPass(); Result.bUsesLightingChannels = GetLightingChannelMask() != GetDefaultLightingChannelMask(); if( IsRichView(*View->Family) || View->Family->EngineShowFlags.Bounds || View->Family->EngineShowFlags.Collision || IsSelected() || IsHovered() ) { Result.bDynamicRelevance = true; } else { Result.bStaticRelevance = true; } MaterialRelevance.SetPrimitiveViewRelevance(Result); return Result; }
bool FLightSceneInfo::ShouldRenderLight(const FViewInfo& View) const { // Only render the light if it is in the view frustum bool bLocalVisible = bVisible ? View.VisibleLightInfos[Id].bInViewFrustum : true; #if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) ELightComponentType Type = (ELightComponentType)Proxy->GetLightType(); switch(Type) { case LightType_Directional: if(!View.Family->EngineShowFlags.DirectionalLights) { bLocalVisible = false; } break; case LightType_Point: if(!View.Family->EngineShowFlags.PointLights) { bLocalVisible = false; } break; case LightType_Spot: if(!View.Family->EngineShowFlags.SpotLights) { bLocalVisible = false; } break; } #endif return bLocalVisible // Only render lights with static shadowing for reflection captures, since they are only captured at edit time && (!View.bStaticSceneOnly || Proxy->HasStaticShadowing()) // Only render lights in the default channel, or if there are any primitives outside the default channel && (Proxy->GetLightingChannelMask() & GetDefaultLightingChannelMask() || View.bUsesLightingChannels); }