ShowFlag.Atmosphere
ShowFlag.Atmosphere
#Overview
name: ShowFlag.Atmosphere
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Allows to override a specific showflag (works in editor and game, \
It is referenced in 34
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.Atmosphere is to control the rendering of atmospheric effects in Unreal Engine 5. Here’s a breakdown of its usage and implications:
-
It’s primarily used in the rendering system, specifically for sky and atmospheric rendering.
-
The Unreal Engine subsystems that rely on this setting variable include:
- SkyAtmosphere rendering
- Volumetric Cloud rendering
- Base Pass rendering
- Path Tracing
-
The value of this variable is typically set through the engine’s show flags system, which allows toggling various rendering features on and off.
-
It interacts with other variables like EngineShowFlags.Cloud for volumetric cloud rendering.
-
Developers should be aware that:
- Disabling this flag will prevent the rendering of atmospheric effects, including sky atmosphere and clouds.
- It can affect performance, as enabling atmospheric rendering requires additional computational resources.
- Some capture and reflection systems may rely on this flag being enabled for correct results.
-
Best practices when using this variable include:
- Ensure it’s enabled when atmospheric effects are needed for visual quality.
- Consider disabling it in performance-critical scenarios where atmospheric effects are not essential.
- Be aware of its impact on related systems like volumetric clouds and sky lighting.
The associated variable Atmosphere shares the same value and is used in similar contexts, particularly in shader parameter structures and rendering passes. It’s often used to pass atmospheric parameters to shaders for rendering atmospheric effects.
When working with these variables, developers should consider the visual impact, performance implications, and potential effects on related rendering systems.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:297
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
/** Render Sky and Atmospheric lighting, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Atmosphere, SFG_Normal, NSLOCTEXT("UnrealEd", "AtmosphereSF", "Atmosphere"))
/** Render Cloud */
SHOWFLAG_FIXED_IN_SHIPPING(1, Cloud, SFG_Normal, NSLOCTEXT("UnrealEd", "CloudSF", "Cloud"))
/** Render safe frames bars*/
SHOWFLAG_FIXED_IN_SHIPPING(0, CameraAspectRatioBars, SFG_Advanced, NSLOCTEXT("UnrealEd", "CameraAspectRatioBarsSF", "Camera Aspect Ratio Bars"))
/** Render safe frames */
SHOWFLAG_FIXED_IN_SHIPPING(1, CameraSafeFrames, SFG_Advanced, NSLOCTEXT("UnrealEd", "CameraSafeFramesSF", "Camera Safe Frames"))
#Loc: <Workspace>/Engine/Plugins/Experimental/CinematicPrestreaming/Source/CinematicPrestreamingEditor/Private/CinePrestreamingRecorderSetting.cpp:29
Scope (from outer to inner):
file
function UCinePrestreamingRecorderSetting::UCinePrestreamingRecorderSetting
Source code excerpt:
ShowFlagsToDisable.Add("ShowFlag.PostProcessing");
ShowFlagsToDisable.Add("ShowFlag.Lighting");
ShowFlagsToDisable.Add("ShowFlag.Atmosphere");
ShowFlagsToDisable.Add("ShowFlag.VolumetricFog");
ShowFlagsToDisable.Add("ShowFlag.VolumetricLightmap");
ShowFlagsToDisable.Add("ShowFlag.LumenGlobalIllumiination");
ShowFlagsToDisable.Add("ShowFlag.LumenReflections");
ShowFlagsToDisable.Add("ShowFlag.AmbientOcclusion");
ShowFlagsToDisable.Add("ShowFlag.DistanceFieldAO");
#Associated Variable and Callsites
This variable is associated with another variable named Atmosphere
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/Compositing/Composure/Source/Composure/Private/ComposureUtils.cpp:22
Scope (from outer to inner):
file
function void FComposureUtils::SetEngineShowFlagsForPostprocessingOnly
Source code excerpt:
EngineShowFlags.EyeAdaptation = false;
EngineShowFlags.VolumetricFog = false;
EngineShowFlags.Atmosphere = false;
EngineShowFlags.Fog = false;
#if !UE_BUILD_OPTIMIZED_SHOWFLAGS
// Development-only flags
EngineShowFlags.ReflectionOverride = false;
EngineShowFlags.DepthOfField = false;
#Loc: <Workspace>/Engine/Plugins/Experimental/Water/Source/Editor/Private/WaterBrushManager.cpp:54
Scope (from outer to inner):
file
function AWaterBrushManager::AWaterBrushManager
Source code excerpt:
SceneCaptureComponent2D->ShowFlagSettings.Add(FEngineShowFlagsSetting { TEXT("NaniteMeshes"), false } );
// These also need to be disabled to get a clean capture of just the water info material output
SceneCaptureComponent2D->ShowFlagSettings.Add(FEngineShowFlagsSetting { TEXT("Atmosphere"), false } );
SceneCaptureComponent2D->ShowFlagSettings.Add(FEngineShowFlagsSetting { TEXT("Bloom"), false } );
SceneCaptureComponent2D->ShowFlagSettings.Add(FEngineShowFlagsSetting { TEXT("Lighting"), false } );
PrimaryActorTick.TickGroup = ETickingGroup::TG_PrePhysics;
bIsEditorOnlyActor = false;
}
#Loc: <Workspace>/Engine/Plugins/Experimental/Water/Source/Runtime/Private/WaterInfoRendering.cpp:643
Scope (from outer to inner):
file
namespace UE::WaterInfo
function static FSceneRenderer* CreateWaterInfoSceneRenderer
Source code excerpt:
FEngineShowFlags ShowFlags(ESFIM_Game);
ShowFlags.NaniteMeshes = 0;
ShowFlags.Atmosphere = 0;
ShowFlags.Lighting = 0;
ShowFlags.Bloom = 0;
ShowFlags.ScreenPercentage = 0;
ShowFlags.Translucency = 0;
ShowFlags.SeparateTranslucency = 0;
ShowFlags.AntiAliasing = 0;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ShaderCompiler/ShaderCompiler.cpp:7886
Scope (from outer to inner):
file
function void GlobalBeginCompileShader
Source code excerpt:
Input.DebugGroupName.ReplaceInline(TEXT("Culling"), TEXT("Cull"));
Input.DebugGroupName.ReplaceInline(TEXT("Atmospheric"), TEXT("Atm"));
Input.DebugGroupName.ReplaceInline(TEXT("Atmosphere"), TEXT("Atm"));
Input.DebugGroupName.ReplaceInline(TEXT("Exponential"), TEXT("Exp"));
Input.DebugGroupName.ReplaceInline(TEXT("Ambient"), TEXT("Amb"));
Input.DebugGroupName.ReplaceInline(TEXT("Perspective"), TEXT("Persp"));
Input.DebugGroupName.ReplaceInline(TEXT("Occlusion"), TEXT("Occ"));
Input.DebugGroupName.ReplaceInline(TEXT("Position"), TEXT("Pos"));
Input.DebugGroupName.ReplaceInline(TEXT("Skylight"), TEXT("Sky"));
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:297
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
/** Render Sky and Atmospheric lighting, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Atmosphere, SFG_Normal, NSLOCTEXT("UnrealEd", "AtmosphereSF", "Atmosphere"))
/** Render Cloud */
SHOWFLAG_FIXED_IN_SHIPPING(1, Cloud, SFG_Normal, NSLOCTEXT("UnrealEd", "CloudSF", "Cloud"))
/** Render safe frames bars*/
SHOWFLAG_FIXED_IN_SHIPPING(0, CameraAspectRatioBars, SFG_Advanced, NSLOCTEXT("UnrealEd", "CameraAspectRatioBarsSF", "Camera Aspect Ratio Bars"))
/** Render safe frames */
SHOWFLAG_FIXED_IN_SHIPPING(1, CameraSafeFrames, SFG_Advanced, NSLOCTEXT("UnrealEd", "CameraSafeFramesSF", "Camera Safe Frames"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/BasePassRendering.cpp:1527
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderBasePassInternal
Source code excerpt:
RenderEditorPrimitives(GraphBuilder, PassParameters, View, DrawRenderState, InstanceCullingManager);
if (bShouldRenderView && View.Family->EngineShowFlags.Atmosphere)
{
FOpaqueBasePassParameters* SkyPassPassParameters = GraphBuilder.AllocParameters<FOpaqueBasePassParameters>();
SkyPassPassParameters->BasePass = PassParameters->BasePass;
SkyPassPassParameters->RenderTargets = BasePassRenderTargets;
SkyPassPassParameters->View = View.GetShaderParameters();
SkyPassPassParameters->ReflectionCapture = View.ReflectionCaptureUniformBuffer;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/BasePassRendering.cpp:1598
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderBasePassInternal
Source code excerpt:
RenderEditorPrimitives(GraphBuilder, PassParameters, View, DrawRenderState, InstanceCullingManager);
if (bShouldRenderView && View.Family->EngineShowFlags.Atmosphere)
{
FOpaqueBasePassParameters* SkyPassParameters = GraphBuilder.AllocParameters<FOpaqueBasePassParameters>();
SkyPassParameters->BasePass = PassParameters->BasePass;
SkyPassParameters->RenderTargets = BasePassRenderTargets;
SkyPassParameters->View = View.GetShaderParameters();
SkyPassParameters->ReflectionCapture = View.ReflectionCaptureUniformBuffer;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/MobileBasePassRendering.cpp:477
Scope (from outer to inner):
file
function void FMobileSceneRenderer::RenderMobileBasePass
Source code excerpt:
View.ParallelMeshDrawCommandPasses[EMeshPass::BasePass].DispatchDraw(nullptr, RHICmdList, InstanceCullingDrawParams);
if (View.Family->EngineShowFlags.Atmosphere)
{
View.ParallelMeshDrawCommandPasses[EMeshPass::SkyPass].DispatchDraw(nullptr, RHICmdList, &SkyPassInstanceCullingDrawParams);
}
// editor primitives
FMeshPassProcessorRenderState DrawRenderState;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PathTracing.cpp:2621
Scope: file
Source code excerpt:
PassParameters->NumSamples = AtmoConfig.NumSamples;
PassParameters->Resolution = AtmoConfig.Resolution;
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->AtmosphereOpticalDepthLUT = GraphBuilder.CreateUAV(AtmosphereOpticalDepthLUT);
TShaderMapRef<FPathTracingBuildAtmosphereOpticalDepthLUTCS> ComputeShader(GetGlobalShaderMap(View.FeatureLevel));
FComputeShaderUtils::AddPass(
GraphBuilder,
RDG_EVENT_NAME("Path Tracing Atmosphere Optical Depth LUT (Resolution=%u, NumSamples=%u)", AtmoConfig.Resolution, AtmoConfig.NumSamples),
ComputeShader,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PathTracing.cpp:2919
Scope: file
Source code excerpt:
if (PreviousPassParameters != nullptr)
{
PassParameters->Atmosphere = PreviousPassParameters->Atmosphere;
PassParameters->PlanetCenterTranslatedWorldHi = PreviousPassParameters->PlanetCenterTranslatedWorldHi;
PassParameters->PlanetCenterTranslatedWorldLo = PreviousPassParameters->PlanetCenterTranslatedWorldLo;
}
else if ((Config.PathTracingData.VolumeFlags & PATH_TRACER_VOLUME_ENABLE_ATMOSPHERE) != 0)
{
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
FVector PlanetCenterTranslatedWorld = Scene->GetSkyAtmosphereSceneInfo()->GetSkyAtmosphereSceneProxy().GetAtmosphereSetup().PlanetCenterKm * double(FAtmosphereSetup::SkyUnitToCm) + View.ViewMatrices.GetPreViewTranslation();
SplitDouble(PlanetCenterTranslatedWorld.X, &PassParameters->PlanetCenterTranslatedWorldHi.X, &PassParameters->PlanetCenterTranslatedWorldLo.X);
SplitDouble(PlanetCenterTranslatedWorld.Y, &PassParameters->PlanetCenterTranslatedWorldHi.Y, &PassParameters->PlanetCenterTranslatedWorldLo.Y);
SplitDouble(PlanetCenterTranslatedWorld.Z, &PassParameters->PlanetCenterTranslatedWorldHi.Z, &PassParameters->PlanetCenterTranslatedWorldLo.Z);
}
else
{
FAtmosphereUniformShaderParameters AtmosphereParams = {};
PassParameters->Atmosphere = CreateUniformBufferImmediate(AtmosphereParams, EUniformBufferUsage::UniformBuffer_SingleFrame);
PassParameters->PlanetCenterTranslatedWorldHi = FVector3f(0);
PassParameters->PlanetCenterTranslatedWorldLo = FVector3f(0);
}
PassParameters->AtmosphereOpticalDepthLUT = AtmosphereOpticalDepthLUT;
PassParameters->AtmosphereOpticalDepthLUTSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ReflectionEnvironmentRealTimeCapture.cpp:301
Scope: file
Source code excerpt:
// Ignore viewfamilies without the Atmosphere showflag enabled as the sky capture may fail otherwise
// as well as all views being "scene captures" which cannot be used to update the sky light data.
if (MainView.bIsSceneCapture || !MainView.Family->EngineShowFlags.Atmosphere)
{
return;
}
FRealTimeSlicedReflectionCapture& Capture = RealTimeSlicedReflectionCapture;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:372
Scope (from outer to inner):
file
function bool ShouldRenderSkyAtmosphere
Source code excerpt:
bool ShouldRenderSkyAtmosphere(const FScene* Scene, const FEngineShowFlags& EngineShowFlags)
{
if (Scene && Scene->HasSkyAtmosphere() && EngineShowFlags.Atmosphere)
{
EShaderPlatform ShaderPlatform = Scene->GetShaderPlatform();
const FSkyAtmosphereRenderSceneInfo* SkyAtmosphere = Scene->GetSkyAtmosphereSceneInfo();
check(SkyAtmosphere);
return FReadOnlyCVARCache::SupportSkyAtmosphere() && CVarSkyAtmosphere.GetValueOnRenderThread() > 0;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:412
Scope (from outer to inner):
file
function static void CopyAtmosphereSetupToUniformShaderParameters
Source code excerpt:
}
static void CopyAtmosphereSetupToUniformShaderParameters(FAtmosphereUniformShaderParameters& out, const FAtmosphereSetup& Atmosphere)
{
#define COPYMACRO(MemberName) out.MemberName = Atmosphere.MemberName
COPYMACRO(MultiScatteringFactor);
COPYMACRO(BottomRadiusKm);
COPYMACRO(TopRadiusKm);
COPYMACRO(RayleighDensityExpScale);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:918
Scope (from outer to inner):
file
class class FRenderDistantSkyLightLutCS : public FGlobalShader
Source code excerpt:
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FAtmosphereUniformShaderParameters, Atmosphere)
SHADER_PARAMETER_STRUCT_REF(FSkyAtmosphereInternalCommonParameters, SkyAtmosphere)
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, ViewUniformBuffer)
SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture3D<float4>, CameraAerialPerspectiveVolumeUAV)
SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture3D<float4>, CameraAerialPerspectiveVolumeMieOnlyUAV)
SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture3D<float4>, CameraAerialPerspectiveVolumeRayOnlyUAV)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D<float3>, TransmittanceLutTexture)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:973
Scope (from outer to inner):
file
class class FRenderMultiScatteredLuminanceLutCS : public FGlobalShader
Source code excerpt:
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FAtmosphereUniformShaderParameters, Atmosphere)
SHADER_PARAMETER_STRUCT_REF(FSkyAtmosphereInternalCommonParameters, SkyAtmosphere)
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, ViewUniformBuffer)
RENDER_TARGET_BINDING_SLOTS()
SHADER_PARAMETER_RDG_TEXTURE(Texture2D<float3>, TransmittanceLutTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D<float3>, MultiScatteredLuminanceLutTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, TransmittanceLutTextureSampler)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1335
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderTransmittanceLutCS::FParameters * PassParameters = GraphBuilder.AllocParameters<FRenderTransmittanceLutCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->TransmittanceLutUAV = GraphBuilder.CreateUAV(FRDGTextureUAVDesc(TransmittanceLut, 0));
FIntVector TextureSize = TransmittanceLut->Desc.GetSize();
TextureSize.Z = 1;
const FIntVector NumGroups = FIntVector::DivideAndRoundUp(TextureSize, FRenderTransmittanceLutCS::GroupSize);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1352
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderMultiScatteredLuminanceLutCS::FParameters * PassParameters = GraphBuilder.AllocParameters<FRenderMultiScatteredLuminanceLutCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->TransmittanceLutTexture = TransmittanceLut;
PassParameters->UniformSphereSamplesBuffer = GUniformSphereSamplesBuffer.UniformSphereSamplesBuffer.SRV;
PassParameters->UniformSphereSamplesBufferSampleCount = GUniformSphereSamplesBuffer.GetSampletCount();
PassParameters->MultiScatteredLuminanceLutUAV = MultiScatteredLuminanceLutUAV;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1377
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderDistantSkyLightLutCS::FParameters * PassParameters = GraphBuilder.AllocParameters<FRenderDistantSkyLightLutCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->TransmittanceLutTexture = TransmittanceLut;
PassParameters->MultiScatteredLuminanceLutTexture = MultiScatteredLuminanceLut;
PassParameters->UniformSphereSamplesBuffer = GUniformSphereSamplesBuffer.UniformSphereSamplesBuffer.SRV;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1487
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderSkyViewLutCS::FParameters* PassParameters = GraphBuilder.AllocParameters<FRenderSkyViewLutCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->ViewUniformBuffer = ReflectionViewUniformBuffer;
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture0Sampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture1Sampler = SamplerLinearClamp;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1535
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderCameraAerialPerspectiveVolumeCS::FParameters* PassParameters = GraphBuilder.AllocParameters<FRenderCameraAerialPerspectiveVolumeCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->ViewUniformBuffer = ReflectionViewUniformBuffer;
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture0Sampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture1Sampler = SamplerLinearClamp;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1612
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderSkyViewLutCS::FParameters * PassParameters = GraphBuilder.AllocParameters<FRenderSkyViewLutCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->ViewUniformBuffer = View.ViewUniformBuffer;
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture0Sampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture1Sampler = SamplerLinearClamp;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1656
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereLookUpTables
Source code excerpt:
FRenderCameraAerialPerspectiveVolumeCS::FParameters * PassParameters = GraphBuilder.AllocParameters<FRenderCameraAerialPerspectiveVolumeCS::FParameters>();
PassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->ViewUniformBuffer = View.ViewUniformBuffer;
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture0Sampler = SamplerLinearClamp;
PassParameters->VolumetricCloudShadowMapTexture1Sampler = SamplerLinearClamp;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1758
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereInternal
Source code excerpt:
FSkyAtmosphereRenderSceneInfo& SkyInfo = *Scene->GetSkyAtmosphereSceneInfo();
const FSkyAtmosphereSceneProxy& SkyAtmosphereSceneProxy = SkyInfo.GetSkyAtmosphereSceneProxy();
const FAtmosphereSetup& Atmosphere = SkyAtmosphereSceneProxy.GetAtmosphereSetup();
const FViewMatrices& ViewMatrices = *SkyRC.ViewMatrices;
FRHISamplerState* SamplerLinearClamp = TStaticSamplerState<SF_Trilinear>::GetRHI();
const float AerialPerspectiveStartDepthInCm = SkyRC.AerialPerspectiveStartDepthInCm;
const FVector3f ViewOrigin = (FVector3f)ViewMatrices.GetViewOrigin();
const FVector3f PlanetCenter = (FVector3f)Atmosphere.PlanetCenterKm * KM_TO_CM; // LWC_TODO: Precision Loss
const float TopOfAtmosphere = Atmosphere.TopRadiusKm * KM_TO_CM;
const float PLANET_RADIUS_RATIO_SAFE_EDGE = 1.00000155763f; // must match PLANET_RADIUS_SAFE_TRACE_EDGE
const bool ForceRayMarching = SkyRC.bForceRayMarching || (FVector3f::Distance(ViewOrigin, PlanetCenter) >= (TopOfAtmosphere * PLANET_RADIUS_RATIO_SAFE_EDGE));
const bool bDisableBlending = SkyRC.bDisableBlending;
// We only support MSAA up to 8 sample and in forward
check(SkyRC.MSAASampleCount <= 8);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1808
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereInternal
Source code excerpt:
FRenderSkyAtmospherePS::FParameters* PsPassParameters = GraphBuilder.AllocParameters<FRenderSkyAtmospherePS::FParameters>();
PsPassParameters->Atmosphere = Scene->GetSkyAtmosphereSceneInfo()->GetAtmosphereUniformBuffer();
PsPassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PsPassParameters->ViewUniformBuffer = SkyRC.ViewUniformBuffer;
PsPassParameters->Scene = SkyRC.SceneUniformBuffer;
PsPassParameters->RenderTargets = SkyRC.RenderTargets;
PsPassParameters->SceneTextures = SceneTextures;
PsPassParameters->MSAADepthTexture = SkyRC.MSAADepthTexture;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:1957
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphere
Source code excerpt:
SkyRC.SceneUniformBuffer = GetSceneUniforms().GetBuffer(GraphBuilder);
const FAtmosphereSetup& Atmosphere = SkyAtmosphereSceneProxy.GetAtmosphereSetup();
SkyRC.bFastSky = CVarSkyAtmosphereFastSkyLUT.GetValueOnRenderThread() > 0;
SkyRC.bFastAerialPerspective = CVarSkyAtmosphereAerialPerspectiveApplyOnOpaque.GetValueOnRenderThread() > 0;
SkyRC.bFastAerialPerspectiveDepthTest = CVarSkyAtmosphereAerialPerspectiveDepthTest.GetValueOnRenderThread() > 0;
SkyRC.bSecondAtmosphereLightEnabled = Scene->IsSecondAtmosphereLightEnabled();
SkyAtmosphereLightShadowData LightShadowData;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2063
Scope (from outer to inner):
file
function void FSceneRenderer::RenderSkyAtmosphereEditorNotifications
Source code excerpt:
{
const FViewInfo& View = Views[ViewIndex];
if (View.bSceneHasSkyMaterial && View.Family->EngineShowFlags.Atmosphere)
{
RenderSkyAtmosphereEditorHudPS::FPermutationDomain PermutationVector;
TShaderMapRef<RenderSkyAtmosphereEditorHudPS> PixelShader(View.ShaderMap, PermutationVector);
RenderSkyAtmosphereEditorHudPS::FParameters* PassParameters = GraphBuilder.AllocParameters<RenderSkyAtmosphereEditorHudPS::FParameters>();
PassParameters->RenderTargets[0] = FRenderTargetBinding(SceneColorTexture, ERenderTargetLoadAction::ELoad);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2098
Scope (from outer to inner):
file
function FScreenPassTexture AddSkyAtmosphereDebugPasses
Source code excerpt:
const FSkyAtmosphereSceneProxy& SkyAtmosphereSceneProxy = SkyInfo.GetSkyAtmosphereSceneProxy();
const FAtmosphereSetup& Atmosphere = SkyAtmosphereSceneProxy.GetAtmosphereSetup();
if (bSkyAtmosphereVisualizeShowFlag)
{
FRDGTextureRef TransmittanceLut = GraphBuilder.RegisterExternalTexture(SkyInfo.GetTransmittanceLutTexture());
FRDGTextureRef MultiScatteredLuminanceLut = GraphBuilder.RegisterExternalTexture(SkyInfo.GetMultiScatteredLuminanceLutTexture());
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2115
Scope (from outer to inner):
file
function FScreenPassTexture AddSkyAtmosphereDebugPasses
Source code excerpt:
FRenderDebugSkyAtmospherePS::FParameters* PassParameters = GraphBuilder.AllocParameters<FRenderDebugSkyAtmospherePS::FParameters>();
PassParameters->Atmosphere = SkyInfo.GetAtmosphereUniformBuffer();
PassParameters->SkyAtmosphere = SkyInfo.GetInternalCommonParametersUniformBuffer();
PassParameters->ViewUniformBuffer = View.ViewUniformBuffer;
PassParameters->RenderTargets[0] = FRenderTargetBinding(ScreenPassSceneColor.Texture, ERenderTargetLoadAction::ELoad);
PassParameters->TransmittanceLutTextureSampler = SamplerLinearClamp;
PassParameters->MultiScatteredLuminanceLutTextureSampler = SamplerLinearClamp;
PassParameters->TransmittanceLutTexture = TransmittanceLut;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2133
Scope (from outer to inner):
file
function FScreenPassTexture AddSkyAtmosphereDebugPasses
lambda-function
Source code excerpt:
// Now debug print
AddDrawCanvasPass(GraphBuilder, {}, View, FScreenPassRenderTarget(ScreenPassSceneColor, ERenderTargetLoadAction::ELoad),
[bSkyAtmosphereVisualizeShowFlag, &View, &Atmosphere](FCanvas& Canvas)
{
FLinearColor TextColor(FLinearColor::White);
FLinearColor GrayTextColor(FLinearColor::Gray);
FLinearColor WarningColor(1.0f, 0.5f, 0.0f);
FString Text;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2145
Scope (from outer to inner):
file
function FScreenPassTexture AddSkyAtmosphereDebugPasses
lambda-function
Source code excerpt:
if (bSkyAtmosphereVisualizeShowFlag)
{
const float ViewPlanetAltitude = (View.ViewLocation * FAtmosphereSetup::CmToSkyUnit - (FVector)Atmosphere.PlanetCenterKm).Size() - Atmosphere.BottomRadiusKm;
const bool bViewUnderGroundLevel = ViewPlanetAltitude < 0.0f;
if (bViewUnderGroundLevel)
{
Text = FString::Printf(TEXT("SkyAtmosphere: View is %.3f km under the planet ground level!"), -ViewPlanetAltitude);
Canvas.DrawShadowedString(ViewPortWidth * 0.5 - 250.0f, ViewPortHeight * 0.5f, *Text, GetStatsFont(), WarningColor);
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SkyAtmosphereRendering.cpp:2163
Scope (from outer to inner):
file
function FScreenPassTexture AddSkyAtmosphereDebugPasses
lambda-function
Source code excerpt:
const float HemiViewTop = ViewPortHeight - HemiViewHeight - TimeOfDayViewHeight - Margin * 2.0;
Text = FString::Printf(TEXT("Atmosphere top = %.1f km"), Atmosphere.TopRadiusKm - Atmosphere.BottomRadiusKm);
Canvas.DrawShadowedString(DensityViewLeft, DensityViewTop, *Text, GetStatsFont(), TextColor);
Text = FString::Printf(TEXT("Rayleigh extinction"));
Canvas.DrawShadowedString(DensityViewLeft + 60.0f, DensityViewTop + 30.0f, *Text, GetStatsFont(), FLinearColor(FLinearColor::Red));
Text = FString::Printf(TEXT("Mie extinction"));
Canvas.DrawShadowedString(DensityViewLeft + 60.0f, DensityViewTop + 45.0f, *Text, GetStatsFont(), FLinearColor(FLinearColor::Green));
Text = FString::Printf(TEXT("Absorption"));
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/VolumetricCloudRendering.cpp:250
Scope (from outer to inner):
file
function bool ShouldRenderVolumetricCloud
Source code excerpt:
bool ShouldRenderVolumetricCloud(const FScene* Scene, const FEngineShowFlags& EngineShowFlags)
{
if (Scene && Scene->HasVolumetricCloud() && EngineShowFlags.Atmosphere && EngineShowFlags.Cloud)
{
const FVolumetricCloudRenderSceneInfo* VolumetricCloud = Scene->GetVolumetricCloudSceneInfo();
check(VolumetricCloud);
bool bCloudMaterialValid = false;
if (VolumetricCloud->GetVolumetricCloudSceneProxy().GetCloudVolumeMaterial())