MeVisLab Toolbox Reference
SoMultiPassFramebufferSampler.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2007, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #ifndef SO_MULTI_PASS_FRAMEBUFFER_SAMPLER_H
14 #define SO_MULTI_PASS_FRAMEBUFFER_SAMPLER_H
15 
16 
18 
19 #include "SoShaderSystem.h"
21 #include <Inventor/fields/SoSFUInt32.h>
22 #include <Inventor/fields/SoSFFloat.h>
23 #include <Inventor/fields/SoSFBool.h>
24 #include <Inventor/SbLinear.h>
25 
26 class SoGLFramebufferObject;
27 class SoGLTexture;
28 
30 class INVENTOR_SHADER_API SoMultiPassFramebufferSampler : public SoFramebufferSampler2D
31 {
33 
34  SO_NODE_HEADER(SoMultiPassFramebufferSampler);
35 
36  public:
37 
39  SoSFUInt32 numPasses;
40 
42  SoSFFloat epsilon;
43 
45  SoSFFloat value;
46 
48  SoSFUInt32 id;
49 
51  SoSFBool initSamplerCopy;
52 
55 
56  SoINTERNAL public:
57 
59  static void initClass();
60 
62  unsigned int curPass() {
63  return _curPass;
64  }
65 
66  SoEXTENDER public:
67 
68  SoGLTexture *getCopyColorBuffer() const {
69  return _copyColorBuffer;
70  }
71 
72  protected:
73 
74  unsigned int _curPass;
75  SbVec2s _prevSize;
76  uint32_t _prevFormat;
77 
80 
82  void applyRenderAction(SoState *) override;
83 
84  private:
85 
86  SoGLFramebufferObject *_copyFramebufferObject;
87  SoGLTexture *_copyColorBuffer;
88 };
89 
90 #endif // _SO_MULTIPASS_FRAMEBUFFER_SAMPLER_
Open Inventor sampler node that gets it's 2D image from a framebuffer object.
Open Inventor node to accumulate multiple render passes in a sampler.
void applyRenderAction(SoState *) override
Function applies render action to children multiple times.
SoSFFloat epsilon
Smallest value that keeps the node still iterating.
SoSFUInt32 id
Id that is used to identify this node if nested.
unsigned int curPass()
Current render pass, starting with '0'. Only valid if read by child nodes!
~SoMultiPassFramebufferSampler() override
Destructor.
SoMultiPassFramebufferSampler()
Constructor.
static void initClass()
Initialize class with runtime type system.
SoSFFloat value
Value to compare against 'epsilon'.
SoSFBool initSamplerCopy
Initialize the copy FBO texture with all zero.
SoSFUInt32 numPasses
Number of times to traverse the subgraph below.
Abstract Open Inventor base class for sampler nodes.
Definition: SoSampler.h:30