8 #ifndef MULTICHANNELDRAWER_H
9 #define MULTICHANNELDRAWER_H
15 #include <osg/TextureRectangle>
17 #include <util/coExport.h>
25 class MultiChannelDrawer;
26 struct ViewChannelData;
58 osg::ref_ptr<osg::Uniform>
size;
98 std::vector<std::shared_ptr<ViewChannelData>>
viewChan;
112 void addView(std::shared_ptr<ViewData> vd);
113 void enableView(std::shared_ptr<ViewData> vd,
bool enable);
123 void setThis(std::shared_ptr<ViewChannelData> vcd);
133 std::shared_ptr<ViewData>
view;
140 friend struct SingleScreenCB;
148 int numViews()
const;
150 const osg::Matrix &modelMatrix(
int idx)
const;
151 const osg::Matrix &viewMatrix(
int idx)
const;
152 const osg::Matrix &projectionMatrix(
int idx)
const;
161 ReprojectMeshWithHoles
164 void setMode(Mode mode);
173 ViewSelection viewsToRender()
const;
175 void setViewsToRender(ViewSelection views);
177 void setNumViews(
int nv=-1);
179 void setViewEye(
int view,
ViewEye eye);
184 void updateMatrices(
int idx,
const osg::Matrix &model,
const osg::Matrix &view,
const osg::Matrix &proj);
186 void resizeView(
int idx,
int w,
int h, GLenum depthFormat=0, GLenum colorFormat=GL_UNSIGNED_BYTE);
188 std::shared_ptr<ViewData> getViewData(
int idx);
190 unsigned char *rgba(
int idx)
const;
192 unsigned char *depth(
int idx)
const;
194 void clearColor(
int idx);
196 void clearDepth(
int idx);
203 void clearViewData();
204 std::vector<std::shared_ptr<ViewData>> m_viewData;
205 std::vector<std::shared_ptr<ChannelData>> m_channelData;
208 ViewSelection m_viewsToRender = Same;
209 int renderTex=0, writeTex=0;
210 struct AvailableEyes {
215 AvailableEyes m_availableEyes;
218 const bool m_useCuda;
219 void updateGeoForView(ViewData &vd);
opencover::ViewData ViewData
Definition: MultiChannelDrawer.h:143
osg::ref_ptr< osg::Geometry > fixedGeo
Definition: MultiChannelDrawer.h:125
int channelNum
Definition: MultiChannelDrawer.h:87
osg::ref_ptr< osg::Geometry > fixedGeo
Definition: MultiChannelDrawer.h:54
Definition: MultiChannelDrawer.h:32
int height
Definition: MultiChannelDrawer.h:91
int geoWidth
Definition: MultiChannelDrawer.h:41
Definition: MultiChannelDrawer.h:159
int width
Definition: MultiChannelDrawer.h:90
Definition: MultiChannelDrawer.h:157
MultiChannelDrawer * drawer
Definition: MultiChannelDrawer.h:86
Definition: MultiChannelDrawer.h:156
osg::ref_ptr< osg::Geometry > reprojGeo
Definition: MultiChannelDrawer.h:55
osg::Matrix curView
Definition: MultiChannelDrawer.h:92
osg::ref_ptr< osg::TextureRectangle > depthTex
Definition: MultiChannelDrawer.h:50
osg::Matrix imgModel
Definition: MultiChannelDrawer.h:45
std::vector< std::shared_ptr< ViewChannelData > > viewChan
Definition: MultiChannelDrawer.h:98
GLenum depthFormat[NumImages]
Definition: MultiChannelDrawer.h:44
ViewEye eye
Definition: MultiChannelDrawer.h:39
int viewNum
Definition: MultiChannelDrawer.h:40
std::vector< ViewChannelData * > viewChan
Definition: MultiChannelDrawer.h:66
Definition: MultiChannelDrawer.h:169
osg::ref_ptr< osg::Drawable::DrawCallback > drawCallback
Definition: MultiChannelDrawer.h:130
Definition: MultiChannelDrawer.h:168
opencover::ChannelData ChannelData
Definition: MultiChannelDrawer.h:142
ViewChannelData(std::shared_ptr< ViewData > view, ChannelData *chan)
Definition: MultiChannelDrawer.h:30
data for rendering a View into a Channel
Definition: MultiChannelDrawer.h:119
ChannelData(MultiChannelDrawer *drawer, int channel)
Definition: MultiChannelDrawer.h:100
osg::ref_ptr< osg::Image > colorImg[NumImages]
Definition: MultiChannelDrawer.h:51
osg::ref_ptr< osg::Vec2Array > quadCoord
Definition: MultiChannelDrawer.h:56
osg::ref_ptr< osg::Vec2Array > texcoord
Definition: MultiChannelDrawer.h:53
osg::Matrix newProj
Definition: MultiChannelDrawer.h:46
ChannelData * chan
Definition: MultiChannelDrawer.h:132
osg::ref_ptr< osg::TextureRectangle > colorTex
Definition: MultiChannelDrawer.h:49
osg::Matrix curModel
Definition: MultiChannelDrawer.h:92
Definition: MultiChannelDrawer.h:158
Definition: MultiChannelDrawer.h:31
ViewEye
Definition: MultiChannelDrawer.h:28
osg::ref_ptr< osg::Uniform > size
Definition: MultiChannelDrawer.h:58
ViewSelection
Definition: MultiChannelDrawer.h:166
osg::ref_ptr< osg::DrawArrays > quadArr
Definition: MultiChannelDrawer.h:57
Definition: MultiChannelDrawer.h:160
GLenum colorFormat[NumImages]
Definition: MultiChannelDrawer.h:44
osg::ref_ptr< osg::Uniform > withHoles
Definition: MultiChannelDrawer.h:61
osg::ref_ptr< osg::Uniform > pixelOffset
Definition: MultiChannelDrawer.h:59
Definition: MultiChannelDrawer.h:139
osg::ref_ptr< osg::Uniform > withNeighbors
Definition: MultiChannelDrawer.h:60
int geoHeight
Definition: MultiChannelDrawer.h:41
osg::ref_ptr< osg::Geometry > reprojGeo
Definition: MultiChannelDrawer.h:126
Definition: MultiChannelDrawer.h:36
ViewData(int view=-1)
Definition: MultiChannelDrawer.h:68
ViewEye eye
Definition: MultiChannelDrawer.h:88
int height[NumImages]
Definition: MultiChannelDrawer.h:42
osg::ref_ptr< osg::Group > scene
Definition: MultiChannelDrawer.h:96
osg::ref_ptr< osg::DrawArrays > pointArr
Definition: MultiChannelDrawer.h:57
osg::ref_ptr< osg::Vec2Array > pointCoord
Definition: MultiChannelDrawer.h:56
osg::ref_ptr< osg::Image > depthImg[NumImages]
Definition: MultiChannelDrawer.h:52
osg::ref_ptr< osg::Program > reprojAdaptProgram
Definition: MultiChannelDrawer.h:63
opencover::ViewEye ViewEye
Definition: MultiChannelDrawer.h:144
osg::Matrix curProj
Definition: MultiChannelDrawer.h:92
osg::ref_ptr< osg::Uniform > reprojMat
Definition: MultiChannelDrawer.h:127
void setThis(std::shared_ptr< ViewChannelData > vcd)
Definition: MultiChannelDrawer.h:167
int depthWidth[NumImages]
Definition: MultiChannelDrawer.h:43
Definition: MultiChannelDrawer.h:29
osg::ref_ptr< osg::StateSet > state
Definition: MultiChannelDrawer.h:128
osg::Matrix newModel
Definition: MultiChannelDrawer.h:46
static const int NumImages
Definition: MultiChannelDrawer.h:37
osg::ref_ptr< osg::Geode > geode
Definition: MultiChannelDrawer.h:129
osg::ref_ptr< osg::Program > reprojMeshProgram
Definition: MultiChannelDrawer.h:64
store data associated with one channel (output viewport)
Definition: MultiChannelDrawer.h:85
osg::Matrix newView
Definition: MultiChannelDrawer.h:46
int width[NumImages]
Definition: MultiChannelDrawer.h:42
osg::Matrix imgProj
Definition: MultiChannelDrawer.h:45
osg::Matrix imgView
Definition: MultiChannelDrawer.h:45
int depthHeight[NumImages]
Definition: MultiChannelDrawer.h:43
osg::ref_ptr< osg::Program > reprojConstProgram
Definition: MultiChannelDrawer.h:62
void enableView(std::shared_ptr< ViewData > vd, bool enable)
osg::ref_ptr< osg::Camera > camera
Definition: MultiChannelDrawer.h:95
Mode
reprojection mode
Definition: MultiChannelDrawer.h:155
bool second
Definition: MultiChannelDrawer.h:89
void addView(std::shared_ptr< ViewData > vd)
std::shared_ptr< ViewData > view
Definition: MultiChannelDrawer.h:133