r.FastVRam.GBufferC
r.FastVRam.GBufferC
#Overview
name: r.FastVRam.GBufferC
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 39
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of r.FastVRam.GBufferC is to control the texture creation flags for the GBufferC texture in Unreal Engine’s rendering system. It’s specifically related to the G-Buffer system, which is a key component of deferred rendering.
-
This setting variable is primarily used by the rendering system, specifically for managing G-Buffer textures.
-
The Unreal Engine rendering subsystem relies on this variable. It’s used in the scene rendering process and affects how the GBufferC texture is allocated and managed in video memory.
-
The value of this variable is set using a console variable (CVar) system. It can be modified at runtime or set in configuration files.
-
This variable interacts with other G-Buffer related variables (GBufferA, GBufferB, etc.) and is part of the broader FastVRam configuration system.
-
Developers should be aware that modifying this variable can affect rendering performance and memory usage. It’s important to understand the implications of changing this setting on different hardware configurations.
-
Best practices include:
- Only modify this if you understand the impact on your specific hardware targets.
- Test thoroughly on various hardware configurations after changing this setting.
- Consider the balance between performance and visual quality when adjusting G-Buffer settings.
Regarding the associated variable GBufferC:
The purpose of GBufferC is to store specific render target information in the G-Buffer system. It’s typically used to store material properties like diffuse color and specular intensity.
-
GBufferC is a core part of the deferred rendering pipeline in Unreal Engine.
-
It’s used across multiple rendering passes, including in the base pass, lighting calculations, and post-processing effects.
-
The content of GBufferC is typically set during the base pass of rendering.
-
It interacts closely with other G-Buffer textures (GBufferA, GBufferB, etc.) to provide a complete set of surface information for deferred shading.
-
Developers should be aware that the exact content and format of GBufferC can vary depending on the rendering path and project settings.
-
Best practices include:
- Understanding the content of GBufferC for your specific rendering setup.
- Optimizing material and shader code to efficiently pack information into the G-Buffer textures.
- Considering the performance implications of reading from and writing to GBufferC in custom shaders.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:461
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);
FASTVRAM_CVAR(SceneDepth, 1);
#Associated Variable and Callsites
This variable is associated with another variable named GBufferC
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/TextureShare/Source/TextureShare/Private/Game/ViewExtension/TextureShareSceneViewExtension.cpp:150
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:18
Scope (from outer to inner):
file
namespace UE::TextureShareStrings::SceneTextures
Source code excerpt:
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
static constexpr auto FinalColor = TEXT("FinalColor");
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorResult.h:101
Scope (from outer to inner):
file
namespace PixelInspector
class class PixelInspectorResult
Source code excerpt:
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
//////////////////////////////////////////////////////////////////////////
// Per shader model Data
//MSM_Subsurface
//MSM_PreintegratedSkin
#Loc: <Workspace>/Engine/Source/Editor/PixelInspector/Private/PixelInspectorView.h:73
Scope (from outer to inner):
file
class class UPixelInspectorView : public UObject
Source code excerpt:
int32 SelectiveOutputMask;
/** From the GBufferC RGB Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferC)
FLinearColor BaseColor;
/** From the GBufferC A Channel encoded with AmbientOcclusion. */
UPROPERTY(VisibleAnywhere, category = GBufferC)
float IndirectIrradiance;
/** From the GBufferC A Channel encoded with IndirectIrradiance. */
UPROPERTY(VisibleAnywhere, category = GBufferC)
float AmbientOcclusion;
//Custom Data section
/** From the GBufferD RGB Channels. */
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:236
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);
}
}
void FSceneTexturesConfig::Init(const FSceneTexturesConfigInitSettings& InitSettings)
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:298
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
// but we want to exclude velocity because it usually doesn't have many written pixels
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneTexturesConfig.cpp:363
Scope (from outer to inner):
file
function uint32 FSceneTexturesConfig::GetGBufferRenderTargetsInfo
Source code excerpt:
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.
else if (IsUsingBasePassVelocity(ShaderPlatform))
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:204
Scope: file
Source code excerpt:
* 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
if (Substrate::IsSubstrateEnabled())
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/GBufferInfo.cpp:360
Scope (from outer to inner):
file
function FGBufferInfo FetchLegacyGBufferInfo
Source code excerpt:
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)
{
TargetGBufferD = 4;
Info.Targets[4].Init(GBT_Unorm_8_8_8_8, TEXT("GBufferD"), false, true, true, true);
#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Public/GBufferInfo.h:273
Scope: file
Source code excerpt:
FGBufferBinding GBufferA;
FGBufferBinding GBufferB;
FGBufferBinding GBufferC;
FGBufferBinding GBufferD;
FGBufferBinding GBufferE;
FGBufferBinding GBufferVelocity;
};
struct FGBufferInfo
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Internal/SceneTextures.h:72
Scope: file
Source code excerpt:
FRDGTextureRef GBufferA{};
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/CompositionLighting/PostProcessDeferredDecals.cpp:103
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;
return PassTextures;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.cpp:125
Scope (from outer to inner):
file
function void GetDeferredDecalRenderTargetsInfo
Source code excerpt:
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;
case EDecalRenderTargetMode::DBuffer:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.cpp:196
Scope (from outer to inner):
file
function void GetDeferredDecalPassParameters
Source code excerpt:
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;
case EDecalRenderTargetMode::DBuffer:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/CompositionLighting/PostProcessDeferredDecals.h:35
Scope: file
Source code excerpt:
FRDGTextureRef GBufferA = nullptr;
FRDGTextureRef GBufferB = nullptr;
FRDGTextureRef GBufferC = nullptr;
FRDGTextureRef GBufferE = nullptr;
FDBufferTextures* DBufferTextures = nullptr;
};
FDeferredDecalPassTextures GetDeferredDecalPassTextures(
FRDGBuilder& GraphBuilder,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:247
Scope (from outer to inner):
file
class class FGlobalIlluminationPluginResources : public FRenderResource
Source code excerpt:
FRDGTextureRef GBufferA;
FRDGTextureRef GBufferB;
FRDGTextureRef GBufferC;
FRDGTextureRef SceneDepthZ;
FRDGTextureRef SceneColor;
FRDGTextureRef LightingChannelsTexture;
};
/**
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsComposition.cpp:640
Scope (from outer to inner):
file
function static void InternalRenderHairComposition
Source code excerpt:
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(
GraphBuilder,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/HairStrands/HairStrandsRendering.cpp:188
Scope (from outer to inner):
file
function void RenderHairBasePass
Source code excerpt:
SceneTextures.GBufferA,
SceneTextures.GBufferB,
SceneTextures.GBufferC,
SceneTextures.GBufferD,
SceneTextures.GBufferE,
SceneTextures.Color.Resolve,
SceneTextures.Depth.Resolve,
SceneTextures.Velocity,
InstanceCullingManager);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:1118
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderDiffuseIndirectAndAmbientOcclusion
Source code excerpt:
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();
Delegate.Broadcast(*Scene, View, GraphBuilder, GIPluginResources);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:2230
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderGlobalIlluminationPluginVisualizations
Source code excerpt:
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
FGlobalIlluminationPluginDelegates::FRenderDiffuseIndirectVisualizations& PRVDelegate = FGlobalIlluminationPluginDelegates::RenderDiffuseIndirectVisualizations();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/MobileShadingRenderer.cpp:1852
Scope (from outer to inner):
file
function FColorTargets FMobileSceneRenderer::GetColorTargets_Deferred
Source code excerpt:
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:11
Scope: file
Source code excerpt:
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)
RDG_TEXTURE_ACCESS(SceneDepth, ERHIAccess::CopySrc)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:204
Scope: file
Source code excerpt:
}
if (Parameters.GBufferC)
{
FRHITexture* SourceBufferC = Parameters.GBufferC->GetRHI();
if (DestinationBufferBCDEF->GetFormat() == SourceBufferC->GetFormat())
{
FRHICopyTextureInfo CopyInfo;
CopyInfo.SourcePosition = SourcePoint;
CopyInfo.DestPosition = FIntVector(1, 0, 0);
CopyInfo.Size = FIntVector(1, 1, 1);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessBufferInspector.cpp:291
Scope: file
Source code excerpt:
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;
PassParameters->SceneDepth = SceneTextures.SceneDepthTexture;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/RendererScene.cpp:861
Scope: file
Source code excerpt:
GetRenderTargetGPUSizeBytes(GBufferA, bLogSizes) +
GetRenderTargetGPUSizeBytes(GBufferB, bLogSizes) +
GetRenderTargetGPUSizeBytes(GBufferC, bLogSizes) +
GetRenderTargetGPUSizeBytes(HZB, bLogSizes) +
GetRenderTargetGPUSizeBytes(NaniteHZB, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedDepthViewNormal, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedOpaqueDepth, bLogSizes) +
GetRenderTargetGPUSizeBytes(CompressedOpaqueShadingModel, bLogSizes) +
GetRenderTargetGPUSizeBytes(ScreenSpaceRayTracingInput, bLogSizes) +
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:461
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);
FASTVRAM_CVAR(SceneDepth, 1);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:661
Scope (from outer to inner):
file
function void FFastVramConfig::Update
Source code excerpt:
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);
bDirty |= UpdateTextureFlagFromCVar(CVarFastVRam_SceneDepth, SceneDepth);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.h:1065
Scope: file
Source code excerpt:
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.
// Expected to contain a single active bit or zero if instance occlusion query data is not available.
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.h:2810
Scope: file
Source code excerpt:
ETextureCreateFlags GBufferA;
ETextureCreateFlags GBufferB;
ETextureCreateFlags GBufferC;
ETextureCreateFlags GBufferD;
ETextureCreateFlags GBufferE;
ETextureCreateFlags GBufferF;
ETextureCreateFlags GBufferVelocity;
ETextureCreateFlags HZB;
ETextureCreateFlags SceneDepth;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextureParameters.cpp:26
Scope (from outer to inner):
file
function FSceneTextureParameters GetSceneTextureParameters
Source code excerpt:
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:559
Scope (from outer to inner):
file
function void FSceneTextures::InitializeViewFamily
Source code excerpt:
}
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"));
}
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"));
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:669
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 }
};
for (const FGBufferEntry& Entry : GBufferEntries)
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:789
Scope (from outer to inner):
file
function FRDGTextureRef GetSceneTexture
Source code excerpt:
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;
default:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:852
Scope (from outer to inner):
file
function void SetupSceneTextureUniformParameters
Source code excerpt:
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferC) && HasBeenProduced(SceneTextures->GBufferC))
{
SceneTextureParameters.GBufferCTexture = SceneTextures->GBufferC;
}
if (EnumHasAnyFlags(SetupMode, ESceneTextureSetupMode::GBufferD) && HasBeenProduced(SceneTextures->GBufferD))
{
SceneTextureParameters.GBufferDTexture = SceneTextures->GBufferD;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneTextures.cpp:1004
Scope (from outer to inner):
file
function void SetupMobileSceneTextureUniformParameters
Source code excerpt:
}
if (HasBeenProduced(SceneTextures->GBufferC))
{
SceneTextureParameters.GBufferCTexture = SceneTextures->GBufferC;
}
if (HasBeenProduced(SceneTextures->GBufferD))
{
SceneTextureParameters.GBufferDTexture = SceneTextures->GBufferD;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:16
Scope: file
Source code excerpt:
GBufferA,
GBufferB,
GBufferC,
GBufferD,
GBufferE,
GBufferF,
SSAO,
CustomDepth,
};
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h:34
Scope: file
Source code excerpt:
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:74
Scope: file
Source code excerpt:
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(