BVB Source Codes

CRYENGINE Show terrain_water.h Source code

Return Download CRYENGINE: download terrain_water.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. // -------------------------------------------------------------------------
  4. //  File name:   terrain_water.h
  5. //  Version:     v1.00
  6. //  Created:     28/5/2001 by Vladimir Kajalin
  7. //  Compilers:   Visual Studio.NET
  8. //  Description:
  9. // -------------------------------------------------------------------------
  10. //  History:
  11. //
  12. ////////////////////////////////////////////////////////////////////////////
  13.  
  14. #ifndef _TERRAIN_WATER_H_
  15. #define _TERRAIN_WATER_H_
  16.  
  17. #define CYCLE_BUFFERS_NUM 4
  18.  
  19. class COcean : public IRenderNode, public Cry3DEngineBase
  20. {
  21. public:
  22.         COcean(IMaterial* pMat);
  23.         ~COcean();
  24.  
  25.         void          Create();
  26.         void          Update(const SRenderingPassInfo& passInfo);
  27.         void          Render(const SRenderingPassInfo& passInfo);
  28.  
  29.         bool          IsVisible(const SRenderingPassInfo& passInfo);
  30.  
  31.         void          SetLastFov(float fLastFov) { m_fLastFov = fLastFov; }
  32.         static void   SetTimer(ITimer* pTimer);
  33.  
  34.         static float  GetWave(const Vec3& pPosition, int32 nFrameID);
  35.         static uint32 GetVisiblePixelsCount();
  36.         int32         GetMemoryUsage();
  37.  
  38.         // fake IRenderNode implementation
  39.         virtual EERType          GetRenderNodeType();
  40.         virtual const char*      GetEntityClassName(void) const                                 { return "Ocean"; }
  41.         virtual const char*      GetName(void) const                                            { return "Ocean"; }
  42.         virtual Vec3             GetPos(bool) const;
  43.         virtual void             Render(const SRendParams&, const SRenderingPassInfo& passInfo) {}
  44.         virtual IPhysicalEntity* GetPhysics(void) const                                         { return 0; }
  45.         virtual void             SetPhysics(IPhysicalEntity*)                                   {}
  46.         virtual void             SetMaterial(IMaterial* pMat)                                   { m_pMaterial = pMat; }
  47.         virtual IMaterial*       GetMaterial(Vec3* pHitPos = NULL) const;
  48.         virtual IMaterial*       GetMaterialOverride()                                          { return m_pMaterial; }
  49.         virtual float            GetMaxViewDist()                                               { return 1000000.f; }
  50.         virtual void             GetMemoryUsage(ICrySizer* pSizer) const                        {}
  51.         virtual const AABB       GetBBox() const                                                { return AABB(Vec3(-1000000.f, -1000000.f, -1000000.f), Vec3(1000000.f, 1000000.f, 1000000.f)); }
  52.         virtual void             SetBBox(const AABB& WSBBox)                                    {}
  53.         virtual void             FillBBox(AABB& aabb);
  54.         virtual void             OffsetPosition(const Vec3& delta);
  55.  
  56. private:
  57.  
  58.         void RenderFog(const SRenderingPassInfo& passInfo);
  59.         void RenderBottomCap(const SRenderingPassInfo& passInfo);
  60.  
  61. private:
  62.  
  63.         // Ocean data
  64.         IMaterial*                m_pMaterial;
  65.  
  66.         PodArray<SVF_P3F_C4B_T2F> m_pMeshVerts;
  67.         PodArray<vtx_idx>         m_pMeshIndices;
  68.  
  69.         int32                     m_nPrevGridDim;
  70.         int32                     m_nVertsCount;
  71.         int32                     m_nIndicesCount;
  72.  
  73.         int32                     m_nTessellationType;
  74.         int32                     m_nTessellationTiles;
  75.  
  76.         // Ocean bottom cap data
  77.         _smart_ptr<IMaterial>     m_pBottomCapMaterial;
  78.         _smart_ptr<IRenderMesh>   m_pBottomCapRenderMesh;
  79.  
  80.         PodArray<SVF_P3F_C4B_T2F> m_pBottomCapVerts;
  81.         PodArray<vtx_idx>         m_pBottomCapIndices;
  82.  
  83.         // Visibility data
  84.         CCamera                  m_Camera;
  85.         class CREOcclusionQuery* m_pREOcclusionQueries[CYCLE_BUFFERS_NUM];
  86.         IShader*                 m_pShaderOcclusionQuery;
  87.         float                    m_fLastFov;
  88.         float                    m_fLastVisibleFrameTime;
  89.         int32                    m_nLastVisibleFrameId;
  90.         static uint32            m_nVisiblePixelsCount;
  91.  
  92.         float                    m_fRECustomData[12];           // used for passing data to renderer
  93.         float                    m_fREOceanBottomCustomData[8]; // used for passing data to renderer
  94.         bool                     m_bOceanFFT;
  95.  
  96.         // Ocean fog related members
  97.         CREWaterVolume::SParams      m_wvParams[RT_COMMAND_BUF_COUNT];
  98.         CREWaterVolume::SOceanParams m_wvoParams[RT_COMMAND_BUF_COUNT];
  99.  
  100.         _smart_ptr<IMaterial>        m_pFogIntoMat;
  101.         _smart_ptr<IMaterial>        m_pFogOutofMat;
  102.         _smart_ptr<IMaterial>        m_pFogIntoMatLowSpec;
  103.         _smart_ptr<IMaterial>        m_pFogOutofMatLowSpec;
  104.  
  105.         CREWaterVolume*              m_pWVRE[RT_COMMAND_BUF_COUNT];
  106.         std::vector<SVF_P3F_C4B_T2F> m_wvVertices[RT_COMMAND_BUF_COUNT];
  107.         std::vector<uint16>          m_wvIndices[RT_COMMAND_BUF_COUNT];
  108.  
  109.         static ITimer*               m_pOceanTimer;
  110.         static CREWaterOcean*        m_pOceanRE;
  111.  
  112. };
  113.  
  114. #endif
  115.  
downloadterrain_water.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top