// WBWaterPShader.cpp: implementation of the WBWaterPShader class. // ////////////////////////////////////////////////////////////////////// #include "WBWaterPShader.h" #include "SceneManager.h" #include "WBEnvPlaneTex.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// WBWaterPShader::WBWaterPShader() { /* m_pBaseTexture = new WBTexture;*/ m_pEnvTexture = new CTexture; CTexture::SetPath("c:\\MP-project\\Texture\\Shader\\"); // m_pNormalTexture = new WBTexture; m_pEnvTexture->Load("sky_cube_mipmap1.dds"); // m_pEnvTexture->Load("terrain.dds"); CreatePixelShaderFromFile("c:/mp-project/Shaders/Water.psh"); } WBWaterPShader::~WBWaterPShader() { /* if(m_pBaseTexture != NULL) { delete m_pBaseTexture; m_pBaseTexture = NULL; }*/ if(m_pEnvTexture != NULL) { delete m_pEnvTexture; m_pEnvTexture = NULL; } /* if(m_pNormalTexture != NULL) { delete m_pNormalTexture; m_pNormalTexture = NULL; }*/ } void WBWaterPShader::Apply() { CSceneManager::GetDevice()->SetTexture( 3, m_pEnvTexture->GetTexture() ); // CSceneManager::GetDevice()->SetTexture( 3, CSceneManager::m_pEnvPlaneTex->GetTexture() ); /* CSceneManager::GetDevice()->SetTexture(0, m_pBaseTexture->GetTexture() ); CSceneManager::GetDevice()->SetTexture(1, m_pNormalTexture->GetTexture() ); CSceneManager::GetDevice()->SetTexture(2, m_pEnvTexture->GetTexture() ); */ // Set Pixel Shader CSceneManager::GetDevice()->SetPixelShader(m_dwPixelShader); SetupPixelShaderConstants(); } void WBWaterPShader::SetupPixelShaderConstants() { /*CSceneManager::GetDevice()->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(0,D3DTSS_MIPFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(1,D3DTSS_MAGFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(1,D3DTSS_MINFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(1,D3DTSS_MIPFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(3,D3DTSS_MAGFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(3,D3DTSS_MINFILTER,D3DTEXF_LINEAR); CSceneManager::GetDevice()->SetTextureStageState(3,D3DTSS_MIPFILTER,D3DTEXF_LINEAR); // Base texture stage CSceneManager::GetDevice()->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); CSceneManager::GetDevice()->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); CSceneManager::GetDevice()->SetRenderState( D3DRS_WRAP0, 0 ); // bump map texture stage CSceneManager::GetDevice()->SetTextureStageState(1, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); CSceneManager::GetDevice()->SetTextureStageState(1, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); CSceneManager::GetDevice()->SetRenderState( D3DRS_WRAP1, 0 ); // Illumination texture CSceneManager::GetDevice()->SetTextureStageState(2, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); CSceneManager::GetDevice()->SetTextureStageState(2, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); CSceneManager::GetDevice()->SetTextureStageState(2, D3DTSS_ADDRESSW, D3DTADDRESS_CLAMP); CSceneManager::GetDevice()->SetRenderState( D3DRS_WRAP2, 0); CSceneManager::GetDevice()->SetTextureStageState(3, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); CSceneManager::GetDevice()->SetTextureStageState(3, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); CSceneManager::GetDevice()->SetTextureStageState(3, D3DTSS_ADDRESSW, D3DTADDRESS_CLAMP); */ }