Fwd: VTK Timings w/r to OpenGl

obara obara at simmetrix.com
Wed Apr 26 17:43:38 EDT 2000


Hi Folks,

 While working on an application that involve thousands of 
actors in VTK, I noticed really poor graphics performance on a SUN 
Ultra10 Elite 3D workstation for relatively simple geometry.  I then 
began investigating what the performance bottleneck was by writing some 
very simple test applications.  One app was written in VTK and the other 
was written in OpenGl.  Basically each app displays n cubes (each a 14 
point triangle strip) and can change the way the data is structured by 
varying the number of actors (or display lists in the case of OpenGl) 
used as well as changing the material property of each cube.

One using one actor (or one display list) the results are basically the 
same:
#of cubes      framerate      rendering rate
1000      Framerate = 76      .91 MTri/Sec <- limited by frame buffer 
switching
8000      Framerate = 38      3.7 MTri/Sec
15625     Framerate = 25      4.7 MTri/Sec
27000     Framerate = 15      4.9 MTri/Sec

However when I changed the number of actors used (even for 1000 cubes) 
the results differed dramatically:


For 1000 cubes - simply varying the number of actors
actors         Framerate           Rendering Speed
1          Framerate = 76      .91 MTri/Sec <- limited by frame buffer 
switching
100        Framerate = 76      .91 MTri/Sec <- limited by frame buffer 
switching
125        Framerate = 38      .30 MTri/Sec
250        Framerate = 38      .30 MTri/Sec
500        Framerate = 19      .23 MTri/Sec
1000       Framerate = 9.4     .11 MTri/Sec

In the case of OpenGl there was no difference with varying the number of 
display lists (including setting a material property per cube).  The 
Framerate was still 76/sec

In the case of increasing the number of cubes beyond 1000 (each with a 
different material property) using OpenGl:

# of cubes     Framerate           Rendering Speed
1000           Framerate = 76      0.91 MTri/Sec <- limited by frame 
buffer switching
8000           Framerate = 19      1.8  MTri/Sec
15625          Framerate = 9.5     1.8  MTri/Sec
27000          Framerate = 4.8     1.6  MTri/Sec

You can see we are getting at least an order of magnitude penalty.

We also ran both test applications through quantify and saw the following 
behavior:

The expected issue:
There is overhead in vtk itself with so many actors seemingly mainly due
to the fact that it has to poll each actor for changes before it
renders each frame. We are working with Kitware to develop solutions
to this problem.

The unexpected issue:
There is something about how vtk and opengl are interacting that
makes the rendering of the display lists that vtk creates for
the vtkActorTest much slower than for the plain OpenGl code that we 
wrote.

The actual time spent in glCallList for the vtk-based example vs. the 
non-vtk-based example is something like an order of magnitude greater. 

We even tried to allocate (and initializing) blocks of memory between the 
allocations of display lists in the OpenGl example (to simulate the fact
that with vtk the display lists won't be in contiguous memory blocks).
This didn't have any noticable effect.

If anyone have expertise in OpenGl and would like to take a look at why 
the performance differs so drastically please let me know and I can send 
you copies of the test programs.

Please let me know what you think.


Bob



Robert M. O'Bara
Senior Software Engineer
Simmetrix Inc.
1223 Peoples Ave.
Troy, NY 12180

Lab: (518) 276-2867
Main Office: (518) 276-2729

--------------------------------------------------------------------
This is the private VTK discussion list. Please keep messages on-topic.
Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
<majordomo at public.kitware.com>. For help, send message body containing
"info vtkusers" to the same address.
--------------------------------------------------------------------



More information about the vtkusers mailing list