version 1.3.0

new QGLViewSettings structure for all view parameters
API for load/save it, automatic sync with ViewEditor
some clean
This commit is contained in:
2023-09-05 20:16:49 +03:00
parent 56a50715e2
commit 1ed6f12498
11 changed files with 164 additions and 143 deletions

View File

@@ -26,6 +26,7 @@
#include "mouse_controller.h"
#include "openglwindow.h"
#include "qglengine_core_export.h"
#include "qglview_settings.h"
#include "renderer.h"
#include <QElapsedTimer>
@@ -43,7 +44,6 @@ class QGLENGINE_CORE_EXPORT QGLView
Q_PROPERTY(float gamma READ gamma WRITE setGamma)
Q_PROPERTY(bool autoExposure READ autoExposure WRITE setAutoExposure)
Q_PROPERTY(QColor fogColor READ fogColor WRITE setFogColor)
Q_PROPERTY(bool fogEnabled READ isFogEnabled WRITE setFogEnabled)
Q_PROPERTY(float fogDensity READ fogDensity WRITE setFogDensity)
Q_PROPERTY(float fogDecay READ fogDecay WRITE setFogDecay)
Q_PROPERTY(int renderMode READ renderMode WRITE setRenderMode)
@@ -86,35 +86,33 @@ public:
void stop();
void start(float freq = 0.);
float lineWidth() const { return lineWidth_; }
float lineWidth() const { return settings.lineWidth; }
float FOV() const { return camera()->FOV(); }
float depthStart() const { return camera()->depthStart(); }
float currentFPS() const { return fps_; }
float gamma() const { return renderer_.gamma_; }
bool autoExposure() const { return renderer_.tone_proc.enabled; }
float gamma() const { return settings.gamma; }
bool autoExposure() const { return settings.autoExposure; }
int maxAnisotropicLevel() const { return max_anisotropic; }
QString environmentMapFile() const { return renderer_.tex_env.fileHDR(); }
bool FXAA() const { return FXAA_; }
void setFXAA(bool on) { FXAA_ = on; }
bool FXAA() const { return settings.FXAA; }
void setFXAA(bool on) { settings.FXAA = on; }
QColor fogColor() const { return fogColor_; }
float fogDensity() const { return fogDensity_; }
float fogDecay() const { return fogDecay_; }
bool isFogEnabled() const { return fogEnabled_; }
bool isLightEnabled() const { return lightEnabled_; }
QColor fogColor() const { return settings.fogColor; }
float fogDensity() const { return settings.fogDensity; }
float fogDecay() const { return settings.fogDecay; }
bool isGrabMouseEnabled() const { return mouse.isGrabMouseEnabled(); }
bool isMouseRotateEnabled() const { return mouse.isMouseRotateEnabled(); }
bool isMouseSelectionEnabled() const { return mouse.isMouseSelectionEnabled(); }
bool isCameraOrbit() const { return mouse.isCameraOrbit(); }
bool isHoverHaloEnabled() const { return hoverHalo_; }
QColor hoverHaloColor() const { return hoverHaloColor_; }
float hoverHaloFillAlpha() const { return hoverHaloFill_; }
bool isSelectionHaloEnabled() const { return selectionHalo_; }
QColor selectionHaloColor() const { return selectionHaloColor_; }
float selectionHaloFillAlpha() const { return selectionHaloFill_; }
bool isHoverHaloEnabled() const { return settings.hoverHalo; }
QColor hoverHaloColor() const { return settings.hoverHaloColor; }
float hoverHaloFillAlpha() const { return settings.hoverHaloFill; }
bool isSelectionHaloEnabled() const { return settings.selectionHalo; }
QColor selectionHaloColor() const { return settings.selectionHaloColor; }
float selectionHaloFillAlpha() const { return settings.selectionHaloFill; }
int renderMode() const { return (int)render_mode; }
void setRenderMode(int mode) { render_mode = (RenderMode)mode; }
int renderMode() const { return settings.render_mode; }
void setRenderMode(int mode) { settings.render_mode = mode; }
bool isServiceMode() const { return renderer_.edit_mode; }
void setServiceMode(bool yes) { renderer_.edit_mode = yes; }
@@ -164,27 +162,30 @@ public:
void setGrabFormats(QFlags<Renderer::GrabFormat> f) { grab_formats = f; }
QImage getImage() const { return renderer_.getImage(); }
QVector<QVector4D> getImageF() const { return renderer_.getImageF(); }
void setGrabImageMipmap(int level);
void setGrabImageFMipmap(int level);
void setGrabImageMipmap(int level) { renderer_.grab_mipmap = level; }
void setGrabImageFMipmap(int level) { renderer_.grab_mipmap_f = level; }
void setShadowMapSize(QSize sz);
void setShadowMapSize(QSize sz) { shadow_map_size = sz; }
void setTextureMapSize(QSize sz);
QSize shadowMapSize() const;
QSize textureMapSize() const;
QSize shadowMapSize() const { return shadow_map_size; }
QSize textureMapSize() const { return renderer_.maps_size; }
void setFramebufferSize(QSize sz) { framebuffer_size = sz; }
void resetFramebufferSize() { framebuffer_size = QSize(); }
QSize framebufferSize() const { return framebuffer_size; }
QSize actualFramebufferSize() const;
int softShadowsSamples() const { return soft_shadows_samples; }
void setSoftShadowsSamples(int s) { soft_shadows_samples = s; }
float softShadowsQuality() const { return soft_shadows_quality; }
void setSoftShadowsQuality(float s) { soft_shadows_quality = s; }
bool softShadows() const { return soft_shadows; }
void setSoftShadows(bool on) { soft_shadows = on; }
bool shadows() const { return shadows_; }
void setShadows(bool on) { shadows_ = on; }
int softShadowsSamples() const { return settings.soft_shadows_samples; }
void setSoftShadowsSamples(int s) { settings.soft_shadows_samples = s; }
float softShadowsQuality() const { return settings.soft_shadows_quality; }
void setSoftShadowsQuality(float s) { settings.soft_shadows_quality = s; }
bool softShadows() const { return settings.soft_shadows; }
void setSoftShadows(bool on) { settings.soft_shadows = on; }
bool shadows() const { return settings.shadows; }
void setShadows(bool on) { settings.shadows = on; }
QByteArray saveSetting() const;
void loadSetting(QByteArray data);
GLfloat aspect, iaspect;
Renderer renderer_;
@@ -218,51 +219,45 @@ private:
MouseController mouse;
QMenu context_menu;
QSet<int> keys_;
QColor fogColor_, hoverHaloColor_, selectionHaloColor_;
QElapsedTimer time;
GLint max_anisotropic, max_texture_chanels;
RenderMode render_mode;
GLint max_anisotropic = 1, max_texture_chanels = 8;
QFlags<Renderer::GrabFormat> grab_formats;
QSize prev_size, shadow_map_size, framebuffer_size;
float lineWidth_, soft_shadows_quality;
float fps_, fps_tm, fogDensity_, fogDecay_;
float hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor;
int timer, fps_cnt, sh_id_loc, soft_shadows_samples;
bool fogEnabled_, lightEnabled_, FXAA_;
bool shaders_supported, shaders_bind;
bool hoverHalo_, selectionHalo_;
bool is_init, shadows_, soft_shadows;
QGLViewSettings settings;
float fps_ = 0.f, fps_tm = 0.f;
float m_motionBlurFactor = 1.f;
int timer = 0, fps_cnt = 0, sh_id_loc = 0;
bool shaders_bind = false;
bool is_init = false;
private slots:
void __destroyed();
void __objectDeleted(ObjectBase * o);
public slots:
void setLineWidth(const float & arg) { lineWidth_ = arg; }
void setLineWidth(const float & arg) { settings.lineWidth = arg; }
void setFOV(const float & arg) { camera()->setFOV(arg); }
void setDepthStart(const float & arg) { camera()->setDepthStart(arg); }
void setGamma(const float & arg) { renderer_.gamma_ = arg; }
void setAutoExposure(bool arg) { renderer_.tone_proc.enabled = arg; }
void setGamma(const float & arg) { settings.gamma = arg; }
void setAutoExposure(bool arg) { settings.autoExposure = arg; }
void setEnvironmentMapFile(QString file) {
renderer_.tex_env.setFileHDR(file);
renderer_.recreateMaterialThumbnails(true);
}
void setFogColor(const QColor & arg) { fogColor_ = arg; }
void setFogDensity(const float & arg) { fogDensity_ = arg; }
void setFogDecay(const float & arg) { fogDecay_ = arg; }
void setFogEnabled(const bool & arg) { fogEnabled_ = arg; }
void setLightEnabled(const bool & arg) { lightEnabled_ = arg; }
void setFogColor(const QColor & arg) { settings.fogColor = arg; }
void setFogDensity(const float & arg) { settings.fogDensity = arg; }
void setFogDecay(const float & arg) { settings.fogDecay = arg; }
void setGrabMouseEnabled(const bool & arg) { mouse.setGrabMouseEnabled(arg); }
void setMouseRotateEnabled(const bool & arg) { mouse.setMouseRotateEnabled(arg); }
void setMouseSelectionEnabled(const bool & arg) { mouse.setMouseSelectionEnabled(arg); }
void setCustomMouseMove(const bool & arg) { mouse.setCustomMouseMove(arg); }
void setCameraOrbit(const bool & arg) { mouse.setCameraOrbit(arg); }
void setHoverHaloEnabled(const bool & arg) { hoverHalo_ = arg; }
void setHoverHaloColor(const QColor & arg) { hoverHaloColor_ = arg; }
void setHoverHaloFillAlpha(const float & arg) { hoverHaloFill_ = arg; }
void setSelectionHaloEnabled(const bool & arg) { selectionHalo_ = arg; }
void setSelectionHaloColor(const QColor & arg) { selectionHaloColor_ = arg; }
void setSelectionHaloFillAlpha(const float & arg) { selectionHaloFill_ = arg; }
void setHoverHaloEnabled(const bool & arg) { settings.hoverHalo = arg; }
void setHoverHaloColor(const QColor & arg) { settings.hoverHaloColor = arg; }
void setHoverHaloFillAlpha(const float & arg) { settings.hoverHaloFill = arg; }
void setSelectionHaloEnabled(const bool & arg) { settings.selectionHalo = arg; }
void setSelectionHaloColor(const QColor & arg) { settings.selectionHaloColor = arg; }
void setSelectionHaloFillAlpha(const float & arg) { settings.selectionHaloFill = arg; }
void reloadShaders() { renderer_.reloadShaders(); }
@@ -287,6 +282,7 @@ signals:
void materialsChanged();
void materialThumbnailCreated(Material *);
void doubleClick();
void settingsLoaded();
};
#endif // QGLVIEW_H