Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
254
GameTools/Zallad3D SceneClass/WBEnvPlaneTex.cpp
Normal file
254
GameTools/Zallad3D SceneClass/WBEnvPlaneTex.cpp
Normal file
@@ -0,0 +1,254 @@
|
||||
// WBEnvPlaneTex.cpp: implementation of the WBEnvPlaneTex class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "WBEnvPlaneTex.h"
|
||||
#include "SceneManager.h"
|
||||
#include "BaseGraphicsLayer.h"
|
||||
#include "SceneStateMgr.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
WBEnvPlaneTex::WBEnvPlaneTex()
|
||||
{
|
||||
m_pEnvPlaneTexture = NULL;
|
||||
// m_pEnvPlaneDepthTexture = NULL;
|
||||
|
||||
m_pEnvPlaneSurf = NULL;
|
||||
m_pEnvDepthSurf= NULL;
|
||||
|
||||
m_pBackColorSurf = NULL;
|
||||
m_pBackDepthSurf = NULL;
|
||||
|
||||
|
||||
memset(m_vecPlaneVertex,0,(sizeof(D3DXVECTOR3) * 4));
|
||||
|
||||
m_vecEyePos = D3DXVECTOR3(0.0f,0.0f,0.0f);
|
||||
m_pDevice = NULL;
|
||||
D3DXMatrixIdentity(&m_matReflect);
|
||||
m_iTexSizeX = m_iTexSizeY = 256;
|
||||
|
||||
}
|
||||
|
||||
WBEnvPlaneTex::~WBEnvPlaneTex()
|
||||
{
|
||||
if(m_pEnvPlaneTexture != NULL)
|
||||
m_pEnvPlaneTexture->Release();
|
||||
/* if(m_pEnvPlaneDepthTexture != NULL)
|
||||
m_pEnvPlaneDepthTexture->Release();
|
||||
*/
|
||||
if(m_pEnvPlaneSurf != NULL)
|
||||
m_pEnvPlaneSurf->Release();
|
||||
if(m_pEnvDepthSurf != NULL)
|
||||
m_pEnvDepthSurf->Release();
|
||||
|
||||
|
||||
}
|
||||
/////////////////////
|
||||
/*
|
||||
|
||||
vecA --------- vecB
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
vecC --------- vecD
|
||||
*/
|
||||
void WBEnvPlaneTex::Init(LPDIRECT3DDEVICE8 pDevice,int iSizeX,int iSizeY)
|
||||
{
|
||||
m_pDevice = pDevice;
|
||||
if(m_pDevice != NULL)
|
||||
{
|
||||
m_iTexSizeX = iSizeX;
|
||||
m_iTexSizeY = iSizeY;
|
||||
|
||||
m_pDevice->GetRenderTarget( &m_pBackColorSurf );
|
||||
m_pDevice->GetDepthStencilSurface( &m_pBackDepthSurf );
|
||||
|
||||
if(m_pEnvPlaneTexture != NULL)
|
||||
m_pEnvPlaneTexture->Release();
|
||||
|
||||
m_pDevice->CreateTexture(m_iTexSizeX,m_iTexSizeY,1,D3DUSAGE_RENDERTARGET,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&m_pEnvPlaneTexture);
|
||||
m_pEnvPlaneTexture->GetSurfaceLevel(0,&m_pEnvPlaneSurf);
|
||||
|
||||
m_pDevice->CreateDepthStencilSurface(m_iTexSizeX,m_iTexSizeY,D3DFMT_D16, D3DMULTISAMPLE_NONE, &m_pEnvDepthSurf );
|
||||
|
||||
/*HRESULT hr = m_pDevice->CreateTexture(m_iTexSizeX,m_iTexSizeY,1, D3DUSAGE_DEPTHSTENCIL,
|
||||
D3DFMT_D24S8,D3DPOOL_DEFAULT,&m_pEnvPlaneDepthTexture);
|
||||
m_pEnvPlaneDepthTexture->GetSurfaceLevel(0,&m_pEnvDepthSurf);
|
||||
*/
|
||||
//BaseGraphicsLayer::m_d3dpp.AutoDepthStencilFormat
|
||||
|
||||
m_TexViewPort.X = m_TexViewPort.Y = 0;
|
||||
m_TexViewPort.Width = iSizeX;
|
||||
m_TexViewPort.Height = iSizeY;
|
||||
m_TexViewPort.MinZ = 0.0f;
|
||||
m_TexViewPort.MaxZ = 1.0f;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
void WBEnvPlaneTex::InitClipRange( D3DXVECTOR3 vecA,D3DXVECTOR3 vecB,D3DXVECTOR3 vecC,D3DXVECTOR3 vecD)
|
||||
{
|
||||
m_vecPlaneVertex[0] = vecA;
|
||||
m_vecPlaneVertex[1] = vecB;
|
||||
m_vecPlaneVertex[2] = vecC;
|
||||
m_vecPlaneVertex[3] = vecD;
|
||||
|
||||
D3DXPlaneFromPoints( &m_Plane,&(m_vecPlaneVertex[0]),
|
||||
&(m_vecPlaneVertex[1]),
|
||||
&(m_vecPlaneVertex[2]));
|
||||
m_Plane.a *= 1.0f;
|
||||
m_Plane.b *= 1.0f;
|
||||
m_Plane.c *= 1.0f;
|
||||
|
||||
D3DXMatrixReflect( &m_matReflect,&m_Plane);
|
||||
|
||||
}
|
||||
void WBEnvPlaneTex::RenderBegin(D3DXVECTOR3 vecEye,D3DXMATRIX matWorld,float fWaterHeight)
|
||||
{
|
||||
DWORD dwCull;
|
||||
DWORD dwBlend;
|
||||
|
||||
D3DXMATRIX matOriginView;
|
||||
D3DXMATRIX matOriginProject;
|
||||
|
||||
m_pDevice->GetTransform(D3DTS_VIEW,&matOriginView);
|
||||
m_pDevice->GetTransform(D3DTS_PROJECTION,&matOriginProject);
|
||||
// Set Mirror Camera
|
||||
D3DXMATRIX matMirrorView = matOriginView;
|
||||
D3DXMATRIX matMirrorProject = matOriginProject;
|
||||
D3DXMATRIX matTransform;
|
||||
D3DXMatrixIdentity(&matTransform);
|
||||
matTransform._22 = -1.0f;
|
||||
matTransform._42 = 2.0f* fWaterHeight;
|
||||
|
||||
|
||||
D3DXMatrixMultiply(&matMirrorView,&matTransform,&matMirrorView);
|
||||
// D3DXMatrixMultiply(&matMirrorView,&matMirrorView,&matTransform);
|
||||
|
||||
m_pDevice->SetTransform(D3DTS_VIEW,&matMirrorView);
|
||||
m_pDevice->SetTransform(D3DTS_PROJECTION,&matMirrorProject);
|
||||
|
||||
D3DVIEWPORT8 m_OriginViewPort;
|
||||
m_pDevice->GetViewport(&m_OriginViewPort);
|
||||
|
||||
m_pDevice->GetRenderTarget( &m_pBackColorSurf );
|
||||
m_pDevice->GetDepthStencilSurface( &m_pBackDepthSurf );
|
||||
|
||||
// Set RenderTarget
|
||||
m_pDevice->SetRenderTarget(m_pEnvPlaneSurf,m_pEnvDepthSurf);//m_pEnvDepthSurf);
|
||||
// Set New Viewport
|
||||
m_pDevice->SetViewport(&m_TexViewPort);
|
||||
m_pDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER , 0x00000000, 1.0f, 0 );
|
||||
|
||||
m_pDevice->GetRenderState(D3DRS_ALPHABLENDENABLE,&dwBlend);
|
||||
|
||||
CSceneStateMgr::_SetD3DRenderState(D3DRS_ALPHABLENDENABLE,FALSE);
|
||||
|
||||
m_pDevice->GetRenderState(D3DRS_CULLMODE,&dwCull);
|
||||
|
||||
|
||||
m_Plane.a = 0.0f;
|
||||
m_Plane.b = 1.0f;
|
||||
m_Plane.c = 0.0f;
|
||||
m_Plane.d = -fWaterHeight + 0.25f;
|
||||
|
||||
// Clip Plane
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CLIPPLANEENABLE,D3DCLIPPLANE1 );
|
||||
|
||||
//CSceneStateMgr::_SetD3DRenderState( D3DRS_CLIPPLANEENABLE, 0x00 );
|
||||
|
||||
m_pDevice->SetClipPlane(1,m_Plane);
|
||||
|
||||
|
||||
// <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> cullmode Setting <20><><EFBFBD>ִ°͵<C2B0> <20><> <20>ݴ<EFBFBD><DDB4><EFBFBD> <20><><EFBFBD>־<EFBFBD><D6BE><EFBFBD> <20>Ѵ<EFBFBD>.<2E>Ѥ<EFBFBD>;
|
||||
|
||||
|
||||
CSceneStateMgr::_SetD3DRenderState(D3DRS_CULLMODE,D3DCULL_CW);
|
||||
CSceneManager::m_WeatherManager.Render(CSceneManager::GetDevice());
|
||||
CSceneManager::m_HeightField.Render(CSceneManager::GetDevice());
|
||||
|
||||
CSceneManager::m_CharacterManager.Render(CSceneManager::GetDevice());
|
||||
CSceneStateMgr::_SetD3DRenderState(D3DRS_CULLMODE,dwCull);
|
||||
|
||||
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CLIPPLANEENABLE, 0x00 );
|
||||
|
||||
|
||||
|
||||
|
||||
// Back Render Target
|
||||
|
||||
m_pDevice->SetRenderTarget(m_pBackColorSurf,m_pBackDepthSurf);
|
||||
m_pDevice->SetViewport(&m_OriginViewPort);
|
||||
m_pDevice->SetTransform(D3DTS_VIEW,&matOriginView);
|
||||
m_pDevice->SetTransform(D3DTS_PROJECTION,&matOriginProject);
|
||||
|
||||
// Texture Transform Matrix
|
||||
D3DXMatrixIdentity(&m_matReflect);
|
||||
// Clear
|
||||
m_matReflect._11 = 0.0f;
|
||||
m_matReflect._22 = 0.0f;
|
||||
m_matReflect._33 = 0.0f;
|
||||
m_matReflect._44 = 0.0f;
|
||||
|
||||
m_matReflect._11 = 0.5f;
|
||||
m_matReflect._22 = -0.5f;
|
||||
m_matReflect._41 = 0.5f;
|
||||
m_matReflect._42 = 0.5f;
|
||||
m_matReflect._43 = 1.0f;
|
||||
m_matReflect._44 = 1.0f;
|
||||
|
||||
|
||||
D3DXMatrixMultiply(&m_matReflect,&matMirrorProject,&m_matReflect);
|
||||
D3DXMatrixMultiply(&m_matReflect,&matMirrorView,&m_matReflect);
|
||||
|
||||
CSceneStateMgr::_SetD3DRenderState(D3DRS_ALPHABLENDENABLE,dwBlend);
|
||||
|
||||
}
|
||||
/*
|
||||
void WBEnvPlaneTex::RenderBegin(D3DXVECTOR3 vecEye,D3DXMATRIX matWorld)
|
||||
{
|
||||
m_matBackup = matWorld;
|
||||
m_vecEyePos = vecEye;
|
||||
|
||||
m_pDevice->GetViewport(&m_BackViewPort);
|
||||
|
||||
|
||||
|
||||
m_pDevice->SetTransform( D3DTS_WORLD,&m_matReflect);
|
||||
|
||||
|
||||
// Reflect <20>̹Ƿ<CCB9> reverse
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CULLMODE,D3DCULL_CCW);
|
||||
|
||||
m_pDevice->SetClipPlane(0,*D3DXPlaneFromPoints(&m_Plane,&m_vecPlaneVertex[1],&m_vecPlaneVertex[0],&m_vecEyePos));
|
||||
m_pDevice->SetClipPlane(1,*D3DXPlaneFromPoints(&m_Plane,&m_vecPlaneVertex[3],&m_vecPlaneVertex[1],&m_vecEyePos));
|
||||
m_pDevice->SetClipPlane(2,*D3DXPlaneFromPoints(&m_Plane,&m_vecPlaneVertex[2],&m_vecPlaneVertex[3],&m_vecEyePos));
|
||||
m_pDevice->SetClipPlane(3,*D3DXPlaneFromPoints(&m_Plane,&m_vecPlaneVertex[0],&m_vecPlaneVertex[2],&m_vecEyePos));
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CLIPPLANEENABLE,D3DCLIPPLANE0 | D3DCLIPPLANE1 | D3DCLIPPLANE2 | D3DCLIPPLANE3 );
|
||||
|
||||
m_pDevice->SetPixelShader(NULL);
|
||||
m_pDevice->SetRenderTarget(m_pEnvPlaneSurf,NULL);//m_pEnvDepthSurf);
|
||||
//m_pDevice->SetRenderTarget(m_pEnvPlaneSurf,m_pEnvDepthSurf);
|
||||
m_pDevice->SetViewport(&m_TexViewPort);
|
||||
|
||||
m_pDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x00000000, 1.0f, 0 );
|
||||
//m_pDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x00000000, 1.0f, 0 );
|
||||
|
||||
}*/
|
||||
void WBEnvPlaneTex::RenderEnd()
|
||||
{
|
||||
m_pDevice->SetRenderTarget(m_pBackColorSurf,m_pBackDepthSurf);
|
||||
m_pDevice->SetViewport(&m_BackViewPort);
|
||||
m_pDevice->SetTransform( D3DTS_WORLD, &m_matBackup);
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CLIPPLANEENABLE, 0x00 );
|
||||
CSceneStateMgr::_SetD3DRenderState( D3DRS_CULLMODE, D3DCULL_CCW);
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user