Ocean
Loading...
Searching...
No Matches
GLESUndistortedBackground.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_GLES_UNDISTORTED_BACKGROUND_H
9#define META_OCEAN_RENDERING_GLES_UNDISTORTED_BACKGROUND_H
10
13
19
20namespace Ocean
21{
22
23namespace Rendering
24{
25
26namespace GLESceneGraph
27{
28
29/**
30 * This class implements an undistorted background for the GLESceneGraph render engine.
31 * @ingroup renderinggles
32 */
33class OCEAN_RENDERING_GLES_EXPORT GLESUndistortedBackground :
34 virtual public GLESBackground,
35 virtual public UndistortedBackground
36{
37 friend class GLESFactory;
38
39 public:
40
41 /**
42 * Returns the timestamp of the most recent camera change.
43 * @return The camera type timestamp
44 */
45 const Timestamp& cameraTimestamp() const;
46
47 /**
48 * Returns the normalized camera frustum matrix of the background.
49 * @return The camera frustum matrix
50 */
52
53 /**
54 * Returns the background texture.
55 * @return Background texture
56 */
58
59 /**
60 * Returns the offset texture.
61 * @return Offset texture
62 */
64
65 /**
66 * Returns the number of horizontal elements.
67 * The default value is 20.
68 * @return Horizontal elements
69 */
70 virtual unsigned int horizontalElements() const;
71
72 /**
73 * Returns the number of vertical elements.
74 * The default value is 20.
75 * @return Vertical elements
76 */
77 virtual unsigned int verticalElements() const;
78
79 /**
80 * Sets the number of horizontal elements.
81 * The default value is 20.
82 * @param elements Number of horizontal elements to set
83 */
84 virtual void setHorizontalElements(const unsigned int elements);
85
86 /**
87 * Sets the number of vertical elements.
88 * The default value is 20.
89 * @param elements Number of vertical elements to set
90 */
91 virtual void setVerticalElements(const unsigned int elements);
92
93 /**
94 * Sets the display type of this background object.
95 * @see UndistortedBackground::setDisplayType().
96 */
97 bool setDisplayType(const DisplayType type) override;
98
99 /**
100 * Adds this node and all child node to a traverser.
101 * @see GLESNode::addToTraverser().
102 */
103 void addToTraverser(const GLESFramebuffer& framebuffer, const SquareMatrix4& projectionMatrix, const HomogenousMatrix4& camera_T_parent, const Lights& lights, GLESTraverser& traverser) const override;
104
105 protected:
106
107 /**
108 * Creates a new GLESceneGraph undistorted background object.
109 */
111
112 /**
113 * Destructs a GLESceneGraph undistorted background object.
114 */
116
117 /**
118 * Event function if the camera of the used medium has changed.
119 * @see UndistortedBackground::onMediumCameraChanged().
120 */
121 void onMediumCameraChanged(const Timestamp timestamp) override;
122
123 /**
124 * Rebuilds the primitive vertex, normals and face sets.
125 */
126 virtual void rebuildPrimitive();
127
128 protected:
129
130 /// Triangle strips for the background geometry.
132
133 /// Vertexset for the background geometry.
135
136 /// Textures object holding the 2D texture.
138
139 /// Attribute set holding rendering attributes of the background object.
141
142 /// Number of horizontal elements.
143 unsigned int horizontalElements_ = 20u;
144
145 /// Number of vertical elements.
146 unsigned int verticalElements_ = 20u;
147
148 /// Timestamp of the camera frame type.
150
151 /// The normalized camera frustum matrix mapping 3D points to texture coordinates [0, 1], combining frustum projection, texture scaling, and inverse background transform.
153
154 /// Optional texture storing per-pixel offset data for additional distortion correction during background rendering.
156};
157
158}
159
160}
161
162}
163
164#endif // META_OCEAN_RENDERING_GLES_UNDISTORTED_BACKGROUND_H
This class implements the base class for all GLESceneGraph background nodes.
Definition GLESBackground.h:34
This class implements a class factory for all GLESceneGraph objects.
Definition GLESFactory.h:30
This class implements a base for all GLESceneGraph framebuffers.
Definition rendering/glescenegraph/GLESFramebuffer.h:34
This class implements a traverser for renderables.
Definition GLESTraverser.h:39
This class implements an undistorted background for the GLESceneGraph render engine.
Definition GLESUndistortedBackground.h:36
void addToTraverser(const GLESFramebuffer &framebuffer, const SquareMatrix4 &projectionMatrix, const HomogenousMatrix4 &camera_T_parent, const Lights &lights, GLESTraverser &traverser) const override
Adds this node and all child node to a traverser.
Texture2DRef texture() const
Returns the background texture.
SquareMatrix4 normalizedCameraFrustumMatrix_
The normalized camera frustum matrix mapping 3D points to texture coordinates [0, 1],...
Definition GLESUndistortedBackground.h:152
virtual void setVerticalElements(const unsigned int elements)
Sets the number of vertical elements.
virtual unsigned int verticalElements() const
Returns the number of vertical elements.
~GLESUndistortedBackground() override
Destructs a GLESceneGraph undistorted background object.
const Timestamp & cameraTimestamp() const
Returns the timestamp of the most recent camera change.
TexturesRef textures_
Textures object holding the 2D texture.
Definition GLESUndistortedBackground.h:137
bool setDisplayType(const DisplayType type) override
Sets the display type of this background object.
const SquareMatrix4 & normalizedCameraFrustumMatrix() const
Returns the normalized camera frustum matrix of the background.
void onMediumCameraChanged(const Timestamp timestamp) override
Event function if the camera of the used medium has changed.
AttributeSetRef attributeSet_
Attribute set holding rendering attributes of the background object.
Definition GLESUndistortedBackground.h:140
Texture2DRef offsetTexture() const
Returns the offset texture.
TriangleStripsRef triangleStrips_
Triangle strips for the background geometry.
Definition GLESUndistortedBackground.h:131
Timestamp cameraTimestamp_
Timestamp of the camera frame type.
Definition GLESUndistortedBackground.h:149
virtual void rebuildPrimitive()
Rebuilds the primitive vertex, normals and face sets.
virtual unsigned int horizontalElements() const
Returns the number of horizontal elements.
virtual void setHorizontalElements(const unsigned int elements)
Sets the number of horizontal elements.
GLESUndistortedBackground()
Creates a new GLESceneGraph undistorted background object.
VertexSetRef vertexSet_
Vertexset for the background geometry.
Definition GLESUndistortedBackground.h:134
Texture2DRef offsetTexture_
Optional texture storing per-pixel offset data for additional distortion correction during background...
Definition GLESUndistortedBackground.h:155
This class is the base class for all undistorted backgrounds.
Definition UndistortedBackground.h:46
DisplayType
Definition of different distortion display types.
Definition UndistortedBackground.h:53
This class implements a timestamp.
Definition Timestamp.h:64
std::vector< LightPair > Lights
Definition of a set holding light sources.
Definition GLESLightSource.h:44
The namespace covering the entire Ocean framework.
Definition Accessor.h:15