### 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:
  1. The glpad can be saved only as PS now.
  2. 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:
  1. Use frame-buffer objects for off-screen rendering.
  2. Support "Save as" png, jpg, pdf, etc.
  3. With GLEW and GL-shading-language, use of hardware anti-aliasing and shaders is possible.
- Prototype visualization of 5-dimensional distributions:
  1. New option for TTree::Draw - "gl5d", for the case you have 5 and more dimensional dataset.
  2. Set of iso-surfaces created, 4-th dimension is used to select iso-level.
  3. "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:
  1. GUI improvements.
  2. Support several different density estimators.
  3. 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`.