the visualizaton cascade

42
THE VISUALIZATON CASCADE Beyond the Visualization Pipeline Werner Benger 1 , Marcel Ritter, Georg Ritter, Wolfram Schoor 1 Scientific Visualization Group Center for Computation & Technology at Louisiana State University

Upload: sachi

Post on 24-Feb-2016

29 views

Category:

Documents


0 download

DESCRIPTION

The Visualizaton Cascade. Beyond the Visualization Pipeline Werner Benger 1 , Marcel Ritter, Georg Ritter, Wolfram Schoor 1 Scientific Visualization Group Center for Computation & Technology at Louisiana State University. Outline. The Concept and Limitations of the Viz Pipeline - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: The  Visualizaton  Cascade

THE VISUALIZATON CASCADE

Beyond the Visualization Pipeline Werner Benger1, Marcel Ritter, Georg Ritter, Wolfram

Schoor1Scientific Visualization Group

Center for Computation & Technologyat

Louisiana State University

Page 2: The  Visualizaton  Cascade

Outline

The Concept and Limitations of the Viz

Pipeline

Generalization of the Visualization Cascade

Implementation Concepts within VISH

Page 3: The  Visualizaton  Cascade

The Visualization Pipeline

A concept of how visualization works

Haber & McNabb, 1990

Data Flow:Data Source Data Filter Data Sink

Page 4: The  Visualizaton  Cascade

Implementations via Unix Pipelines

Example: ppmplus toolkitcat image.jpg | jpegtopnm | pnmscale -w 100 | cjpeg -quality

40 | display

Data flows from source to display Each step is parametrized More complex application leads to graphs

Many sources (input data) Filters may be interconnected Usually one sink (display)

Page 5: The  Visualizaton  Cascade

Visualization Networks Represents data flow Allows visual programming (AVS, Amira,

OpenDX, Iris Explorer, Vish)Data Data Parameter

Filter Filter

Renderer File Storage

Page 6: The  Visualizaton  Cascade

Push Model Data at the source is pushed downstream

through filters to the data sink

Action

Result

File reading, network transfer, computation, …

Image Rendering

Page 7: The  Visualizaton  Cascade

Push Model (downstream) AVS, Amira, …

Data Data Parameter

Filter Filter

Renderer File Storage

Page 8: The  Visualizaton  Cascade

Pull Model Date sink requests run upstream through

filters requesting data from the source source

Source

Request

File reading, network transfer, computation, …

Image Rendering

Page 9: The  Visualizaton  Cascade

Pull Model (upstream) OpenDX, VTK, Vish, …

Data Data Parameter

Filter Filter

Renderer File Storage

Page 10: The  Visualizaton  Cascade

Push vs. PullPUSH MODEL PULL MODEL Data are made

available as soon as possible

Traverses viz pipeline after loading/creation

Filter modules have information about data available at early stage

Loads data even if not used

Data are made available as late as possible

Traverses viz pipeline at rendering time

Filter modules don’t know all about data until output is requested

Loads only data when used

Page 11: The  Visualizaton  Cascade

Dynamic Large Data Pull model is convenient during

interaction since all data information is available during setup of viz pipeline parameters

Easier in implementation since no upstream information flow (triggers)

Problematic for time-dependent large data which don’t fit into memory, because cannot load all data

Repeated operation and caching?

Page 12: The  Visualizaton  Cascade

Dynamic DataTraversing Time: Viz Pipeline needs to be

traversed for each time step:

Data

T=0.0

Filter

Renderer

Data

T=0.4

Filter

Renderer

Data

T=0.8

Filter

Renderer

Data

T=1.2

Filter

Renderer

Page 13: The  Visualizaton  Cascade

Dynamic Data & Push Model

New time – new data – new traversal – entire pipeline re-computed

Data

T=0.0, 0.4, 0.8, 1.2

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 14: The  Visualizaton  Cascade

