r.FastVRam.GBufferD
r.FastVRam.GBufferD
#Overview
name: r.FastVRam.GBufferD
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 35
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of r.FastVRam.GBufferD is to control the texture creation flags for the GBufferD texture in Unreal Engine’s rendering system. Specifically, it’s used to determine whether the GBufferD texture should be created with fast VRAM flags.
-
This setting variable is primarily used in the rendering system of Unreal Engine.
-
The Renderer module relies on this setting variable. It’s used in the SceneRendering.cpp file, which is a core part of Unreal Engine’s rendering pipeline.
-
The value of this variable is set using a console variable (CVar) system. It’s defined using the FASTVRAM_CVAR macro, which likely creates a console variable that can be adjusted at runtime.
-
This variable interacts with the GFastVRamConfig struct, which holds the texture creation flags for various scene textures. The value of r.FastVRam.GBufferD is used to set the GBufferD member of this struct.
-
Developers should be aware that changing this variable will affect the memory allocation strategy for the GBufferD texture. Setting it to 1 will likely prioritize using faster VRAM for this texture, which could improve rendering performance but might increase memory pressure on the GPU.
-
Best practices when using this variable include:
- Only enable it if you’re experiencing performance issues related to GBuffer rendering.
- Monitor GPU memory usage when enabling this, as it might increase VRAM consumption.
- Test thoroughly on various hardware configurations to ensure it doesn’t negatively impact performance on some systems.
Regarding the associated variable GBufferD:
The purpose of GBufferD is to serve as a texture in the G-Buffer system of Unreal Engine’s deferred rendering pipeline. It’s one of several textures that store intermediate rendering data.
-
GBufferD is used across multiple subsystems in the rendering pipeline, including the base pass rendering, hair strands rendering, and post-processing systems.
-
The value (content) of this texture is set during the rendering process, particularly in the base pass and other rendering stages that write to the G-Buffer.
-
It interacts with other G-Buffer textures (GBufferA, GBufferB, GBufferC, etc.) as part of the deferred rendering system.
-
Developers should be aware that the exact content of GBufferD can vary depending on the material and rendering settings. It’s often used to store custom data or specific material properties.
-
Best practices for using GBufferD include:
- Understanding its content in your specific rendering setup to properly utilize it in custom shaders or post-processing effects.
- Being mindful of its resolution and format, as it can impact both rendering quality and performance.
- Consider its usage when optimizing rendering performance, as reading from and writing to G-Buffer textures can be bandwidth-intensive operations.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:462
Scope: file
Source code excerpt:
FASTVRAM_CVAR(GBufferB, 1);
FASTVRAM_CVAR(GBufferC, 0);
FASTVRAM_CVAR(GBufferD, 0);
FASTVRAM_CVAR(GBufferE, 0);
FASTVRAM_CVAR(GBufferF, 0);
FASTVRAM_CVAR(GBufferVelocity, 0);
FASTVRAM_CVAR(HZB, 1);
FASTVRAM_CVAR(SceneDepth, 1);
FASTVRAM_CVAR(SceneColor, 1);
#Associated Variable and Callsites
This variable is associated with another variable named GBufferD
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/TextureShare/Source/TextureShare/Private/Game/ViewExtension/TextureShareSceneViewExtension.cpp:151
Scope (from outer to inner):
file
function void FTextureShareSceneViewExtension::ShareSceneViewColors_RenderThread
Source code excerpt:
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferB, SceneTextures.GBufferB);
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferC, SceneTextures.GBufferC);
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferD, SceneTextures.GBufferD);
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferE, SceneTextures.GBufferE);
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferF, SceneTextures.GBufferF);
}
//////////////////////////////////////////////////////////////////////////////////////////////
FTextureShareSceneViewExtension::FTextureShareSceneViewExtension(const FAutoRegister& AutoRegister, const TSharedRef<ITextureShareObjectProxy, ESPMode::ThreadSafe>& InObjectProxy, FViewport* InLinkedViewport)
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/TextureShare/Source/TextureShare/Private/Misc/TextureShareStrings.h:19
Scope (from outer to inner):
file
namespace UE::TextureShareStrings::SceneTextures
Source code excerpt:
static constexpr auto GBufferB = TEXT("GBufferB");
static constexpr auto GBufferC = TEXT("GBufferC");
static constexpr auto GBufferD = TEXT("GBufferD");
static constexpr auto GBufferE = TEXT("GBufferE");
static constexpr auto GBufferF = TEXT("GBufferF");
// Read-write RTTs
static constexpr auto FinalColor = TEXT("FinalColor");
static constexpr auto Backbuffer = TEXT("Backbuffer");
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorResult.h:113
Scope (from outer to inner):
file
namespace PixelInspector
class class PixelInspectorResult
Source code excerpt:
//MSM_PreintegratedSkin
//MSM_TwoSidedFoliage
FLinearColor SubSurfaceColor; // GBufferD RGB
float Opacity; // GBufferD A
//MSM_SubsurfaceProfile
FVector SubsurfaceProfile; // GBufferD RGB
//MSM_ClearCoat
float ClearCoat; // GBufferD R
float ClearCoatRoughness; // GBufferD G
//MSM_Hair
FVector WorldNormal;
float BackLit;
//MSM_Cloth
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorView.h:87
Scope (from outer to inner):
file
class class UPixelInspectorView : public UObject
Source code excerpt:
//Custom Data section
/** From the GBufferD RGB Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
FLinearColor SubSurfaceColor;
/** From the GBufferD RGB Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
FVector SubsurfaceProfile;
/** From the GBufferD A Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float Opacity;
/** From the GBufferD R Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float ClearCoat;
/** From the GBufferD G Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float ClearCoatRoughness;
/** From the GBufferD RG Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
FVector WorldNormal;
/** From the GBufferD B Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float BackLit;
/** From the GBufferD A Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float Cloth;
/** From the GBufferD RG Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
FVector EyeTangent;
/** From the GBufferD B Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float IrisMask;
/** From the GBufferD A Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
float IrisDistance;
void SetFromResult(PixelInspector::PixelInspectorResult &Result);
/*
//////////////////////////////////////////////////////////////////////////
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorView.h:140
Scope (from outer to inner):
file
class class UPixelInspectorView : public UObject
Source code excerpt:
//MSM_SubsurfaceProfile
//MSM_TwoSidedFoliage
FVector SubSurfaceColor; // GBufferD RGB
float Opacity; // GBufferD A
//MSM_ClearCoat
float ClearCoat; // GBufferD R
float ClearCoatRoughness; // GBufferD G
//MSM_Hair
FVector WorldNormal; // GBufferD RG
float BackLit; // GBufferD B
//MSM_Cloth, Use also the sub surface color
float Cloth; // GBufferD A
//MSM_Eye
FVector Tangent; // GBufferD RG
float IrisMask; // GBufferD B
float IrisDistance; // GBufferD A
*/
};
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:237
Scope (from outer to inner):
file
function static void SetupMobileGBufferFlags
Source code excerpt:
Bindings.GBufferB.Flags |= AddFlags;
Bindings.GBufferC.Flags |= AddFlags;
Bindings.GBufferD.Flags |= AddFlags;
Bindings.GBufferE.Flags |= AddFlags;
Bindings.GBufferA.Flags &= (~RemoveFlags);
Bindings.GBufferB.Flags &= (~RemoveFlags);
Bindings.GBufferC.Flags &= (~RemoveFlags);
Bindings.GBufferD.Flags &= (~RemoveFlags);
Bindings.GBufferE.Flags &= (~RemoveFlags);
// Input attachments with PF_R8G8B8A8 has better support on mobile than PF_B8G8R8A8
auto OverrideB8G8R8A8 = [](FGBufferBinding& Binding) { if (Binding.Format == PF_B8G8R8A8) Binding.Format = PF_R8G8B8A8; };
OverrideB8G8R8A8(Bindings.GBufferA);
OverrideB8G8R8A8(Bindings.GBufferB);
OverrideB8G8R8A8(Bindings.GBufferC);
OverrideB8G8R8A8(Bindings.GBufferD);
OverrideB8G8R8A8(Bindings.GBufferE);
}
}
void FSceneTexturesConfig::Init(const FSceneTexturesConfigInitSettings& InitSettings)
{
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:299
Scope (from outer to inner):
file
function void FSceneTexturesConfig::Init
Source code excerpt:
BindingCache.Bindings[Layout].GBufferB = FindGBufferBindingByName(GBufferInfo, TEXT("GBufferB"), ShaderPlatform);
BindingCache.Bindings[Layout].GBufferC = FindGBufferBindingByName(GBufferInfo, TEXT("GBufferC"), ShaderPlatform);
BindingCache.Bindings[Layout].GBufferD = FindGBufferBindingByName(GBufferInfo, TEXT("GBufferD"), ShaderPlatform);
BindingCache.Bindings[Layout].GBufferE = FindGBufferBindingByName(GBufferInfo, TEXT("GBufferE"), ShaderPlatform);
BindingCache.Bindings[Layout].GBufferVelocity = FindGBufferBindingByName(GBufferInfo, TEXT("Velocity"), ShaderPlatform);
// Remove DisableDCC flag for velocity. Only Nanite fast tile clear sets this flag currently
// but we want to exclude velocity because it usually doesn't have many written pixels
EnumRemoveFlags(BindingCache.Bindings[Layout].GBufferVelocity.Flags, TexCreate_DisableDCC);
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:364
Scope (from outer to inner):
file
function uint32 FSceneTexturesConfig::GetGBufferRenderTargetsInfo
Source code excerpt:
IncludeBindingIfValid(Bindings.GBufferB);
IncludeBindingIfValid(Bindings.GBufferC);
IncludeBindingIfValid(Bindings.GBufferD);
IncludeBindingIfValid(Bindings.GBufferE);
IncludeBindingIfValid(Bindings.GBufferVelocity);
}
// Forward shading path. Simple forward shading does not use velocity.
else if (IsUsingBasePassVelocity(ShaderPlatform))
{
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:205
Scope: file
Source code excerpt:
* 2: GBufferB
* 3: GBufferC
* 4: GBufferD
* if (GBUFFER_HAS_PRECSHADOWFACTOR)
* 5: GBufferE
* else if (SrcGlobal.GBUFFER_HAS_VELOCITY == 1 && SrcGlobal.GBUFFER_HAS_TANGENT == 0)
* 0: Lighting
* 1: GBufferA
* 2: GBufferB
* 3: GBufferC
* 4: Velocity (NOTE!)
* 5: GBufferD
* if (GBUFFER_HAS_PRECSHADOWFACTOR)
* 6: GBufferE
* else if (SrcGlobal.GBUFFER_HAS_VELOCITY == 0 && SrcGlobal.GBUFFER_HAS_TANGENT == 1)
* 0: Lighting
* 1: GBufferA
* 2: GBufferB
* 3: GBufferC
* 4: GBufferF (NOTE!)
* 5: GBufferD
* if (GBUFFER_HAS_PRECSHADOWFACTOR)
* 6: GBufferE
* else if (SrcGlobal.GBUFFER_HAS_VELOCITY == 1 && SrcGlobal.GBUFFER_HAS_TANGENT == 1)
* assert(0)
*
*/
/*
* LegacyFormatIndex: EGBufferFormat enum. Going forward, we will have better granularity on choosing precision, so thes
* are just being maintained for the transition.
*
* bUsesVelocityDepth: Normal velocity format is half16 for RG. But when enabled, it changes to half16 RGBA with
* alpha storing depth and blue unused.
*
*/
FGBufferInfo RENDERCORE_API FetchLegacyGBufferInfo(const FGBufferParams& Params)
{
FGBufferInfo Info = {};
check(!Params.bHasVelocity || !Params.bHasTangent);
bool bStaticLighting = Params.bHasPrecShadowFactor;
int32 TargetLighting = 0;
int32 TargetGBufferA = 1;
int32 TargetGBufferB = 2;
int32 TargetGBufferC = 3;
int32 TargetGBufferD = -1;
int32 TargetGBufferE = -1;
int32 TargetGBufferF = -1;
int32 TargetVelocity = -1;
int32 TargetSeparatedMainDirLight = -1;
// Substrate outputs material data through UAV. Only SceneColor, PrecalcShadow & Velocity data are still emitted through RenderTargets
if (Substrate::IsSubstrateEnabled())
{
TargetGBufferA = -1;
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:366
Scope (from outer to inner):
file
function FGBufferInfo FetchLegacyGBufferInfo
Source code excerpt:
{
TargetGBufferD = 4;
Info.Targets[4].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferD"), false, true, true, true);
TargetSeparatedMainDirLight = 5;
if (Params.bHasPrecShadowFactor)
{
TargetGBufferE = 5;
Info.Targets[5].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferE"), false, true, true, true);
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:383
Scope (from outer to inner):
file
function FGBufferInfo FetchLegacyGBufferInfo
Source code excerpt:
// note the false for use extra flags for velocity, not quite sure of all the ramifications, but this keeps it consistent with previous usage
Info.Targets[4].Init(Params.bUsesVelocityDepth ? GBT_Unorm_16_16_16_16 : (IsAndroidOpenGLESPlatform(Params.ShaderPlatform) ? GBT_Float_16_16 : GBT_Unorm_16_16), TEXT("Velocity"), false, true, true, false);
Info.Targets[5].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferD"), false, true, true, true);
TargetSeparatedMainDirLight = 6;
if (Params.bHasPrecShadowFactor)
{
TargetGBufferE = 6;
Info.Targets[6].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferE"), false, true, true, false);
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:398
Scope (from outer to inner):
file
function FGBufferInfo FetchLegacyGBufferInfo
Source code excerpt:
TargetGBufferD = 5;
Info.Targets[4].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferF"), false, true, true, true);
Info.Targets[5].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferD"), false, true, true, true);
TargetSeparatedMainDirLight = 6;
if (Params.bHasPrecShadowFactor)
{
TargetGBufferE = 6;
Info.Targets[6].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferE"), false, true, true, true);
TargetSeparatedMainDirLight = 7;
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:532
Scope (from outer to inner):
file
function FGBufferInfo RENDERCORE_API FetchLegacyGBufferInfo
Source code excerpt:
}
// GBufferD
Info.Slots[GBS_CustomData] = FGBufferItem(GBS_CustomData, GBC_Raw_Unorm_8_8_8_8, GBCH_Both);
Info.Slots[GBS_CustomData].Packing[0] = FGBufferPacking(TargetGBufferD, 0, 0);
Info.Slots[GBS_CustomData].Packing[1] = FGBufferPacking(TargetGBufferD, 1, 1);
Info.Slots[GBS_CustomData].Packing[2] = FGBufferPacking(TargetGBufferD, 2, 2);
Info.Slots[GBS_CustomData].Packing[3] = FGBufferPacking(TargetGBufferD, 3, 3);
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Public/GBufferInfo.h:274
Scope: file
Source code excerpt:
FGBufferBinding GBufferB;
FGBufferBinding GBufferC;
FGBufferBinding GBufferD;
FGBufferBinding GBufferE;
FGBufferBinding GBufferVelocity;
};
struct FGBufferInfo
{
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Internal/SceneTextures.h:73
Scope: file
Source code excerpt:
FRDGTextureRef GBufferB{};
FRDGTextureRef GBufferC{};
FRDGTextureRef GBufferD{};
FRDGTextureRef GBufferE{};
FRDGTextureRef GBufferF{};
// Additional Buffer texture used by mobile
FRDGTextureMSAA DepthAux{};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/BasePassRendering.cpp:1091
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderBasePass
Source code excerpt:
const FGBufferBindings& GBufferBindings = SceneTextures.Config.GBufferBindings[GBL_Default];
if (!CVarClearGBufferDBeforeBasePass.GetValueOnRenderThread() && GBufferBindings.GBufferD.Index > 0 && GBufferBindings.GBufferD.Index < (int32)BasePassTextureCount)
{
PassParameters->RenderTargets[GBufferBindings.GBufferD.Index].SetLoadAction(ERenderTargetLoadAction::ENoAction);
}
GraphBuilder.AddPass(RDG_EVENT_NAME("GBufferClear"), PassParameters, ERDGPassFlags::Raster,
[PassParameters, ColorLoadAction, SceneColorClearValue](FRHICommandList& RHICmdList)
{
// If no fast-clear action was used, we need to do an MRT shader clear.
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsComposition.cpp:641
Scope (from outer to inner):
file
function static void InternalRenderHairComposition
Source code excerpt:
const FRDGTextureRef GBufferBTexture = SceneTextures.GBufferB;
const FRDGTextureRef GBufferCTexture = SceneTextures.GBufferC;
const FRDGTextureRef GBufferDTexture = SceneTextures.GBufferD;
const FRDGTextureRef GBufferETexture = SceneTextures.GBufferE;
if (bWritePartialGBuffer && GBufferATexture && GBufferBTexture)
{
AddHairVisibilityGBufferWritePass(
GraphBuilder,
View,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsRendering.cpp:189
Scope (from outer to inner):
file
function void RenderHairBasePass
Source code excerpt:
SceneTextures.GBufferB,
SceneTextures.GBufferC,
SceneTextures.GBufferD,
SceneTextures.GBufferE,
SceneTextures.Color.Resolve,
SceneTextures.Depth.Resolve,
SceneTextures.Velocity,
InstanceCullingManager);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/MobileShadingRenderer.cpp:1856
Scope (from outer to inner):
file
function FColorTargets FMobileSceneRenderer::GetColorTargets_Deferred
Source code excerpt:
if (MobileUsesExtenedGBuffer(ShaderPlatform))
{
ColorTargets.Add(SceneTextures.GBufferD);
}
if (bRequiresSceneDepthAux)
{
ColorTargets.Add(SceneTextures.DepthAux.Target);
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:12
Scope: file
Source code excerpt:
RDG_TEXTURE_ACCESS(GBufferB, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(GBufferC, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(GBufferD, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(GBufferE, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(GBufferF, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(SceneColor, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(SceneColorBeforeTonemap, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(SceneDepth, ERHIAccess::CopySrc)
RDG_TEXTURE_ACCESS(OriginalSceneColor, ERHIAccess::CopySrc)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:217
Scope: file
Source code excerpt:
}
if (Parameters.GBufferD)
{
FRHITexture* SourceBufferD = Parameters.GBufferD->GetRHI();
if (DestinationBufferBCDEF->GetFormat() == SourceBufferD->GetFormat())
{
FRHICopyTextureInfo CopyInfo;
CopyInfo.SourcePosition = SourcePoint;
CopyInfo.DestPosition = FIntVector(2, 0, 0);
CopyInfo.Size = FIntVector(1, 1, 1);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:292
Scope: file
Source code excerpt:
PassParameters->GBufferB = SceneTextures.GBufferBTexture;
PassParameters->GBufferC = SceneTextures.GBufferCTexture;
PassParameters->GBufferD = SceneTextures.GBufferDTexture;
PassParameters->GBufferE = SceneTextures.GBufferETexture;
PassParameters->GBufferF = SceneTextures.GBufferFTexture;
PassParameters->SceneColor = Inputs.SceneColor.Texture;
PassParameters->SceneColorBeforeTonemap = Inputs.SceneColorBeforeTonemap.Texture;
PassParameters->SceneDepth = SceneTextures.SceneDepthTexture;
PassParameters->OriginalSceneColor = Inputs.OriginalSceneColor.Texture;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:462
Scope: file
Source code excerpt:
FASTVRAM_CVAR(GBufferB, 1);
FASTVRAM_CVAR(GBufferC, 0);
FASTVRAM_CVAR(GBufferD, 0);
FASTVRAM_CVAR(GBufferE, 0);
FASTVRAM_CVAR(GBufferF, 0);
FASTVRAM_CVAR(GBufferVelocity, 0);
FASTVRAM_CVAR(HZB, 1);
FASTVRAM_CVAR(SceneDepth, 1);
FASTVRAM_CVAR(SceneColor, 1);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:662
Scope (from outer to inner):
file
function void FFastVramConfig::Update
Source code excerpt:
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferB, GBufferB);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferC, GBufferC);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferD, GBufferD);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferE, GBufferE);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferF, GBufferF);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferVelocity, GBufferVelocity);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_HZB, HZB);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_SceneDepth, SceneDepth);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_SceneColor, SceneColor);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.h:2811
Scope: file
Source code excerpt:
ETextureCreateFlags GBufferB;
ETextureCreateFlags GBufferC;
ETextureCreateFlags GBufferD;
ETextureCreateFlags GBufferE;
ETextureCreateFlags GBufferF;
ETextureCreateFlags GBufferVelocity;
ETextureCreateFlags HZB;
ETextureCreateFlags SceneDepth;
ETextureCreateFlags SceneColor;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextureParameters.cpp:27
Scope (from outer to inner):
file
function FSceneTextureParameters GetSceneTextureParameters
Source code excerpt:
Parameters.GBufferBTexture = GetIfProduced(SceneTextures.GBufferB);
Parameters.GBufferCTexture = GetIfProduced(SceneTextures.GBufferC);
Parameters.GBufferDTexture = GetIfProduced(SceneTextures.GBufferD);
Parameters.GBufferETexture = GetIfProduced(SceneTextures.GBufferE);
Parameters.GBufferFTexture = GetIfProduced(SceneTextures.GBufferF, SystemTextures.MidGrey);
return Parameters;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:565
Scope (from outer to inner):
file
function void FSceneTextures::InitializeViewFamily
Source code excerpt:
}
if (Bindings.GBufferD.Index >= 0)
{
const FRDGTextureDesc Desc(FRDGTextureDesc::Create2D(Config.Extent, Bindings.GBufferD.Format, FClearValueBinding::Transparent, Bindings.GBufferD.Flags | FlagsToAdd | GFastVRamConfig.GBufferD));
SceneTextures.GBufferD = GraphBuilder.CreateTexture(Desc, TEXT("GBufferD"));
}
if (Bindings.GBufferE.Index >= 0)
{
const FRDGTextureDesc Desc(FRDGTextureDesc::Create2D(Config.Extent, Bindings.GBufferE.Format, FClearValueBinding::Transparent, Bindings.GBufferE.Flags | FlagsToAdd | GFastVRamConfig.GBufferE));
SceneTextures.GBufferE = GraphBuilder.CreateTexture(Desc, TEXT("GBufferE"));
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:670
Scope (from outer to inner):
file
function uint32 FSceneTextures::GetGBufferRenderTargets
Source code excerpt:
{ TEXT("GBufferB"), GBufferB, Bindings.GBufferB.Index },
{ TEXT("GBufferC"), GBufferC, Bindings.GBufferC.Index },
{ TEXT("GBufferD"), GBufferD, Bindings.GBufferD.Index },
{ TEXT("GBufferE"), GBufferE, Bindings.GBufferE.Index },
{ TEXT("Velocity"), Velocity, Bindings.GBufferVelocity.Index }
};
for (const FGBufferEntry& Entry : GBufferEntries)
{
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:790
Scope (from outer to inner):
file
function FRDGTextureRef GetSceneTexture
Source code excerpt:
case ESceneTexture::GBufferB: return SceneTextures.GBufferB;
case ESceneTexture::GBufferC: return SceneTextures.GBufferC;
case ESceneTexture::GBufferD: return SceneTextures.GBufferD;
case ESceneTexture::GBufferE: return SceneTextures.GBufferE;
case ESceneTexture::GBufferF: return SceneTextures.GBufferF;
case ESceneTexture::SSAO: return SceneTextures.ScreenSpaceAO;
case ESceneTexture::CustomDepth: return SceneTextures.CustomDepth.Depth;
default:
checkNoEntry();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:857
Scope (from outer to inner):
file
function void SetupSceneTextureUniformParameters
Source code excerpt:
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferD) && HasBeenProduced(SceneTextures->GBufferD))
{
SceneTextureParameters.GBufferDTexture = SceneTextures->GBufferD;
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferE) && HasBeenProduced(SceneTextures->GBufferE))
{
SceneTextureParameters.GBufferETexture = SceneTextures->GBufferE;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:1009
Scope (from outer to inner):
file
function void SetupMobileSceneTextureUniformParameters
Source code excerpt:
}
if (HasBeenProduced(SceneTextures->GBufferD))
{
SceneTextureParameters.GBufferDTexture = SceneTextures->GBufferD;
}
}
if (EnumHasAnyFlags(SetupMode, EMobileSceneTextureSetupMode::SceneDepthAux))
{
if (HasBeenProduced(SceneTextures->DepthAux.Resolve))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:17
Scope: file
Source code excerpt:
GBufferB,
GBufferC,
GBufferD,
GBufferE,
GBufferF,
SSAO,
CustomDepth,
};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:35
Scope: file
Source code excerpt:
GBufferB = 1 << 4,
GBufferC = 1 << 5,
GBufferD = 1 << 6,
GBufferE = 1 << 7,
GBufferF = 1 << 8,
SSAO = 1 << 9,
CustomDepth = 1 << 10,
GBuffers = GBufferA | GBufferB | GBufferC | GBufferD | GBufferE | GBufferF,
All = SceneColor | SceneDepth | SceneVelocity | GBuffers | SSAO | CustomDepth
};
ENUM_CLASS_FLAGS(ESceneTextureSetupMode);
/** Fills the shader parameter struct. */
extern RENDERER_API void SetupSceneTextureUniformParameters(
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:75
Scope: file
Source code excerpt:
GBufferB = 1 << 4,
GBufferC = 1 << 5,
GBufferD = 1 << 6,
SceneDepthAux = 1 << 7,
SceneVelocity = 1 << 8,
GBuffers = GBufferA | GBufferB | GBufferC | GBufferD | SceneDepthAux,
All = SceneColor | SceneDepth | CustomDepth | GBuffers | SceneVelocity
};
ENUM_CLASS_FLAGS(EMobileSceneTextureSetupMode);
/** Fills the scene texture uniform buffer struct. */
extern RENDERER_API void SetupMobileSceneTextureUniformParameters(