Ocean
Loading...
Searching...
No Matches
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
18
19#include "ocean/base/Frame.h"
21
22#include "ocean/math/Line3.h"
23
24namespace Ocean
25{
26
27namespace Rendering
28{
29
30// Forward declaration
31class 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 */
47class 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
509inline Lock& Framebuffer::lock() const
510{
511 return objectLock;
512}
513
514inline void Framebuffer::setPreRenderCallback(const RenderCallback& renderCallback)
515{
516 const ScopedLock scopedLock(objectLock);
517
518 preRenderCallback_ = renderCallback;
519}
520
521inline 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 a container for callback functions.
Definition Callback.h:3456
This class implements Ocean's image class.
Definition Frame.h:1808
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:68
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 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 const Scenes & scenes() const
Returns the scene connected with this framebuffer.
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 smart rendering object reference.
Definition rendering/ObjectRef.h:34
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:129
SmartObjectRef< Framebuffer > FramebufferRef
Definition of a smart object reference holding a framebuffer.
Definition rendering/Framebuffer.h:38
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