OpenGL
Major changes
- GLEW - The OpenGL Extension Wrangler Library - has been added to
facilitate detection of OpenGL version and available extensions at
run-time. This will allow usage of advanced visualization techniques
while still allowing fall-back solutions to be used on systems not
supporting the required functionality. If GLEW and GLEW-devel packages
are detected during configure, the ROOT provided GLEW is not
built. See also:
http://glew.sourceforge.net/.
- Latest (1.3.3) version of gl2ps has been imported (we had 1.2.6
before). See http://www.geuz.org/gl2ps/
for detailed change-log.
- New implementation of GL-in-TPad - instead of mixture of GL and
non-GL graphics in a pixmap all pad graphics (2D/3D) is now
done by OpenGL.
To make this possible new TVirtualPadPainter,
TPadPainter, TGLPadPainter classes were introduced
and painting operations inside TPad class were modified to
use TVirtualPadPainter instead of TVirtualX.
TVirtualPadPainter is an abstract base class, interface for
drawing 2D primitives and pixmap management. TPadPainter is
a default, non-GL implementation, based on TVirtualX
(gVirtualX). TGLPadPainter is a GL
implementation. Currently, TGLPadPainter does not support
off-screen rendering (support for frame-buffer objects is planned).
Current limitations:
- The glpad can be saved only as PS now.
- Several sub-pads with complex 3d geometry can be slow due to lack
of off-screen rendering which would allow for caching of resulting images.
Future directions:
- Use frame-buffer objects for off-screen rendering.
- Support "Save as" png, jpg, pdf, etc.
- With GLEW and GL-shading-language, use of hardware anti-aliasing and
shaders is possible.
- Prototype visualization of 5-dimensional distributions:
- New option for TTree::Draw - "gl5d", for the case you have 5 and
more dimensional dataset.
- Set of iso-surfaces created, 4-th dimension is used to select iso-level.
- "gl5d" is now very similar to "gliso" option, but instead of
filling TH3 object (very primitive and rude "density estimator"),
points are fed directly to the kernel density estimator, based on
Fast Gauss Transform.
See TGL5D* classes.
Limitations: 5-th dimension is not shown correctly at the moment
(lacks sofisticated algorithms, we do not have in a ROOT's math
library now). Because of this limitation, GUI is just a toy now, must
be changed.
Future directions:
- GUI improvements.
- Support several different density estimators.
- Implement regression tools.
Minor changes, fixes and improvements
- It is now possible to draw a histogram with the "GLBOX" in the
GL-viewer.
- New class TGLColor has been introduced to simplify color
management in TGLViewer and TGLRnrCtx.
- Add support for several color-sets (class TGLColorSet -
each defines colors for background, foreground, outline, markup and
for outlines of selected and highlighted objects.
This also allows for independent changing of background color and
outline mode in the GL viewer - the e key now toggles between
dark / light background.
- New class TGLAnnotation - it allows display of
annotation-text on top of displayed objects.
The annotation can be created from the TGLViewer editor
("Guides" tab). After that it can be dragged around the screen, edited
or closed.
- TGLAxisPainter - reimplemented to completely separate
label and tick-mark positioning code from the rendering itself.
- TGLSAViewer - when exporting an image properly take into
account image extension if it was typed by the user.
- TGLFont now uses the same font-naming scheme as the rest
of ROOT (had to specify font-file names before).
- Overlay-object management has been improved.
- Allow clipping object to be fixed by user - until now it was updated
on every redraw. See TGLViewer::SetClipAutoUpdate().
Eve
- TEveElement - add context-menu functions allowing the
source-object to be printed, dumped or exported to CINT.
- TEveTrack - added flag for locking of current
track-points - the track will not be re-extrapolated automatically
even when the extrapolation parameters are changed.
- TEveTrack - removed ALICE specific ImportXyzz()
functions for loading of kinematics, hits and clusters associated with
a track. These were calling macros that were not available in ROOT.
- Several improvements in rendering of coordinate axes
in TEveCaloLego and TEveProjectionAxes.
- New class TEveJetCone for display of circular and
elliptic jet-cones clipped to the calorimeter's inner surface.
- Add support for extraction of composite-shape tesselations. A new
class TEveGeoPolyShape has been introduced to make this
tesselation serializable. See example
in tutorials/eve/csgdemo.C.
- Generalize representation of EVE-window title-bar - it can be
modified to display user-provided icons, menus or buttons.
- TEveWindowPack now supports registration of sub-frames
with weights that determine relative sub-frame length along the pack's
major direction.
- TEveUtil::SetColorBrightnes() now scales colors
according to screen-gamma transformation formula.
- Some examples using the GUI recorder have been added to the
tutorials. See macros tutorials/eve/*_playback.C.