18 #ifndef IGNITION_RENDERING_OGRE_OGREGPURAYS_HH_ 19 #define IGNITION_RENDERING_OGRE_OGREGPURAYS_HH_ 46 inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
49 class OgreGpuRaysPrivate;
54 class IGNITION_RENDERING_OGRE_VISIBLE OgreGpuRays :
56 public BaseGpuRays<OgreSensor>,
public Ogre::RenderObjectListener
59 protected: OgreGpuRays();
62 public:
virtual ~OgreGpuRays();
65 public:
virtual void Init()
override;
68 public:
virtual void Destroy()
override;
71 public:
virtual void CreateRenderTexture();
74 public:
virtual void PreRender()
override;
77 public:
virtual void PostRender()
override;
80 public:
virtual const float *Data()
const override;
83 public:
virtual void Copy(
float *_data)
override;
88 unsigned int _height,
unsigned int _channels,
96 public:
virtual void notifyRenderSingleObject(Ogre::Renderable *_rend,
97 const Ogre::Pass *_p,
const Ogre::AutoParamDataSource *_s,
98 const Ogre::LightList *_ll,
bool _supp)
override;
104 private:
virtual void Set1stTextureSize(
const unsigned int _w,
105 const unsigned int _h = 1);
111 private:
virtual void SetRangeCount(
const unsigned int _w,
112 const unsigned int _h = 1);
115 private:
virtual void Render()
override;
118 private:
void ConfigureCameras();
121 private:
void CreateMesh();
124 private:
void CreateCanvas();
127 private:
void CreateOrthoCam();
130 private:
void CreateCamera();
133 private:
virtual void CreateGpuRaysTextures();
143 private: Ogre::Matrix4 BuildScaledOrthoMatrix(
const float _left,
144 const float _right,
const float _bottom,
const float _top,
145 const float _near,
const float _far);
147 private:
void UpdateRenderTarget(Ogre::RenderTarget *_target,
148 Ogre::Material *_material,
150 const bool _updateTex);
154 private:
virtual double CosHorzFOV()
const;
158 private:
virtual void SetCosHorzFOV(
const double _chfov);
162 private:
virtual double CosVertFOV()
const;
166 private:
virtual void SetCosVertFOV(
const double _cvfov);
170 private:
virtual double HorzHalfAngle()
const;
174 private:
virtual double VertHalfAngle()
const;
178 private:
virtual void SetHorzHalfAngle(
const double _angle);
182 private:
virtual void SetVertHalfAngle(
const double _angle);
shared_ptr< RenderTarget > RenderTargetPtr
Definition: RenderTypes.hh:194
std::shared_ptr< Connection > ConnectionPtr
Definition: OgreScene.hh:39