20 #ifndef EQFABRIC_CHANNEL_H 21 #define EQFABRIC_CHANNEL_H 23 #include <eq/fabric/object.h> 24 #include <eq/fabric/paths.h> 25 #include <eq/fabric/renderContext.h> 26 #include <eq/fabric/types.h> 33 template <
class W,
class C>
50 bool isDestination()
const 52 return _data.nativeContext.view.identifier != 0;
56 void setViewVersion(
const co::ObjectVersion& view);
59 const co::ObjectVersion& getViewVersion()
const 61 return _data.nativeContext.view;
68 EQFABRIC_INL
void setViewport(
const Viewport& vp);
71 virtual void notifyViewportChanged();
76 return _data.nativeContext.pvp;
92 EQFABRIC_INL
void setNearFar(
const float nearPlane,
const float farPlane);
101 EQFABRIC_INL VisitorResult
accept(Visitor& visitor);
104 EQFABRIC_INL VisitorResult
accept(Visitor& visitor)
const;
119 void setOverdraw(
const Vector4i& overdraw);
122 EQFABRIC_INL ChannelPath getPath()
const;
124 EQFABRIC_INL
virtual void backup();
125 EQFABRIC_INL
virtual void restore();
268 const Vector4i&
getOverdraw()
const {
return _context->overdraw; }
286 IATTR_ALL = IATTR_LAST + 5
294 SATTR_ALL = SATTR_LAST + 5
313 virtual bool omitOutput()
const {
return false; }
314 virtual void output(std::ostream&)
const {}
317 EQFABRIC_INL
explicit Channel(W* parent);
326 EQFABRIC_INL
virtual void serialize(co::DataOStream& os,
327 const uint64_t dirtyBits);
329 EQFABRIC_INL
virtual void deserialize(co::DataIStream& is,
330 const uint64_t dirtyBits);
333 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits);
340 _overrideContext = context;
341 _context = &_overrideContext;
345 void resetContext() { _context = &_data.nativeContext; }
349 return _data.nativeContext;
354 void setIAttribute(
const IAttribute attr,
const int32_t value)
356 _iAttributes[attr] = value;
357 setDirty(DIRTY_ATTRIBUTES);
361 void setSAttribute(
const SAttribute attr,
const std::string& value)
363 _sAttributes[attr] = value;
364 setDirty(DIRTY_ATTRIBUTES);
368 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
371 DIRTY_ATTRIBUTES = Object::DIRTY_CUSTOM << 0,
372 DIRTY_VIEWPORT = Object::DIRTY_CUSTOM << 1,
373 DIRTY_PIXELVIEWPORT = Object::DIRTY_CUSTOM << 2,
374 DIRTY_MEMBER = Object::DIRTY_CUSTOM << 3,
375 DIRTY_FRUSTUM = Object::DIRTY_CUSTOM << 4,
376 DIRTY_CAPABILITIES = Object::DIRTY_CUSTOM << 5,
377 DIRTY_CHANNEL_BITS = DIRTY_ATTRIBUTES | DIRTY_VIEWPORT |
378 DIRTY_PIXELVIEWPORT | DIRTY_MEMBER |
379 DIRTY_FRUSTUM | DIRTY_OBJECT_BITS
383 virtual uint64_t getRedistributableBits()
const 385 return DIRTY_CHANNEL_BITS;
388 virtual void updateCapabilities() {}
396 : capabilities(LB_BIT_ALL_64)
405 uint64_t capabilities;
418 int32_t _iAttributes[IATTR_ALL];
421 std::string _sAttributes[SATTR_ALL];
424 template <
class W,
class C>
425 EQFABRIC_INL std::ostream& operator<<(std::ostream&, const Channel<W, C>&);
429 #endif // EQFABRIC_CHANNEL_H uint32_t buffer
buffer as passed to glDrawBuffer()
const PixelViewport & getPixelViewport() const
A zoom specification with methods for manipulation.
EQFABRIC_INL uint64_t getCapabilities() const
Zoom zoom
up/downsampling wrt to dest
const Frustumf & getPerspective() const
uint32_t getPhase() const
static EQFABRIC_INL const std::string & getSAttributeString(const SAttribute attr)
A fractional viewport with methods for manipulation.
Holds a subpixel decomposition specification along with some methods for manipulation.
Defines which parts of the color buffer are to be written.
const PixelViewport & getNativePixelViewport() const
Range range
database-range wrt to dest channel
LeafVisitor< C > Visitor
The channel visitor type.
uint32_t getReadBuffer() const
bool hasFixedViewport() const
Viewport vp
fractional viewport wrt dest view
static EQFABRIC_INL const std::string & getIAttributeString(const IAttribute attr)
IAttribute
Integer attributes for a channel.
A visitor to traverse leaf nodes of a graph.
const ColorMask & getDrawBufferMask() const
Pixel pixel
pixel decomposition wrt to dest
EQFABRIC_INL const std::string & getSAttribute(const SAttribute attr) const
W Parent
The parent window type.
uint32_t period
DPlex period.
uint32_t getTaskID() const
EQFABRIC_INL void setNearFar(const float nearPlane, const float farPlane)
Set the near and far planes for this channel.
const SubPixel & getSubPixel() const
const Vector2i & getPixelOffset() const
Get the channel's current position wrt the destination channel.
DirtyBits
The changed parts of the object since the last pack().
Eye
Eye pass bit mask for which rendering is enabled.
ColorMask bufferMask
color mask for anaglyph stereo
uint32_t phase
DPlex phase.
const RenderContext & getContext() const
SAttribute
String attributes.
virtual bool useOrtho() const
Select perspective or orthographic rendering.
Use a send token for output frames (OFF, ON)
EQFABRIC_INL int32_t getIAttribute(const IAttribute attr) const
uint32_t getPeriod() const
Matrix4f orthoTransform
orthographic frustum transform
SubPixel subPixel
subpixel decomposition wrt to dest
const Viewport & getViewport() const
Holds a pixel decomposition specification with methods for manipulation.
const W * getWindow() const
The Equalizer client library.
const Vector4i & getOverdraw() const
Matrix4f headTransform
frustum transform for modelview
const Matrix4f & getOrthoTransform() const
Return the orthographic view matrix.
EQFABRIC_INL Channel(W *parent)
Construct a new channel.
const Zoom & getZoom() const
Vector2i offset
absolute position wrt dest channel
Frustumf ortho
ortho frustum for projection matrix
const Range & getRange() const
const Matrix4f & getHeadTransform() const
Return the view matrix.
const Frustumf & getFrustum() const
Base data transport class for channels.
uint32_t getDrawBuffer() const
PixelViewport pvp
pixel viewport of channel wrt window
const Pixel & getPixel() const
Statistics gathering mode (OFF, FASTEST [ON], NICEST)
virtual EQFABRIC_INL ~Channel()
Destruct the channel.
Internal base class for all distributed, inheritable Equalizer objects.
EQFABRIC_INL void setCapabilities(const uint64_t bitmask)
Set the capabilities supported by the channel.
The context applied to a channel during rendering operations.
Holds a 2D pixel viewport with methods for manipulation.
A fractional database range with methods for manipulation.
const Frustumf & getOrtho() const
const Matrix4f & getPerspectiveTransform() const
Return the perspective view matrix.
Frustumf frustum
frustum for projection matrix
EQFABRIC_INL VisitorResult accept(Visitor &visitor)
Perform a depth-first traversal of this channel.