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-renderingN
instead ofignition-renderingN
. - The shared libraries have
gz
where 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
ignition
namespace is deprecated and will be removed in future versions. Usegz
instead. - Header files under
ignition/...
are deprecated and will be removed in future versions. Usegz/...
instead. - The environment variable
IGN_RENDERING_PLUGIN_PATH
is deprecated. UseGZ_RENDERING_PLUGIN_PATH
instead. - The environment variable
IGN_RENDERING_RESOURCE_PATH
is deprecated. UseGZ_RENDERING_RESOURCE_PATH
instead. - 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_PASS
IGN_VISIBILITY_ALL
IGN_VISIBILITY_SELECTION
IGN_VISIBILITY_GUI
IGN_VISIBILITY_SELECTABLE
- The
IgnRenderingMode
enum is deprecated and will be removed in future versions. UseGzRenderingMode
instead.- Similarly, the
IORM_
prefixed enum values are deprecated. Use theGORM_
prefix instead. - Also,
Ogre2RenderEngine->SetIgnOgreRenderingMode
is deprecated and will be removed. UseOgre2RenderEngine->SetGzOgreRenderingMode
instead.
- Similarly, the
- The project name has been changed to use the
gz-
prefix, you must use thegz
prefix!
- 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
-config
files - Paths that depend on the project name
-
Ogre 2 heightmaps: the Y position sign was flipped
-
Scene::SetTime
is often unset. Gazebo'sOgre2
now 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::Render
must be executed between calls toScene::PreRender
andScene::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::Update
orCamera::Capture
and 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::Update
for each camera is a waste of CPU resources. - It is invalid to modify the scene between
Scene::PreRender
andScene::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::PostRender
is called, the particle FXs' simulation is moved forward, as well as time values sent to postprocessing shaders. In previous gz-rendering versions eachCamera::Render
call 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
*UserData
methods and theVariant
type alias have been moved from theVisual
class to theNode
class.Node::UserData
now returns no data for keys that don't exist (prior to Rendering 6.x, ifVisual::UserData
was called with a key that doesn't exist, anint
was 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
AddRenderPass
override.
- 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
captureData
andnewData
- 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.