r.FastVRam.GBufferB
r.FastVRam.GBufferB
#Overview
name: r.FastVRam.GBufferB
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 41
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of r.FastVRam.GBufferB is to control the fast VRAM allocation for the GBufferB texture in Unreal Engine’s rendering system. This setting is part of the deferred rendering pipeline, specifically related to the G-Buffer (Geometry Buffer) used in deferred shading.
-
The GBufferB texture is part of the deferred rendering system, used in the lighting and shading calculations.
-
The Unreal Engine’s rendering subsystem, specifically the deferred shading pipeline, relies on this setting.
-
The value of this variable is set through the FASTVRAM_CVAR macro, which likely creates a console variable that can be adjusted at runtime or set in configuration files.
-
It interacts with other G-Buffer textures (GBufferA, GBufferC, etc.) and is part of the overall G-Buffer system.
-
Developers should be aware that this setting affects memory allocation and potentially performance. Setting it to 1 (as shown in the code) means it will be allocated in fast VRAM, which can improve rendering performance but may consume more of the limited fast VRAM resource.
-
Best practices include:
- Only enable fast VRAM for G-Buffer textures if you have performance issues and have profiled to confirm this will help.
- Be mindful of the total fast VRAM usage across all textures to avoid oversubscription.
- Consider the target hardware capabilities when adjusting these settings.
Regarding the associated variable GBufferB:
The purpose of GBufferB is to store specific material properties in the G-Buffer for deferred rendering. Based on the code, it typically contains:
- Metallic value in the R channel
- Specular value in the G channel
- Roughness value in the B channel
- Material Shading Model and Selective Output Mask encoded in the A channel
This texture is crucial for the deferred rendering pipeline, as it stores essential material properties that are used in the lighting pass to calculate the final pixel color.
The GBufferB texture is created and used throughout the rendering pipeline, particularly in the base pass where these material properties are written, and in the lighting pass where they are read to compute the final shading.
Developers should be aware that the precise format and content of GBufferB can vary based on the project’s rendering settings and the specific version of Unreal Engine being used. Always refer to the most current documentation and engine source code for the most accurate information on G-Buffer layouts and usage.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:460
Scope: file
Source code excerpt:
FASTVRAM_CVAR(GBufferA, 0);
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);
#Associated Variable and Callsites
This variable is associated with another variable named GBufferB
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/TextureShare/Source/TextureShare/Private/Game/ViewExtension/TextureShareSceneViewExtension.cpp:149
Scope (from outer to inner):
file
function void FTextureShareSceneViewExtension::ShareSceneViewColors_RenderThread
Source code excerpt:
AddShareTexturePass(UE::TextureShareStrings::SceneTextures::GBufferA, SceneTextures.GBufferA);
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);
}
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/TextureShare/Source/TextureShare/Private/Misc/TextureShareStrings.h:17
Scope (from outer to inner):
file
namespace UE::TextureShareStrings::SceneTextures
Source code excerpt:
static constexpr auto SmallDepthZ = TEXT("SmallDepthZ");
static constexpr auto GBufferA = TEXT("GBufferA");
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
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorResult.h:96
Scope (from outer to inner):
file
namespace PixelInspector
class class PixelInspectorResult
Source code excerpt:
FVector Normal; //GBufferA RGB
float PerObjectGBufferData; //GBufferA A
float Metallic; //GBufferB R
float Specular; //GBufferB G
float Roughness; //GBufferB B
EMaterialShadingModel ShadingModel; //GBufferB A encode
int32 SelectiveOutputMask; //GBufferB A encode
FLinearColor BaseColor; //GBufferC RGB
//Irradiance and Ambient occlusion decoding
float IndirectIrradiance; //GBufferC A encode only if static light is allow 1 otherwise
float AmbientOcclusion; //GBufferC A if static light is not allow 1 otherwise
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorView.h:53
Scope (from outer to inner):
file
class class UPixelInspectorView : public UObject
Source code excerpt:
float PerObjectGBufferData;
/** From the GBufferB R Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferB)
float Metallic;
/** From the GBufferB G Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferB)
float Specular;
/** From the GBufferB B Channel. */
UPROPERTY(VisibleAnywhere, category = GBufferB)
float Roughness;
/** From the GBufferB A Channel encoded with SelectiveOutputMask. */
UPROPERTY(VisibleAnywhere, category = GBufferB)
TEnumAsByte<enum EMaterialShadingModel> MaterialShadingModel;
/** From the GBufferB A Channel encoded with ShadingModel. */
UPROPERTY(VisibleAnywhere, category = GBufferB)
int32 SelectiveOutputMask;
/** From the GBufferC RGB Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferC)
FLinearColor BaseColor;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:235
Scope (from outer to inner):
file
function static void SetupMobileGBufferFlags
Source code excerpt:
Bindings.GBufferA.Flags |= AddFlags;
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);
}
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:297
Scope (from outer to inner):
file
function void FSceneTexturesConfig::Init
Source code excerpt:
BindingCache.Bindings[Layout].GBufferA = FindGBufferBindingByName(GBufferInfo, TEXT("GBufferA"), ShaderPlatform);
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
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:362
Scope (from outer to inner):
file
function uint32 FSceneTexturesConfig::GetGBufferRenderTargetsInfo
Source code excerpt:
const FGBufferBindings& Bindings = GBufferBindings[Layout];
IncludeBindingIfValid(Bindings.GBufferA);
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.
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:203
Scope: file
Source code excerpt:
* 0: Lighting
* 1: GBufferA
* 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
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:357
Scope (from outer to inner):
file
function FGBufferInfo FetchLegacyGBufferInfo
Source code excerpt:
Info.Targets[0].Init(GBT_Unorm_11_11_10, TEXT("Lighting"), false, true, true, true);
Info.Targets[1].Init(NormalGBufferFormatTarget,TEXT("GBufferA"), false, true, true, true);
Info.Targets[2].Init(DiffuseAndSpecularGBufferFormat, TEXT("GBufferB"), false, true, true, true);
const bool bLegacyAlbedoSrgb = true;
Info.Targets[3].Init(DiffuseAndSpecularGBufferFormat, TEXT("GBufferC"), bLegacyAlbedoSrgb && !bHighPrecisionGBuffers, true, true, true);
// This code should match TBasePassPS
if (Params.bHasVelocity == 0 && Params.bHasTangent == 0)
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Public/GBufferInfo.h:272
Scope: file
Source code excerpt:
{
FGBufferBinding GBufferA;
FGBufferBinding GBufferB;
FGBufferBinding GBufferC;
FGBufferBinding GBufferD;
FGBufferBinding GBufferE;
FGBufferBinding GBufferVelocity;
};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Internal/SceneTextures.h:71
Scope: file
Source code excerpt:
// (Deferred) Textures containing geometry information for deferred shading.
FRDGTextureRef GBufferA{};
FRDGTextureRef GBufferB{};
FRDGTextureRef GBufferC{};
FRDGTextureRef GBufferD{};
FRDGTextureRef GBufferE{};
FRDGTextureRef GBufferF{};
// Additional Buffer texture used by mobile
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.cpp:102
Scope (from outer to inner):
file
function FDeferredDecalPassTextures GetDeferredDecalPassTextures
Source code excerpt:
{
PassTextures.GBufferA = (*SceneTextures.UniformBuffer)->GBufferATexture;
PassTextures.GBufferB = (*SceneTextures.UniformBuffer)->GBufferBTexture;
PassTextures.GBufferC = (*SceneTextures.UniformBuffer)->GBufferCTexture;
PassTextures.GBufferE = (*SceneTextures.UniformBuffer)->GBufferETexture;
}
PassTextures.DBufferTextures = DBufferTextures;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.cpp:124
Scope (from outer to inner):
file
function void GetDeferredDecalRenderTargetsInfo
Source code excerpt:
AddRenderTargetInfo(Config.ColorFormat, Config.ColorCreateFlags, RenderTargetsInfo);
AddRenderTargetInfo(Bindings.GBufferA.Format, Bindings.GBufferA.Flags, RenderTargetsInfo);
AddRenderTargetInfo(Bindings.GBufferB.Format, Bindings.GBufferB.Flags, RenderTargetsInfo);
AddRenderTargetInfo(Bindings.GBufferC.Format, Bindings.GBufferC.Flags, RenderTargetsInfo);
break;
case EDecalRenderTargetMode::SceneColorAndGBufferNoNormal:
AddRenderTargetInfo(Config.ColorFormat, Config.ColorCreateFlags, RenderTargetsInfo);
AddRenderTargetInfo(Bindings.GBufferB.Format, Bindings.GBufferB.Flags, RenderTargetsInfo);
AddRenderTargetInfo(Bindings.GBufferC.Format, Bindings.GBufferC.Flags, RenderTargetsInfo);
break;
case EDecalRenderTargetMode::SceneColor:
AddRenderTargetInfo(Config.ColorFormat, Config.ColorCreateFlags, RenderTargetsInfo);
break;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.cpp:195
Scope (from outer to inner):
file
function void GetDeferredDecalPassParameters
Source code excerpt:
AddColorTarget(Textures.Color);
AddColorTarget(Textures.GBufferA);
AddColorTarget(Textures.GBufferB);
AddColorTarget(Textures.GBufferC);
break;
case EDecalRenderTargetMode::SceneColorAndGBufferNoNormal:
AddColorTarget(Textures.Color);
AddColorTarget(Textures.GBufferB);
AddColorTarget(Textures.GBufferC);
break;
case EDecalRenderTargetMode::SceneColor:
AddColorTarget(Textures.Color);
break;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.h:34
Scope: file
Source code excerpt:
FRDGTextureRef ScreenSpaceAO = nullptr;
FRDGTextureRef GBufferA = nullptr;
FRDGTextureRef GBufferB = nullptr;
FRDGTextureRef GBufferC = nullptr;
FRDGTextureRef GBufferE = nullptr;
FDBufferTextures* DBufferTextures = nullptr;
};
FDeferredDecalPassTextures GetDeferredDecalPassTextures(
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:246
Scope (from outer to inner):
file
class class FGlobalIlluminationPluginResources : public FRenderResource
Source code excerpt:
public:
FRDGTextureRef GBufferA;
FRDGTextureRef GBufferB;
FRDGTextureRef GBufferC;
FRDGTextureRef SceneDepthZ;
FRDGTextureRef SceneColor;
FRDGTextureRef LightingChannelsTexture;
};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsComposition.cpp:639
Scope (from outer to inner):
file
function static void InternalRenderHairComposition
Source code excerpt:
const FSceneTextures& SceneTextures = View.GetSceneTextures();
const FRDGTextureRef GBufferATexture = SceneTextures.GBufferA;
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(
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsRendering.cpp:187
Scope (from outer to inner):
file
function void RenderHairBasePass
Source code excerpt:
View,
SceneTextures.GBufferA,
SceneTextures.GBufferB,
SceneTextures.GBufferC,
SceneTextures.GBufferD,
SceneTextures.GBufferE,
SceneTextures.Color.Resolve,
SceneTextures.Depth.Resolve,
SceneTextures.Velocity,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:1117
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderDiffuseIndirectAndAmbientOcclusion
Source code excerpt:
FGlobalIlluminationPluginResources GIPluginResources;
GIPluginResources.GBufferA = SceneTextures.GBufferA;
GIPluginResources.GBufferB = SceneTextures.GBufferB;
GIPluginResources.GBufferC = SceneTextures.GBufferC;
GIPluginResources.LightingChannelsTexture = LightingChannelsTexture;
GIPluginResources.SceneDepthZ = SceneTextures.Depth.Target;
GIPluginResources.SceneColor = SceneTextures.Color.Target;
FGlobalIlluminationPluginDelegates::FRenderDiffuseIndirectLight& Delegate = FGlobalIlluminationPluginDelegates::RenderDiffuseIndirectLight();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:2229
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderGlobalIlluminationPluginVisualizations
Source code excerpt:
FGlobalIlluminationPluginResources GIPluginResources;
GIPluginResources.GBufferA = SceneTextures.GBufferA;
GIPluginResources.GBufferB = SceneTextures.GBufferB;
GIPluginResources.GBufferC = SceneTextures.GBufferC;
GIPluginResources.LightingChannelsTexture = LightingChannelsTexture;
GIPluginResources.SceneDepthZ = SceneTextures.Depth.Target;
GIPluginResources.SceneColor = SceneTextures.Color.Target;
// Render visualizations to all views by calling the GI plugin's delegate
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/MobileShadingRenderer.cpp:1851
Scope (from outer to inner):
file
function FColorTargets FMobileSceneRenderer::GetColorTargets_Deferred
Source code excerpt:
ColorTargets.Add(SceneTextures.Color.Target);
ColorTargets.Add(SceneTextures.GBufferA);
ColorTargets.Add(SceneTextures.GBufferB);
ColorTargets.Add(SceneTextures.GBufferC);
if (MobileUsesExtenedGBuffer(ShaderPlatform))
{
ColorTargets.Add(SceneTextures.GBufferD);
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:10
Scope: file
Source code excerpt:
BEGIN_SHADER_PARAMETER_STRUCT(FPixelInspectorParameters, )
RDG_TEXTURE_ACCESS(GBufferA, ERHIAccess::CopySrc)
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)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:192
Scope: file
Source code excerpt:
);
if (Parameters.GBufferB)
{
FRHITexture* SourceBufferB = Parameters.GBufferB->GetRHI();
if (DestinationBufferBCDEF->GetFormat() == SourceBufferB->GetFormat())
{
FRHICopyTextureInfo CopyInfo;
CopyInfo.SourcePosition = SourcePoint;
CopyInfo.Size = FIntVector(1, 1, 1);
RHICmdList.CopyTexture(SourceBufferB, DestinationBufferBCDEF, CopyInfo);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:290
Scope: file
Source code excerpt:
FPixelInspectorParameters* PassParameters = GraphBuilder.AllocParameters<FPixelInspectorParameters>();
PassParameters->GBufferA = SceneTextures.GBufferATexture;
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;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/RendererScene.cpp:860
Scope: file
Source code excerpt:
GetRenderTargetGPUSizeBytes(DepthBuffer, bLogSizes) +
GetRenderTargetGPUSizeBytes(GBufferA, bLogSizes) +
GetRenderTargetGPUSizeBytes(GBufferB, bLogSizes) +
GetRenderTargetGPUSizeBytes(GBufferC, bLogSizes) +
GetRenderTargetGPUSizeBytes(HZB, bLogSizes) +
GetRenderTargetGPUSizeBytes(NaniteHZB, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedDepthViewNormal, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedOpaqueDepth, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedOpaqueShadingModel, bLogSizes) +
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:460
Scope: file
Source code excerpt:
FASTVRAM_CVAR(GBufferA, 0);
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);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:660
Scope (from outer to inner):
file
function void FFastVramConfig::Update
Source code excerpt:
bDirty = false;
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_GBufferA, GBufferA);
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);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.h:1064
Scope: file
Source code excerpt:
TRefCountPtr<IPooledRenderTarget> DepthBuffer;
TRefCountPtr<IPooledRenderTarget> GBufferA;
TRefCountPtr<IPooledRenderTarget> GBufferB;
TRefCountPtr<IPooledRenderTarget> GBufferC;
TRefCountPtr<IPooledRenderTarget> HZB;
TRefCountPtr<IPooledRenderTarget> NaniteHZB;
// Bit mask used to interpret per-instance occlusion query results for this view.
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.h:2809
Scope: file
Source code excerpt:
ETextureCreateFlags GBufferA;
ETextureCreateFlags GBufferB;
ETextureCreateFlags GBufferC;
ETextureCreateFlags GBufferD;
ETextureCreateFlags GBufferE;
ETextureCreateFlags GBufferF;
ETextureCreateFlags GBufferVelocity;
ETextureCreateFlags HZB;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextureParameters.cpp:25
Scope (from outer to inner):
file
function FSceneTextureParameters GetSceneTextureParameters
Source code excerpt:
Parameters.GBufferVelocityTexture = GetIfProduced(SceneTextures.Velocity);
Parameters.GBufferATexture = GetIfProduced(SceneTextures.GBufferA);
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:553
Scope (from outer to inner):
file
function void FSceneTextures::InitializeViewFamily
Source code excerpt:
}
if (Bindings.GBufferB.Index >= 0)
{
const FRDGTextureDesc Desc(FRDGTextureDesc::Create2D(Config.Extent, Bindings.GBufferB.Format, FClearValueBinding::Transparent, Bindings.GBufferB.Flags | FlagsToAdd | GFastVRamConfig.GBufferB));
SceneTextures.GBufferB = GraphBuilder.CreateTexture(Desc, TEXT("GBufferB"));
}
if (Bindings.GBufferC.Index >= 0)
{
const FRDGTextureDesc Desc(FRDGTextureDesc::Create2D(Config.Extent, Bindings.GBufferC.Format, FClearValueBinding::Transparent, Bindings.GBufferC.Flags | FlagsToAdd | GFastVRamConfig.GBufferC));
SceneTextures.GBufferC = GraphBuilder.CreateTexture(Desc, TEXT("GBufferC"));
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:668
Scope (from outer to inner):
file
function uint32 FSceneTextures::GetGBufferRenderTargets
Source code excerpt:
{
{ TEXT("GBufferA"), GBufferA, Bindings.GBufferA.Index },
{ 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 }
};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:788
Scope (from outer to inner):
file
function FRDGTextureRef GetSceneTexture
Source code excerpt:
case ESceneTexture::Velocity: return SceneTextures.Velocity;
case ESceneTexture::GBufferA: return SceneTextures.GBufferA;
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;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:847
Scope (from outer to inner):
file
function void SetupSceneTextureUniformParameters
Source code excerpt:
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferB) && HasBeenProduced(SceneTextures->GBufferB))
{
SceneTextureParameters.GBufferBTexture = SceneTextures->GBufferB;
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferC) && HasBeenProduced(SceneTextures->GBufferC))
{
SceneTextureParameters.GBufferCTexture = SceneTextures->GBufferC;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:999
Scope (from outer to inner):
file
function void SetupMobileSceneTextureUniformParameters
Source code excerpt:
}
if (HasBeenProduced(SceneTextures->GBufferB))
{
SceneTextureParameters.GBufferBTexture = SceneTextures->GBufferB;
}
if (HasBeenProduced(SceneTextures->GBufferC))
{
SceneTextureParameters.GBufferCTexture = SceneTextures->GBufferC;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceDenoise.cpp:1249
Scope (from outer to inner):
file
function void SetupSceneViewInfoPooledRenderTargets
Source code excerpt:
OutViewInfoPooledRenderTargets->PrevDepthBuffer = PrevViewInfo.DepthBuffer;
OutViewInfoPooledRenderTargets->PrevGBufferA = PrevViewInfo.GBufferA;
OutViewInfoPooledRenderTargets->PrevGBufferB = PrevViewInfo.GBufferB;
OutViewInfoPooledRenderTargets->PrevCompressedDepthViewNormal = PrevViewInfo.CompressedDepthViewNormal;
OutViewInfoPooledRenderTargets->NextDepthBuffer = &PrevFrameViewInfo.DepthBuffer;
OutViewInfoPooledRenderTargets->NextGBufferA = &PrevFrameViewInfo.GBufferA;
OutViewInfoPooledRenderTargets->NextGBufferB = &PrevFrameViewInfo.GBufferB;
OutViewInfoPooledRenderTargets->NextCompressedDepthViewNormal = &PrevFrameViewInfo.CompressedDepthViewNormal;
}
void Denoiser::SetupCommonShaderParameters(
const FViewInfo& View,
const FSceneTextureParameters& SceneTextures,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/VisualizeVolumetricLightmap.cpp:124
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::VisualizeVolumetricLightmap
Source code excerpt:
PassParameters->RenderTargets[0] = FRenderTargetBinding(SceneTextures.Color.Target, ERenderTargetLoadAction::ELoad);
if (SceneTextures.GBufferB)
{
PassParameters->RenderTargets[1] = FRenderTargetBinding(SceneTextures.GBufferB, ERenderTargetLoadAction::ELoad);
}
PassParameters->Common.View = View.ViewUniformBuffer;
PassParameters->Common.VisualizationRadiusScale = GVolumetricLightmapVisualizationRadiusScale;
PassParameters->Common.VisualizationMinScreenFraction = GVolumetricLightmapVisualizationMinScreenFraction;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:15
Scope: file
Source code excerpt:
Velocity,
GBufferA,
GBufferB,
GBufferC,
GBufferD,
GBufferE,
GBufferF,
SSAO,
CustomDepth,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:33
Scope: file
Source code excerpt:
SceneVelocity = 1 << 2,
GBufferA = 1 << 3,
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:73
Scope: file
Source code excerpt:
CustomDepth = 1 << 2,
GBufferA = 1 << 3,
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(