metaforce/Runtime/Graphics/CBooRenderer.hpp

104 lines
3.8 KiB
C++
Raw Normal View History

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"
#include "CDrawable.hpp"
#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
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
{
IFactory& x8_factory;
IObjectStore& xc_store;
// CFont x10_fnt;
u32 x18_ = 0;
std::list<u32> x1c_;
zeus::CFrustum x44_frustumPlanes;
float x2f8_thermColdScale = 0.f;
CThermalColdFilter m_thermColdFilter;
2015-08-18 05:54:43 +00:00
public:
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&);
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__