73 lines
No EOL
2 KiB
C++
73 lines
No EOL
2 KiB
C++
#include "StdAfx.h"
|
|
#include "EtBloomFilter.h"
|
|
#include "EtBackBufferMng.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
|
#endif
|
|
|
|
CEtBloomFilter::CEtBloomFilter()
|
|
{
|
|
SetBloomScale( 1.0f );
|
|
SetBloomSensitivity( 6.0f );
|
|
SetDrawSacle( 1.0f / 8 );
|
|
|
|
m_Type = SF_BLOOM;
|
|
}
|
|
|
|
CEtBloomFilter::~CEtBloomFilter()
|
|
{
|
|
Clear();
|
|
}
|
|
|
|
void CEtBloomFilter::Clear()
|
|
{
|
|
SAFE_RELEASE_SPTR( m_hBrightTarget );
|
|
SAFE_RELEASE_SPTR( m_hHoriBlurTarget );
|
|
SAFE_RELEASE_SPTR( m_hVertBlurTarget );
|
|
CEtPostProcessFilter::Clear();
|
|
}
|
|
|
|
void CEtBloomFilter::Initialize()
|
|
{
|
|
Clear();
|
|
|
|
EtVector4 PixelSize;
|
|
|
|
m_hMaterial = LoadResource( "BloomFilter.fx", RT_SHADER );
|
|
if( !m_hMaterial ) return;
|
|
|
|
AddCustomParam( m_vecCustomParam, EPT_FLOAT_PTR, m_hMaterial, "g_fBloomScale", &m_fBloomScale );
|
|
PixelSize.x = 1.0f / ( GetEtDevice()->Width() * m_fDrawScale );
|
|
PixelSize.y = 1.0f / ( GetEtDevice()->Height() * m_fDrawScale );
|
|
AddCustomParam( m_vecCustomParam, EPT_VECTOR, m_hMaterial, "g_fPixelSize", &PixelSize );
|
|
int nBackBufferIndex = GetEtBackBufferMng()->GetBackBufferIndex();
|
|
AddCustomParam( m_vecCustomParam, EPT_TEX, m_hMaterial, "g_BackBuffer", &nBackBufferIndex );
|
|
|
|
int nWidth, nHeight;
|
|
|
|
nWidth = ( int )( GetEtDevice()->Width() * m_fDrawScale );
|
|
nHeight = ( int )( GetEtDevice()->Height() * m_fDrawScale );
|
|
m_hBrightTarget = AddRenderTarget( nWidth, nHeight, "g_BrightPass" );
|
|
m_hHoriBlurTarget = AddRenderTarget( nWidth, nHeight, "g_BloomHori" );
|
|
m_hVertBlurTarget = AddRenderTarget( nWidth, nHeight, "g_BloomVert" );
|
|
}
|
|
|
|
void CEtBloomFilter::Render( float fElapsedTime )
|
|
{
|
|
DrawFilter( m_hBrightTarget, 0 );
|
|
DrawFilter( m_hHoriBlurTarget, 1 );
|
|
DrawFilter( m_hVertBlurTarget, 2 );
|
|
DrawFilter( CEtTexture::Identity(), 3 );
|
|
}
|
|
|
|
void CEtBloomFilter::OnResetDevice()
|
|
{
|
|
int nWidth, nHeight;
|
|
|
|
nWidth = ( int )( GetEtDevice()->Width() * m_fDrawScale );
|
|
nHeight = ( int )( GetEtDevice()->Height() * m_fDrawScale );
|
|
m_hBrightTarget->SetSize( nWidth, nHeight );
|
|
m_hHoriBlurTarget->SetSize( nWidth, nHeight );
|
|
m_hVertBlurTarget->SetSize( nWidth, nHeight );
|
|
} |