/* * EffectGlow.hpp * * Created on: Apr 13, 2017 * Author: nullifiedcat */ #ifndef EFFECTGLOW_HPP_ #define EFFECTGLOW_HPP_ #include "common.hpp" #include "sdk.hpp" namespace effect_glow { class EffectGlow : public IScreenSpaceEffect { public: virtual void Init( ); inline virtual void Shutdown( ) {}; inline virtual void SetParameters( KeyValues *params ) {}; virtual void Render( int x, int y, int w, int h ); inline virtual void Enable( bool bEnable ) { enabled = bEnable; }; inline virtual bool IsEnabled( ) { return enabled; }; void StartStenciling(); void EndStenciling(); void DrawEntity(IClientEntity* entity); void DrawToStencil(IClientEntity* entity); void DrawToBuffer(IClientEntity* entity); rgba_t GlowColor(IClientEntity* entity); bool ShouldRenderGlow(IClientEntity* entity); void RenderGlow(IClientEntity* entity); void BeginRenderGlow(); void EndRenderGlow(); public: bool init { false }; bool drawing { false }; bool enabled; float orig_modulation[3]; CMaterialReference mat_blit; CMaterialReference mat_blur_x; CMaterialReference mat_blur_y; CMaterialReference mat_unlit; CMaterialReference mat_unlit_z; }; extern EffectGlow g_EffectGlow; extern CScreenSpaceEffectRegistration* g_pEffectGlow; } #endif /* EFFECTGLOW_HPP_ */