"L. Spiro Engine"
|
00001 00016 #ifndef __LSG_POSTPROCESSORBASE_H__ 00017 #define __LSG_POSTPROCESSORBASE_H__ 00018 00019 #include "../LSGGraphicsLib.h" 00020 #include "../RenderTarget/LSGColorRenderTarget.h" 00021 #include "../RenderTarget/LSGDepthStencilRenderTarget.h" 00022 #include "../ShaderLanguage/LSGShader.h" 00023 #include "../VertexBuffer/LSGVertexBuffer.h" 00024 #include "LSGPostProcessBrightPass.h" 00025 #include "LSGPostProcessHorBlur.h" 00026 #include "LSGPostProcessLuminance.h" 00027 #include "LSGPostProcessVertBlur.h" 00028 00029 namespace lsg { 00030 00037 class CPostProcessorBase { 00038 public : 00039 // == Functions. 00045 LSBOOL LSE_CALL ActivateHdrRenderTarget(); 00046 00050 LSVOID LSE_CALL Present(); 00051 00057 LSVOID LSE_CALL Tick( LSUINT64 _ui64Time ); 00058 00064 LSE_INLINE CColorRenderTarget & LSE_CALL 00065 GetDepthColorCopy(); 00066 00072 LSE_INLINE CDepthStencilRenderTarget & LSE_CALL 00073 GetDepthStencilTarget(); 00074 00075 00076 protected : 00077 // == Various constructors. 00078 LSE_CALLCTOR CPostProcessorBase(); 00079 virtual LSE_CALLCTOR ~CPostProcessorBase(); 00080 00081 00082 // == Members. 00086 CColorRenderTarget m_crtHdrColor; 00087 00091 CDepthStencilRenderTarget m_dsrtHdrDepth; 00092 00097 CColorRenderTarget m_crtHdrDepthColorVersion; 00098 00102 CColorRenderTarget m_crtHdrNormals; 00103 00107 CShader m_sBlitShader; 00108 00112 CPostProcessLuminance m_pplLuminance; 00113 00117 CPostProcessBrightPass m_ppbpBright; 00118 00122 CPostProcessHorBlur m_pphbHorBlur; 00123 00127 CPostProcessVertBlur m_ppvbVertBlur; 00128 00132 LSUINT64 m_ui64Time; 00133 00137 static CShader * m_psCombiner; 00138 00142 static CCriticalSection m_csCrit; 00143 00147 static LSUINT32 m_ui32RefCount; 00148 00152 static CShaderBase::LSG_HANDLE m_hExposure; 00153 00157 static CShaderBase::LSG_HANDLE m_hGaussianScalar; 00158 00162 static CShaderBase::LSG_HANDLE m_hInvBloomW; 00163 00167 static CShaderBase::LSG_HANDLE m_hInvBloomH; 00168 00169 00170 // == Functions. 00176 LSBOOL LSE_CALL Init(); 00177 }; 00178 00179 00180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00181 // DEFINITIONS 00182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00188 LSE_INLINE CColorRenderTarget & LSE_CALL CPostProcessorBase::GetDepthColorCopy() { 00189 return m_crtHdrDepthColorVersion; 00190 } 00191 00197 LSE_INLINE CDepthStencilRenderTarget & LSE_CALL CPostProcessorBase::GetDepthStencilTarget() { 00198 return m_dsrtHdrDepth; 00199 } 00200 00201 } // namespace lsg 00202 00203 #endif // #ifndef __LSG_POSTPROCESSORBASE_H__