text: // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
  
  #pragma once
  
  
  /** A null implementation of the dynamically bound RHI. */
  class FNullDynamicRHI : public FDynamicRHI , public IRHICommandContext
  {
  public:
  
  	FNullDynamicRHI();
  
  	// FDynamicRHI interface.
  	virtual void Init();
  	virtual void Shutdown();
  
  	virtual void RHIGpuTimeBegin(uint32 Hash,bool bCompute) final override
  	{
  
  	}
  	virtual void RHIGpuTimeEnd(uint32 Hash,bool bCompute) final override
  	{
  
  	}
  	virtual FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI& Initializer) final override
  	{ 
  		return new FRHISamplerState(); 
  	}
  	virtual FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI& Initializer) final override
  	{ 
  		return new FRHIRasterizerState(); 
  	}
  	virtual FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI& Initializer) final override
  	{ 
  		return new FRHIDepthStencilState(); 
  	}
  	virtual FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI& Initializer) final override
  	{ 
  		return new FRHIBlendState(); 
  	}
  	virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList& Elements) final override
  	{ 
  		return new FRHIVertexDeclaration(); 
  	}
  
  	virtual FPixelShaderRHIRef RHICreatePixelShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIPixelShader(); 
  	}
  
  	virtual FVertexShaderRHIRef RHICreateVertexShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIVertexShader(); 
  	}
  
  	virtual FHullShaderRHIRef RHICreateHullShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIHullShader(); 
  	}
  
  	virtual FDomainShaderRHIRef RHICreateDomainShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIDomainShader(); 
  	}
  
  	virtual FGeometryShaderRHIRef RHICreateGeometryShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIGeometryShader(); 
  	}
  
  
  	virtual FGeometryShaderRHIRef RHICreateGeometryShaderWithStreamOutput(const TArray<uint8>& Code, const FStreamOutElementList& ElementList, uint32 NumStrides, const uint32* Strides, int32 RasterizedStream) final override
  	{ 
  		return new FRHIGeometryShader(); 
  	}
  
  	virtual FComputeShaderRHIRef RHICreateComputeShader(const TArray<uint8>& Code) final override
  	{ 
  		return new FRHIComputeShader(); 
  	}
  
  
  	virtual FBoundShaderStateRHIRef RHICreateBoundShaderState(FVertexDeclarationRHIParamRef VertexDeclaration, FVertexShaderRHIParamRef VertexShader, FHullShaderRHIParamRef HullShader, FDomainShaderRHIParamRef DomainShader, FPixelShaderRHIParamRef PixelShader, FGeometryShaderRHIParamRef GeometryShader) final override
  	{ 
  		return new FRHIBoundShaderState(); 
  	}
  
  	virtual void RHISetComputeShader(FComputeShaderRHIParamRef ComputeShader) final override
  	{
  
  	}
  
  	virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
  	{
  
  	}
  
  	virtual void RHIDispatchIndirectComputeShader(FVertexBufferRHIParamRef ArgumentBuffer, uint32 ArgumentOffset) final override
  	{
  
  	}
  
  	virtual void RHIAutomaticCacheFlushAfterComputeShader(bool bEnable) final override
  	{
  
  	}
  
  	virtual void RHIFlushComputeShaderCache() final override
  	{
  
  	}
  
  	virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds* Data) final override
  	{
  
  	}
  
  	virtual FUniformBufferRHIRef RHICreateUniformBuffer(const void* Contents, const FRHIUniformBufferLayout& Layout, EUniformBufferUsage Usage) final override
  	{ 
  		return new FRHIUniformBuffer(Layout); 
  	}
  
  	virtual FIndexBufferRHIRef RHICreateIndexBuffer(uint32 Stride, uint32 Size, uint32 InUsage, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		if(CreateInfo.ResourceArray) 
  		{ 
  			CreateInfo.ResourceArray->Discard(); 
  		} 
  		return new FRHIIndexBuffer(Stride,Size,InUsage); 
  	}
  
  	virtual void* RHILockIndexBuffer(FIndexBufferRHIParamRef IndexBuffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
  	{ 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockIndexBuffer(FIndexBufferRHIParamRef IndexBuffer) final override
  	{
  
  	}
  
  	virtual FVertexBufferRHIRef RHICreateVertexBuffer(uint32 Size, uint32 InUsage, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		if(CreateInfo.ResourceArray) 
  		{ 
  			CreateInfo.ResourceArray->Discard(); 
  		} 
  		return new FRHIVertexBuffer(Size,InUsage); 
  	}
  
  	virtual void* RHILockVertexBuffer(FVertexBufferRHIParamRef VertexBuffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode) final override
  	{ 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockVertexBuffer(FVertexBufferRHIParamRef VertexBuffer) final override
  	{
  
  	}
  
  
  	virtual void RHICopyVertexBuffer(FVertexBufferRHIParamRef SourceBuffer,FVertexBufferRHIParamRef DestBuffer) final override
  	{
  
  	}
  
  	virtual FStructuredBufferRHIRef RHICreateStructuredBuffer(uint32 Stride, uint32 Size, uint32 InUsage, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		if(CreateInfo.ResourceArray) 
  		{ 
  			CreateInfo.ResourceArray->Discard(); 
  		} 
  		return new FRHIStructuredBuffer(Stride,Size,InUsage); 
  	}
  
  	virtual void* RHILockStructuredBuffer(FStructuredBufferRHIParamRef StructuredBuffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode) final override
  	{ 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockStructuredBuffer(FStructuredBufferRHIParamRef StructuredBuffer) final override
  	{
  
  	}
  
  
  	virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(FStructuredBufferRHIParamRef StructuredBuffer, bool bUseUAVCounter, bool bAppendBuffer) final override
  	{ 
  		return new FRHIUnorderedAccessView(); 
  	}
  
  
  	virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(FTextureRHIParamRef Texture, uint32 MipLevel) final override
  	{ 
  		return new FRHIUnorderedAccessView(); 
  	}
  
  
  	virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(FVertexBufferRHIParamRef VertexBuffer, uint8 Format) final override
  	{ 
  		return new FRHIUnorderedAccessView(); 
  	}
  
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FStructuredBufferRHIParamRef StructuredBuffer) final override
  	{ 
  		return new FRHIShaderResourceView(); 
  	}
  
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FVertexBufferRHIParamRef VertexBuffer, uint32 Stride, uint8 Format) final override
  	{ 
  		return new FRHIShaderResourceView(); 
  	}
  
  
  	virtual void RHIClearUAV(FUnorderedAccessViewRHIParamRef UnorderedAccessViewRHI, const uint32* Values) final override
  	{
  
  	}
  
  	virtual uint64 RHICalcTexture2DPlatformSize(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, uint32 NumSamples, uint32 Flags, uint32& OutAlign) final override
  	{ 
  		OutAlign = 0; 
  		return 0; 
  	}
  
  
  	virtual uint64 RHICalcTexture3DPlatformSize(uint32 SizeX, uint32 SizeY, uint32 SizeZ, uint8 Format, uint32 NumMips, uint32 Flags, uint32& OutAlign) final override
  	{ 
  		OutAlign = 0; 
  		return 0; 
  	}
  
  	virtual uint64 RHICalcTextureCubePlatformSize(uint32 Size, uint8 Format, uint32 NumMips, uint32 Flags, uint32& OutAlign) final override
  	{ 
  		OutAlign = 0; 
  		return 0; 
  	}
  
  	virtual void RHIGetTextureMemoryStats(FTextureMemoryStats& OutStats) final override
  	{
  
  	}
  
  	virtual bool RHIGetTextureMemoryVisualizeData(FColor* TextureData,int32 SizeX,int32 SizeY,int32 Pitch,int32 PixelSize) final override
  	{ 
  		return false; 
  	}
  
  	virtual FTextureReferenceRHIRef RHICreateTextureReference(FLastRenderTimeContainer* LastRenderTime) final override
  	{ 
  		return new FRHITextureReferenceNullImpl(); 
  	}
  
  	virtual void RHIUpdateTextureReference(FTextureReferenceRHIParamRef TextureRef, FTextureRHIParamRef NewTexture) final override
  	{ 
  		if(TextureRef) 
  		{ 
  			((FRHITextureReferenceNullImpl*)TextureRef)->SetReferencedTexture(NewTexture); 
  		} 
  	}
  
  
  	virtual FTexture2DRHIRef RHICreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, uint32 NumSamples, uint32 Flags, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		return new FRHITexture2D(SizeX,SizeY,NumMips,NumSamples,(EPixelFormat)Format,Flags, CreateInfo.ClearValueBinding); 
  	}
  
  	virtual FTexture2DRHIRef RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, uint32 Flags, void** InitialMipData, uint32 NumInitialMips) final override
  	{ 
  		return FTexture2DRHIRef(); 
  	}
  
  	virtual void RHICopySharedMips(FTexture2DRHIParamRef DestTexture2D, FTexture2DRHIParamRef SrcTexture2D) final override
  	{
  	}
  	virtual FTexture2DArrayRHIRef RHICreateTexture2DArray(uint32 SizeX, uint32 SizeY, uint32 SizeZ, uint8 Format, uint32 NumMips, uint32 Flags, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		return new FRHITexture2DArray(SizeX,SizeY,SizeZ,NumMips,(EPixelFormat)Format,Flags, CreateInfo.ClearValueBinding); 
  	}
  
  	virtual FTexture3DRHIRef RHICreateTexture3D(uint32 SizeX, uint32 SizeY, uint32 SizeZ, uint8 Format, uint32 NumMips, uint32 Flags, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		return new FRHITexture3D(SizeX, SizeY, SizeZ, NumMips, (EPixelFormat)Format, Flags, CreateInfo.ClearValueBinding);
  	}
  	virtual void RHIGetResourceInfo(FTextureRHIParamRef Ref, FRHIResourceInfo& OutInfo) final override
  	{
  	}
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FTexture2DRHIParamRef Texture2DRHI, uint8 MipLevel) final override
  	{ 
  		return new FRHIShaderResourceView(); 
  	}
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FTexture2DRHIParamRef Texture2DRHI, uint8 MipLevel, uint8 NumMipLevels, uint8 Format) final override
  	{ 
  		return new FRHIShaderResourceView(); 
  	}
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FTexture3DRHIParamRef Texture3DRHI, uint8 MipLevel) final override
  	{
  		return new FRHIShaderResourceView(); 
  	}
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FTexture2DArrayRHIParamRef Texture2DArrayRHI, uint8 MipLevel) final override
  	{
  		return new FRHIShaderResourceView(); 
  	}
  
  	virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(FTextureCubeRHIParamRef TextureCubeRHI, uint8 MipLevel) final override
  	{
  		return new FRHIShaderResourceView(); 
  	}
  
  	virtual void RHIGenerateMips(FTextureRHIParamRef Texture) final override
  	{
  
  	}
  	virtual uint32 RHIComputeMemorySize(FTextureRHIParamRef TextureRHI) final override
  	{ 
  		return 0; 
  	}
  	virtual FTexture2DRHIRef RHIAsyncReallocateTexture2D(FTexture2DRHIParamRef Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter* RequestStatus) final override
  	{ 
  		return new FRHITexture2D(NewSizeX,NewSizeY,NewMipCount,1,Texture2D->GetFormat(),Texture2D->GetFlags(), Texture2D->GetClearBinding());
  	}
  	virtual ETextureReallocationStatus RHIFinalizeAsyncReallocateTexture2D(FTexture2DRHIParamRef Texture2D, bool bBlockUntilCompleted) final override
  	{ 
  		return TexRealloc_Succeeded; 
  	}
  	virtual ETextureReallocationStatus RHICancelAsyncReallocateTexture2D(FTexture2DRHIParamRef Texture2D, bool bBlockUntilCompleted) final override
  	{ 
  		return TexRealloc_Succeeded; 
  	}
  	virtual void* RHILockTexture2D(FTexture2DRHIParamRef Texture, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail) final override
  	{ 
  		DestStride = 0; 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockTexture2D(FTexture2DRHIParamRef Texture, uint32 MipIndex, bool bLockWithinMiptail) final override
  	{
  
  	}
  	virtual void* RHILockTexture2DArray(FTexture2DArrayRHIParamRef Texture, uint32 TextureIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail) final override
  	{ 
  		DestStride = 0; 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockTexture2DArray(FTexture2DArrayRHIParamRef Texture, uint32 TextureIndex, uint32 MipIndex, bool bLockWithinMiptail) final override
  	{
  
  	}
  	virtual void RHIUpdateTexture2D(FTexture2DRHIParamRef Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData) final override
  	{
  
  	}
  	virtual void RHIUpdateTexture3D(FTexture3DRHIParamRef Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData) final override
  	{
  
  	}
  	virtual FTextureCubeRHIRef RHICreateTextureCube(uint32 Size, uint8 Format, uint32 NumMips, uint32 Flags, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		return new FRHITextureCube(Size, NumMips, (EPixelFormat)Format, Flags, CreateInfo.ClearValueBinding);
  	}
  	virtual FTextureCubeRHIRef RHICreateTextureCubeArray(uint32 Size, uint32 ArraySize, uint8 Format, uint32 NumMips, uint32 Flags, FRHIResourceCreateInfo& CreateInfo) final override
  	{ 
  		return new FRHITextureCube(Size, NumMips, (EPixelFormat)Format, Flags, CreateInfo.ClearValueBinding);
  	}
  	virtual void* RHILockTextureCubeFace(FTextureCubeRHIParamRef Texture, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail) final override
  	{ 
  		DestStride = 0; 
  		return GetStaticBuffer(); 
  	}
  	virtual void RHIUnlockTextureCubeFace(FTextureCubeRHIParamRef Texture, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, bool bLockWithinMiptail) final override
  	{
  	}
  	virtual void RHICopyToResolveTarget(FTextureRHIParamRef SourceTexture, FTextureRHIParamRef DestTexture, bool bKeepOriginalSurface, const FResolveParams& ResolveParams) final override
  	{
  
  	}
  
  	virtual void RHIBindDebugLabelName(FTextureRHIParamRef Texture, const TCHAR* Name) final override
  	{
  
  	}
  
  	virtual void RHIReadSurfaceData(FTextureRHIParamRef Texture,FIntRect Rect,TArray<FColor>& OutData,FReadSurfaceDataFlags InFlags) final override
  	{ 
  		OutData.AddZeroed(Rect.Width() * Rect.Height()); 
  	}
  
  
  	virtual void RHIMapStagingSurface(FTextureRHIParamRef Texture,void*& OutData,int32& OutWidth,int32& OutHeight) final override
  	{
  
  	}
  
  
  	virtual void RHIUnmapStagingSurface(FTextureRHIParamRef Texture) final override
  	{
  
  	}
  
  	virtual void RHIReadSurfaceFloatData(FTextureRHIParamRef Texture,FIntRect Rect,TArray<FFloat16Color>& OutData,ECubeFace CubeFace,int32 ArrayIndex,int32 MipIndex) final override
  	{
  
  	}
  
  	virtual void RHIRead3DSurfaceFloatData(FTextureRHIParamRef Texture,FIntRect Rect,FIntPoint ZMinMax,TArray<FFloat16Color>& OutData) final override
  	{
  
  	}
  
  
  
  	virtual FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType) final override
  	{ 
  		return new FRHIRenderQuery(); 
  	}
  
  	virtual void RHIBeginRenderQuery(FRenderQueryRHIParamRef RenderQuery) final override
  	{
  
  	}
  	virtual void RHIEndRenderQuery(FRenderQueryRHIParamRef RenderQuery) final override
  	{
  
  	}
  
  
  	virtual bool RHIGetRenderQueryResult(FRenderQueryRHIParamRef RenderQuery, uint64& OutResult, bool bWait) final override
  	{ 
  		return true; 
  	}
  
  	virtual void RHIBeginOcclusionQueryBatch() final override
  	{
  
  	}
  	virtual void RHIEndOcclusionQueryBatch() final override
  	{
  
  	}
  	virtual void RHISubmitCommandsHint() final override
  	{
  
  	}
  
  
  	virtual void RHIBeginDrawingViewport(FViewportRHIParamRef Viewport, FTextureRHIParamRef RenderTargetRHI) final override
  	{
  
  	}
  
  	virtual void RHIEndDrawingViewport(FViewportRHIParamRef Viewport, bool bPresent, bool bLockToVsync) final override
  	{
  
  	}
  
  	virtual FTexture2DRHIRef RHIGetViewportBackBuffer(FViewportRHIParamRef Viewport) final override
  	{ 
  		return new FRHITexture2D(1,1,1,1,PF_B8G8R8A8,TexCreate_RenderTargetable, FClearValueBinding()); 
  	}
  
  	virtual void RHIBeginFrame() final override
  	{
  
  	}
  
  
  	virtual void RHIEndFrame() final override
  	{
  
  	}
  	virtual void RHIBeginScene() final override
  	{
  
  	}
  	virtual void RHIEndScene() final override
  	{
  
  	}
  	virtual void RHIAdvanceFrameForGetViewportBackBuffer() final override
  	{
  
  	}
  	virtual bool RHIIsDrawingViewport() final override
  	{ 
  		return false; 
  	}
  	virtual void RHIAcquireThreadOwnership() final override
  	{
  
  	}
  	virtual void RHIReleaseThreadOwnership() final override
  	{
  
  	}
  
  
  	virtual void RHIFlushResources() final override
  	{
  
  	}
  
  	virtual uint32 RHIGetGPUFrameCycles() final override
  	{ 
  		return 0; 
  	}
  
  	virtual FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
  	{ 
  		return new FRHIViewport(); 
  	}
  	virtual void RHIResizeViewport(FViewportRHIParamRef Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
  	{
  
  	}
  	virtual void RHITick(float DeltaTime) final override
  	{
  
  	}
  
  	virtual void RHISetStreamSource(uint32 StreamIndex, FVertexBufferRHIParamRef VertexBuffer, uint32 Stride, uint32 Offset) final override
  	{
  
  	}
  	virtual void RHISetStreamOutTargets(uint32 NumTargets,const FVertexBufferRHIParamRef* VertexBuffers,const uint32* Offsets) final override
  	{
  
  	}
  	virtual void RHISetRasterizerState(FRasterizerStateRHIParamRef NewState) final override
  	{
  
  	}
  
  	virtual void RHISetViewport(uint32 MinX, uint32 MinY, float MinZ, uint32 MaxX, uint32 MaxY, float MaxZ) final override
  	{
  
  	}
  
  	virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
  	{
  	}
  
  	virtual void RHISetBoundShaderState(FBoundShaderStateRHIParamRef BoundShaderState) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FVertexShaderRHIParamRef VertexShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FHullShaderRHIParamRef HullShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FDomainShaderRHIParamRef DomainShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FGeometryShaderRHIParamRef GeometryShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FPixelShaderRHIParamRef PixelShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderTexture(FComputeShaderRHIParamRef PixelShader, uint32 TextureIndex, FTextureRHIParamRef NewTexture) final override
  	{
  
  	}
  
  	virtual void RHISetShaderSampler(FComputeShaderRHIParamRef ComputeShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  
  	virtual void RHISetShaderSampler(FVertexShaderRHIParamRef VertexShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  
  	virtual void RHISetShaderSampler(FGeometryShaderRHIParamRef GeometryShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  	virtual void RHISetShaderSampler(FDomainShaderRHIParamRef DomainShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  	virtual void RHISetShaderSampler(FHullShaderRHIParamRef HullShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  
  	virtual void RHISetShaderSampler(FPixelShaderRHIParamRef PixelShader, uint32 SamplerIndex, FSamplerStateRHIParamRef NewState) final override
  	{
  
  	}
  
  
  	virtual void RHISetUAVParameter(FComputeShaderRHIParamRef ComputeShader, uint32 UAVIndex, FUnorderedAccessViewRHIParamRef UAV) final override
  	{
  
  	}
  
  
  	virtual void RHISetUAVParameter(FComputeShaderRHIParamRef ComputeShader, uint32 UAVIndex, FUnorderedAccessViewRHIParamRef UAV, uint32 InitialCount) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderResourceViewParameter(FPixelShaderRHIParamRef PixelShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderResourceViewParameter(FVertexShaderRHIParamRef VertexShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderResourceViewParameter(FComputeShaderRHIParamRef ComputeShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderResourceViewParameter(FHullShaderRHIParamRef HullShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  
  
  	virtual void RHISetShaderResourceViewParameter(FDomainShaderRHIParamRef DomainShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  	virtual void RHISetShaderResourceViewParameter(FGeometryShaderRHIParamRef GeometryShader, uint32 SamplerIndex, FShaderResourceViewRHIParamRef SRV) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FVertexShaderRHIParamRef VertexShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FHullShaderRHIParamRef HullShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FDomainShaderRHIParamRef DomainShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FGeometryShaderRHIParamRef GeometryShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FPixelShaderRHIParamRef PixelShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderUniformBuffer(FComputeShaderRHIParamRef ComputeShader, uint32 BufferIndex, FUniformBufferRHIParamRef Buffer) final override
  	{
  
  	}
  
  	virtual void RHISetShaderParameter(FVertexShaderRHIParamRef VertexShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  	virtual void RHISetShaderParameter(FPixelShaderRHIParamRef PixelShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  
  	virtual void RHISetShaderParameter(FHullShaderRHIParamRef HullShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  	virtual void RHISetShaderParameter(FDomainShaderRHIParamRef DomainShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  	virtual void RHISetShaderParameter(FGeometryShaderRHIParamRef GeometryShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  	virtual void RHISetShaderParameter(FComputeShaderRHIParamRef ComputeShader, uint32 BufferIndex, uint32 BaseIndex, uint32 NumBytes, const void* NewValue) final override
  	{
  
  	}
  
  
  	virtual void RHISetDepthStencilState(FDepthStencilStateRHIParamRef NewState, uint32 StencilRef) final override
  	{
  
  	}
  
  	virtual void RHISetBlendState(FBlendStateRHIParamRef NewState, const FLinearColor& BlendFactor) final override
  	{
  
  	}
  	virtual void RHISetRenderTargets(uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView* NewRenderTargets, const FRHIDepthRenderTargetView* NewDepthStencilTarget, uint32 NumUAVs, const FUnorderedAccessViewRHIParamRef* UAVs) final override
  	{
  
  	}
  
  	virtual void RHIDiscardRenderTargets(bool Depth,bool Stencil,uint32 ColorBitMask) final override
  	{
  
  	}
  	virtual void RHISetRenderTargetsAndClear(const FRHISetRenderTargetsInfo& RenderTargetsInfo) final override
  	{
  
  	}
  
  	virtual void RHIDrawPrimitive(uint32 PrimitiveType, uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
  	{
  
  	}
  	virtual void RHIDrawPrimitiveIndirect(uint32 PrimitiveType, FVertexBufferRHIParamRef ArgumentBuffer, uint32 ArgumentOffset) final override
  	{
  
  	}
  
  	virtual void RHIDrawIndexedIndirect(FIndexBufferRHIParamRef IndexBufferRHI, uint32 PrimitiveType, FStructuredBufferRHIParamRef ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
  	{
  
  	}
  
  
  	virtual void RHIDrawIndexedPrimitive(FIndexBufferRHIParamRef IndexBuffer, uint32 PrimitiveType, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
  	{
  
  	}
  	virtual void RHIDrawIndexedPrimitiveIndirect(uint32 PrimitiveType, FIndexBufferRHIParamRef IndexBuffer, FVertexBufferRHIParamRef ArgumentBuffer, uint32 ArgumentOffset) final override
  	{
  
  	}
  
  	virtual void RHIBeginDrawPrimitiveUP(uint32 PrimitiveType, uint32 NumPrimitives, uint32 NumVertices, uint32 VertexDataStride, void*& OutVertexData) final override
  	{ 
  		OutVertexData = GetStaticBuffer(); 
  	}
  	virtual void RHIEndDrawPrimitiveUP()
  	{
  
  	}
  	virtual void RHIBeginDrawIndexedPrimitiveUP(uint32 PrimitiveType, uint32 NumPrimitives, uint32 NumVertices, uint32 VertexDataStride, void*& OutVertexData, uint32 MinVertexIndex, uint32 NumIndices, uint32 IndexDataStride, void*& OutIndexData) final override
  	{ 
  		OutVertexData = GetStaticBuffer(); 
  		OutIndexData = GetStaticBuffer(); 
  	}
  	virtual void RHIEndDrawIndexedPrimitiveUP() final override
  	{
  
  	}
  	virtual void RHIClear(bool bClearColor, const FLinearColor& Color, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil, FIntRect ExcludeRect) final override
  	{
  
  	}
  	virtual void RHIClearMRT(bool bClearColor, int32 NumClearColors, const FLinearColor* ColorArray, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil, FIntRect ExcludeRect) final override
  	{
  
  	}
  	virtual void RHIBlockUntilGPUIdle() final override
  	{
  
  	}
  	virtual void RHISuspendRendering() final override
  	{
  
  	}
  	virtual void RHIResumeRendering() final override
  	{
  
  	}
  	virtual bool RHIIsRenderingSuspended() final override
  	{ 
  		return false; 
  	}
  	virtual bool RHIGetAvailableResolutions(FScreenResolutionArray& Resolutions, bool bIgnoreRefreshRate) final override
  	{ 
  		return false; 
  	}
  	virtual void RHIGetSupportedResolution(uint32& Width, uint32& Height) final override
  	{
  
  	}
  	virtual void RHIVirtualTextureSetFirstMipInMemory(FTexture2DRHIParamRef Texture, uint32 FirstMip) final override
  	{
  
  	}
  	virtual void RHIVirtualTextureSetFirstMipVisible(FTexture2DRHIParamRef Texture, uint32 FirstMip) final override
  	{
  
  	}
  	virtual void RHIExecuteCommandList(FRHICommandList* CmdList) final override
  	{
  
  	}
  	virtual void RHIEnableDepthBoundsTest(bool bEnable, float MinDepth, float MaxDepth) final override
  	{
  
  	}
  	virtual void* RHIGetNativeDevice() final override
  	{ 
  		return 0; 
  	}
  	virtual void RHIPushEvent(const TCHAR* Name) final override
  	{
  	}
  	virtual void RHIPopEvent()
  	{
  	}
  	virtual class IRHICommandContext* RHIGetDefaultContext() final override
  	{ 
  		return this; 
  	}
  	virtual class IRHICommandContextContainer* RHIGetCommandContextContainer() final override
  	{ 
  		return nullptr; 
  	}
  	
  	virtual void RHIBeginAsyncComputeJob_DrawThread(EAsyncComputePriority Priority) override
  	{
  	}
  	virtual void RHIEndAsyncComputeJob_DrawThread(uint32 FenceIndex) override
  	{
  	}
  	virtual void RHIGraphicsWaitOnAsyncComputeJob(uint32 FenceIndex) override
  	{
  	}
  
  private:
  
  	/** Allocates a static buffer for RHI functions to return as a write destination. */
  	static void* GetStaticBuffer();
  };
  