Skip to content
Snippets Groups Projects
Forked from VTK / VTK
32109 commits behind the upstream repository.
user avatar
Ken Martin authored
The old approach used a fast path for a very narrow set of
conditions and then used a slow path for everything else.
This approach required two sets of code,

- GenericCompositePolydataMapper2
- CompositePolyDataMapper2

and had performance issues as the slow path was slower
than OpenGL1 for some cases. This reworking consolidates
the two approach together. The basic approach is that
all blocks with the same VBO structure get grouped together
and rendered as one. The number of different VBO structures is
small so this results in a a small number of things to render.

Each of those things (handled with a Helper class) gets rendered
using its own VBO and IBOs with special code to handle the cases
where uniforms have to be changed between blocks etc.

The results are generally much faster. Some additional
optimizations have resulted in further performance improvements.
Generally this new class is as fast as the old fast path and
tens to hundreds of times faster for the slow path.

This class is still complex and could probably be reworked
another three times. The complexity is largly driven by
how complex the task is as each block can have different
primitives, point/cell data arrays, etc.

This topic adds four more tests for this class. As this
class is the workhourse for ParaView it really needs far
more testing in VTK. The three additional tests cover
some use cases I know tend to cause issues.

At the same time this topic changes how point picking is
done to prevent some bad behavior. The old approach
rendered surfaces for all passes up to the primId pass.
The problem with that is that the point pass rendering may
not match up with the surface rendering resulting in point
Ids associated with incoreect composite/prop/process ids.
It mixes two sets of data haphazzardly. Very bad. This
topic cuases all point selection to be done by rendering
points.
7912d340
History

VTK - The Visualization Toolkit

Introduction

VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization. VTK includes many advanced algorithms (e.g., surface reconstruction, implicit modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control).

VTK is used by academicians for teaching and research; by government research institutions such as Los Alamos National Lab in the US or CINECA in Italy; and by many commercial firms who use VTK to build or extend products.

The origin of VTK is with the textbook "The Visualization Toolkit, an Object-Oriented Approach to 3D Graphics" originally published by Prentice Hall and now published by Kitware, Inc. (Third Edition ISBN 1-930934-07-6). VTK has grown (since its initial release in 1994) to a world-wide user base in the commercial, academic, and research communities.

Learning Resources

Reporting Bugs

If you have found a bug:

  1. If you have a patch, please read the CONTRIBUTING.md document.

  2. Otherwise, please join the one of the VTK Mailing Lists and ask about the expected and observed behaviors to determine if it is really a bug.

  3. Finally, if the issue is not resolved by the above steps, open an entry in the VTK Issue Tracker.

Requirements

In general VTK tries to be as portable as possible; the specific configurations below are known to work and tested.

VTK supports the following compilers:

  1. Microsoft Visual Studio 2008 (aka MSVC++ 9.0) or newer
  2. gcc 4.2 or newer
  3. Apple gcc 4.2 (from Xcode 3.1.4 or newer)
  4. Clang 3.0 or newer
  5. Apple Clang 3.0 (from Xcode 4.2) or newer

VTK supports the following operating systems:

  1. Windows Vista or newer
  2. Mac OS X 10.6.8 or newer
  3. Linux (ex: Ubuntu 12.04 or newer, Debian 4 or newer)

Contributing

See CONTRIBUTING.md for instructions to contribute.

License

VTK is distributed under the OSI-approved BSD 3-clause License. See Copyright.txt for details.