A tick-tock release cycle allows easy migration to new software versions. Obsolete code is marked as deprecated for one major release. Deprecated code produces compile-time warnings. These warning serve as notification to users that their code should be upgraded. The next major release will remove the deprecated code.
-
A Persistent GPU->CPU readback to avoid duplicate copies was introduced in Pull request #1303, although the end result is expected to be the same, it can be reverted in the presence of errors setting their environment variable
GZ_RENDERING_OGRE2_LEGACY_READBACK. -
The number of ogre threads spawn by default has changed from being the number of cores of the host computer to zero to reduce the CPU usage in #1302. It can be fine-tunning by using the environment variable GZ_RENDERING_OGRE2_WORKER_THREADS=.
The optix plugin has been removed due to years of inactivity. The plugin was last tested with Optix SDK version 4.0.2, and there are no known plans on upgrading it to support the latest version of Optix. The optix plugin was never built and tested on the CIs so it was unclear if it was still working, hence the decision was to remove the plugin directly without going through a deprecation cycle.
The dependency on ogre2's Overlay component is removed, mainly due to:
OGRECave/ogre-next#541.
The Ogre::v1::OverlaySystem was not used internally and the
relevant API was always marked as internal so it is removed in
gz-rendering11 instead of going through the tick-tock deprecation cycle.
- Ogre2RenderEngine
- Removed:
Ogre::v1::OverlaySystem *OverlaySystem() const
- Removed:
-
Ogre2MeshFactory
- Deprecated:
void ClearMaterialsCache(const std::string &_name)
- Deprecated:
-
Ogre2Scene
- Deprecated:
void ClearMaterialsCache(const std::string &_name)
- Deprecated:
-
The macro
GZ_RENDERING_RESOURCE_PATHis removed. Usegz::rendering::getResourcePath()instead. -
The macro
GZ_RENDERING_ENGINE_INSTALL_DIRis removed. Usegz::rendering::getEngineInstallDir()instead. -
Ogre2SelectionBuffer
- Removed:
bool ExecuteQuery(const int _x, const int _y, Ogre::Item *&_item, math::Vector3d &_point) - Replacement:
bool ExecuteQuery(int _x, int _y, Ogre::MovableObject *&_obj, math::Vector3d &_point)
- Removed:
- Ogre2SelectionBuffer
- Deprecated:
bool ExecuteQuery(const int _x, const int _y, Ogre::Item *&_item, math::Vector3d &_point) - Replacement:
bool ExecuteQuery(int _x, int _y, Ogre::MovableObject *&_obj, math::Vector3d &_point)
- Deprecated:
-
Ogre2SelectionBuffer
- Removed:
Ogre::OgreItem *OnSelectionClick(const int _x, const int _y) - Replacement:
Ogre::MovableObject *OnSelectionClick(int _x, int _y)
- Removed:
-
GpuRays
- Made function private:
void Copy(Image &_image) - Use the overloaded function:
void Copy(float *_data)
- Made function private:
-
RenderPass
- Made function private:
void PreRender() - Use the overloaded function:
void PreRender(const CameraPtr &_camera)
- Made function private:
- The following
HAVE_prefixed macros that are defined in config.hh are deprecated and will be removed in future versions.- Deprecated:
HAVE_OGRE,HAVE_OGRE2HAVE_OPTIX - Replacement:
GZ_RENDERING_HAVE_OGRE,GZ_RENDERING_HAVE_OGRE2GZ_RENDERING_HAVE_OPTIX
- Deprecated:
- The BaseStore internal data structure has changed from an std::map to an
std::vector for performance consideration. This means iterators returned by
BaseStore APIs such as
IterByIndexmay now be different from before since the order of objects stored in maps and vectors are different. The iterators returned may also change or become invalid when objects are added or removed from the store. This impacts users using APIs to access nodes / visuals by index, e.g.Node::ChildByIndexandScene::VisualByIndexmay now return a different node pointer.
- The CMake project is called
gz-renderingNinstead ofignition-renderingN. - The shared libraries have
gzwhere there used to beignition, i.e.libgz-rendering-ogre.so - ogre2/include/ignition/rendering/ogre2/Ogre2RenderEngine.hh
- Deprecated:
Ogre2IgnHlmsSphericalClipMinDistance &HlmsCustomizations() - Replacement:
Ogre2GzHlmsSphericalClipMinDistance &SphericalClipMinDistance()
- Deprecated:
- The
ignitionnamespace is deprecated and will be removed in future versions. Usegzinstead. - Header files under
ignition/...are deprecated and will be removed in future versions. Usegz/...instead. - The environment variable
IGN_RENDERING_PLUGIN_PATHis deprecated. UseGZ_RENDERING_PLUGIN_PATHinstead. - The environment variable
IGN_RENDERING_RESOURCE_PATHis deprecated. UseGZ_RENDERING_RESOURCE_PATHinstead. - The following
IGN_prefixed macros are deprecated and will be removed in future versions. Additionally, they will only be available when including the correspondingignition/...header. Use theGZ_prefix instead.IGN_RENDERING_REGISTER_RENDER_PASSIGN_VISIBILITY_ALLIGN_VISIBILITY_SELECTIONIGN_VISIBILITY_GUIIGN_VISIBILITY_SELECTABLE
- The
IgnRenderingModeenum is deprecated and will be removed in future versions. UseGzRenderingModeinstead.- Similarly, the
IORM_prefixed enum values are deprecated. Use theGORM_prefix instead. - Also,
Ogre2RenderEngine->SetIgnOgreRenderingModeis deprecated and will be removed. UseOgre2RenderEngine->SetGzOgreRenderingModeinstead.
- Similarly, the
- The project name has been changed to use the
gz-prefix, you must use thegzprefix!
- This also means that any generated code that use the project name (e.g. CMake variables, in-source macros) would have to be migrated.
- Some non-exhaustive examples of this include:
GZ_<PROJECT>_<VISIBLE/HIDDEN>- CMake
-configfiles - Paths that depend on the project name
- Updated Bayer image format enums in
PixelFormat.hto match the Bayer formats used in gz-common and gz-msgs.
PF_BAYER_GBGR8->PF_BAYER_GBRG8PF_BAYER_GRGB8->PF_BAYER_GRBG8
-
Ogre 2 heightmaps: the Y position sign was flipped
-
Scene::SetTimeis often unset. Gazebo'sOgre2now defaults to 60hz otherwise rendering won't advance forward.- Mostly affects Particles.
- Also may affect gaussian postprocessing and other filters dependent on time.
- Previous behavior was using real time instead of simulation time, which is wrong.
- See #556 for details.
-
Scene.hh
- Added
Scene::PostRender. The functionCamera::Rendermust be executed between calls toScene::PreRenderandScene::PostRender. Failure to do so will result in asserts triggering informing users to correct their code. Alternatively callingScene::SetCameraPassCountPerGpuFlush( 0 )avoids this strict requirement. Users handling only one Camera can callCamera::UpdateorCamera::Captureand thus do not need to worry. However for more than one camera (of any type) the optimum way to handle them is to update them in the following pattern:This pattern maximizes the chances of improving performance. Note: Calling insteadscene->PreRender(); for( auto& camera in cameras ) camera->Render(); for( auto& camera in cameras ) camera->PostRender(); scene->PostRender();Camera::Updatefor each camera is a waste of CPU resources. - It is invalid to modify the scene between
Scene::PreRenderandScene::PostRender(e.g. add/remove objects, lights, etc) - Added
Scene::SetCameraPassCountPerGpuFlush. Setting this value to 0 forces legacy behavior which eases porting. - Systems that rely on Graphics components like particle FXs and postprocessing are explicitly affected by Scene's Pre/PostRender. Once
Scene::PostRenderis called, the particle FXs' simulation is moved forward, as well as time values sent to postprocessing shaders. In previous gz-rendering versions eachCamera::Rendercall would move the particle simulation forward, which could cause subtle bugs or inconsistencies when Cameras were rendering the same frame from different angles. Setting SetCameraPassCountPerGpuFlush to 0 will also cause these subtle bugs to reappear.
- Added
-
Visual.hh and Node.hh
*UserDatamethods and theVarianttype alias have been moved from theVisualclass to theNodeclass.Node::UserDatanow returns no data for keys that don't exist (prior to Rendering 6.x, ifVisual::UserDatawas called with a key that doesn't exist, anintwas returned by default).
-
depth_camera_fs.glsl and depth_camera_final_fs.glsl
- Far clipping changed from clipping by depth to clipping by range, i.e. distance to point, so that the data generated will never exceed the specified max range of the camera.
- ogre2/include/ignition/rendering/ogre2/Ogre2DepthCamera.hh
- Medium severity ABI break with the addition of the
AddRenderPassoverride.
- Medium severity ABI break with the addition of the
- gz::common::Time deprecated in favor of std::chrono::steady_clock::duration
- Deprecated:
void BaseScene::SetSimTime(const common::Time &_time) - Replacement:
void BaseScene::SetTime(const std::chrono::steady_clock::duration &_time) - Deprecated:
common::Time SimTime() const - Replacement:
std::chrono::steady_clock::duration Time() const - Deprecated:
common::Time simTime - Replacement:
std::chrono::steady_clock::duration time
- Deprecated:
- Ogre2DepthCamera.hh
- Removed unused member variables
captureDataandnewData
- Removed unused member variables
- Visual.hh and Node.hh
- All functions for setting and getting scale properties in the Visual class are moved to the base Node class. These functions are now inherited by the Visual class.