Carna  Version 3.3.2
MaskRenderingStage.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Leonid Kostrykin
3  *
4  */
5 
6 #ifndef MASKRENDERINGSTAGE_H_6014714286
7 #define MASKRENDERINGSTAGE_H_6014714286
8 
10 #include <Carna/Carna.h>
11 #include <memory>
12 
17 namespace Carna
18 {
19 
20 namespace presets
21 {
22 
23 
24 
25 // ----------------------------------------------------------------------------------
26 // MaskRenderingStage
27 // ----------------------------------------------------------------------------------
28 
59 class CARNA_LIB MaskRenderingStage : public VolumeRenderingStage
60 {
61 
62  struct Details;
63  const std::unique_ptr< Details > pimpl;
64 
65 public:
66 
67  const static base::Color DEFAULT_COLOR;
68  const static unsigned int DEFAULT_ROLE_MASK;
69 
74  const unsigned int maskRole;
75 
83  explicit MaskRenderingStage( unsigned int geometryType, unsigned int maskRole = DEFAULT_ROLE_MASK );
84 
88  virtual ~MaskRenderingStage();
89 
90  MaskRenderingStage* clone() const override;
91 
92  virtual void reshape( base::FrameRenderer& fr, unsigned int width, unsigned int height ) override;
93 
97  virtual void renderPass
98  ( const base::math::Matrix4f& viewTransform
99  , base::RenderTask& rt
100  , const base::Viewport& vp ) override;
101 
105  const base::Color& color() const;
106 
110  void setColor( const base::Color& color );
111 
115  bool renderBorders() const;
116 
120  void setRenderBorders( bool borders );
121 
122 protected:
123 
124  virtual unsigned int loadVideoResources() override;
125 
126  virtual void createVolumeSamplers( const std::function< void( unsigned int, base::Sampler* ) >& registerSampler ) override;
127 
131  virtual const base::ShaderProgram& acquireShader() override;
132 
136  virtual const std::string& uniformName( unsigned int role ) const override;
137 
141  virtual void configureShader() override;
142 
146  virtual void configureShader( const base::Renderable& ) override;
147 
148 }; // DRRStage
149 
150 
151 
152 } // namespace Carna :: presets
153 
154 } // namespace Carna
155 
156 #endif // MASKRENDERINGSTAGE_H_6014714286
Defines logic for rendering frames from given scenes.
Definition: FrameRenderer.h:69
Maintains an OpenGL shader program. Realizes the RAII-idiom.
Definition: ShaderProgram.h:47
Invokes the rendering stages of the frame renderer successively.
Definition: RenderTask.h:40
Maintains an OpenGL texture sampler object. This class realizes the RAII-idiom.
Definition: Sampler.h:44
Defines abstract base class for rendering stages that render volume geometries in the scene...
Represents a color. Objects from this class are copyable and assignable.
Definition: Color.h:41
Eigen::Matrix< float, 4, 4, Eigen::ColMajor > Matrix4f
Defines matrix.
Definition: math.h:193
static const base::Color DEFAULT_COLOR
Holds the default rendering color.
const unsigned int maskRole
Holds the role that mask volume data is expected to take when attached to base::Geometry nodes...
Defines a rendering viewport. The viewport is a property of the current OpenGL context.
Definition: Viewport.h:48
Represents a Geometry object that has been queued into a RenderQueue. The object&#39;s model-view transfo...
Definition: Renderable.h:45
Defines Carna::presets::VolumeRenderingStage.
static const unsigned int DEFAULT_ROLE_MASK
Holds the default value of maskRole.