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.
- 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 dependant on time.
- Previous behavior was using real time instead of simulation time, which is wrong.
- See gazebosim#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.