New time – skip traversal if results already are available (result caching)

Dynamic Data & Pull Model

Data

T=0.0, 0.4, 0.8, 1.2

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 15: The  Visualizaton  Cascade

Make the Viz Pipeline aware of Caching

Visualization Cascade

Data

T=0.0, 0.4, 0.8, 1.2

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 16: The  Visualizaton  Cascade

Caching on each LevelEnable Partial traversal of viz pipeline

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 17: The  Visualizaton  Cascade

Caching on each LevelEnable Partial traversal of viz pipeline

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 18: The  Visualizaton  Cascade

Cacheable/Non-Cacheable Parameters

Which parameters full re-traversal of the viz pipeline?

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Parameter

Page 19: The  Visualizaton  Cascade

Cacheable/Non-Cacheable Parameters

Example: Isosurface of dynamic data

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

RendererIsosurface Color

Redraw SurfaceBut don’t recompute

Isosurface LevelRecompute Isosurface

But don’t load new data

Isosurface TimeLoad new data from

disk

Page 20: The  Visualizaton  Cascade

New Time or New Data? Time parameter could also be trigger

parameter for new data computation When to cache data? Will old cache data

ever be reused? Concept: Cache at data source location,

not at node location.

Page 21: The  Visualizaton  Cascade

Result Cacheing

Result caching at pipeline node possible, but not problematic, because parameter space is unknown

Data Data

Filter

Renderer

Data

T=0.0, 0.4, 0.8

Isosurface T=0.0 Isosurface

T=0.4 Isosurface T=0.8

Page 22: The  Visualizaton  Cascade

Isosurface T=0.8

Isosurface T=0.4

Isosurface T=0.0

Operator Caching

Cache data at location of data source

If data source vanishes, so vanishes cached results

Filter objects do not store any data, but are purely procedural

Data Data

Filter

Renderer

Data

T=0.0, 0.4, 0.8

Page 23: The  Visualizaton  Cascade

Fiber Bundle Data Model Is a generic approach to handle a wide

range of data types used for scientific visualization

Basic concept: Base space maps to fibers

Base Space

Fiber Space at each point of Base Space

Page 24: The  Visualizaton  Cascade

Central Data Management• Covers scalar,vector,tensor fields on unispatial grids, mesh refinement,

multiblocks, particle systems, surfaces, …• “garbage collection” management with I/O layers for sciviz data

Page 25: The  Visualizaton  Cascade

Viz Pipeline on the Fiber Bundle

All data are stored in the “Bundle”

Viz nodes do not store any

data pass references

to data purely

procedural

Data

Filter

Renderer

Fiber Bundle

Page 26: The  Visualizaton  Cascade

Operations on the Fiber Bundle

Data filtering is actually mapping objects within the fiber bundle

Filter

Fiber Bundle

Page 27: The  Visualizaton  Cascade

Fiber BundleT=0.0

Time Support in Fiber Bundle

Bundle is a hierarchical system of slices

Intrinsic support for time in the Bundle

Time as a visualization parameter

Data “flow” is reduced to bundle access parameters

Data

Filter

Renderer

T=0.4 T=0.8

Page 28: The  Visualizaton  Cascade

Fiber BundleT=0.0

Time Support in Fiber Bundle

If time slice of source data is gone, then also all cached data is gone

Cache as much results as there are source data

Data

Filter

Renderer

T=0.4 T=0.8

Page 29: The  Visualizaton  Cascade

Fiber Bundle

Hierarchy of the Fiber Bundle

Consists of 6 hierarchy levels

T=0.0

Grid

Vertices

CartesianCoordinates

Field1. Field

2. Representation

3. Topological Skeleton

4. Grid object

5. (Time) Slice

6. Bundle

Page 30: The  Visualizaton  Cascade

Fiber Bundle

Access via Parameters

T=0.0

Grid

Vertices

CartesianCoordinates

Field

TimeGridname

Topological Property

Coordinate system

