Files
Client/GameTools/Zallad3D SceneClass/WBWaterNormalTexGenerator.h
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

142 lines
3.9 KiB
C++

// WBWaterNormalTexGenerator.h: interface for the WBWaterNormalTexGenerator class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WBWATERNORMALTEXGENERATOR_H__A9C62D45_472F_44BC_B49C_949E7DB8BE5D__INCLUDED_)
#define AFX_WBWATERNORMALTEXGENERATOR_H__A9C62D45_472F_44BC_B49C_949E7DB8BE5D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/* ****************************************************
* WBWaterNormalTexGenerator.h
* 기능 : Water Normalmap Generator Class
물표면의 텍스쳐를 generation 한다 ( DOT3 EMPM MAP)
* 날짜 : 10.23.2003
* History : wizardbug (10.23.2003)
***************************************************** */
#include <vector>
#include "WBValue.h"
/*#include "WBTexture.h"*/
#include "./WBWaterNormalTexGenShader.h"
#include "Texture.h"
#define RENDERTARGET_NUM 4
class WBWaterOffset {
public:
D3DXVECTOR4 m_vecOffset[4]; // Texture stage Coord (0 ~ 3 Stage)
WBWaterOffset(){}
~WBWaterOffset(){}
};
class WBWaterQuad {
public:
D3DXVECTOR3 vecPos;
D3DXVECTOR2 vecTexcoord;
WBWaterQuad() : vecPos(0.0f,0.0f,0.0f),vecTexcoord(0.0f,0.0f) {}
~WBWaterQuad(){}
};
class WBWaterNormalTexGenVShader;
class WBWaterNormalTexGenerator
{
protected:
LPDIRECT3DDEVICE8 m_pDevice;
int m_iTexSizeX;
int m_iTexSizeY;
float m_fTexelSizeX;
float m_fTexelSizeY;
float m_fDropletFreq;
float m_fPosAtten;
float m_fEqRestore_factor;
float m_fVelFactor;
float m_fForceFactor;
int m_iChangeState; // Normal map Generator가 Normal Map 을 얼마나 변경시켰는가.
int m_iFlipState; // Texture Change Value. ( 0 or 1)
float m_fNormalSTScale; // Normal map S,T vector Scale factor
float m_fScrollU; // Normal map X Scroll factor
float m_fScrollV; // Normal map Y Scroll factor
float m_fDropletMinSize; // 파장의 min size
float m_fDropletMaxSize; // 파장의 max size (파장은 우의 두 값 사이에서 조절)
float m_fWindX; // 바람의 세기
float m_fWindY;
float m_fBlurDist;
LPDIRECT3DSURFACE8 m_pBackColorSurf;
LPDIRECT3DSURFACE8 m_pBackDepthSurf;
char m_strDisplaceMap[256];
CTexture *m_pDisplaceMap;
LPDIRECT3DTEXTURE8 m_pRenderTargetTex[RENDERTARGET_NUM];
LPDIRECT3DSURFACE8 m_pRenderTargetSurf[RENDERTARGET_NUM];
LPDIRECT3DVERTEXBUFFER8 m_pQuadBuffer;
D3DXMATRIX m_matWorldViewProject; // Shader 용 World - view - project matrix
int m_iFocusTexSrc;
LPDIRECT3DTEXTURE8 m_pFocusTexSrc;
int m_iFocusTexDst;
int m_iFocusDisTexDst; // Displacement Texture index
int m_iStepTex;
WBWaterNormalTexGenShader *m_pShader;
// WBWaterNormalTexGenVShader *m_pVShader;
// DWORD m_dwTexOffsetVShader;
std::vector<D3DXVECTOR3> m_DropWaters;
public:
WBWaterOffset m_TextureCoord[5];
void Init(LPDIRECT3DDEVICE8 pDevice,int iSizeX,int iSizeY,char *strDisplaceMap);
void Release();
void Update(); // Normal map Render
void LoadDisplaceMap();
void CreateRenderTexture(int iSizeX,int iSizeY);
void CreateVertex();
void CreateMatrix();
void CreateUvOffset(int iSizeX,int iSizeY);
void CreateUvBlur();
LPDIRECT3DTEXTURE8 GetNormalTexure() { if(m_pDisplaceMap) return (LPDIRECT3DTEXTURE8)(m_pDisplaceMap->GetTexture());
return NULL;};
LPDIRECT3DTEXTURE8 GetNormalTexure1() { return m_pRenderTargetTex[m_iFocusDisTexDst];};
void BackRenderTarget();
void SetWaterValue();
void SetNormalGenRenderState();
void ProcessNormalMap(); // Normal map Processing(Update)
void SetZeroOffset(int iOff);
void AddDropWater( float fX, float fY, float fScale );
void DrawDropWaters();
// DisplaceMap Create (Dot3X2)
void CreateDot3x2EMBMMapSteps();
void SetWindX(float fX);
void SetWindY(float fY);
WBWaterNormalTexGenerator();
~WBWaterNormalTexGenerator();
};
#endif // !defined(AFX_WBWATERNORMALTEXGENERATOR_H__A9C62D45_472F_44BC_B49C_949E7DB8BE5D__INCLUDED_)