//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Exposes interfaces to the engine which allow the client to setup their own render targets
//			during the proper period of material system's init. 
//
// $NoKeywords: $
//=============================================================================//

#ifndef ICLIENTRENDERTARGETS_H
#define ICLIENTRENDERTARGETS_H
#ifdef _WIN32
	#pragma once
#endif

#include "interface.h"		// For base interface

class IMaterialSystem;
class IMaterialSystemHardwareConfig;

//---------------------------------------------------------------------------------------------------
// Purpose: Exposes interfaces to the engine which allow the client to setup their own render targets
//			during the proper period of material system's init.
//---------------------------------------------------------------------------------------------------
abstract_class IClientRenderTargets
{
public:
	// Pass the material system interface to the client-- Their Material System singleton has not been created
	// at the time they receive this call.
	virtual void InitClientRenderTargets( IMaterialSystem* pMaterialSystem, IMaterialSystemHardwareConfig* pHardwareConfig ) = 0;

	// Call shutdown on every created refrence-- Clients keep track of this themselves
	// and should add shutdown code to this function whenever they add a new render target.
	virtual void ShutdownClientRenderTargets( void ) = 0;

};

#define CLIENTRENDERTARGETS_INTERFACE_VERSION "ClientRenderTargets001"

extern IClientRenderTargets * g_pClientRenderTargets;

#endif // ICLIENTRENDERTARGETS_H