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>
142 lines
3.9 KiB
C++
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_)
|