Fieldname

Page 31: The  Visualizaton  Cascade

Coding Example (Operations)

Bundle B;double time;

Slice S = B[ time ];

string Fieldname;Grid G = S[ Fieldname ];

// Computation of an Isosurface: // Provide 3D data volume (uniform coordinates) // Name of a field given on this volume // A floating point value specifying the isosurface levelGrid Compute( Grid DataVolume, string Fieldname, double Isolevel);

Page 32: The  Visualizaton  Cascade

Coding ExampleGrid VizNode::compute(Bundle&B, double time, string Gridname, string Fieldname,

double Isolevel){

// Construct a unique name for the computational resultstring IsosurfaceName = Gridname + Fieldname + Isolevel;

// Check whether result already exists for the given timeGrid IsoSurface = B[ time ][ IsosurfaceName ];

if (!IsoSurface){// No, thus need to retrieve the data volumeGrid DataVolume = B[ time ][ Gridname ];// and perform the actual computationIsoSurface = Compute( DataVolume, Fieldname, Isolevel);// finally store the resulting data in the bundle objectB[ time ][ IsosurfaceName ] = IsoSurface;}return IsoSurface;

}

Page 33: The  Visualizaton  Cascade

Cache Final Data at the GPU - OpenGL:vertex buffer objects, display lists, textures)

GPU Cascade

Data

T=0.0, 0.4, 0.8, 1.2

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 34: The  Visualizaton  Cascade

RAM GPU MemoryGPU Cascade

Data

T=0.0, 0.4, 0.8, 1.2

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Data

Filter

Renderer

Page 35: The  Visualizaton  Cascade

Fiber BundleT=0.0

GPU Memory not part of Bundle

GPU requires own Cache

Data

Filter

Renderer

T=0.4 T=0.8

Page 36: The  Visualizaton  Cascade

OpenGL Cache mirrors Sources

Data

Filter

Fiber BundleT=0.0 T=0.4 T=0.8

Renderer Fiber BundleT=0.0 T=0.4 T=0.8

Page 37: The  Visualizaton  Cascade

Associate OpenGL ID’s with Sources

Data

Filter

Fiber BundleT=0.0 T=0.4 T=0.8

Renderer Fiber BundleT=0.0 T=0.4 T=0.8

Page 38: The  Visualizaton  Cascade

Replay from OpenGL ID’s

Data

Filter

Fiber BundleT=0.0 T=0.4 T=0.8

Renderer Fiber BundleT=0.0 T=0.4 T=0.8

T=0.0

T=0.4

T= 0.8

Page 39: The  Visualizaton  Cascade

The GL Cache “Lives” within an OpenGL Context Provides 3-dimensional indexing scheme to yield

OpenGL ID’s: Reference to data source (e.g. Fiber Bundle object) Viz Node type information Set of viz node parameters

Some parameters might require re-generation of OpenGL objects, others may allow reusage

Creates one ID per input set

GLuint DisplayList = GLCache[ void* ] [ typeinfo ] [ set<void*> ];T=0.4

IsoSurface

RenderPara-

meters

Page 40: The  Visualizaton  Cascade

Coding Examplevoid VizNode::render(GLCache Context, Grid G){ValueSet VS;

// assign cacheable variables into the value set…

GLuint DisplayList = GLCache[ &G ] [ typeid(this) ] [ VS ];if (!DisplayList){DisplayList = glGenLists(1);glNewList(DisplayList, COMPILE_AND_EXEC);// do actual rendering of grid data G…glEndList();GLCache[ Intercube ] [ typeid(this) ] [ VS ] = DisplayList;}elseglCallList(DisplayList);

}

Page 41: The  Visualizaton  Cascade

Demo!

Page 42: The  Visualizaton  Cascade

Availability Code development management:

http://sciviz.cct.lsu.edu/projects/vish

Available via SVN in source code for registered users at http://vish.origo.ethz.ch/