raze-gles/source/common/rendering/gl/gl_renderer.h

115 lines
2.5 KiB
C
Raw Normal View History

#ifndef __GL_RENDERER_H
#define __GL_RENDERER_H
#include "v_video.h"
#include "vectors.h"
#include "matrix.h"
2020-04-26 21:17:54 +00:00
#include "gl_renderbuffers.h"
#include <functional>
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
struct particle_t;
class FCanvasTexture;
class FFlatVertexBuffer;
class FSkyVertexBuffer;
class HWPortal;
class FLightBuffer;
class DPSprite;
class FGLRenderBuffers;
class FGL2DDrawer;
class SWSceneDrawer;
class HWViewpointBuffer;
struct FRenderViewpoint;
namespace OpenGLRenderer
{
class FHardwareTexture;
2020-04-26 21:17:54 +00:00
class FShaderManager;
class FSamplerManager;
class OpenGLFrameBuffer;
class FPresentShaderBase;
class FPresentShader;
class FPresent3DCheckerShader;
class FPresent3DColumnShader;
class FPresent3DRowShader;
2020-04-26 21:17:54 +00:00
class FShadowMapShader;
class FGLRenderer
{
public:
OpenGLFrameBuffer *framebuffer;
int mMirrorCount = 0;
int mPlaneMirrorCount = 0;
2020-04-26 21:17:54 +00:00
FShaderManager *mShaderManager = nullptr;
2020-05-28 23:03:01 +00:00
FSamplerManager *mSamplerManager = nullptr;
unsigned int mFBID;
unsigned int mVAOID;
unsigned int mStencilValue = 0;
int mOldFBID;
FGLRenderBuffers *mBuffers = nullptr;
FGLRenderBuffers *mScreenBuffers = nullptr;
FGLRenderBuffers *mSaveBuffers = nullptr;
FPresentShader *mPresentShader = nullptr;
FPresent3DCheckerShader *mPresent3dCheckerShader = nullptr;
FPresent3DColumnShader *mPresent3dColumnShader = nullptr;
FPresent3DRowShader *mPresent3dRowShader = nullptr;
2020-04-26 21:17:54 +00:00
FShadowMapShader *mShadowMapShader = nullptr;
//FRotator mAngles;
FGLRenderer(OpenGLFrameBuffer *fb);
~FGLRenderer() ;
void Initialize(int width, int height);
void ClearBorders();
void PresentStereo();
void RenderScreenQuad();
2020-06-07 13:02:54 +00:00
void PostProcessScene(int fixedcm, float flash, const std::function<void()> &afterBloomDrawEndScene2D);
void AmbientOccludeScene(float m5);
void ClearTonemapPalette();
void BlurScene(float gameinfobluramount);
void CopyToBackbuffer(const IntRect *bounds, bool applyGamma);
void DrawPresentTexture(const IntRect &box, bool applyGamma);
void Flush();
void BeginFrame();
bool StartOffscreen();
void EndOffscreen();
2020-05-31 19:43:32 +00:00
void BindToFrameBuffer(FTexture* tex);
private:
2020-04-26 21:17:54 +00:00
bool QuadStereoCheckInitialRenderContextState();
void PresentAnaglyph(bool r, bool g, bool b);
2021-01-29 12:20:00 +00:00
void PresentSideBySide(int);
2020-04-26 21:17:54 +00:00
void PresentTopBottom();
void prepareInterleavedPresent(FPresentShaderBase& shader);
void PresentColumnInterleaved();
void PresentRowInterleaved();
void PresentCheckerInterleaved();
void PresentQuadStereo();
};
struct TexFilter_s
{
int minfilter;
int magfilter;
bool mipmapping;
} ;
extern FGLRenderer *GLRenderer;
}
#endif