// Copyright Epic Games, Inc. All Rights Reserved. /*============================================================================= MobileTranslucentRendering.cpp: translucent rendering implementation. =============================================================================*/ #include "CoreMinimal.h" #include "HAL/IConsoleManager.h" #include "RHI.h" #include "HitProxies.h" #include "Shader.h" #include "StaticBoundShaderState.h" #include "SceneUtils.h" #include "RHIStaticStates.h" #include "PostProcess/SceneRenderTargets.h" #include "GlobalShader.h" #include "SceneRenderTargetParameters.h" #include "SceneRendering.h" #include "LightMapRendering.h" #include "MaterialShaderType.h" #include "MeshMaterialShaderType.h" #include "MeshMaterialShader.h" #include "BasePassRendering.h" #include "DynamicPrimitiveDrawing.h" #include "TranslucentRendering.h" #include "MobileBasePassRendering.h" #include "ScenePrivate.h" #include "ScreenRendering.h" #include "PostProcess/SceneFilterRendering.h" #include "PipelineStateCache.h" #include "MeshPassProcessor.inl" #include "ClearQuad.h" void FMobileSceneRenderer::RenderTranslucency(FRHICommandListImmediate& RHICmdList, const FViewInfo& View) { const bool bShouldRenderTranslucency = ShouldRenderTranslucency(StandardTranslucencyPass) && ActiveViewFamily->EngineShowFlags.Translucency && !ActiveViewFamily->UseDebugViewPS(); if (bShouldRenderTranslucency) { CSV_SCOPED_TIMING_STAT_EXCLUSIVE(RenderTranslucency); SCOPE_CYCLE_COUNTER(STAT_TranslucencyDrawTime); SCOPED_DRAW_EVENT(RHICmdList, Translucency); SCOPED_GPU_STAT(RHICmdList, Translucency); RHICmdList.SetViewport(View.ViewRect.Min.X, View.ViewRect.Min.Y, 0.0f, View.ViewRect.Max.X, View.ViewRect.Max.Y, 1.0f); View.ParallelMeshDrawCommandPasses[StandardTranslucencyMeshPass].DispatchDraw(nullptr, RHICmdList, &MeshPassInstanceCullingDrawParams[StandardTranslucencyMeshPass]); } }