VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVirtualRealityChannel.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvOsg/DtOsgChannel.h>
17 #include <osg/Texture2DArray>
18 
19 
20 namespace makVrv
21 {
30  {
31  protected:
33 
34  // \brief CTOR
36 
37  public:
38 
40  virtual ~DtVirtualRealityChannel();
41 
43  virtual bool initialize();
44 
47  virtual void setWidth(int width);
48 
50  virtual void setHeight(int height);
51 
53  virtual void setViewport(int x, int y, int width, int height);
54 
56  virtual void resetViewport();
57 
62  virtual void setRenderToTexture(bool enabled);
63 
65  virtual void setIsMultiView(bool enabled, bool useAA);
66 
68  virtual bool isMultiView() const;
69 
71  virtual void setIgnoreZoom(bool ignore);
72 
74  virtual bool isIgnoringZoom() const;
75 
77  virtual void setProjectionConfiguration(DtChannelConfiguration::ProjectionUnits units, float left, float right, float bottom, float top, float zNear, float zFar);
78 
80  virtual void setCameraOffsetConfiguration(const osg::Vec3d& trans, const osg::Quat& ori);
81 
83  virtual void getNearFar(double& zNear, double& zFar);
84 
85  //| \brief calculate a projection matrix for the passed frustum values (in vrv units)
86  virtual osg::Matrix calculateEyeProjecionMatrix(DtChannelConfiguration::ProjectionUnits units, float left, float right, float bottom, float top, float zNear, float zFar);
87 
89  virtual void setFrustumAnglesForEye(osg::Vec4 frustumAngles, int multiViewEye);
90 
92  virtual void setProjectionMatrixForEye(osg::Matrix matrix, int multiViewEye);
93 
95  osg::Uniform* eyeProjectionMatrixUniform();
96 
98  osg::Uniform* eyeInverseProjectionMatrixUniform();
99 
101  virtual void updateProjectionConfigurationForMultiView();
102 
104  osg::Uniform* eyeOffsetMatrixUniform();
105 
107  void setOffsetForEye(osg::Vec3 offset, osg::Vec3 cameraSpaceOffset, int multiViewEye);
108 
109  // ! return the shading rate image used for this channel
110  DtVariableRateShadingImage* shadingRateImage() const;
111 
112  // ! return the shading rate image palette used for this channel
113  DtVariableRateShadingImagePalette* shadingRateImagePalette() const;
114 
117  boost::signalslib::signal<void()> signal_renderTextureChanged;
118 
119  protected:
121  virtual void projectFor3D();
122 
124  virtual void projectFor2D();
125 
127  virtual void updateProjection();
128 
130  virtual void slot_windowConfigurationModified(const std::string&, const std::string&, const DtWindowConfiguration&);
131 
133  virtual void initializeSignalConnections();
134 
136  virtual void getRenderTextureAttachmentInfo(unsigned int& level, unsigned int& face, unsigned int& sampleBuffers, unsigned int& samples);
137 
139  virtual osg::ref_ptr<osg::Texture> allocateRenderTexture(int width, int height) const;
140 
141  private:
144 
147 
149  DtVirtualRealityChannel& operator=(const DtVirtualRealityChannel& other);
150 
151  protected:
152  int myWidth;
153  int myHeight;
154 
157 
160 
163 
165  osg::Vec4 myEyeFrustumAngles[2];
166 
169 
172 
175 
178  };
179 
183  {
184  public:
186  virtual DtChannel* create(DtDe& de, DtWindow* window, DtChannelConfiguration& config);
187  };
188 }
Abstract Base class.
Definition: DtWindow.h:25
bool myIsMultiView
is multiview being used
Definition: DtVirtualRealityChannel.h:156
osg::ref_ptr< DtVariableRateShadingImage > myShadingRateImage
Definition: DtVirtualRealityChannel.h:176
Wrapper around Nvidia Variable Rate Shading Image functionality Creates a texture of the correct size...
Definition: DtVariableRateShadingImage.h:75
osg::ref_ptr< osg::Uniform > myEyeOffsetMatrixUniform
view space offect matrix for the multiview eyes, single uniform accessing an array of two mat4 values...
Definition: DtVirtualRealityChannel.h:174
bool myIgnoreZoom
should this channel ignore zoom when computing projection
Definition: DtVirtualRealityChannel.h:162
Contains DLL export macros.
Contains makVrv::DtOsgChannel class.
bool myMultiViewUsesAA
should this channel use aa when in multiview
Definition: DtVirtualRealityChannel.h:159
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
int myWidth
Definition: DtVirtualRealityChannel.h:152
osg::ref_ptr< osg::Uniform > myEyeProjectionMatrixUniform
projection matrix uniform for the multiview eyes, single uniform accessing an array of two mat4 value...
Definition: DtVirtualRealityChannel.h:168
The abstract channel creator for the abstract channel class.
Definition: DtChannel.h:169
This owns a list of channel configurations.
Definition: DtWindowConfiguration.h:28
This class provides the OSG-specific implementation of a DtChannel.
Definition: DtOsgChannel.h:77
boost::signalslib::signal< void()> signal_renderTextureChanged
signaled any time the underlying texture target changes.
Definition: DtVirtualRealityChannel.h:117
#define DT_DLL_VRVVR
Definition: vrvVirtualReality.h:19
The abstract Channel Class.
Definition: DtChannel.h:30
Wrap functionality of Nvidia Variable Rate Shading Image Palette Allocates shading rate pallete data ...
Definition: DtVariableRateShadingImagePalette.h:23
A VRV channel that represents the eyes of the HMD A Virtual Reality channel can render in a few diffe...
Definition: DtVirtualRealityChannel.h:29
ProjectionUnits
Definition: DtChannelConfiguration.h:39
osg::ref_ptr< osg::Uniform > myEyeInverseProjectionMatrixUniform
inverse projection matrix uniform for the multiview eyes, single uniform accessing an array of two ma...
Definition: DtVirtualRealityChannel.h:171
Configuration for a single channel Serialized and sent to remote displays as necessary to configure r...
Definition: DtChannelConfiguration.h:26
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Channel creator for Virtual Reality channel.
Definition: DtVirtualRealityChannel.h:182
voidpf uLong offset
Definition: ioapi.h:42
Wraps functionality of Variable Rate Shading Image.
osg::ref_ptr< DtVariableRateShadingImagePalette > myShadingRateImagePalette
Definition: DtVirtualRealityChannel.h:177
A basic OSG display window, used to get the osg context for a display window.
Definition: DtOsgWindow.h:36
int myHeight
Definition: DtVirtualRealityChannel.h:153

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)