Equalizer  1.13.0
Parallel Rendering Framework
renderContext.h
1 
2 /* Copyright (c) 2006-2016, Stefan Eilemann <eile@equalizergraphics.com>
3  *
4  * This library is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Lesser General Public License version 2.1 as published
6  * by the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11  * details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library; if not, write to the Free Software Foundation, Inc.,
15  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16  */
17 
18 #ifndef EQFABRIC_RENDERCONTEXT_H
19 #define EQFABRIC_RENDERCONTEXT_H
20 
21 #include <eq/fabric/colorMask.h> // member
22 #include <eq/fabric/eye.h> // member
23 #include <eq/fabric/pixel.h> // member
24 #include <eq/fabric/pixelViewport.h> // member
25 #include <eq/fabric/range.h> // member
26 #include <eq/fabric/subPixel.h> // member
27 #include <eq/fabric/vmmlib.h>
28 #include <eq/fabric/zoom.h> // member
29 #include <co/objectVersion.h>
30 #include <eq/fabric/api.h>
31 
32 namespace eq
33 {
34 namespace fabric
35 {
38 {
39 public:
40  EQFABRIC_API RenderContext();
41  EQFABRIC_API void apply( const Tile& tile, bool local );
42 
43  Frustumf frustum;
44  Frustumf ortho;
45 
46  Matrix4f headTransform;
47  Matrix4f orthoTransform;
48 
49  co::ObjectVersion view;
50  uint128_t frameID;
53  Vector4i overdraw;
55 
56  Vector2i offset;
60 
61  uint32_t buffer;
62  uint32_t taskID;
63  uint32_t period;
64  uint32_t phase;
65  Eye eye;
66  uint32_t alignToEight;
67 
69  bool alignDummy[28];
70 };
71 
72 EQFABRIC_API std::ostream& operator << ( std::ostream&, const RenderContext& );
73 }
74 }
75 
76 namespace lunchbox
77 {
78 template<> inline void byteswap( eq::fabric::RenderContext& value )
79 {
80  byteswap( value.frustum );
81  byteswap( value.ortho );
82 
83  byteswap( value.headTransform );
84  byteswap( value.orthoTransform );
85 
86  byteswap( value.view );
87  byteswap( value.frameID );
88  byteswap( value.pvp );
89  byteswap( value.pixel );
90  byteswap( value.overdraw );
91  byteswap( value.vp );
92 
93  byteswap( value.offset );
94  byteswap( value.range );
95  byteswap( value.subPixel );
96  byteswap( value.zoom );
97 
98  byteswap( value.buffer );
99  byteswap( value.taskID );
100  byteswap( value.period );
101  byteswap( value.phase );
102  byteswap( value.eye );
103 
104  byteswap( value.bufferMask );
105 }
106 }
107 
108 #endif // EQFABRIC_RENDERCONTEXT_H
uint32_t buffer
buffer as passed to glDrawBuffer()
Definition: renderContext.h:61
A zoom specification with methods for manipulation.
Definition: zoom.h:35
Zoom zoom
up/downsampling wrt to dest
Definition: renderContext.h:59
Defines export visibility macros for library EqualizerFabric.
A fractional viewport with methods for manipulation.
Definition: viewport.h:34
Holds a subpixel decomposition specification along with some methods for manipulation.
Definition: subPixel.h:42
Defines which parts of the color buffer are to be written.
Definition: colorMask.h:34
Range range
database-range wrt to dest channel
Definition: renderContext.h:57
Viewport vp
fractional viewport wrt dest view
Definition: renderContext.h:54
co::ObjectVersion view
destination view id and version
Definition: renderContext.h:49
Pixel pixel
pixel decomposition wrt to dest
Definition: renderContext.h:52
uint32_t period
DPlex period.
Definition: renderContext.h:63
Eye
Eye pass bit mask for which is enabled.
Definition: fabric/eye.h:33
ColorMask bufferMask
color mask for anaglyph stereo
Definition: renderContext.h:68
uint32_t phase
DPlex phase.
Definition: renderContext.h:64
Matrix4f orthoTransform
orthographic frustum transform
Definition: renderContext.h:47
SubPixel subPixel
subpixel decomposition wrt to dest
Definition: renderContext.h:58
Holds a pixel decomposition specification with methods for manipulation.
Definition: pixel.h:40
The Equalizer client library.
Definition: eq/agl/types.h:23
Matrix4f headTransform
frustum transform for modelview
Definition: renderContext.h:46
Eye eye
current eye pass
Definition: renderContext.h:65
Vector2i offset
absolute position wrt dest channel
Definition: renderContext.h:56
Frustumf ortho
ortho frustum for projection matrix
Definition: renderContext.h:44
PixelViewport pvp
pixel viewport of channel wrt window
Definition: renderContext.h:51
The context applied to a channel during rendering operations.
Definition: renderContext.h:37
Holds a 2D pixel viewport with methods for manipulation.
Definition: pixelViewport.h:34
A fractional database range with methods for manipulation.
Definition: range.h:31
uint128_t frameID
identifier from Config::beginFrame
Definition: renderContext.h:50
Frustumf frustum
frustum for projection matrix
Definition: renderContext.h:43