MeshLib C++ Docs
Loading...
Searching...
No Matches
MRShadowsGL.h
Go to the documentation of this file.
1#pragma once
2#include "MRViewerFwd.h"
3#include "MRMesh/MRVector2.h"
4#include "MRMesh/MRVector4.h"
5#include "MRMesh/MRColor.h"
6#include "MRRenderGLHelpers.h"
7#include <boost/signals2/connection.hpp>
8
9namespace MR
10{
13
14
18class MRVIEWER_CLASS ShadowsGL
19{
20public:
22 MRVIEWER_API ~ShadowsGL();
23
25 MRVIEWER_API void enable( bool on );
26 bool isEnabled() const { return enabled_; }
27
29 const Vector2f& getShadowShift() const { return shadowShift_; }
30 MRVIEWER_API void setShadowShift( const Vector2f& shift );
31
32 const Vector4f& getShadowColor() const { return shadowColor_; }
33 MRVIEWER_API void setShadowColor( const Vector4f& color );
34
35 float getBlurRadius() const { return blurRadius_; }
36 MRVIEWER_API void setBlurRadius( float radius );
37
41 float getQuality() const { return quality_; }
42 MRVIEWER_API void setQuality( float quality );
43private:
45 Vector2f shadowShift_ = Vector2f( 0.0, 0.0 );
46 Vector4f shadowColor_ = Vector4f( Color::yellow() );
47 float blurRadius_{ 40.0f };
48
49 float quality_{ 0.25f };
50 void preDraw_();
51 void postDraw_();
52 void postResize_( int x, int y );
53
54 void drawLowSize_();
55 void convolveX_();
56 void convolveY_();
57 void drawShadow_( bool convX );
58 void drawTexture_( bool scene, bool downsample );
59
60 boost::signals2::connection preDrawConnection_;
61 boost::signals2::connection postDrawConnection_;
62 boost::signals2::connection postResizeConnection_;
63
64 Vector2i sceneSize_;
65 Vector2i lowSize_;
66
67 QuadTextureVertexObject quadObject_;
68
69 FramebufferData sceneFramebuffer_;
70 FramebufferData lowSizeFramebuffer_;
71 FramebufferData convolutionXFramebuffer_;
72
73 bool enabled_{ false };
74};
75
76}
Definition MRShadowsGL.h:19
const Vector4f & getShadowColor() const
Definition MRShadowsGL.h:32
float getQuality() const
Definition MRShadowsGL.h:41
MRVIEWER_API ~ShadowsGL()
MRVIEWER_API void setShadowShift(const Vector2f &shift)
const Vector2f & getShadowShift() const
shift in screen space
Definition MRShadowsGL.h:29
MR_ADD_CTOR_DELETE_MOVE(ShadowsGL)
MRVIEWER_API void setBlurRadius(float radius)
MRVIEWER_API void setShadowColor(const Vector4f &color)
MRVIEWER_API void enable(bool on)
subscribe to viewer events on enable, unsubscribe on disable
float getBlurRadius() const
Definition MRShadowsGL.h:35
MRVIEWER_API void setQuality(float quality)
bool isEnabled() const
Definition MRShadowsGL.h:26
only for bindings generation
Definition MRCameraOrientationPlugin.h:8