// GFXNET - [2020-04-13 11:57:47]
#ifndef _GFXRENDER_H_
#define _GFXRENDER_H_

#include "common.h"
#include "CGfxPostProcess.h"

/*
0018A4C2 GFXRENDER_RenderMainScene()
0018A4C8 GFXRENDER_RenderDepthScene()
0018A4E4 GFXRENDER_RenderGlaresOcc()
0018A500 GFXRENDER_RenderGlaresVol()
0018A534 GFXRENDER_ApplyScissor(float f1,float f2)
0018A5CC GFXRENDER_ResetFrameTime()
0018A5E4 GFXRENDER_Set60FPSDesirable()
0018A5F4 GFXRENDER_NeedToSaveBattery()
0018A674 GFXRENDER_ApplyPowerSaveMode()
0018A6CC GFXRENDER_ProcessFrameTime()
0018A830 GFXRENDER_StartFrameRateHistogram()
0018A850 GFXRENDER_GetFrameRateHistogramData(wchar_t * pWBuf, int a2)
0018A8C8 GFXRENDER_Init()
0018AA1C GFXRENDER_EnableScissor(bool b1, float f2, float f3, float f4, float f5)
0018AA44 GFXRENDER_Shutdown()
0018AA68 GFXRENDER_SetForceRender(bool b)
0018AA78 GFXRENDER_RenderScene()
0018AD88 GFXRENDER_RenderPhotoScene()
0018AD8C GFXRENDER_PreRender()
0018AFB4 GFXRENDER_Render()
0018B004 GFXRENDER_UpdateFPS()
0018B006 GFXRENDER_RenderDebug()
*/

struct ScissorRect {
  float field_0;
  float field_4;
  float field_8;
  float field_C;
};

// 0018A4C2
void GFXRENDER_RenderMainScene();

// 0018A4C8
void GFXRENDER_RenderDepthScene();

// 0018A4E4
void GFXRENDER_RenderGlaresOcc();

// 0018A500
void GFXRENDER_RenderGlaresVol();

// 0018A534
void GFXRENDER_ApplyScissor(float f1, float f2);

// 0018A5CC
void GFXRENDER_ResetFrameTime();

// 0018A5E4
void GFXRENDER_Set60FPSDesirable();

// 0018A5F4
bool GFXRENDER_NeedToSaveBattery();

// 0018A674
void GFXRENDER_ApplyPowerSaveMode();

// 0018A6CC
int GFXRENDER_ProcessFrameTime();

// 0018A830
void GFXRENDER_StartFrameRateHistogram();

// 0018A850
void GFXRENDER_GetFrameRateHistogramData(wchar_t* pWBuf, int a2);

// 0018A8C8
void GFXRENDER_Init();

// 0018AA1C
void GFXRENDER_EnableScissor(bool b1, float f2, float f3, float f4, float f5);

// 0018AA44
void GFXRENDER_Shutdown();

// 0018AA68
void GFXRENDER_SetForceRender(bool b);

// 0018AA78
void GFXRENDER_RenderScene();

// 0018AD88
void GFXRENDER_RenderPhotoScene();

// 0018AD8C
void GFXRENDER_PreRender();

// 0018AFB4
void GFXRENDER_Render();

// 0018B004
void GFXRENDER_UpdateFPS();

// 0018B006
void GFXRENDER_RenderDebug();

extern bool GFXRENDER_bRenderPitch;                              // 0033F42C
extern bool GFXRENDER_bRenderPlayers;                            // 0033F42D
extern bool GFXRENDER_bRenderBall;                               // 0033F42E
extern bool GFXRENDER_bRenderEnv;                                // 0033F42F
extern bool GFXRENDER_bRenderCornerFlags;                        // 0033F430
extern bool GFXRENDER_bRenderStadiumProps;                       // 0033F431
extern bool GFXRENDER_bRenderGoals;                              // 0033F432
extern bool GFXRENDER_bRenderShadows;                            // 0033F433
extern bool GFXRENDER_bRenderStadium;                            // 0033F434
extern bool GFXRENDER_bRenderGravel;                             // 0033F435
extern bool GFXRENDER_bRenderCrowd;                              // 0033F436
extern bool GFXRENDER_bRenderSky;                                // 0033F437
extern bool GFXRENDER_bRenderEffects;                            // 0033F438
extern bool GFXRENDER_bRenderHUD;                                // 0033F439
extern bool GFXRENDER_bAllowSkipRender;                          // 0033F43A
extern bool GFXRENDER_bRenderWeather;                            // 0033F43B
extern bool GFXRENDER_bRenderLensFlare;                          // 0033F43C
extern bool GFXRENDER_bRenderPlayerShadows;                      // 0033F43D
extern int GFXRENDER_iFrameRateTarget;                           // 0033F440
extern CGfxPostProcessRenderer GFXRender_tPostProcessCallbacks;  // 0033F444

extern bool GFXRENDER_bIsDepthPass;              // 0045FD50
extern bool GFXRENDER_bIsBlackDepthPass;         // 0045FD51
extern bool GFXRENDER_bEnableScissor;            // 0045FD52
extern ScissorRect GFXRENDER_tScissorRect;       // 0045FD54
extern uint GFXRENDER_uLastTime;                 // 0045FD64
extern float GFXRENDER_fFPS;                     // 0045FD68
extern uint64_t GFXRENDER_iTargetTime;           // 0045FD70
extern int GFXRENDER_iFrameSkipCount;            // 0045FD78
extern bool GFXRENDER_b60FPSDesirable;           // 0045FD7C
extern bool GFXRENDER_bForceRender;              // 0045FD7D
extern CGfxPostProcess* GFXRENDER_pPostProcess;  // 0045FD80

#endif  //_GFXRENDER_H_