66 lines
2.0 KiB
C++
66 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include <QOpenGLWidget>
|
|
#include <QOpenGLFunctions_4_5_Compatibility>
|
|
#include <QOpenGLShaderProgram>
|
|
#include <QOpenGLBuffer>
|
|
#include <QOpenGLVertexArrayObject>
|
|
#include <QOpenGLFramebufferObject>
|
|
#include <QKeyEvent>
|
|
#include "Camera.h"
|
|
#include "Light.h"
|
|
#include "Model.h"
|
|
#include "PaintingHelper.h"
|
|
|
|
class RendererWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_5_Compatibility
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
RendererWidget(QWidget* parent = nullptr);
|
|
~RendererWidget();
|
|
|
|
public slots:
|
|
void setMainLightPitch(float pitch);
|
|
void setMainLightYaw(float yaw);
|
|
protected:
|
|
void initializeGL() override;
|
|
void paintGL() override;
|
|
void resizeGL(int width, int height) override;
|
|
void timerEvent(QTimerEvent* event) override;
|
|
void keyPressEvent(QKeyEvent* event) override;
|
|
void keyReleaseEvent(QKeyEvent* event) override;
|
|
void wheelEvent(QWheelEvent* event) override;
|
|
void focusInEvent(QFocusEvent* event) override;
|
|
void focusOutEvent(QFocusEvent* event) override;
|
|
|
|
private:
|
|
int frameWidth, frameHeight;
|
|
int depthWidth, depthHeight;
|
|
QSet<int> pressedKeys;
|
|
Camera camera;
|
|
Light light;
|
|
clock_t lastFrame;
|
|
float deltaTime;
|
|
int shadowMapResolution;
|
|
|
|
QOpenGLShaderProgram* shadowProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* modelProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* paintingProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* paintingCompProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* depthInitProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* depthMipmapProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* shadowMappingProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* ssgiProgramPtr = nullptr;
|
|
QOpenGLShaderProgram* finalProgramPtr = nullptr;
|
|
QOpenGLFramebufferObject* fboPtr = nullptr;
|
|
GLuint gbuffers[10];
|
|
GLuint shadowFboHandle = 0;
|
|
GLuint shadowGbuffer;
|
|
GLuint lightSpaceMatricesUBO;
|
|
QOpenGLBuffer quadVBO;
|
|
QOpenGLVertexArrayObject quadVAO;
|
|
Model* model;
|
|
PaintingHelper* paintingHelper;
|
|
};
|
|
|