Ocean
rendering/Framebuffer.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7 
8 #ifndef META_OCEAN_RENDERING_FRAMEBUFFER_H
9 #define META_OCEAN_RENDERING_FRAMEBUFFER_H
10 
16 #include "ocean/rendering/Scene.h"
17 #include "ocean/rendering/View.h"
18 
19 #include "ocean/base/Frame.h"
20 #include "ocean/base/Timestamp.h"
21 
22 #include "ocean/math/Line3.h"
23 
24 namespace Ocean
25 {
26 
27 namespace Rendering
28 {
29 
30 // Forward declaration
31 class Framebuffer;
32 
33 /**
34  * Definition of a smart object reference holding a framebuffer.
35  * @see SmartObjectRef, Framebuffer.
36  * @ingroup rendering
37  */
39 
40 /**
41  * This class is the base class for all rendering framebuffers.
42  * The framebuffer holds the view, the scene and is able to render frames respectively.<br>
43  * A framebuffer instance can be received from the associated engine instance.<br>
44  * @see Engine, Scene, View
45  * @ingroup rendering
46  */
47 class OCEAN_RENDERING_EXPORT Framebuffer : virtual public Object
48 {
49  public:
50 
51  /**
52  * Definition of different framebuffer types.
53  */
55  {
56  /// Invalid framebuffer type.
58  /// Bitmap framebuffer type.
60  /// Window framebuffer type.
61  FRAMEBUFFER_WINDOW
62  };
63 
64  /**
65  * Definition of different render techniques.
66  */
68  {
69  /// Full render technique.
71  /// Render technique with textures.
73  /// Render technique with simple shading.
75  /// Render technique without lighting.
76  TECHNIQUE_UNLIT
77  };
78 
79  /**
80  * Definition of different shadow techniques.
81  */
83  {
84  /// No use of shadows.
86  /// Use of shadow maps.
87  SHADOW_TECHNIQUE_MAPS
88  };
89 
90  /**
91  * This class holds framebuffer configurations.
92  */
94  {
95  public:
96 
97  /// True, for a framebuffer using a stencil buffer.
98  bool useStencilBuffer = false;
99  };
100 
101  /**
102  * Definition of different rendering face modes.
103  * These modes correspond to those defined in PrimitiveAttribute except the meaning of the default mode.<br>
104  * The default face mode gives the responsibility to the renderable object themselves, and does not overwrite the global state.
105  * @see PrimitiveAttribute::FaceMode.
106  */
108 
109  /**
110  * Definition of different rendering face culling modes.
111  * These modes correspond to those defined in PrimitiveAttribute except the meaning of the default culling mode.<br>
112  * The default culling mode gives the responsibility to the renderable object themselves, and does not overwrite the global state.
113  * @see PrimitiveAttribute::CullingMode.
114  */
116 
117  /**
118  * Definition of different face lighting modes.
119  * These modes correspond to those defined in PrimitiveAttribute except the meaning of the default lighting mode.<br>
120  * The default culling mode gives the responsibility to the renderable object themselves, and does not overwrite the global state.
121  * @see PrimitiveAttribute::LightingMode.
122  */
124 
125  /**
126  * Definition of different rendering phantom modes.
127  * These modes correspond to those defined in PhantomMode except the meaning of the default culling mode.<br>
128  * The default culling mode gives the responsibility to the renderable objects themselves, and does not overwrite the global state.
129  */
131 
132  /**
133  * Definition of a callback function for render events.
134  * This callback can be used to apply custom render calls if necessary.
135  * First parameter (eyeIndex): The index of the framebuffer (eye) to be rendered, will always be 0 in a mono view
136  * Second parameter (view_T_world): The current transformation between world and the current view (camera/eye), also known as viewing matrix
137  * Third parameter (projection): The projection matrix of the view (eye)
138  * Fourth parameter (predictedDisplayTime): The predicted timestamp when the image will be display
139  */
141 
142  public:
143 
144  /**
145  * Returns the type of this framebuffer.
146  * @return Framebuffer type
147  */
148  virtual FramebufferType framebufferType() const = 0;
149 
150  /**
151  * Returns the scene connected with this framebuffer.
152  * @return Scene connected with this framebuffer
153  * @see addScenes(), removeScene(), clearScenes().
154  */
155  virtual const Scenes& scenes() const;
156 
157  /**
158  * Returns the view connected with this framebuffer.
159  * @return View connected with this framebuffer
160  * @see setView().
161  */
162  virtual const ViewRef& view() const;
163 
164  /**
165  * Returns the viewport of this framebuffer.
166  * @param left Resulting left framebuffer position in pixel
167  * @param top Resulting top framebuffer position in pixel
168  * @param width Resulting framebuffer width in pixel
169  * @param height Resulting framebuffer height in pixel
170  * @see setViewport().
171  * @exception NotSupportedException Is thrown if this function is not supported
172  */
173  virtual void viewport(unsigned int& left, unsigned int& top, unsigned int& width, unsigned int& height) const;
174 
175  /**
176  * Returns the global face mode of the entire framebuffer.
177  * @return Global framebuffer face mode
178  * @see setFaceMode(), PrimitiveAttribute::faceMode().
179  * @exception NotSupportedException Is thrown if this function is not supported
180  */
181  virtual FaceMode faceMode() const;
182 
183  /**
184  * Returns the global face culling mode of the entire framebuffer.
185  * @return Global framebuffer culling mode
186  * @see setCullingMode(), PrimitiveAttribute::cullingMode().
187  * @exception NotSupportedException Is thrown if this function is not supported
188  */
189  virtual CullingMode cullingMode() const;
190 
191  /**
192  * Returns the global lighting mode of the entire framebuffer.
193  * @return Global framebuffer lighting mode
194  * @see setLightingMode(), PrimitiveAttribute::lightingMode().
195  * @exception NotSupportedException Is thrown if this function is not supported
196  */
197  virtual LightingMode lightingMode() const;
198 
199  /**
200  * Returns the render technique of the entire framebuffer.
201  * @return Framebuffer render technique
202  * @exception NotSupportedException Is thrown if this function is not supported
203  */
205 
206  /**
207  * Returns whether the framebuffer supports quad-buffered stereo views.
208  * @return True, if so
209  * @exception NotSupportedException Is thrown if this function is not supported
210  */
211  virtual bool isQuadbufferedStereoSupported() const;
212 
213  /**
214  * Returns whether the framebuffer supports hardware anti-aliasing.
215  * @param buffers Number of buffers to be checked
216  * @return True, if so
217  * @exception NotSupportedException Is thrown if this function is not supported
218  */
219  virtual bool isAntialiasingSupported(const unsigned int buffers) const;
220 
221  /**
222  * Returns whether the framebuffer uses hardware anti-aliasing.
223  * @return True, if so
224  * @see isAntialiasingSupported().
225  * @exception NotSupportedException Is thrown if this function is not supported
226  */
227  virtual bool isAntialiasing() const;
228 
229  /**
230  * Returns the shadow technique of the entire framebuffer.
231  * @return Framebuffer shadow technique
232  * @exception NotSupportedException Is thrown if this function is not supported
233  */
235 
236  /**
237  * Returns the transformation between display and device.
238  * @return The transformation between display and device
239  */
241 
242  /**
243  * Returns whether the framebuffer is synchronized with the vertical sync signal of the display device.
244  * @return True, if so
245  * @exception NotSupportedException Is thrown if this function is not supported
246  */
247  virtual bool verticalSynchronization() const;
248 
249  /**
250  * Returns all supported extensions of this framebuffer.
251  * @return Extensions separated by a blank
252  * @exception NotSupportedException Is thrown if this function is not supported
253  */
254  virtual std::string extensions() const;
255 
256  /**
257  * Returns whether the framebuffer and thus e.g. the platform supports a specific extension.
258  * @param extension The extension to check, must be valid
259  * @return True, if the extension is supported
260  * @exception NotSupportedException Is thrown if this function is not supported
261  */
262  virtual bool hasExtension(const std::string& extension) const;
263 
264  /**
265  * Adds a new scene to the framebuffer.
266  * @param scene The scene to add
267  * @see removeScene(), clearScenes(), scenes().
268  */
269  virtual void addScene(const SceneRef& scene);
270 
271  /**
272  * Removes a scene from the framebuffer.
273  * @param scene The scene to remove
274  * @see addScene(), clearScenes(), scenes().
275  */
276  virtual void removeScene(const SceneRef& scene);
277 
278  /**
279  * Clears all scenes registered at the framebuffer.
280  * @see addScene(), removeScene(), scenes().
281  */
282  virtual void clearScenes();
283 
284  /**
285  * Connects a view with this framebuffer.
286  * @param view The view to set
287  * @see view().
288  */
289  virtual void setView(const ViewRef& view);
290 
291  /**
292  * Sets the viewport of this framebuffer.
293  * @param left New left position of the framebuffer in pixel
294  * @param top New top position of the framebuffer in pixel
295  * @param width New width of the framebuffer in pixel
296  * @param height New height of the framebuffer in pixel
297  * @see viewport().
298  * @exception NotSupportedException Is thrown if this function is not supported
299  */
300  virtual void setViewport(const unsigned int left, const unsigned int top, const unsigned int width, const unsigned int height);
301 
302  /**
303  * Sets the preferred pixel format of this framebuffer.
304  * This value should be defined before initialization during e.g. a window context.<br>
305  * Beware: There is no guarantee that this pixel format can be provides by the underlying hardware!
306  * @param pixelFormat The preferred pixel format used for rendering
307  * @exception NotSupportedException Is thrown if this function is not supported
308  */
309  virtual void setPreferredPixelFormat(const FrameType::PixelFormat pixelFormat);
310 
311  /**
312  * Sets the global face mode of the entire framebuffer.
313  * This face mode can be used to overwrite the individual modes of all renderable nodes.
314  * @param faceMode Global face mode to set
315  * @see faceMode(), PrimitiveAttribute::setFaceMode().
316  * @exception NotSupportedException Is thrown if this function is not supported
317  */
318  virtual void setFaceMode(const FaceMode faceMode);
319 
320  /**
321  * Sets the global culling mode of the entire framebuffer.
322  * This culling mode can be used to overwrite the individual modes of all renderable nodes.
323  * @param cullingMode Global culling mode to set
324  * @see cullingMode(), PrimitiveAttribute::setCullingMode().
325  * @exception NotSupportedException Is thrown if this function is not supported
326  */
327  virtual void setCullingMode(const CullingMode cullingMode);
328 
329  /**
330  * Sets the global lighting mode of the entire framebuffer.
331  * This lighting mode can be used to overwrite the individual modes of all renderable nodes.
332  * @param lightingMode Global lighting mode to set
333  * @see lightingMode(), PrimitiveAttribute::setLightingMode().
334  * @exception NotSupportedException Is thrown if this function is not supported
335  */
336  virtual void setLightingMode(const LightingMode lightingMode);
337 
338  /**
339  * Sets the rendering technique of the entire framebuffer.
340  * @param technique Render technique to set
341  * @see renderTechnique().
342  * @exception NotSupportedException Is thrown if this function is not supported
343  */
344  virtual void setRenderTechnique(const RenderTechnique technique);
345 
346  /**
347  * Sets whether this framebuffer will support quad-buffered stereo views.
348  * Beware: Set this option once before initialization
349  * @param enable True, if quad-buffered stereo views will be supported
350  * @return True, if succeeded
351  * @exception NotSupportedException Is thrown if this function is not supported
352  */
353  virtual bool setSupportQuadbufferedStereo(const bool enable);
354 
355  /**
356  * Sets whether this framebuffer will support hardware anti-aliasing.
357  * Beware: Set this option once before initialization
358  * @param buffers Number of buffers used for anti-aliasing
359  * @return True, if succeeded
360  * @exception NotSupportedException Is thrown if this function is not supported
361  */
362  virtual bool setSupportAntialiasing(const unsigned int buffers);
363 
364  /**
365  * Sets whether the framebuffer uses hardware anti-aliasing.
366  * The framebuffer must support anti-aliasing to set this option.
367  * @see setSupportAntialiasing().
368  * @param antialiasing True, if so
369  * @return True, if succeeded
370  */
371  virtual bool setAntialiasing(const bool antialiasing);
372 
373  /**
374  * Sets the shadow technique of the entire framebuffer.
375  * @param technique Shadow technique to set
376  * @exception NotSupportedException Is thrown if this function is not supported
377  */
378  virtual void setShadowTechnique(const ShadowTechnique technique);
379 
380  /**
381  * Sets the transformation between display and device.
382  * @param device_T_display The transformation between display and device, must be valid
383  * @return True, if the transformation could be set
384  */
385  virtual bool setDevice_T_display(const HomogenousMatrix4& device_T_display);
386 
387  /**
388  * Sets whether the framebuffer will is synchronized with the vertical sync signal of the display device.
389  * @param synchronize True, if so
390  * @exception NotSupportedException Is thrown if this function is not supported
391  */
392  virtual void setVerticalSynchronization(const bool synchronize);
393 
394  /**
395  * Sets an optional callback function for pre-render events.
396  * The callback function will be invoked after the framebuffer has been cleared but before the scene graph content is rendered into the framebuffer.
397  * @param renderCallback The callback function to be set, an invalid object to remove a previously registered callback
398  * @see setPostRenderCallback().
399  */
400  inline void setPreRenderCallback(const RenderCallback& renderCallback);
401 
402  /**
403  * Sets an optional callback function for pre-render events.
404  * The callback function will be invoked after the scene graph content has been rendered into the framebuffer.
405  * @param renderCallback The callback function to be set, an invalid object to remove a previously registered callback
406  * @see setPreRenderCallback().
407  */
408  inline void setPostRenderCallback(const RenderCallback& renderCallback);
409 
410  /**
411  * Renders the next frame into the framebuffer.
412  * @exception NotSupportedException Is thrown if this function is not supported
413  */
414  virtual void render();
415 
416  /**
417  * Renders the next frame and copies the image content into to a given frame.
418  * @param frame The frame receiving the image content, will be modified if the frame is invalid or if the frame type does not match
419  * @param depthFrame Optional resulting depth frame, nullptr if not of interest
420  * @return True, if succeeded; False, if the function is not supported
421  */
422  virtual bool render(Frame& frame, Frame* depthFrame = nullptr);
423 
424  /**
425  * Returns the renderable object intersected by a given ray.
426  * @param ray Intersection ray
427  * @param renderable Resulting renderable object intersected by the given ray, if any
428  * @param position Resulting intersection point on the renderable object
429  * @return True, if a renderable object has been intersected
430  */
431  virtual bool intersection(const Line3& ray, RenderableRef& renderable, Vector3& position);
432 
433  /**
434  * Makes this framebuffer to the current one.
435  * @see makeNoncurrent().
436  * @exception NotSupportedException Is thrown if this function is not supported
437  */
438  virtual void makeCurrent();
439 
440  /**
441  * Makes this framebuffer to non current.
442  * @see makeCurrent().
443  * @exception NotSupportedException Is thrown if this function is not supported
444  */
445  virtual void makeNoncurrent();
446 
447  /**
448  * Linearizes a given z-buffer depth frame with non-linear (e.g., logarithmic) depth.
449  * @param depthFrame The non-linear depth to linearize, must be valid
450  * @param nearDistance The distance to the near clipping plane of the depth frame, with range (0, infinity)
451  * @param farDistance The distance to the far clipping plane of the depth frame, with range (nearDistance, infinity)
452  * @return True, if succeeded
453  */
454  virtual bool linearizeDepthFrame(Frame& depthFrame, const Scalar nearDistance, const Scalar farDistance) const;
455 
456  /**
457  * Returns the type of this object.
458  * @see Object::type().
459  */
460  ObjectType type() const override;
461 
462  /**
463  * Returns the lock object of this engine.
464  * Beware: Use this lock with caution.
465  * @return Engine lock object
466  */
467  inline Lock& lock() const;
468 
469  protected:
470 
471  /**
472  * Creates a new framebuffer.
473  */
475 
476  /**
477  * Destructs a framebuffer.
478  */
479  ~Framebuffer() override;
480 
481  /**
482  * Initializes the framebuffer.
483  * @param shareFramebuffer Optional framebuffer to share resources with
484  * @return True, if succeeded
485  */
486  virtual bool initialize(const FramebufferRef& shareFramebuffer = FramebufferRef());
487 
488  /**
489  * Releases the framebuffer.
490  * This function will be called one before the framebuffer will be destroyed.
491  */
492  virtual void release();
493 
494  protected:
495 
496  /// Scenes registered at the framebuffer.
498 
499  /// View connected with the framebuffer.
501 
502  /// Optional callback function for pre-render events.
504 
505  /// Optional callback function for post-render events.
507 };
508 
509 inline Lock& Framebuffer::lock() const
510 {
511  return objectLock;
512 }
513 
514 inline void Framebuffer::setPreRenderCallback(const RenderCallback& renderCallback)
515 {
516  const ScopedLock scopedLock(objectLock);
517 
518  preRenderCallback_ = renderCallback;
519 }
520 
521 inline void Framebuffer::setPostRenderCallback(const RenderCallback& renderCallback)
522 {
523  const ScopedLock scopedLock(objectLock);
524 
525  postRenderCallback_ = renderCallback;
526 }
527 
528 }
529 
530 }
531 
532 #endif // META_OCEAN_RENDERING_FRAMEBUFFER_H
This class implements Ocean's image class.
Definition: Frame.h:1760
PixelFormat
Definition of all pixel formats available in the Ocean framework.
Definition: Frame.h:183
This class implements an infinite line in 3D space.
Definition: Line3.h:70
This class implements a recursive lock object.
Definition: Lock.h:31
This class holds framebuffer configurations.
Definition: rendering/Framebuffer.h:94
This class is the base class for all rendering framebuffers.
Definition: rendering/Framebuffer.h:48
virtual bool isAntialiasingSupported(const unsigned int buffers) const
Returns whether the framebuffer supports hardware anti-aliasing.
virtual bool intersection(const Line3 &ray, RenderableRef &renderable, Vector3 &position)
Returns the renderable object intersected by a given ray.
virtual void render()
Renders the next frame into the framebuffer.
virtual bool hasExtension(const std::string &extension) const
Returns whether the framebuffer and thus e.g.
Callback< void, const size_t, const HomogenousMatrix4, const SquareMatrix4, const Timestamp > RenderCallback
Definition of a callback function for render events.
Definition: rendering/Framebuffer.h:140
virtual void viewport(unsigned int &left, unsigned int &top, unsigned int &width, unsigned int &height) const
Returns the viewport of this framebuffer.
virtual HomogenousMatrix4 device_T_display() const
Returns the transformation between display and device.
virtual bool initialize(const FramebufferRef &shareFramebuffer=FramebufferRef())
Initializes the framebuffer.
virtual void setViewport(const unsigned int left, const unsigned int top, const unsigned int width, const unsigned int height)
Sets the viewport of this framebuffer.
virtual RenderTechnique renderTechnique() const
Returns the render technique of the entire framebuffer.
PhantomAttribute::PhantomMode PhantomMode
Definition of different rendering phantom modes.
Definition: rendering/Framebuffer.h:130
FramebufferType
Definition of different framebuffer types.
Definition: rendering/Framebuffer.h:55
@ FRAMEBUFFER_BITMAP
Bitmap framebuffer type.
Definition: rendering/Framebuffer.h:59
@ FRAMEBUFFER_INVALID
Invalid framebuffer type.
Definition: rendering/Framebuffer.h:57
RenderCallback postRenderCallback_
Optional callback function for post-render events.
Definition: rendering/Framebuffer.h:506
virtual bool isAntialiasing() const
Returns whether the framebuffer uses hardware anti-aliasing.
void setPreRenderCallback(const RenderCallback &renderCallback)
Sets an optional callback function for pre-render events.
Definition: rendering/Framebuffer.h:514
PrimitiveAttribute::LightingMode LightingMode
Definition of different face lighting modes.
Definition: rendering/Framebuffer.h:123
RenderTechnique
Definition of different render techniques.
Definition: rendering/Framebuffer.h:68
@ TECHNIQUE_TEXTURED
Render technique with textures.
Definition: rendering/Framebuffer.h:72
@ TECHNIQUE_FULL
Full render technique.
Definition: rendering/Framebuffer.h:70
@ TECHNIQUE_SHADED
Render technique with simple shading.
Definition: rendering/Framebuffer.h:74
RenderCallback preRenderCallback_
Optional callback function for pre-render events.
Definition: rendering/Framebuffer.h:503
virtual void removeScene(const SceneRef &scene)
Removes a scene from the framebuffer.
Framebuffer()
Creates a new framebuffer.
virtual bool setAntialiasing(const bool antialiasing)
Sets whether the framebuffer uses hardware anti-aliasing.
virtual void makeCurrent()
Makes this framebuffer to the current one.
ObjectType type() const override
Returns the type of this object.
virtual void setView(const ViewRef &view)
Connects a view with this framebuffer.
virtual void makeNoncurrent()
Makes this framebuffer to non current.
virtual void setPreferredPixelFormat(const FrameType::PixelFormat pixelFormat)
Sets the preferred pixel format of this framebuffer.
virtual void setVerticalSynchronization(const bool synchronize)
Sets whether the framebuffer will is synchronized with the vertical sync signal of the display device...
virtual FramebufferType framebufferType() const =0
Returns the type of this framebuffer.
virtual bool setSupportAntialiasing(const unsigned int buffers)
Sets whether this framebuffer will support hardware anti-aliasing.
virtual void setFaceMode(const FaceMode faceMode)
Sets the global face mode of the entire framebuffer.
void setPostRenderCallback(const RenderCallback &renderCallback)
Sets an optional callback function for pre-render events.
Definition: rendering/Framebuffer.h:521
virtual bool verticalSynchronization() const
Returns whether the framebuffer is synchronized with the vertical sync signal of the display device.
Lock & lock() const
Returns the lock object of this engine.
Definition: rendering/Framebuffer.h:509
virtual void addScene(const SceneRef &scene)
Adds a new scene to the framebuffer.
PrimitiveAttribute::FaceMode FaceMode
Definition of different rendering face modes.
Definition: rendering/Framebuffer.h:107
virtual bool render(Frame &frame, Frame *depthFrame=nullptr)
Renders the next frame and copies the image content into to a given frame.
Scenes framebufferScenes
Scenes registered at the framebuffer.
Definition: rendering/Framebuffer.h:497
virtual void setCullingMode(const CullingMode cullingMode)
Sets the global culling mode of the entire framebuffer.
~Framebuffer() override
Destructs a framebuffer.
virtual bool setDevice_T_display(const HomogenousMatrix4 &device_T_display)
Sets the transformation between display and device.
virtual void setLightingMode(const LightingMode lightingMode)
Sets the global lighting mode of the entire framebuffer.
virtual bool linearizeDepthFrame(Frame &depthFrame, const Scalar nearDistance, const Scalar farDistance) const
Linearizes a given z-buffer depth frame with non-linear (e.g., logarithmic) depth.
PrimitiveAttribute::CullingMode CullingMode
Definition of different rendering face culling modes.
Definition: rendering/Framebuffer.h:115
virtual std::string extensions() const
Returns all supported extensions of this framebuffer.
virtual void release()
Releases the framebuffer.
virtual const ViewRef & view() const
Returns the view connected with this framebuffer.
virtual const Scenes & scenes() const
Returns the scene connected with this framebuffer.
virtual CullingMode cullingMode() const
Returns the global face culling mode of the entire framebuffer.
ShadowTechnique
Definition of different shadow techniques.
Definition: rendering/Framebuffer.h:83
@ SHADOW_TECHNIQUE_NONE
No use of shadows.
Definition: rendering/Framebuffer.h:85
virtual void setRenderTechnique(const RenderTechnique technique)
Sets the rendering technique of the entire framebuffer.
virtual ShadowTechnique shadowTechnique() const
Returns the shadow technique of the entire framebuffer.
ViewRef framebufferView
View connected with the framebuffer.
Definition: rendering/Framebuffer.h:500
virtual bool setSupportQuadbufferedStereo(const bool enable)
Sets whether this framebuffer will support quad-buffered stereo views.
virtual LightingMode lightingMode() const
Returns the global lighting mode of the entire framebuffer.
virtual void clearScenes()
Clears all scenes registered at the framebuffer.
virtual bool isQuadbufferedStereoSupported() const
Returns whether the framebuffer supports quad-buffered stereo views.
virtual FaceMode faceMode() const
Returns the global face mode of the entire framebuffer.
virtual void setShadowTechnique(const ShadowTechnique technique)
Sets the shadow technique of the entire framebuffer.
This class is the base class for all rendering objects.
Definition: Object.h:54
Lock objectLock
Lock for the object.
Definition: Object.h:305
ObjectType
Definition of different object type.
Definition: Object.h:63
PhantomMode
Definition of different phantom modes.
Definition: PhantomAttribute.h:43
FaceMode
Defines different face rendering modes.
Definition: PrimitiveAttribute.h:42
CullingMode
Defines different face culling modes.
Definition: PrimitiveAttribute.h:57
LightingMode
Definition of different lighting modes.
Definition: PrimitiveAttribute.h:74
This class implements a scoped lock object for recursive lock objects.
Definition: Lock.h:135
float Scalar
Definition of a scalar type.
Definition: Math.h:128
SmartObjectRef< Framebuffer > FramebufferRef
Definition of a smart object reference holding a framebuffer.
Definition: rendering/Framebuffer.h:31
std::vector< SceneRef > Scenes
Definition of a vector holding scenes.
Definition: rendering/Scene.h:35
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15