git-svn-id: svn://db.shs.com.ru/libs@51 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -47,8 +47,6 @@ class QGLView: public QGraphicsView, public QGLViewBase
|
||||
Q_PROPERTY (double FOV READ FOV WRITE setFOV)
|
||||
Q_PROPERTY (double depthStart READ depthStart WRITE setDepthStart)
|
||||
Q_PROPERTY (double depthEnd READ depthEnd WRITE setDepthEnd)
|
||||
Q_PROPERTY (bool linearFiltering READ linearFiltering WRITE setLinearFiltering)
|
||||
Q_PROPERTY (int anisotropicLevel READ anisotropicLevel WRITE setAnisotropicLevel)
|
||||
Q_PROPERTY (QColor ambientColor READ ambientColor WRITE setAmbientColor)
|
||||
Q_PROPERTY (QColor fogColor READ fogColor WRITE setFogColor)
|
||||
Q_PROPERTY (double fogDensity READ fogDensity WRITE setFogDensity)
|
||||
@@ -68,23 +66,6 @@ class QGLView: public QGraphicsView, public QGLViewBase
|
||||
Q_PROPERTY (QColor selectionHaloColor READ selectionHaloColor WRITE setSelectionHaloColor)
|
||||
Q_PROPERTY (double selectionHaloFillAlpha READ selectionHaloFillAlpha WRITE setSelectionHaloFillAlpha)
|
||||
//Q_PROPERTY (LightingMode lightingMode READ lightingMode WRITE setLightingMode)
|
||||
Q_PROPERTY (bool shadowsEnabled READ isShadowsEnabled WRITE setShadowsEnabled)
|
||||
Q_PROPERTY (bool softShadowsEnabled READ isSoftShadowsEnabled WRITE setSoftShadowsEnabled)
|
||||
Q_PROPERTY (int shadowMapSize READ shadowMapSize WRITE setShadowMapSize)
|
||||
Q_PROPERTY (bool dynamicReflectionsEnabled READ isDynamicReflectionsEnabled WRITE setDynamicReflectionsEnabled)
|
||||
Q_PROPERTY (int dynamicReflectionsMapSize READ dynamicReflectionsMapSize WRITE setDynamicReflectionsMapSize)
|
||||
Q_PROPERTY (bool HDREnabled READ isHDREnabled WRITE setHDREnabled)
|
||||
Q_PROPERTY (bool bloomEnabled READ isBloomEnabled WRITE setBloomEnabled)
|
||||
Q_PROPERTY (double bloomFactor READ bloomFactor WRITE setBloomFactor)
|
||||
Q_PROPERTY (int bloomRadius READ bloomRadius WRITE setBloomRadius)
|
||||
Q_PROPERTY (bool multisamplingEnabled READ isMultisamplingEnabled WRITE setMultisamplingEnabled)
|
||||
Q_PROPERTY (bool FXAAEnabled READ isFXAAEnabled WRITE setFXAAEnabled)
|
||||
Q_PROPERTY (bool accomodationEnabled READ isAccomodationEnabled WRITE setAccomodationEnabled)
|
||||
Q_PROPERTY (double accomodationTime READ accomodationTime WRITE setAccomodationTime)
|
||||
Q_PROPERTY (double accomodationMaxSpeed READ accomodationMaxSpeed WRITE setAccomodationMaxSpeed)
|
||||
Q_PROPERTY (bool motionBlurEnabled READ isMotionBlurEnabled WRITE setMotionBlurEnabled)
|
||||
Q_PROPERTY (double motionBlurFactor READ motionBlurFactor WRITE setMotionBlurFactor)
|
||||
Q_PROPERTY (int motionBlurSteps READ motionBlurSteps WRITE setMotionBlurSteps)
|
||||
Q_PROPERTY (Qt::MouseButton selectionButton READ selectionButton WRITE setSelectionButton)
|
||||
Q_PROPERTY (Qt::KeyboardModifier selectionModifier READ selectionModifier WRITE setSelectionModifier)
|
||||
Q_PROPERTY (SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
|
||||
@@ -97,6 +78,28 @@ public:
|
||||
|
||||
enum FogMode {Linear = GL_LINEAR, Exp = GL_EXP, Exp2 = GL_EXP2};
|
||||
enum SelectionMode {NoSelection, SingleSelection, MultiSelection};
|
||||
enum Feature {
|
||||
qglMSAA,
|
||||
qglFXAA,
|
||||
qglLinearFiltering,
|
||||
qglAnisotropicLevel,
|
||||
qglHDR,
|
||||
qglEyeAccomodationEnabled,
|
||||
qglEyeAccomodationTime,
|
||||
qglEyeAccomodationMaxSpeed,
|
||||
qglBloomEnabled,
|
||||
qglBloomThreshold,
|
||||
qglBloomFactor,
|
||||
qglBloomRadius,
|
||||
qglMotionBlurEnabled,
|
||||
qglMotionBlurFactor,
|
||||
qglMotionBlurSteps,
|
||||
qglShadowsEnabled,
|
||||
qglShadowsMapSize,
|
||||
qglShadowsSoftEnabled,
|
||||
qglDynamicReflectionsEnabled,
|
||||
qglDynamicReflectionsMapSize
|
||||
};
|
||||
|
||||
Q_ENUMS (FogMode)
|
||||
Q_ENUMS (SelectionMode)
|
||||
@@ -118,11 +121,7 @@ public:
|
||||
double depthStart() const {return camera().depth_start;}
|
||||
double depthEnd() const {return camera().depth_end;}
|
||||
double currentFPS() const {return fps_;}
|
||||
bool linearFiltering() const {return linearFiltering_;}
|
||||
int anisotropicLevel() const {return anisotropicLevel_;}
|
||||
int maxAnisotropicLevel() const {return max_anisotropic;}
|
||||
int shadowMapSize() const {return shadow_map_size;}
|
||||
int dynamicReflectionsMapSize() const {return dynamic_cubemap_size;}
|
||||
|
||||
QColor ambientColor() const {return ambientColor_;}
|
||||
QColor fogColor() const {return fogColor_;}
|
||||
@@ -143,26 +142,14 @@ public:
|
||||
bool isSelectionHaloEnabled() const {return selectionHalo_;}
|
||||
QColor selectionHaloColor() const {return selectionHaloColor_;}
|
||||
double selectionHaloFillAlpha() const {return selectionHaloFill_;}
|
||||
bool isMotionBlurEnabled() const {return m_motionBlurEnabled;}
|
||||
bool isShadowsEnabled() const {return shadows_;}
|
||||
bool isSoftShadowsEnabled() const {return shadows_soft;}
|
||||
bool isDynamicReflectionsEnabled() const {return dynamic_reflections;}
|
||||
bool isHDREnabled() const {return hdr_;}
|
||||
bool isBloomEnabled() const {return bloom_;}
|
||||
bool isMultisamplingEnabled() const {return msaa_;}
|
||||
bool isFXAAEnabled() const {return fxaa_;}
|
||||
bool isAccomodationEnabled() const {return accomodation_;}
|
||||
|
||||
QVariant feature(Feature f) const {return features_.value(int(f));}
|
||||
QVariant setFeature(Feature f, const QVariant & value) {QVariant ret = features_.value(int(f)); features_[int(f)] = value; return ret;}
|
||||
bool isFeatureEnabled(Feature f) const {return features_[int(f)].toBool();}
|
||||
|
||||
int renderMode() const {return (int)rmode;}
|
||||
void setRenderMode(int mode) {rmode = (GLObjectBase::RenderMode)mode;}
|
||||
|
||||
double bloomFactor() const {return m_bloomFactor;}
|
||||
int bloomRadius() const {return m_bloomRadius;}
|
||||
double accomodationTime() const {return accom_time;}
|
||||
double accomodationMaxSpeed() const {return accom_max_speed;}
|
||||
double motionBlurFactor() const {return m_motionBlurFactor;}
|
||||
int motionBlurSteps() const {return m_motionBlurSteps;}
|
||||
|
||||
void addObject(QGraphicsItem * o) {scene()->addItem(o);}
|
||||
void addObject(QWidget * o, Qt::WindowFlags f = Qt::Widget);
|
||||
void addObject(GLObjectBase * o);
|
||||
@@ -211,16 +198,16 @@ protected:
|
||||
void initializeGL();
|
||||
void paintGL();
|
||||
void resizeGL(int width, int height);
|
||||
virtual void mousePressEvent(QMouseEvent * e);
|
||||
virtual void mouseMoveEvent(QMouseEvent * e);
|
||||
virtual void mouseReleaseEvent(QMouseEvent * e);
|
||||
virtual void wheelEvent(QWheelEvent * e);
|
||||
virtual void leaveEvent(QEvent * );
|
||||
virtual void keyPressEvent(QKeyEvent * e) {emit glKeyPressEvent(e); if (e->key() > 0) keys_.insert(e->key());}
|
||||
virtual void keyReleaseEvent(QKeyEvent * e) {emit glKeyReleaseEvent(e); keys_.remove(e->key());}
|
||||
virtual void focusOutEvent(QFocusEvent *) {keys_.clear();}
|
||||
void mousePressEvent(QMouseEvent * e);
|
||||
void mouseMoveEvent(QMouseEvent * e);
|
||||
void mouseReleaseEvent(QMouseEvent * e);
|
||||
void wheelEvent(QWheelEvent * e);
|
||||
void leaveEvent(QEvent * );
|
||||
void keyPressEvent(QKeyEvent * e) {emit glKeyPressEvent(e); if (e->key() > 0) keys_.insert(e->key());}
|
||||
void keyReleaseEvent(QKeyEvent * e) {emit glKeyReleaseEvent(e); keys_.remove(e->key());}
|
||||
void focusOutEvent(QFocusEvent *) {keys_.clear();}
|
||||
|
||||
inline void applyFog();
|
||||
void applyFog();
|
||||
void renderSelection();
|
||||
void renderShadow();
|
||||
|
||||
@@ -232,7 +219,7 @@ private:
|
||||
void objectsCountInternal(int * cnt, GLObjectBase * where) {++(*cnt); foreach (GLObjectBase * i, where->children_) objectsCountInternal(cnt, i);}
|
||||
void removeObjectInternal(GLObjectBase * o, GLObjectBase * where) {foreach (GLObjectBase * i, where->children_) {if (o == i) where->removeChild(i); else removeObjectInternal(o, i);}}
|
||||
void renderSingleSelection(GLObjectBase & o);
|
||||
void renderSingleShadow(GLObjectBase & o);
|
||||
//void renderSingleShadow(GLObjectBase & o);
|
||||
void renderHalo(const GLObjectBase * obj, const int iid, const QColor & color, const double & fill);
|
||||
QList<QGraphicsItem * > collectGraphicItems();
|
||||
void collectGraphicItems(QList<QGraphicsItem * > & list, QGraphicsItem * o);
|
||||
@@ -253,25 +240,24 @@ private:
|
||||
QTime time, ktm_;
|
||||
QPen sel_pen;
|
||||
QBrush sel_brush;
|
||||
GLint max_anisotropic, anisotropicLevel_;
|
||||
GLint max_anisotropic, max_texture_chanels;
|
||||
GLObjectBase::RenderMode rmode;
|
||||
//LightingMode lmode;
|
||||
GLObjectBase * sel_obj, * hov_obj;
|
||||
GLFramebuffer fbo_selection;
|
||||
QGLShaderProgram * shader_select, * shader_halo;
|
||||
QStringList sh_lm_diff, sh_lm_spec;
|
||||
GLRendererBase * renderer_;
|
||||
SelectionMode sel_mode;
|
||||
Qt::MouseButton sel_button;
|
||||
Qt::KeyboardModifier sel_mod;
|
||||
GLRendererBase::RenderingParameters start_rp;
|
||||
double lineWidth_, linearFiltering_, accom_time, accom_max_speed, cur_luminance, m_bloomFactor;
|
||||
QHash<int, QVariant> features_;
|
||||
double lineWidth_;
|
||||
double fogDensity_, fogStart_, fogEnd_, fps_, fps_tm, hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor;
|
||||
int timer, fps_cnt, sh_id_loc, shadow_map_size, dynamic_cubemap_size, motion_blur_steps, m_motionBlurSteps, m_bloomRadius;
|
||||
int timer, fps_cnt, sh_id_loc;
|
||||
bool is_init, fogEnabled_, lightEnabled_, grabMouse_, mouse_first, mouseRotate_, mouseSelect_, customMouseMove_;
|
||||
bool shaders_supported, changed_, cameraOrbit_;
|
||||
bool hoverHalo_, selectionHalo_, mouseThis_, shaders_bind, shadows_, shadows_soft, selecting_;
|
||||
bool dynamic_reflections, hdr_, bloom_, msaa_, fxaa_, accomodation_, m_motionBlurEnabled;
|
||||
bool hoverHalo_, selectionHalo_, mouseThis_, shaders_bind, selecting_;
|
||||
|
||||
public slots:
|
||||
void setBackColor(const QColor & arg) {backColor_ = arg;}
|
||||
@@ -279,8 +265,6 @@ public slots:
|
||||
void setFOV(const double & arg) {camera().fov_ = arg;}
|
||||
void setDepthStart(const double & arg) {camera().depth_start = arg;}
|
||||
void setDepthEnd(const double & arg) {camera().depth_end = arg;}
|
||||
void setLinearFiltering(const bool & arg) {linearFiltering_ = arg;}
|
||||
void setAnisotropicLevel(const int & arg) {anisotropicLevel_ = arg;}
|
||||
void setAmbientColor(const QColor & arg) {ambientColor_ = arg;}
|
||||
void setFogColor(const QColor & arg) {fogColor_ = arg;}
|
||||
void setFogDensity(const double & arg) {fogDensity_ = arg;}
|
||||
@@ -301,23 +285,6 @@ public slots:
|
||||
void setSelectionHaloColor(const QColor & arg) {selectionHaloColor_ = arg;}
|
||||
void setSelectionHaloFillAlpha(const double & arg) {selectionHaloFill_ = arg;}
|
||||
//void setLightingMode(const LightingMode & arg) {lmode = arg;}
|
||||
void setShadowsEnabled(const bool & arg) {shadows_ = arg;}
|
||||
void setSoftShadowsEnabled(const bool & arg) {shadows_soft = arg;}
|
||||
void setShadowMapSize(const int & arg) {shadow_map_size = arg; changed_ = true;}
|
||||
void setDynamicReflectionsMapSize(const int & arg) {dynamic_cubemap_size = arg; changed_ = true;}
|
||||
void setAccomodationTime(const double & arg) {accom_time = arg;}
|
||||
void setAccomodationMaxSpeed(const double & arg) {accom_max_speed = arg;}
|
||||
void setDynamicReflectionsEnabled(const bool & arg) {dynamic_reflections = arg;}
|
||||
void setHDREnabled(const bool & arg) {hdr_ = arg; changed_ = true;}
|
||||
void setBloomEnabled(const bool & arg) {bloom_ = arg; changed_ = true;}
|
||||
void setMultisamplingEnabled(const bool & arg) {msaa_ = arg;}
|
||||
void setFXAAEnabled(const bool & arg) {fxaa_ = arg;}
|
||||
void setAccomodationEnabled(const bool & arg) {accomodation_ = arg;}
|
||||
void setBloomFactor(double bloomFactor) {m_bloomFactor = bloomFactor;}
|
||||
void setBloomRadius(int bloomRadius) {m_bloomRadius = bloomRadius;}
|
||||
void setMotionBlurEnabled(bool motionBlurEnabled) {m_motionBlurEnabled = motionBlurEnabled;}
|
||||
void setMotionBlurFactor(double motionBlurFactor) {m_motionBlurFactor = motionBlurFactor;}
|
||||
void setMotionBlurSteps(int motionBlurSteps) {m_motionBlurSteps = motionBlurSteps;}
|
||||
|
||||
void reloadShaders() {if (renderer_ != 0) renderer_->reloadShaders(); reloadThisShaders();}
|
||||
void deselect() {sel_obj = 0;}
|
||||
|
||||
Reference in New Issue
Block a user