Matevz Tadel (CERN/Alice)
Last year's changes in ROOT's 3D graphics with OpenGL can be divided in two main lines of work. First, there were many new renderers implemented for 2D histograms, functions and parametric surfaces that allow these objects to be rotated, clipped and projected in real-time. Second, OpenGL viewer was extended to automatically instantiate external rendering objects from user-provided class to achieve maximum level of flexibility. These objects remain in viewer's memory-cache during scene-updates and thus reduce the cost of the scene refresh when only a few objects actually change. OpenGL rendering infrastructure has just undergone a major re-modularization that allows free mixing of 2D and 3D graphics and makes implementation of ROOT canvas in pure GL possible. Scene representation was removed from inside of the viewer, allowing scene-data to be shared among several viewers and providing for natural implementation of multi-view canvas layouts. Via extensions of the TVirtualViewer3D API a finer, per-object control over scene-updates is available to the user, allowing overhead-free maintenance of dynamic 3D scenes. User-input handling was modularized as well, making it easy to write application-specific scene navigation, selection handling and tool management.