18 #ifndef GZ_RENDERING_OGRE_OGREGPURAYS_HH_
19 #define GZ_RENDERING_OGRE_OGREGPURAYS_HH_
26 #include <gz/utils/SuppressWarning.hh>
48 inline namespace GZ_RENDERING_VERSION_NAMESPACE {
51 class OgreGpuRaysPrivate;
56 class GZ_RENDERING_OGRE_VISIBLE OgreGpuRays :
58 public BaseGpuRays<OgreSensor>,
public Ogre::RenderObjectListener
61 protected: OgreGpuRays();
64 public:
virtual ~OgreGpuRays();
67 public:
virtual void Init()
override;
70 public:
virtual void Destroy()
override;
73 public:
virtual void CreateRenderTexture();
76 public:
virtual void PreRender()
override;
79 public:
virtual void PostRender()
override;
82 public:
virtual const float *Data()
const override;
85 public:
virtual void Copy(
float *_data)
override;
90 unsigned int _height,
unsigned int _channels,
98 public:
virtual void notifyRenderSingleObject(Ogre::Renderable *_rend,
99 const Ogre::Pass *_p,
const Ogre::AutoParamDataSource *_s,
100 const Ogre::LightList *_ll,
bool _supp)
override;
106 private:
virtual void Set1stTextureSize(
const unsigned int _w,
107 const unsigned int _h = 1);
113 private:
virtual void SetRangeCount(
const unsigned int _w,
114 const unsigned int _h = 1);
117 private:
virtual void Render()
override;
120 private:
void ConfigureCameras();
123 private:
void CreateMesh();
126 private:
void CreateCanvas();
129 private:
void CreateOrthoCam();
132 private:
void CreateCamera();
135 private:
virtual void CreateGpuRaysTextures();
145 private: Ogre::Matrix4 BuildScaledOrthoMatrix(
const float _left,
146 const float _right,
const float _bottom,
const float _top,
147 const float _near,
const float _far);
149 private:
void UpdateRenderTarget(Ogre::RenderTarget *_target,
150 Ogre::Material *_material,
152 const bool _updateTex);
156 private:
virtual double CosHorzFOV()
const;
160 private:
virtual void SetCosHorzFOV(
const double _chfov);
164 private:
virtual double CosVertFOV()
const;
168 private:
virtual void SetCosVertFOV(
const double _cvfov);
172 private:
virtual double HorzHalfAngle()
const;
176 private:
virtual double VertHalfAngle()
const;
180 private:
virtual void SetHorzHalfAngle(
const double _angle);
184 private:
virtual void SetVertHalfAngle(
const double _angle);
188 GZ_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING
190 GZ_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING