2016-04-13 06:07:23 +00:00
|
|
|
#ifndef __URDE_CBOORENDERER_HPP__
|
|
|
|
#define __URDE_CBOORENDERER_HPP__
|
2015-08-18 05:54:43 +00:00
|
|
|
|
2016-07-21 05:21:45 +00:00
|
|
|
#include "IRenderer.hpp"
|
2016-07-22 02:32:23 +00:00
|
|
|
#include "CDrawable.hpp"
|
2016-07-22 19:46:30 +00:00
|
|
|
#include "Shaders/CThermalColdFilter.hpp"
|
2016-07-21 05:21:45 +00:00
|
|
|
|
2016-03-04 23:04:53 +00:00
|
|
|
namespace urde
|
2015-08-18 05:54:43 +00:00
|
|
|
{
|
2015-08-22 01:58:41 +00:00
|
|
|
class IObjectStore;
|
|
|
|
class CMemorySys;
|
2016-04-15 20:42:40 +00:00
|
|
|
class IFactory;
|
2015-08-18 05:54:43 +00:00
|
|
|
|
2016-07-22 02:32:23 +00:00
|
|
|
class Buckets
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static void Clear();
|
|
|
|
static void Sort();
|
|
|
|
static void InsertPlaneObject(float, float, const zeus::CAABox&, bool, const zeus::CPlane&,
|
|
|
|
bool, EDrawableType, const void*);
|
|
|
|
static void Insert(const zeus::CVector3f&, const zeus::CAABox&, EDrawableType, const void*,
|
|
|
|
const zeus::CPlane&, unsigned short);
|
|
|
|
static void Shutdown();
|
|
|
|
static void Init();
|
|
|
|
};
|
|
|
|
|
2016-07-21 05:21:45 +00:00
|
|
|
class CBooRenderer : public IRenderer
|
2015-08-18 05:54:43 +00:00
|
|
|
{
|
2016-07-22 02:32:23 +00:00
|
|
|
IFactory& x8_factory;
|
|
|
|
IObjectStore& xc_store;
|
|
|
|
// CFont x10_fnt;
|
|
|
|
u32 x18_ = 0;
|
|
|
|
std::list<u32> x1c_;
|
|
|
|
zeus::CFrustum x44_frustumPlanes;
|
2016-07-22 19:46:30 +00:00
|
|
|
|
|
|
|
float x2f8_thermColdScale = 0.f;
|
|
|
|
|
|
|
|
CThermalColdFilter m_thermColdFilter;
|
|
|
|
|
2015-08-18 05:54:43 +00:00
|
|
|
public:
|
2016-07-22 02:32:23 +00:00
|
|
|
CBooRenderer(IObjectStore& store, IFactory& resFac);
|
2016-07-21 05:21:45 +00:00
|
|
|
|
|
|
|
void AddStaticGeometry(const std::vector<CMetroidModelInstance>&, const CAreaOctTree*, int);
|
|
|
|
void RemoveStaticGeometry(const std::vector<CMetroidModelInstance>&);
|
|
|
|
void DrawUnsortedGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
void DrawSortedGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
void DrawStaticGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
void PostRenderFogs();
|
|
|
|
void AddParticleGen(const CElementGen&);
|
|
|
|
void AddPlaneObject(const void*, const zeus::CAABox&, const zeus::CPlane&, int);
|
|
|
|
void AddDrawable(void const *, const zeus::CVector3f&, const zeus::CAABox&, int, EDrawableSorting);
|
|
|
|
void SetDrawableCallback(TDrawableCallback, const void*);
|
|
|
|
void SetWorldViewpoint(const zeus::CTransform&);
|
|
|
|
void SetPerspectiveFovScalar(float);
|
|
|
|
void SetPerspective(float, float, float, float, float);
|
|
|
|
void SetPerspective(float, float, float, float);
|
|
|
|
void SetViewportOrtho(bool, float, float);
|
|
|
|
void SetClippingPlanes(const zeus::CFrustum&);
|
|
|
|
void SetViewport(int, int, int, int);
|
|
|
|
void SetDepthReadWrite(bool, bool);
|
|
|
|
void SetBlendMode_AdditiveAlpha();
|
|
|
|
void SetBlendMode_AlphaBlended();
|
|
|
|
void SetBlendMode_NoColorWrite();
|
|
|
|
void SetBlendMode_ColorMultiply();
|
|
|
|
void SetBlendMode_InvertDst();
|
|
|
|
void SetBlendMode_InvertSrc();
|
|
|
|
void SetBlendMode_Replace();
|
|
|
|
void SetBlendMode_AdditiveDestColor();
|
|
|
|
void SetDebugOption(EDebugOption, int);
|
|
|
|
void BeginScene();
|
|
|
|
void EndScene();
|
|
|
|
void BeginPrimitive(EPrimitiveType, int);
|
|
|
|
void BeginLines(int);
|
|
|
|
void BeginLineStrip(int);
|
|
|
|
void BeginTriangles(int);
|
|
|
|
void BeginTriangleStrip(int);
|
|
|
|
void BeginTriangleFan(int);
|
|
|
|
void PrimVertex(const zeus::CVector3f&);
|
|
|
|
void PrimNormal(const zeus::CVector3f&);
|
|
|
|
void PrimColor(float, float, float, float);
|
|
|
|
void PrimColor(const zeus::CColor&);
|
|
|
|
void EndPrimitive();
|
|
|
|
void SetAmbientColor(const zeus::CColor&);
|
|
|
|
void SetStaticWorldAmbientColor(const zeus::CColor&);
|
|
|
|
void DrawString(const char*, int, int);
|
|
|
|
u32 GetFPS();
|
|
|
|
void CacheReflection(TReflectionCallback, void*, bool);
|
|
|
|
void DrawSpaceWarp(const zeus::CVector3f&, float);
|
|
|
|
void DrawThermalModel(const CModel&, const zeus::CColor&, const zeus::CColor&, const float*, const float*);
|
|
|
|
void DrawXRayOutline(const CModel&, const float*, const float*);
|
|
|
|
void SetWireframeFlags(int);
|
|
|
|
void SetWorldFog(ERglFogMode, float, float, const zeus::CColor&);
|
|
|
|
void RenderFogVolume(const zeus::CColor&, const zeus::CAABox&, const TLockedToken<CModel>*, const CSkinnedModel*);
|
|
|
|
void SetThermal(bool, float, const zeus::CColor&);
|
2016-07-22 19:46:30 +00:00
|
|
|
void SetThermalColdScale(float scale);
|
2016-07-21 05:21:45 +00:00
|
|
|
void DoThermalBlendCold();
|
|
|
|
void DoThermalBlendHot();
|
|
|
|
u32 GetStaticWorldDataSize();
|
2015-08-18 05:54:43 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-04-13 06:07:23 +00:00
|
|
|
#endif // __URDE_CBOORENDERER_HPP__
|