#pragma once // shadow용 ViewPort #include "SViewPort.h" #include #include #include "KRenderObject.h" #include "KSortVector.h" class K3DVertexBuffer; class KMeshPrimitive; class SShadowViewPort : public SViewPort, public SRenderTargetContainer { public: static float SHADOW_RATIO; SShadowViewPort( bool bClearColorBuffer = true, bool bClearDepthBuffer = true ); virtual ~SShadowViewPort(); virtual void Initilaize( K3DRenderDevice *dev, const KViewportStruct &viewarea, float nearClip, float farClip ); virtual void SetCamera( const K3DCamera *cam ); virtual void Register( K3DPrimitive *pr, DWORD flag ); virtual void ClearRegisteredList(); virtual void Render( bool bClearRegister = true, bool bSetRenderTarget = true ); virtual K3DRenderTarget * GetRenderTarget(int index, void* pr); void SetShadowBottomHeight(float height); float GetShadowBottomHeight() { return m_fShadowBottomHeight; } K3DVector GetShadowBase() { return K3DVector(GetCameraTargetPos().x - SHADOW_RATIO/2, GetCameraTargetPos().y - SHADOW_RATIO/2, GetShadowBottomHeight()); } bool IsShadowValid() { return m_bIsValid; } //void SetUseSpecular( bool bUseSpecular ); //void SetUseShadowBuffer( bool bUseShadowBuffer) { m_bUseShadowBuffer = bUseShadowBuffer; } void SetShadowBufferQuality(int nQuality); void SetShadowMapQuality(int nQuality); void SetJitterMapQuality(int nQuality); void ClearAllShadowMap(); void ReCreateAllShadowMap(); #ifndef NDEBUG void SetDebugMode( bool bDebugMode ) { m_bDebugMode = bDebugMode; } #endif //void SetGameViewport( SViewPort* pViewport) { m_pGameViewport = pViewport; } int GetShadowBufferQuality(); protected: void DrawObjectAsShadowBuffer( KSortVector< RENDER_MESHEX > & vList ); void DrawObjectAsShadow( KSortVector< RENDER_MESHEX > & vList ); KSortVector< RENDER_MESHEX > m_vRenderList; float m_fShadowBottomHeight; bool RenderShadowMap(); bool RenderShadowBuffer(); bool m_bIsValid; ////////////////////////////////////////////////////////////////////////// //쉐도우 맵 관련 K3DVector m_vCameraTargetPos_Backup; void UpdateMatrices(void); //Shadow==================================== K3DRenderTargetSPtr m_spShadowMap; K3DRenderTargetSPtr m_spShadowJitterMap; K3DRenderTargetSPtr m_spShadowBuffer; #ifndef NDEBUG bool m_bDebugMode; #endif //Test 용=================================== K3DVertexBufferSPtr m_spShadowVB; int m_nShadowStride; //bool m_bUseShadowBuffer; int m_nShadowBufferQuality; int m_nShadowMapQuality; int m_nJitterMapQuality; //SViewPort* m_pGameViewport; };