NS_IMETHODIMP nsImageLoadingContent::OnStartFrame(imgIRequest* aRequest, PRUint32 aFrame) { NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome(), NS_ERROR_NOT_AVAILABLE); LOOP_OVER_OBSERVERS(OnStartFrame(aRequest, aFrame)); return NS_OK; }
/** * Initialize scene's views. * Check visibility, sort translucent items, etc. */ void FForwardShadingSceneRenderer::InitViews(FRHICommandListImmediate& RHICmdList) { SCOPED_DRAW_EVENT(RHICmdList, InitViews); SCOPE_CYCLE_COUNTER(STAT_InitViewsTime); FILCUpdatePrimTaskData ILCTaskData; PreVisibilityFrameSetup(RHICmdList); ComputeViewVisibility(RHICmdList); PostVisibilityFrameSetup(ILCTaskData); bool bDynamicShadows = ViewFamily.EngineShowFlags.DynamicShadows && GetShadowQuality() > 0; if (bDynamicShadows && !IsSimpleDynamicLightingEnabled()) { // Setup dynamic shadows. InitDynamicShadows(RHICmdList); } // if we kicked off ILC update via task, wait and finalize. if (ILCTaskData.TaskRef.IsValid()) { Scene->IndirectLightingCache.FinalizeCacheUpdates(Scene, *this, ILCTaskData); } // initialize per-view uniform buffer. Pass in shadow info as necessary. for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) { const TArray<FProjectedShadowInfo*, SceneRenderingAllocator>* DirectionalLightShadowInfo = nullptr; FViewInfo& ViewInfo = Views[ViewIndex]; FScene* Scene = (FScene*)ViewInfo.Family->Scene; if (bDynamicShadows && Scene->SimpleDirectionalLight) { int32 LightId = Scene->SimpleDirectionalLight->Id; if (VisibleLightInfos.IsValidIndex(LightId)) { const FVisibleLightInfo& VisibleLightInfo = VisibleLightInfos[LightId]; if (VisibleLightInfo.AllProjectedShadows.Num() > 0) { DirectionalLightShadowInfo = &VisibleLightInfo.AllProjectedShadows; } } } // Initialize the view's RHI resources. Views[ViewIndex].InitRHIResources(DirectionalLightShadowInfo); } // Now that the indirect lighting cache is updated, we can update the primitive precomputed lighting buffers. UpdatePrimitivePrecomputedLightingBuffers(); OnStartFrame(); }
/** * Initialize scene's views. * Check visibility, sort translucent items, etc. */ void FForwardShadingSceneRenderer::InitViews(FRHICommandListImmediate& RHICmdList) { SCOPED_DRAW_EVENT(RHICmdList, InitViews); SCOPE_CYCLE_COUNTER(STAT_InitViewsTime); PreVisibilityFrameSetup(RHICmdList); ComputeViewVisibility(RHICmdList); PostVisibilityFrameSetup(); bool bDynamicShadows = ViewFamily.EngineShowFlags.DynamicShadows && GetShadowQuality() > 0; if (bDynamicShadows && !IsSimpleDynamicLightingEnabled()) { // Setup dynamic shadows. InitDynamicShadows(RHICmdList); } // initialize per-view uniform buffer. Pass in shadow info as necessary. for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) { const TArray<FProjectedShadowInfo*, SceneRenderingAllocator>* DirectionalLightShadowInfo = nullptr; FViewInfo& ViewInfo = Views[ViewIndex]; FScene* Scene = (FScene*)ViewInfo.Family->Scene; if (bDynamicShadows && Scene->SimpleDirectionalLight) { int32 LightId = Scene->SimpleDirectionalLight->Id; if (VisibleLightInfos.IsValidIndex(LightId)) { const FVisibleLightInfo& VisibleLightInfo = VisibleLightInfos[LightId]; if (VisibleLightInfo.AllProjectedShadows.Num() > 0) { DirectionalLightShadowInfo = &VisibleLightInfo.AllProjectedShadows; } } } // Initialize the view's RHI resources. Views[ViewIndex].InitRHIResources(DirectionalLightShadowInfo); } OnStartFrame(); }