//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //===========================================================================// #ifndef SHADERRENDERBASE_H #define SHADERRENDERBASE_H #ifdef _WIN32 #pragma once #endif #include "togl/rendermechanism.h" #include "shaderapi/ishaderapi.h" #include "shaderapi_global.h" #include "locald3dtypes.h" // Colors for PIX graphs #define PIX_VALVE_ORANGE 0xFFF5940F //----------------------------------------------------------------------------- // The Base implementation of the shader rendering interface //----------------------------------------------------------------------------- class CShaderAPIBase : public IShaderAPI { public: // constructor, destructor CShaderAPIBase(); virtual ~CShaderAPIBase(); // Called when the device is initializing or shutting down virtual bool OnDeviceInit() = 0; virtual void OnDeviceShutdown() = 0; // Pix events virtual void BeginPIXEvent( unsigned long color, const char *szName ) = 0; virtual void EndPIXEvent() = 0; virtual void AdvancePIXFrame() = 0; // Release, reacquire objects virtual void ReleaseShaderObjects() = 0; virtual void RestoreShaderObjects() = 0; // Resets the render state to its well defined initial value virtual void ResetRenderState( bool bFullReset = true ) = 0; // Returns a d3d texture associated with a texture handle virtual IDirect3DBaseTexture* GetD3DTexture( ShaderAPITextureHandle_t hTexture ) = 0; // Queues a non-full reset of render state next BeginFrame. virtual void QueueResetRenderState() = 0; // Methods of IShaderDynamicAPI public: virtual void GetCurrentColorCorrection( ShaderColorCorrectionInfo_t* pInfo ); protected: }; //----------------------------------------------------------------------------- // Pix measurement class //----------------------------------------------------------------------------- class CPixEvent { public: CPixEvent( unsigned long color, const char *szName ) { if ( g_pShaderAPI ) g_pShaderAPI->BeginPIXEvent( color, szName ); } ~CPixEvent() { if ( g_pShaderAPI ) g_pShaderAPI->EndPIXEvent(); } }; #endif // SHADERRENDERBASE_H