VR-Forces 5.0.2 Developer's Guide
 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) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvOsg/DtOsgChannel.h>
18 #include <osg/Texture2DArray>
19 
20 
21 namespace makVrv
22 {
31  {
32  protected:
34 
35  // \brief CTOR
37 
38  public:
39 
41  virtual ~DtVirtualRealityChannel();
42 
44  virtual bool initialize();
45 
48  virtual void setWidth(int width, bool reset = true);
49 
51  virtual void setHeight(int height, bool reset = true);
52 
54  virtual void setViewport(int x, int y, int width, int height);
55 
57  virtual void resetViewport();
58 
63  virtual void setRenderToTexture(bool enabled);
64 
66  virtual void setIsMultiView(bool enabled, bool useAA);
67 
69  virtual bool isMultiView() const;
70 
72  virtual void setIgnoreZoom(bool ignore);
73 
75  virtual bool isIgnoringZoom() const;
76 
78  virtual void setOverlayViewportMatchesScene(bool shouldMatch);
79 
81  virtual bool overlayViewportMatchedScene();
82 
84  virtual void setProjectionConfiguration(DtChannelConfiguration::ProjectionUnits units, double left, double right, double bottom, double top, double zNear, double zFar);
85 
87  virtual void setCameraOffsetConfiguration(const osg::Vec3d& trans, const osg::Quat& ori);
88 
90  virtual void getNearFar(double& zNear, double& zFar);
91 
92  //| \brief calculate a projection matrix for the passed frustum values (in vrv units)
93  virtual osg::Matrix calculateEyeProjecionMatrix(DtChannelConfiguration::ProjectionUnits units, float left, float right, float bottom, float top, float zNear, float zFar);
94 
96  virtual void setFrustumAnglesForEye(const osg::Vec4& frustumAngles, int multiViewEye);
97 
99  virtual void setProjectionMatrixForEye(const osg::Matrix& matrix, int multiViewEye);
100 
102  osg::Uniform* eyeProjectionMatrixUniform();
103 
105  osg::Uniform* eyeInverseProjectionMatrixUniform();
106 
108  virtual void updateProjectionConfigurationForMultiView();
109 
111  osg::Uniform* eyeOffsetMatrixUniform();
112 
114  void setOffsetForEye(const osg::Vec3& offset, const osg::Vec3& cameraSpaceOffset, int multiViewEye);
115 
117  DtVariableRateShadingImage* shadingRateImage() const;
118 
120  DtVariableRateShadingImagePalette* shadingRateImagePalette() const;
121 
123  virtual void installVrsUpdater(DtVariableRateShadingImageUpdater* updater);
124 
126  virtual void setVrsEnabled(bool enabled);
127 
130  boost::signalslib::signal<void()> signal_renderTextureChanged;
131 
133  virtual void addPostProcessEffect(const std::string& postProcessorEffect) override;
134 
135  protected:
136 
138  virtual void projectFor3D();
139 
141  virtual void projectFor2D();
142 
144  virtual void updateProjection();
145 
147  virtual void slot_windowConfigurationModified(const std::string&, const std::string&, const DtWindowConfiguration&);
148 
150  virtual void initializeSignalConnections();
151 
153  virtual void getRenderTextureAttachmentInfo(unsigned int& level, unsigned int& face, unsigned int& sampleBuffers, unsigned int& samples);
154 
156  virtual osg::ref_ptr<osg::Texture> allocateRenderTexture(int width, int height) const;
157 
158  private:
161 
164 
166  DtVirtualRealityChannel& operator=(const DtVirtualRealityChannel& other);
167 
168  protected:
169  int myWidth;
170  int myHeight;
171 
174 
177 
180 
183 
185  osg::Vec4d myEyeFrustumAngles[2];
186  osg::Vec3 myViewOffsets[2];
187 
190 
193 
196 
200  };
201 
205  {
206  public:
208  virtual DtChannel* create(DtDe& de, DtWindow* window, DtChannelConfiguration& config);
209  };
210 }
Drawable and pre Drawcallback that draw full screen quad to update vrs image.
Abstract Base class.
Definition: DtWindow.h:25
bool myIsMultiView
is multiview being used
Definition: DtVirtualRealityChannel.h:173
osg::ref_ptr< DtVariableRateShadingImage > myShadingRateImage
Definition: DtVirtualRealityChannel.h:197
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:195
bool myIgnoreZoom
should this channel ignore zoom when computing projection
Definition: DtVirtualRealityChannel.h:179
Contains DLL export macros.
osg::ref_ptr< DtVariableRateShadingImageUpdater > myVrsUpdater
Definition: DtVirtualRealityChannel.h:199
Contains makVrv::DtOsgChannel class.
bool myMultiViewUsesAA
should this channel use aa when in multiview
Definition: DtVirtualRealityChannel.h:176
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:169
bool myOverlayViewportMatchScene
should the overlay viewports be set to match the rttcameras
Definition: DtVirtualRealityChannel.h:182
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:189
The abstract channel creator for the abstract channel class.
Definition: DtChannel.h:180
Base class for GPU updates of the variable rate shading image Draw a full screen quad using a shader ...
Definition: DtVariableRateShadingImageUpdater.h:26
This owns a list of channel configurations.
Definition: DtWindowConfiguration.h:28
This class provides the OSG-specific implementation of a DtChannel.
Definition: DtOsgChannel.h:52
boost::signalslib::signal< void()> signal_renderTextureChanged
signaled any time the underlying texture target changes. Used for systems that use the texture as an ...
Definition: DtVirtualRealityChannel.h:130
#define DT_DLL_VRVVR
Definition: vrvVirtualReality.h:19
The abstract Channel Class.
Definition: DtChannel.h:35
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:30
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:192
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. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
Channel creator for Virtual Reality channel.
Definition: DtVirtualRealityChannel.h:204
voidpf uLong offset
Definition: ioapi.h:42
Wraps functionality of Variable Rate Shading Image.
osg::ref_ptr< DtVariableRateShadingImagePalette > myShadingRateImagePalette
Definition: DtVirtualRealityChannel.h:198
A basic OSG display window, used to get the osg context for a display window.
Definition: DtOsgWindow.h:36
int myHeight
Definition: DtVirtualRealityChannel.h:170

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)