Informationen für


IEEE Visualization 2004 Tutorial - Interactive Texture-Based Flow Visualization


Interactive texture-based flow visualization has become an active field of research in the last three or four years. Recent progress in this field has led to efficient vector field visualization methods and, in particular, to improved techniques for time-dependent data. This tutorial covers approaches for vector fields given on 2D planes, on surfaces, and within 3D volumes. Both the theoretical background and the GPU-oriented implementations of many of these techniques are presented, along with a demonstration of their usefulness by means of typical applications.



Gordon Erlebacher, Florida State University, USA
Robert S. Laramee, VRVis, Austria 
Daniel Weiskopf, University of Stuttgart, Germany 

Course Organizer

Daniel Weiskopf
Institute of Visualization and Interactive Systems
University of Stuttgart



Level of the Tutorial


The tutorial is aimed at scientific researchers and developers of visualization tools. Participants should have basic programming skills and some background knowledge of flow visualization; they should be familiar with OpenGL and / or DirectX. Basic knowledge of graphics hardware and GPU programming is helpful, although a brief introduction to GPU programming will be given in the tutorial. Basic previous knowledge of flow visualization is recommended.

Organization and List of Topics

  • Introduction [15 min] (D. Weiskopf):
    Introductory words; motivation; visualization pipeline; traditional flow visualization techniques (glyphs, geometric streamlines, feature-based approaches), overview of the course

  • Basics of GPU-Based Programming [15 min] (D. Weiskopf):
    Structure of modern GPUs (graphics processing units); rendering pipeline; low-level programming; shading languages

  • 2D Texture-Based Flow Visualization [60 min] (G. Erlebacher):
    Line integral convolution (LIC), texture advection, Lagrangian-Eulerian Advection (LEA), Image Based Flow Visualization (IBFV), dye advection, large data visualization via tiling, generalization of time-dependent 2D flow visualization within a generic framework, CPU vs GPU implementations, applications (meteorology, CFD)

  • Texture-Based Flow Visualization on Surfaces [40 min] (R. S. Laramee):
    Object space vs surface parameterization (e.g., on curvilinear grids) vs image space approaches, Image-Space Advection (ISA), Image Based Flow Visualization on Surfaces (IBFVS), flow on isosurfaces, CPU vs GPU implementations, applications (visualization of CFD simulation data, in-cylinder flow of automotive engines, oceanography)

  • 3D Texture-Based Flow Visualization [40 min] (D. Weiskopf):
    3D LIC, 3D texture advection, 3D IBFV, preprocessing of streamlines in textures (Chameleon system), GPU implementations, perception issues

  • Summary, Questions and Answers [10+ min] (all speakers)

Description of Topics

Introduction. The tutorial starts with a short introduction that contains an outline of the time schedule, some examples of areas of application for flow visualization, a few example images for alternative visualization approaches (streamlines or similar geometric objects, feature-based techniques), and the classification scheme that we follow to structure the topics of this tutorial. The following classification parameters are used: spatial dimension of the visualization domain (2D, 2.5D = on surfaces, and 3D), steady vs unsteady flow, CPU vs GPU-based approaches, and type of internal representation (object space vs image space). Dimensionality serves as basis for the overall organization, the other aspects are indicated along the discussion of the corresponding visualization methods.

GPU Programming. A brief summary of some background of GPU programming is included to support participants that have some previous knowledge of GPU programming. A comprehensive presentation of GPU programming, however, is beyond the scope of this tutorial.

2D Flow Visualization. This part deals with texture-based flow visualization techniques for 2D planar domains. We start with fundamental "classic" approaches like LIC and original texture advection. Subsequently, more recent techniques for time-dependent flow are explained in detail, ranging from LEA to IBFV and dye advection. Building on this algorithmic background, application, implementation, and large-data visualization topics are discussed for these techniques. Implementation issues are focused on details of GPU realizations. Finally, a generic framework is presented to compare the previously mentioned techniques and to related them to each other.

2.5D Flow Visualization. This part focuses on recent developments for texture-based flow visualization on surfaces. Both ISA and IBFVS work on image space to avoid problems of older approaches that require a time-consuming computation in object space or a parameterization of the surface. A brief comparison between object-space, image-space, and parameterization approaches serves as introduction to this part. Special attention is paid to the application of these techniques to real-world examples from CFD because a good choice for the surface is essential to an intuitive and effective visualization.

3D Flow Visualization. We discuss 3D texture-based flow visualization in the last part. A brief presentation of 3D LIC is followed by an in-depth discussion of 3D texture advection. One major issue of dense 3D representations is the large amount of numerical operations involved. Therefore, efficient GPU implementations play an important role and are compared for 3D IBFV and GPU-based texture advection. As an alternative approach, a pre-computation of streamlines within a volumetric texture, as in the Chameleon system, overcomes some of these efficiency problems. Finally, some perception issues of visual clutter and spatial perception are mentioned and an outlook on possible future developments for perception-oriented interactive representations is given.

Summary. The tutorial closes with an overall questions & answers session.


Course Slides

The up-to-date slides that were used during the tutorial can be downloaded as PDF files.

Electronic Videos

Source Code and Examples

We promised at the end of the tutorial to upload some examples and source codes. This part of the web page is still being extended; here is the first example:

2D Texture Advection (Direct3D)

This simple code (authors: Matthias Hopf and Daniel Weiskopf) implements 2D texture advection with bilinear resampling. It is a quick-and-dirty hack that was developed for Direct3D 8. Unfortunately, this code is provided "as is" - without any support or documentation.

2D LIC (OpenGL on Mac)

This source code (author: Gordon Erlebacher) implements 2D LIC on GPUs. It runs on Mac with OpenGL. The code was developed and tested on Panther 10.3.6 on a Powerbook with an ATI Radeon 9600. The current version of the code is not commented and supports steady flow only.