// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Templates/RefCounting.h" // RHI_WANT_RESOURCE_INFO should be controlled by the RHI module. #ifndef RHI_WANT_RESOURCE_INFO #define RHI_WANT_RESOURCE_INFO 0 #endif // RHI_FORCE_DISABLE_RESOURCE_INFO can be defined anywhere else, like in GlobalDefinitions. #ifndef RHI_FORCE_DISABLE_RESOURCE_INFO #define RHI_FORCE_DISABLE_RESOURCE_INFO 0 #endif #define RHI_ENABLE_RESOURCE_INFO (RHI_WANT_RESOURCE_INFO && !RHI_FORCE_DISABLE_RESOURCE_INFO) // Basic Types namespace ERHIFeatureLevel { enum Type : int; } enum EShaderPlatform : uint16; enum ECubeFace : uint32; enum EPixelFormat : uint8; enum class EPixelFormatChannelFlags : uint8; enum class EBufferUsageFlags : uint32; enum class ETextureCreateFlags : uint64; // Command Lists class FRHICommandListBase; class FRHIComputeCommandList; class FRHICommandList; class FRHICommandListImmediate; class FRHISubCommandList; // Contexts class IRHIComputeContext; class IRHICommandContext; class IRHIUploadContext; class FRHIContextArray; class FRHIResourceReplaceInfo; class FRHIResourceReplaceBatcher; struct FSamplerStateInitializerRHI; struct FRasterizerStateInitializerRHI; struct FDepthStencilStateInitializerRHI; class FBlendStateInitializerRHI; // Resources class FRHIAmplificationShader; class FRHIBlendState; class FRHIBoundShaderState; class FRHIBuffer; class FRHIComputePipelineState; class FRHIComputeShader; class FRHICustomPresent; class FRHIDepthStencilState; class FRHIGeometryShader; class FRHIGPUFence; class FRHIGraphicsPipelineState; class FRHIMeshShader; class FRHIPipelineBinaryLibrary; class FRHIPixelShader; class FRHIRasterizerState; class FRHIRayTracingGeometry; class FRHIRayTracingPipelineState; class FRHIRayTracingScene; class FRHIShaderBindingTable; class FRHIRayTracingShader; class FRHIRenderQuery; class FRHIRenderQueryPool; class FRHIResource; class FRHIResourceCollection; class FRHISamplerState; class FRHIShader; class FRHIShaderData; class FRHIShaderLibrary; class FRHIShaderResourceView; class FRHIShaderBundle; class FRHIStagingBuffer; class FRHITexture; class FRHITextureReference; class FRHITimestampCalibrationQuery; class FRHIUniformBuffer; class FRHIUnorderedAccessView; class FRHIVertexDeclaration; class FRHIVertexShader; class FRHIViewableResource; class FRHIViewport; class FRHIWorkGraphPipelineState; class FRHIWorkGraphShader; class FRHIStreamSourceSlot; struct FRHIUniformBufferLayout; // Pointers using FAmplificationShaderRHIRef = TRefCountPtr; using FBlendStateRHIRef = TRefCountPtr; using FBoundShaderStateRHIRef = TRefCountPtr; using FBufferRHIRef = TRefCountPtr; using FComputePipelineStateRHIRef = TRefCountPtr; using FComputeShaderRHIRef = TRefCountPtr; using FCustomPresentRHIRef = TRefCountPtr; using FDepthStencilStateRHIRef = TRefCountPtr; using FGeometryShaderRHIRef = TRefCountPtr; using FGPUFenceRHIRef = TRefCountPtr; using FGraphicsPipelineStateRHIRef = TRefCountPtr; using FMeshShaderRHIRef = TRefCountPtr; using FPixelShaderRHIRef = TRefCountPtr; using FRasterizerStateRHIRef = TRefCountPtr; using FRayTracingGeometryRHIRef = TRefCountPtr; using FRayTracingPipelineStateRHIRef = TRefCountPtr; using FRayTracingSceneRHIRef = TRefCountPtr; using FRayTracingShaderRHIRef = TRefCountPtr; using FShaderBindingTableRHIRef = TRefCountPtr; using FRenderQueryPoolRHIRef = TRefCountPtr; using FRenderQueryRHIRef = TRefCountPtr; using FRHIResourceCollectionRef = TRefCountPtr; using FRHIPipelineBinaryLibraryRef = TRefCountPtr; using FRHIShaderLibraryRef = TRefCountPtr; using FRHIShaderResourceViewRef = TRefCountPtr; using FSamplerStateRHIRef = TRefCountPtr; using FShaderResourceViewRHIRef = TRefCountPtr; using FShaderBundleRHIRef = TRefCountPtr; using FStagingBufferRHIRef = TRefCountPtr; using FTextureReferenceRHIRef = TRefCountPtr; using FTextureRHIRef = TRefCountPtr; using FTimestampCalibrationQueryRHIRef = TRefCountPtr; using FUniformBufferLayoutRHIRef = TRefCountPtr; using FUniformBufferRHIRef = TRefCountPtr; using FUnorderedAccessViewRHIRef = TRefCountPtr; using FVertexDeclarationRHIRef = TRefCountPtr; using FVertexShaderRHIRef = TRefCountPtr; using FViewportRHIRef = TRefCountPtr; using FWorkGraphPipelineStateRHIRef = TRefCountPtr; using FStreamSourceSlotRHIRef = TRefCountPtr; using FWorkGraphShaderRHIRef = TRefCountPtr; // Deprecated typenames using FRHITexture2D UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FRHITexture2D is now deprecated. Use FRHITexture instead." ) = FRHITexture; using FRHITexture2DArray UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FRHITexture2DArray is now deprecated. Use FRHITexture instead." ) = FRHITexture; using FRHITexture3D UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FRHITexture3D is now deprecated. Use FRHITexture instead." ) = FRHITexture; using FRHITextureCube UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FRHITextureCube is now deprecated. Use FRHITexture instead." ) = FRHITexture; using FTexture2DRHIRef UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FTexture2DRHIRef is now deprecated. Use FTextureRHIRef instead." ) = FTextureRHIRef; using FTexture2DArrayRHIRef UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FTexture2DArrayRHIRef is now deprecated. Use FTextureRHIRef instead.") = FTextureRHIRef; using FTexture3DRHIRef UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FTexture3DRHIRef is now deprecated. Use FTextureRHIRef instead." ) = FTextureRHIRef; using FTextureCubeRHIRef UE_DEPRECATED(5.5, "The separate RHI texture types were unified in UE 5.1. FTextureCubeRHIRef is now deprecated. Use FTextureRHIRef instead." ) = FTextureRHIRef;