Files
Leviathan/Client/Game/game/Main/SWaterViewPort.h
T
2026-06-01 12:46:52 +02:00

65 lines
1.7 KiB
C++

#pragma once
//Water용 ViewPort
#include "SViewPort.h"
#include <toolkit/XFlag.h>
#include <dump/XException.h>
class K3DVertexBuffer;
class KMeshPrimitive;
//class SShadowViewPort;
class KTextureManager;
class SWaterViewPort : public SViewPort
{
public:
SWaterViewPort( bool bClearColorBuffer = true, bool bClearDepthBuffer = true );
virtual ~SWaterViewPort();
virtual void Initilaize( K3DRenderDevice *dev, const KViewportStruct &viewarea, float nearClip, float farClip );
virtual void SetCamera( const K3DCamera *cam );
virtual float GetVertexAspect() const { return (float)m_fVertexAspectForWater; }
virtual void Register( K3DPrimitive *pr, DWORD flag );
virtual void ClearRegisteredList();
virtual void Render( bool bClearRegister = true, bool bSetRenderTarget = true );
float GetWaterHeight() { return m_fWaterHeight; }
K3DTexture* GetWaterBump() { return m_spWaterBumpTexture; }
K3DTexture* GetWaterReflection() { return m_spWaterReflectionTexture; }
void SetHQWaterHeight(float val) { m_fHQWaterHeight = val; }
float GetHqWaterHeight() { return m_fHQWaterHeight; }
#ifndef NDEBUG
void SetDebugMode( bool bDebugMode ) { m_bDebugMode = bDebugMode; }
#endif
void SetWaterQuality(int nQuality);
int GetWaterQuality() { return m_nWaterQuality; }
//void SetGameViewport(SViewPort* pViewport) { m_pGameViewport = pViewport; }
protected:
#ifndef NDEBUG
bool m_bDebugMode;
#endif
float m_fVertexAspectForWater; ///< 렌더 타겟이 사용될 곳의 vertex aspect
K3DTextureSPtr m_spWaterBumpTexture; ///< 물 텍스처
K3DRenderTargetSPtr m_spWaterReflectionTexture; ///< 비치는 환경 텍스처
int m_nWaterQuality;
float m_fHQWaterHeight;
//SViewPort* m_pGameViewport;
};