UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RendererInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 RendererInterface.h: Renderer interface definition.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
11#include "Misc/MemStack.h"
13#include "RHI.h"
14#include "RenderResource.h"
15#include "RenderUtils.h"
16#include "Misc/EnumClassFlags.h"
17#include "UniformBuffer.h"
18#include "VirtualTexturing.h"
21
22class FCanvas;
24class FMaterial;
25class FSceneInterface;
26class FSceneView;
31struct FMeshBatch;
33struct FSceneTextures;
34struct FViewMatrices;
35class FShader;
37class FRDGBuilder;
40class FViewInfo;
41template<typename ShaderType, typename PointerTableType> class TShaderRefBase;
44class ISceneRenderer;
47
48namespace Nanite
49{
50 struct FResources;
51};
52
54
56{
57 static constexpr uint32 BlockSize = 64 * 1024; // Blocksize used to allocate from
58 static constexpr bool AllowOversizedBlocks = true; // The allocator supports oversized Blocks and will store them in a seperate Block with counter 1
59 static constexpr bool RequiresAccurateSize = true; // GetAllocationSize returning the accurate size of the allocation otherwise it could be relaxed to return the size to the end of the Block
60 static constexpr bool InlineBlockAllocation = false; // Inline or Noinline the BlockAllocation which can have an impact on Performance
61 static constexpr const char* TagName = "SceneRenderingAllocator";
62
64};
65
67
68template <typename T>
70
73
78
81{
82public:
83
86 : PackedBits(0)
87 {
88 check(!IsValid());
89 }
90
102 uint8 InNumMips = 1,
103 bool InAutowritable = true,
104 bool InCreateRTWriteMask = false,
105 bool InCreateFmask = false)
106 {
107 check(InExtent.X);
108 check(InExtent.Y);
109
112 NewDesc.Extent = InExtent;
113 NewDesc.Depth = 0;
114 NewDesc.ArraySize = 1;
115 NewDesc.bIsArray = false;
116 NewDesc.bIsCubemap = false;
117 NewDesc.NumMips = InNumMips;
118 NewDesc.NumSamples = 1;
119 NewDesc.Format = InFormat;
121 NewDesc.DebugName = TEXT("UnknownTexture2D");
122 check(NewDesc.Is2DTexture());
123 return NewDesc;
124 }
125
138 uint8 InNumMips = 1,
139 bool InAutowritable = true,
140 bool InCreateRTWriteMask = false,
141 bool InCreateFmask = false)
142 {
143 check(InExtent.X);
144 check(InExtent.Y);
145
148 NewDesc.Extent = InExtent;
149 NewDesc.Depth = 0;
150 NewDesc.ArraySize = InArraySize;
151 NewDesc.bIsArray = true;
152 NewDesc.bIsCubemap = false;
153 NewDesc.NumMips = InNumMips;
154 NewDesc.NumSamples = 1;
155 NewDesc.Format = InFormat;
157 NewDesc.DebugName = TEXT("UnknownTexture2DArray");
158 check(NewDesc.Is2DTexture());
159
160 return NewDesc;
161 }
162
176 uint8 InNumMips = 1,
177 bool InAutowritable = true)
178 {
179 check(InSizeX);
180 check(InSizeY);
181
185 NewDesc.Depth = InSizeZ;
186 NewDesc.ArraySize = 1;
187 NewDesc.bIsArray = false;
188 NewDesc.bIsCubemap = false;
189 NewDesc.NumMips = InNumMips;
190 NewDesc.NumSamples = 1;
191 NewDesc.Format = InFormat;
193 NewDesc.DebugName = TEXT("UnknownTextureVolume");
194 check(NewDesc.Is3DTexture());
195 return NewDesc;
196 }
197
210 uint8 InNumMips = 1,
211 bool InAutowritable = true)
212 {
214
218 NewDesc.Depth = 0;
219 NewDesc.ArraySize = InArraySize;
220 // Note: this doesn't allow an array of size 1
221 NewDesc.bIsArray = InArraySize > 1;
222 NewDesc.bIsCubemap = true;
223 NewDesc.NumMips = InNumMips;
224 NewDesc.NumSamples = 1;
225 NewDesc.Format = InFormat;
227 NewDesc.DebugName = TEXT("UnknownTextureCube");
228 check(NewDesc.IsCubemap());
229
230 return NewDesc;
231 }
232
245 uint8 InNumMips = 1,
246 bool InAutowritable = true)
247 {
249
253 NewDesc.Depth = 0;
254 NewDesc.ArraySize = InArraySize;
255 NewDesc.bIsArray = true;
256 NewDesc.bIsCubemap = true;
257 NewDesc.NumMips = InNumMips;
258 NewDesc.NumSamples = 1;
259 NewDesc.Format = InFormat;
261 NewDesc.DebugName = TEXT("UnknownTextureCubeArray");
262 check(NewDesc.IsCubemap());
263
264 return NewDesc;
265 }
266
268 bool Compare(const FPooledRenderTargetDesc& rhs, bool bExact) const
269 {
270 auto LhsFlags = Flags;
271 auto RhsFlags = rhs.Flags;
272
274 {
277 }
278
279 return ClearValue == rhs.ClearValue
280 && LhsFlags == RhsFlags
281 && Format == rhs.Format
282 && UAVFormat == rhs.UAVFormat
283 && Extent == rhs.Extent
284 && Depth == rhs.Depth
285 && ArraySize == rhs.ArraySize
286 && NumMips == rhs.NumMips
287 && NumSamples == rhs.NumSamples
288 && PackedBits == rhs.PackedBits
289 && FastVRAMPercentage == rhs.FastVRAMPercentage
290 && AliasableFormats == rhs.AliasableFormats;
291 }
292
293 bool IsCubemap() const
294 {
295 return bIsCubemap;
296 }
297
298 bool Is2DTexture() const
299 {
300 return Extent.X != 0 && Extent.Y != 0 && Depth == 0 && !bIsCubemap;
301 }
302
303 bool Is3DTexture() const
304 {
305 return Extent.X != 0 && Extent.Y != 0 && Depth != 0 && !bIsCubemap;
306 }
307
308 // @return true if this texture is a texture array
309 bool IsArray() const
310 {
311 return bIsArray;
312 }
313
314 bool IsValid() const
315 {
316 if(NumSamples != 1)
317 {
319 {
320 // D3D11 limitations
321 return false;
322 }
323
324 if(!Is2DTexture())
325 {
326 return false;
327 }
328 }
329
330 return Extent.X != 0 && NumMips != 0 && NumSamples >=1 && NumSamples <=16 && Format != PF_Unknown
332 }
333
335 {
336 return FIntVector(Extent.X, Extent.Y, Depth);
337 }
338
343 FString GenerateInfoString() const
344 {
345 const TCHAR* FormatString = GetPixelFormatString(Format);
346
347 FString FlagsString = TEXT("");
348
350
352 {
353 FlagsString += TEXT(" RT");
354 }
356 {
357 FlagsString += TEXT(" sRGB");
358 }
359 if(NumSamples > 1)
360 {
361 FlagsString += FString::Printf(TEXT(" %dxMSAA"), NumSamples);
362 }
364 {
365 FlagsString += TEXT(" UAV");
366 }
367
369 {
370 FlagsString += TEXT(" VRam");
371 }
372
373 FString ArrayString;
374
375 if(IsArray())
376 {
377 ArrayString = FString::Printf(TEXT("[%d]"), ArraySize);
378 }
379
380 if(Is2DTexture())
381 {
382 return FString::Printf(TEXT("(2D%s %dx%d %s%s)"), *ArrayString, Extent.X, Extent.Y, FormatString, *FlagsString);
383 }
384 else if(Is3DTexture())
385 {
386 return FString::Printf(TEXT("(3D%s %dx%dx%d %s%s)"), *ArrayString, Extent.X, Extent.Y, Depth, FormatString, *FlagsString);
387 }
388 else if(IsCubemap())
389 {
390 return FString::Printf(TEXT("(Cube%s %d %s%s)"), *ArrayString, Extent.X, FormatString, *FlagsString);
391 }
392 else
393 {
394 return TEXT("(INVALID)");
395 }
396 }
397
398 // useful when compositing graph takes an input as output format
399 void Reset()
400 {
401 // Usually we don't want to propagate MSAA samples.
402 NumSamples = 1;
403
404 // Remove UAV flag for rendertargets that don't need it (some formats are incompatible)
407 }
408
410 const TCHAR* DebugName = TEXT("UnknownTexture");
433
434 union
435 {
436 struct
437 {
444 };
446 };
447};
448
489
494{
496
498 virtual bool IsFree() const = 0;
499
501 virtual const FPooledRenderTargetDesc& GetDesc() const = 0;
502
507 virtual uint32 ComputeMemorySize() const = 0;
508
510 virtual bool IsTracked() const = 0;
511
513 virtual FRHITransientTexture* GetTransientTexture() const { return nullptr; }
514
515 // Refcounting
516 virtual uint32 AddRef() const = 0;
517 virtual uint32 Release() = 0;
518 virtual uint32 GetRefCount() const = 0;
519
521
522protected:
525};
526
529
536
537
538// use r.DrawDenormalizedQuadMode to override the function call setting (quick way to see if an artifact is caused by this optimization)
540{
541 // Rectangle is created by 2 triangles (diagonal can cause some slightly less efficient shader execution), this is the default as it has no artifacts
543 //
545 //
548
569typedef FOnPostOpaqueRender::FDelegate FPostOpaqueRenderDelegate;
570
572{
573public:
575 virtual bool Prepare() = 0;
576
578 virtual bool IsVisible(int32 VisibilityId, const FBoxSphereBounds& Bounds) = 0;
579
581 virtual bool IsThreadsafe()
582 {
583 return false;
584 }
585};
586
588{
589public:
591};
592
646
648{
649public:
650 virtual void BeginFrame() {}
651 virtual void PrepareView(const FSceneView* View) {}
652 virtual void BeginRenderView(const FSceneView* View, bool bShouldWaitForJobs = true) {}
653 virtual void EndFrame() {}
654};
655
664
680
681
686{
687public:
688
690 virtual void BeginRenderingViewFamily(FCanvas* Canvas, FSceneViewFamily* ViewFamily) = 0;
691
693 virtual void CreateAndInitSingleView(FRHICommandListImmediate& RHICmdList, class FSceneViewFamily* ViewFamily, const struct FSceneViewInitOptions* ViewInitOptions) = 0;
694
701
703
704#if WITH_STATE_STREAM
706 virtual void FreeStateStream(IStateStreamManager* Manager) = 0;
707#endif
708
712 virtual void UpdateStaticDrawLists() = 0;
713
718
722
724 virtual uint32 GetNumDynamicLightsAffectingPrimitive(const class FPrimitiveSceneInfo* PrimitiveSceneInfo,const class FLightCacheInterface* LCI) = 0;
725
727
729
736
738 virtual void DrawTileMesh(FCanvasRenderContext& RenderContext, struct FMeshPassProcessorRenderState& DrawRenderState, const FSceneView& View, FMeshBatch& Mesh, bool bIsHitTesting, const class FHitProxyId& HitProxyId, bool bUse128bitRT = false) = 0;
739
741
743 virtual void DebugLogOnCrash() = 0;
744
745 // @param WorkScale >0, 10 for normal precision and runtime of less than a second
746 virtual void GPUBenchmark(FSynthBenchmarkResults& InOut, float WorkScale = 10.0f) = 0;
747
748 virtual void ExecVisualizeTextureCmd(const FString& Cmd) = 0;
749
751
767 virtual void DrawRectangle(
768 FRHICommandList& RHICmdList,
769 float X,
770 float Y,
771 float SizeX,
772 float SizeY,
773 float U,
774 float V,
775 float SizeU,
776 float SizeV,
777 FIntPoint TargetSize,
778 FIntPoint TextureSize,
781 ) = 0;
782
786
788 virtual void RemovePostOpaqueRenderDelegate(FDelegateHandle PostOpaqueRenderDelegate) = 0;
790 virtual void RemoveOverlayRenderDelegate(FDelegateHandle OverlayRenderDelegate) = 0;
791
794
797
798 virtual void PostRenderAllViewports() = 0;
799
802
805
808
809 virtual void DestroyVirtualTexture(IAllocatedVirtualTexture* AllocatedVT) = 0;
810
814
817
822
824
827
840
843
851
858
860 virtual void FlushVirtualTextureCache() = 0;
862 virtual void FlushVirtualTextureCache(IAllocatedVirtualTexture* AllocatedVT, const FVector2f& InUV0, const FVector2f& InUV1) = 0;
863
866
873
875 virtual void PrefetchNaniteResource(const Nanite::FResources* Resource, uint32 NumFramesUntilRender) = 0;
876
877 UE_DEPRECATED(5.4, "IPersistentViewUniformBufferExtension will be removed in a future version.")
879
886
889
892
897
902
904};
905
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define X(Name, Desc)
Definition FormatStringSan.h:47
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
FInt32Vector3 FIntVector
Definition MathFwd.h:115
FInt32Point FIntPoint
Definition MathFwd.h:124
const TCHAR * GetPixelFormatString(EPixelFormat InPixelFormat)
Definition PixelFormat.cpp:251
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
#define TexCreate_RenderTargetable
Definition RHIDefinitions.h:1192
#define TexCreate_FastVRAM
Definition RHIDefinitions.h:1213
#define TexCreate_None
Definition RHIDefinitions.h:1191
ETextureCreateFlags
Definition RHIDefinitions.h:1091
#define TexCreate_UAV
Definition RHIDefinitions.h:1209
#define TexCreate_SRGB
Definition RHIDefinitions.h:1196
EShaderPlatform
Definition RHIShaderPlatform.h:11
ERHIFeatureLevel::Type GMaxRHIFeatureLevel
Definition RHI.cpp:1338
RENDERCORE_API TRefCountPtr< IPooledRenderTarget > CreateRenderTarget(FRHITexture *Texture, const TCHAR *Name)
Definition RenderTargetPool.cpp:32
RENDERCORE_API bool CacheRenderTarget(FRHITexture *Texture, const TCHAR *Name, TRefCountPtr< IPooledRenderTarget > &OutPooledRenderTarget)
Definition RenderTargetPool.cpp:48
FOnPostOpaqueRender::FDelegate FPostOpaqueRenderDelegate
Definition RendererInterface.h:569
EDrawRectangleFlags
Definition RendererInterface.h:540
@ EDRF_Default
Definition RendererInterface.h:542
@ EDRF_UseTesselatedIndexBuffer
Definition RendererInterface.h:546
@ EDRF_UseTriangleOptimization
Definition RendererInterface.h:544
void() FVTProducerDestroyedFunction(const FVirtualTextureProducerHandle &InHandle, void *Baton)
Definition VirtualTexturing.h:194
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition CanvasRender.h:9
Definition CanvasTypes.h:211
Definition IDelegateInstance.h:14
Definition GPUScene.h:80
Definition GlobalDistanceFieldParameters.h:18
Definition HitProxies.h:86
Definition SceneManagement.h:820
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:2058
Definition RendererInterface.h:597
void SetRequestData(FVector2f SrcViewportUV, int32 TargetBufferIndex, int32 ViewUniqueId, int32 GBufferFormat, bool StaticLightingEnable, float InPreExposure)
Definition RendererInterface.h:613
float PreExposure
Definition RendererInterface.h:644
bool RenderingCommandSend
Definition RendererInterface.h:633
void MarkSendToRendering()
Definition RendererInterface.h:627
int32 ViewId
Definition RendererInterface.h:639
FVector2f SourceViewportUV
Definition RendererInterface.h:637
int32 BufferIndex
Definition RendererInterface.h:638
FPixelInspectorRequest()
Definition RendererInterface.h:599
int32 FrameCountAfterRenderingCommandSend
Definition RendererInterface.h:634
bool AllowStaticLighting
Definition RendererInterface.h:643
bool RequestComplete
Definition RendererInterface.h:636
~FPixelInspectorRequest()
Definition RendererInterface.h:629
int32 GBufferPrecision
Definition RendererInterface.h:642
int32 RequestTickSinceCreation
Definition RendererInterface.h:635
Definition RendererInterface.h:550
FRHIUniformBuffer * ViewUniformBuffer
Definition RendererInterface.h:561
void * Uid
Definition RendererInterface.h:565
FRDGTexture * NormalTexture
Definition RendererInterface.h:557
const FViewInfo * View
Definition RendererInterface.h:566
FMatrix ViewMatrix
Definition RendererInterface.h:553
const FGlobalDistanceFieldParameterData * GlobalDistanceFieldParams
Definition RendererInterface.h:564
TRDGUniformBufferRef< FMobileSceneTextureUniformParameters > MobileSceneTexturesUniformParams
Definition RendererInterface.h:563
FRDGBuilder * GraphBuilder
Definition RendererInterface.h:560
FRDGTexture * ColorTexture
Definition RendererInterface.h:555
FRDGTexture * SmallDepthTexture
Definition RendererInterface.h:559
TRDGUniformBufferRef< FSceneTextureUniformParameters > SceneTexturesUniformParams
Definition RendererInterface.h:562
FIntRect ViewportRect
Definition RendererInterface.h:552
FMatrix ProjMatrix
Definition RendererInterface.h:554
FRDGTexture * VelocityTexture
Definition RendererInterface.h:558
FRDGTexture * DepthTexture
Definition RendererInterface.h:556
Definition PrimitiveSceneInfo.h:266
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHICommandList.h:3819
Definition RHIResources.h:2153
Definition RHITransientResourceAllocator.h:399
Definition RHIResources.h:1232
Definition SceneInterface.h:106
Definition SceneUniformBuffer.h:137
Definition SceneView.h:2212
Definition SceneManagement.h:132
Definition SceneView.h:1425
Definition Shader.h:637
Definition Shader.h:829
Definition SceneRendering.h:1132
Definition VirtualTexturing.h:471
Definition VirtualTexturing.h:374
Definition RendererInterface.h:588
virtual ICustomVisibilityQuery * CreateQuery(const FSceneView &View)=0
Definition RendererInterface.h:572
virtual bool IsThreadsafe()
Definition RendererInterface.h:581
virtual bool Prepare()=0
virtual bool IsVisible(int32 VisibilityId, const FBoxSphereBounds &Bounds)=0
Definition IMaterialCacheTagProvider.h:18
Definition ModuleInterface.h:14
Definition RendererInterface.h:648
virtual void PrepareView(const FSceneView *View)
Definition RendererInterface.h:651
virtual void EndFrame()
Definition RendererInterface.h:653
virtual void BeginFrame()
Definition RendererInterface.h:650
virtual void BeginRenderView(const FSceneView *View, bool bShouldWaitForJobs=true)
Definition RendererInterface.h:652
Definition RefCounting.h:196
Definition RendererInterface.h:686
virtual IScenePrimitiveRenderingContext * BeginScenePrimitiveRendering(FRDGBuilder &GraphBuilder, FSceneViewFamily *ViewFamily)=0
virtual void OnWorldCleanup(UWorld *World, bool bSessionEnded, bool bCleanupResources, bool bWorldChanged)=0
virtual void InvalidatePathTracedOutput(PathTracing::EInvalidateReason InvalidateReason=PathTracing::EInvalidateReason::Uncategorized)=0
virtual void RequestVirtualTextureTiles(const FMaterialRenderProxy *InMaterialRenderProxy, const FVector2D &InScreenSpaceSize, ERHIFeatureLevel::Type InFeatureLevel)=0
virtual void GPUBenchmark(FSynthBenchmarkResults &InOut, float WorkScale=10.0f)=0
virtual FDelegateHandle RegisterOverlayRenderDelegate(const FPostOpaqueRenderDelegate &OverlayRenderDelegate)=0
virtual FSceneUniformBuffer * CreateSinglePrimitiveSceneUniformBuffer(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FMeshBatch &Mesh)=0
virtual FVirtualTextureProducerHandle RegisterVirtualTextureProducer(FRHICommandListBase &RHICmdList, const FVTProducerDescription &Desc, IVirtualTexture *Producer)=0
virtual TRDGUniformBufferRef< FBatchedPrimitiveParameters > CreateSinglePrimitiveUniformView(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, EShaderPlatform ShaderPlatform, FMeshBatch &Mesh)=0
virtual FSceneInterface * AllocateScene(UWorld *World, bool bInRequiresHitProxies, bool bCreateFXSystem, ERHIFeatureLevel::Type InFeatureLevel)=0
virtual uint64 GetNaniteRequestRecordBuffer(TArray< uint32 > &OutRequestData)=0
virtual void ReleaseVirtualTextureProducer(const FVirtualTextureProducerHandle &Handle)=0
virtual class FSceneViewStateInterface * AllocateViewState(ERHIFeatureLevel::Type FeatureLevel, FSceneViewStateInterface *ShareOriginTarget)=0
virtual const FViewMatrices & GetPreviousViewMatrices(const FSceneView &View)=0
virtual void DebugLogOnCrash()=0
virtual void UpdateMapNeedsLightingFullyRebuiltState(UWorld *World)=0
virtual void AddVirtualTextureProducerDestroyedCallback(const FVirtualTextureProducerHandle &Handle, FVTProducerDestroyedFunction *Function, void *Baton)=0
virtual uint32 RemoveAllVirtualTextureProducerDestroyedCallbacks(const void *Baton)=0
virtual void DestroyVirtualTexture(IAllocatedVirtualTexture *AllocatedVT)=0
virtual uint32 GetNumDynamicLightsAffectingPrimitive(const class FPrimitiveSceneInfo *PrimitiveSceneInfo, const class FLightCacheInterface *LCI)=0
virtual FSceneUniformBuffer * CreateSinglePrimitiveSceneUniformBuffer(FRDGBuilder &GraphBuilder, const FViewInfo &SceneView, FMeshBatch &Mesh)=0
virtual void RegisterPersistentViewUniformBufferExtension(IPersistentViewUniformBufferExtension *Extension)=0
virtual void RequestVirtualTextureTiles(const FVector2D &InScreenSpaceSize, int32 InMipLevel)=0
virtual void BeginRenderingViewFamily(FCanvas *Canvas, FSceneViewFamily *ViewFamily)=0
virtual void RegisterCustomCullingImpl(ICustomCulling *impl)=0
virtual void AddMeshBatchToGPUScene(FGPUScenePrimitiveCollector *Collector, FMeshBatch &MeshBatch)=0
virtual void LockVirtualTextureTiles(FVirtualTextureProducerHandle ProducerHandle, int32 InMipLevel)=0
virtual void PostRenderAllViewports()=0
virtual void SyncVirtualTextureUpdates(FRHICommandListImmediate &RHICmdList, ERHIFeatureLevel::Type FeatureLevel)=0
virtual void RequestNanitePages(TArrayView< uint32 > InRequestData)=0
virtual TUniquePtr< ISceneRenderBuilder > CreateSceneRenderBuilder(FSceneInterface *Scene)=0
virtual void UnregisterCustomCullingImpl(ICustomCulling *impl)=0
virtual void RemoveScene(FSceneInterface *Scene)=0
virtual class IMaterialCacheTagProvider * GetMaterialCacheTagProvider()=0
virtual void BeginRenderingViewFamilies(FCanvas *Canvas, TConstArrayView< FSceneViewFamily * > ViewFamilies)=0
virtual void PerFrameCleanupIfSkipRenderer()=0
virtual void UpdateStaticDrawLists()=0
virtual FOnResolvedSceneColor & GetResolvedSceneColorCallbacks()=0
virtual void RemovePostOpaqueRenderDelegate(FDelegateHandle PostOpaqueRenderDelegate)=0
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnResolvedSceneColor, FRDGBuilder &, const FSceneTextures &)
virtual void ResetSceneTextureExtentHistory()=0
virtual const FGlobalDistanceFieldParameterData * GetGlobalDistanceFieldParameterData(const FSceneView &View)=0
virtual void UpdateStaticDrawListsForMaterials(const TArray< const FMaterial * > &Materials)=0
virtual TRDGUniformBufferRef< FBatchedPrimitiveParameters > CreateSinglePrimitiveUniformView(FRDGBuilder &GraphBuilder, const FViewInfo &SceneView, FMeshBatch &Mesh)=0
virtual const TSet< FSceneInterface * > & GetAllocatedScenes()=0
virtual void RequestVirtualTextureTiles(TArray< uint64 > &&InPageRequests)=0
virtual void RemoveOverlayRenderDelegate(FDelegateHandle OverlayRenderDelegate)=0
virtual void FlushVirtualTextureCache()=0
virtual void LoadPendingVirtualTextureTiles(FRHICommandListImmediate &RHICmdList, ERHIFeatureLevel::Type FeatureLevel)=0
virtual void DestroyAdaptiveVirtualTexture(IAdaptiveVirtualTexture *AdaptiveVT)=0
virtual IVirtualTexture * FindProducer(const FVirtualTextureProducerHandle &Handle)=0
virtual void ExecVisualizeTextureCmd(const FString &Cmd)=0
virtual class FSceneViewStateInterface * AllocateViewState(ERHIFeatureLevel::Type FeatureLevel)=0
virtual IAdaptiveVirtualTexture * AllocateAdaptiveVirtualTexture(FRHICommandListBase &RHICmdList, const FAdaptiveVTDescription &AdaptiveVTDesc, const FAllocatedVTDescription &AllocatedVTDesc)=0
virtual void SetVirtualTextureRequestRecordBuffer(uint64 Handle)=0
virtual void PrefetchNaniteResource(const Nanite::FResources *Resource, uint32 NumFramesUntilRender)=0
virtual void RequestStaticMeshUpdate(FPrimitiveSceneInfo *Info)=0
virtual void RequestVirtualTextureTiles(IAllocatedVirtualTexture *AllocatedVT, const FVector2D &InScreenSpaceSize, const FVector2D &InViewportPosition, const FVector2D &InViewportSize, const FVector2D &InUV0, const FVector2D &InUV1, int32 InMipLevel)=0
virtual FDelegateHandle RegisterPostOpaqueRenderDelegate(const FPostOpaqueRenderDelegate &PostOpaqueRenderDelegate)=0
virtual void SetNaniteRequestRecordBuffer(uint64 Handle)=0
virtual uint64 GetVirtualTextureRequestRecordBuffer(TSet< uint64 > &OutPageRequests)=0
virtual void DrawRectangle(FRHICommandList &RHICmdList, float X, float Y, float SizeX, float SizeY, float U, float V, float SizeU, float SizeV, FIntPoint TargetSize, FIntPoint TextureSize, const TShaderRefBase< FShader, FShaderMapPointerTable > &VertexShader, EDrawRectangleFlags Flags=EDRF_Default)=0
virtual void InitializeSystemTextures(FRHICommandListImmediate &RHICmdList)=0
virtual void CreateAndInitSingleView(FRHICommandListImmediate &RHICmdList, class FSceneViewFamily *ViewFamily, const struct FSceneViewInitOptions *ViewInitOptions)=0
virtual void ReleaseVirtualTexturePendingResources()=0
virtual void FlushVirtualTextureCache(IAllocatedVirtualTexture *AllocatedVT, const FVector2f &InUV0, const FVector2f &InUV1)=0
virtual IAllocatedVirtualTexture * AllocateVirtualTexture(FRHICommandListBase &RHICmdList, const FAllocatedVTDescription &Desc)=0
virtual void DrawTileMesh(FCanvasRenderContext &RenderContext, struct FMeshPassProcessorRenderState &DrawRenderState, const FSceneView &View, FMeshBatch &Mesh, bool bIsHitTesting, const class FHitProxyId &HitProxyId, bool bUse128bitRT=false)=0
Definition RendererInterface.h:659
virtual ISceneRenderer * GetSceneRenderer()=0
virtual ~IScenePrimitiveRenderingContext()
Definition RendererInterface.h:661
Definition SceneRenderBuilderInterface.h:52
Definition SceneRendererInterface.h:47
Definition StateStreamManager.h:13
Definition VirtualTexturing.h:289
Definition ArrayView.h:139
Definition Array.h:670
Definition ConcurrentLinearAllocator.h:121
Definition ConcurrentLinearAllocator.h:571
Definition ConcurrentLinearAllocator.h:190
Definition ConcurrentLinearAllocator.h:624
Definition RenderGraphResources.h:251
UE_FORCEINLINE_HINT void SafeRelease()
Definition RefCounting.h:599
Definition ContainerAllocationPolicies.h:1662
Definition Shader.h:1021
Definition ContainerAllocationPolicies.h:894
Definition ContainerAllocationPolicies.h:1383
Definition UniquePtr.h:107
Definition World.h:918
Type
Definition RHIFeatureLevel.h:20
@ SM5
Definition RHIFeatureLevel.h:42
@ ES3_1
Definition RHIFeatureLevel.h:25
Definition SkinnedMeshComponent.h:50
Definition PathTracingOutputInvalidateReason.h:6
Definition VirtualTexturing.h:485
Definition VirtualTexturing.h:69
Definition RHIResources.h:246
static UE_FORCEINLINE_HINT bool SupportsFastVRAMMemory()
Definition GenericPlatformMemory.h:739
Definition MeshBatch.h:371
Definition MeshPassProcessor.h:2118
Definition RendererInterface.h:81
void Reset()
Definition RendererInterface.h:399
bool Is3DTexture() const
Definition RendererInterface.h:303
uint8 PackedBits
Definition RendererInterface.h:445
bool IsValid() const
Definition RendererInterface.h:314
uint8 bIsArray
Definition RendererInterface.h:439
static FPooledRenderTargetDesc Create2DArrayDesc(FIntPoint InExtent, EPixelFormat InFormat, const FClearValueBinding &InClearValue, ETextureCreateFlags InFlags, ETextureCreateFlags InTargetableFlags, bool bInForceSeparateTargetAndShaderResource, uint16 InArraySize, uint8 InNumMips=1, bool InAutowritable=true, bool InCreateRTWriteMask=false, bool InCreateFmask=false)
Definition RendererInterface.h:130
FClearValueBinding ClearValue
Definition RendererInterface.h:412
static FPooledRenderTargetDesc Create2DDesc(FIntPoint InExtent, EPixelFormat InFormat, const FClearValueBinding &InClearValue, ETextureCreateFlags InFlags, ETextureCreateFlags InTargetableFlags, bool bInForceSeparateTargetAndShaderResource, uint8 InNumMips=1, bool InAutowritable=true, bool InCreateRTWriteMask=false, bool InCreateFmask=false)
Definition RendererInterface.h:95
const TCHAR * DebugName
Definition RendererInterface.h:410
ETextureCreateFlags Flags
Definition RendererInterface.h:414
bool IsCubemap() const
Definition RendererInterface.h:293
static FPooledRenderTargetDesc CreateVolumeDesc(uint32 InSizeX, uint32 InSizeY, uint16 InSizeZ, EPixelFormat InFormat, const FClearValueBinding &InClearValue, ETextureCreateFlags InFlags, ETextureCreateFlags InTargetableFlags, bool bInForceSeparateTargetAndShaderResource, uint8 InNumMips=1, bool InAutowritable=true)
Definition RendererInterface.h:167
uint8 NumSamples
Definition RendererInterface.h:428
uint8 NumMips
Definition RendererInterface.h:426
FIntVector GetSize() const
Definition RendererInterface.h:334
FIntPoint Extent
Definition RendererInterface.h:420
uint16 ArraySize
Definition RendererInterface.h:424
uint8 bReserved0
Definition RendererInterface.h:443
static FPooledRenderTargetDesc CreateCubemapDesc(uint32 InExtent, EPixelFormat InFormat, const FClearValueBinding &InClearValue, ETextureCreateFlags InFlags, ETextureCreateFlags InTargetableFlags, bool bInForceSeparateTargetAndShaderResource, uint16 InArraySize=1, uint8 InNumMips=1, bool InAutowritable=true)
Definition RendererInterface.h:202
EPixelFormat Format
Definition RendererInterface.h:416
bool IsArray() const
Definition RendererInterface.h:309
static FPooledRenderTargetDesc CreateCubemapArrayDesc(uint32 InExtent, EPixelFormat InFormat, const FClearValueBinding &InClearValue, ETextureCreateFlags InFlags, ETextureCreateFlags InTargetableFlags, bool bInForceSeparateTargetAndShaderResource, uint16 InArraySize, uint8 InNumMips=1, bool InAutowritable=true)
Definition RendererInterface.h:237
bool Is2DTexture() const
Definition RendererInterface.h:298
FPooledRenderTargetDesc()
Definition RendererInterface.h:85
bool Compare(const FPooledRenderTargetDesc &rhs, bool bExact) const
Definition RendererInterface.h:268
FString GenerateInfoString() const
Definition RendererInterface.h:343
TArray< EPixelFormat, TInlineAllocator< 1 > > AliasableFormats
Definition RendererInterface.h:432
uint16 Depth
Definition RendererInterface.h:422
EPixelFormat UAVFormat
Definition RendererInterface.h:418
uint8 bIsCubemap
Definition RendererInterface.h:441
uint8 FastVRAMPercentage
Definition RendererInterface.h:430
Definition RendererInterface.h:666
~FScenePrimitiveRenderingContextScopeHelper()
Definition RendererInterface.h:672
IScenePrimitiveRenderingContext * ScenePrimitiveRenderingContext
Definition RendererInterface.h:678
FScenePrimitiveRenderingContextScopeHelper(IScenePrimitiveRenderingContext *InScenePrimitiveRenderingContext)
Definition RendererInterface.h:667
Definition RendererInterface.h:453
FSceneRenderTargetItem(FRHITexture *InTargetableTexture, FRHITexture *InShaderResourceTexture, FUnorderedAccessViewRHIRef InUAV)
Definition RendererInterface.h:458
FRHITexture * GetRHI() const
Definition RendererInterface.h:478
FUnorderedAccessViewRHIRef UAV
Definition RendererInterface.h:487
FSceneRenderTargetItem()
Definition RendererInterface.h:455
void SafeRelease()
Definition RendererInterface.h:464
bool IsValid() const
Definition RendererInterface.h:471
FTextureRHIRef ShaderResourceTexture
Definition RendererInterface.h:484
FTextureRHIRef TargetableTexture
Definition RendererInterface.h:481
Definition RendererInterface.h:56
static constexpr const char * TagName
Definition RendererInterface.h:61
static constexpr uint32 BlockSize
Definition RendererInterface.h:57
static constexpr bool RequiresAccurateSize
Definition RendererInterface.h:59
static constexpr bool InlineBlockAllocation
Definition RendererInterface.h:60
static constexpr bool AllowOversizedBlocks
Definition RendererInterface.h:58
Definition SceneTextures.h:110
Definition SceneView.h:180
Definition GenericPlatformSurvey.h:124
Definition VirtualTexturing.h:148
Definition SceneView.h:317
Definition RendererInterface.h:494
virtual uint32 GetRefCount() const =0
virtual bool IsFree() const =0
FSceneRenderTargetItem RenderTargetItem
Definition RendererInterface.h:524
virtual FRHITransientTexture * GetTransientTexture() const
Definition RendererInterface.h:513
virtual uint32 Release()=0
FRHITexture * GetRHI() const
Definition RendererInterface.h:520
virtual bool IsTracked() const =0
virtual const FPooledRenderTargetDesc & GetDesc() const =0
virtual uint32 AddRef() const =0
virtual uint32 ComputeMemorySize() const =0
virtual ~IPooledRenderTarget()
Definition RendererInterface.h:495
Definition NaniteResources.h:410
Definition BoxSphereBounds.h:25
Definition IntPoint.h:25
IntType Y
Definition IntPoint.h:37
static const TIntPoint ZeroValue
Definition IntPoint.h:45
IntType X
Definition IntPoint.h:34
Definition VirtualTexturing.h:33