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>
51 bool isDestination()
const
52 {
return _data.nativeContext.view.identifier != 0;}
55 void setViewVersion(
const co::ObjectVersion& view );
58 const co::ObjectVersion& getViewVersion()
const
59 {
return _data.nativeContext.view; }
62 void setPixelViewport(
const PixelViewport& pvp );
65 EQFABRIC_INL
void setViewport(
const Viewport& vp );
68 virtual void notifyViewportChanged();
72 {
return _data.nativeContext.pvp; }
88 EQFABRIC_INL
void setNearFar(
const float nearPlane,
const float farPlane );
116 EQFABRIC_INL
void setMaxSize(
const Vector2i& size );
118 void setOverdraw(
const Vector4i& overdraw );
119 const Vector2i& getMaxSize()
const {
return _maxSize; }
122 EQFABRIC_INL ChannelPath getPath()
const;
124 EQFABRIC_INL
virtual void backup();
125 EQFABRIC_INL
virtual void restore();
277 const Vector4i&
getOverdraw()
const {
return _context->overdraw; }
294 IATTR_ALL = IATTR_LAST + 5
302 SATTR_ALL = SATTR_LAST + 5
321 virtual bool omitOutput()
const {
return false; }
322 virtual void output( std::ostream& )
const {}
326 EQFABRIC_INL
Channel( W* parent );
335 EQFABRIC_INL
virtual void serialize( co::DataOStream& os,
336 const uint64_t dirtyBits );
338 EQFABRIC_INL
virtual void deserialize( co::DataIStream& is,
339 const uint64_t dirtyBits );
342 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits );
347 void overrideContext( RenderContext& context ) { _context = &context; }
350 void resetContext() { _context = &_data.nativeContext; }
353 const RenderContext& getContext()
const {
return *_context; }
356 const RenderContext& getNativeContext()
const
357 {
return _data.nativeContext; }
361 void setIAttribute(
const IAttribute attr,
const int32_t value )
362 { _iAttributes[attr] = value; setDirty( DIRTY_ATTRIBUTES ); }
365 void setSAttribute(
const SAttribute attr,
const std::string& value )
366 { _sAttributes[attr] = value; setDirty( DIRTY_ATTRIBUTES ); }
369 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
373 DIRTY_ATTRIBUTES = Object::DIRTY_CUSTOM << 0,
374 DIRTY_VIEWPORT = Object::DIRTY_CUSTOM << 1,
375 DIRTY_MEMBER = Object::DIRTY_CUSTOM << 2,
376 DIRTY_FRUSTUM = Object::DIRTY_CUSTOM << 3,
377 DIRTY_CAPABILITIES = Object::DIRTY_CUSTOM << 4,
379 DIRTY_ATTRIBUTES | DIRTY_VIEWPORT | DIRTY_MEMBER |
380 DIRTY_FRUSTUM | DIRTY_OBJECT_BITS
384 virtual uint64_t getRedistributableBits()
const
385 {
return DIRTY_CHANNEL_BITS; }
387 virtual void updateCapabilities() {}
395 BackupData() : capabilities( LB_BIT_ALL_64 ), fixedVP( true ) {}
398 RenderContext nativeContext;
401 uint64_t capabilities;
409 RenderContext* _context;
412 int32_t _iAttributes[IATTR_ALL];
415 std::string _sAttributes[SATTR_ALL];
424 template<
class W,
class C > EQFABRIC_INL
425 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.
IAttribute
Possible values for integer attributes.
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
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.
SubPixel subpixel
subpixel decomposition wrt to dest
const SubPixel & getSubPixel() const
const Vector2i & getPixelOffset() const
Get the channel's current position wrt the destination channel.
EQFABRIC_INL void setMaxSize(const Vector2i &size)
Eye
Eye pass bit mask for which is enabled.
ColorMask bufferMask
color mask for anaglyph stereo
uint32_t phase
DPlex phase.
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
const Viewport & getViewport() const
Holds a pixel decomposition specification with methods for manipulation.
const W * getWindow() const
const Vector4i & getOverdraw() const
Matrix4f headTransform
frustum transform for modelview
const Matrix4f & getOrthoTransform() const
Return the orthographic view matrix.
LeafVisitor< C > Visitor
The channel visitor type.
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.
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.