Ocean
GIBox.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_GI_BOX_H
9 #define META_OCEAN_RENDERING_GI_BOX_H
10 
14 
15 #include "ocean/rendering/Box.h"
16 
17 namespace Ocean
18 {
19 
20 namespace Rendering
21 {
22 
23 namespace GlobalIllumination
24 {
25 
26 /**
27  * This class implements a GLESceneGraph box object.
28  * @ingroup renderinggles
29  */
30 class OCEAN_RENDERING_GI_EXPORT GIBox :
31  virtual public GIShape,
32  virtual protected GITriangles,
33  virtual public Box
34 {
35  friend class GIFactory;
36 
37  public:
38 
39  /**
40  * Returns the dimensions of the box.
41  * @see Box::size().
42  */
43  Vector3 size() const override;
44 
45  /**
46  * Sets the dimensions of the box.
47  * @see Box::setSize().
48  */
49  bool setSize(const Vector3& size) override;
50 
51  /**
52  * Returns the bounding box of this renderable object.
53  * @see GIRenderable boundingBox().
54  */
55  BoundingBox boundingBox() const override;
56 
57  /**
58  * Returns the bounding sphere of this renderable object.
59  * @see GIRenderable::boundingSphere().
60  */
61  BoundingSphere boundingSphere() const override;
62 
63  /**
64  * Returns the type of this object.
65  * @see Object::type().
66  */
67  ObjectType type() const override;
68 
69  /**
70  * Builds the tracing object for this node and adds it to an already existing group of tracing objects.
71  * @see GIRenderable::buildTracing().
72  */
73  void buildTracing(TracingGroup& group, const HomogenousMatrix4& modelTransform, const AttributeSetRef& attributes, const LightSources& lightSources) const override;
74 
75  protected:
76 
77  /**
78  * Creates a new box object.
79  */
80  GIBox();
81 
82  /**
83  * Destructs a box object.
84  */
85  ~GIBox() override;
86 
87  /**
88  * Rebuilds the primitive vertex, normals and face sets.
89  */
91 
92  protected:
93 
94  /// Dimension of the box.
96 
97  /// Diagonal of the box.
99 };
100 
101 }
102 
103 }
104 
105 }
106 
107 #endif // META_OCEAN_RENDERING_GI_BOX_H
This class implements a 3D bounding box.
Definition: BoundingBox.h:23
This class implements a bounding sphere.
Definition: BoundingSphere.h:23
This class is the base class for all boxes.
Definition: rendering/Box.h:37
This class implements a GLESceneGraph box object.
Definition: GIBox.h:34
Scalar boxDiagonal
Diagonal of the box.
Definition: GIBox.h:98
Vector3 boxSize
Dimension of the box.
Definition: GIBox.h:95
void rebuildPrimitives()
Rebuilds the primitive vertex, normals and face sets.
Vector3 size() const override
Returns the dimensions of the box.
bool setSize(const Vector3 &size) override
Sets the dimensions of the box.
~GIBox() override
Destructs a box object.
BoundingSphere boundingSphere() const override
Returns the bounding sphere of this renderable object.
BoundingBox boundingBox() const override
Returns the bounding box of this renderable object.
ObjectType type() const override
Returns the type of this object.
void buildTracing(TracingGroup &group, const HomogenousMatrix4 &modelTransform, const AttributeSetRef &attributes, const LightSources &lightSources) const override
Builds the tracing object for this node and adds it to an already existing group of tracing objects.
This class implements a class factory for all Global Illumination objects.
Definition: GIFactory.h:30
This class is the base class for all Global Illumination shape objects.
Definition: GIShape.h:34
This class implements triangles.
Definition: GITriangles.h:32
This class implements a group of tracing objects.
Definition: TracingGroup.h:28
ObjectType
Definition of different object type.
Definition: Object.h:63
float Scalar
Definition of a scalar type.
Definition: Math.h:128
std::vector< LightPair > LightSources
Definition of a vector holding light pairs.
Definition: GILightSource.h:40
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15