DragonNest/Common/EternityEngine/EtBloomFilter.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

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 );
}