Commit Graph

1978 Commits

Author SHA1 Message Date
Robert Maynard
5b6c6a7c72 Merge topic 'remove_UseVTKmCUDA.cmake_debug_message'
8a9fa5d2 Remove debug message from UseVTKmCUDA.cmake

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !446
2016-06-10 17:47:24 -04:00
Robert Maynard
65a3de9df8 Only generate code paths for Hexahedron input cells.
We currently only support Hex cells as our input cell type, so no reason
to compile in other cell type support currently.
2016-06-10 17:06:39 -04:00
Robert Maynard
8a9fa5d2cd Remove debug message from UseVTKmCUDA.cmake 2016-06-10 13:33:07 -04:00
Robert Maynard
6a395f06a4 Merge topic 'disable_vtkmAssume_windows_nvcc'
a2f5278f Disable VTKM_ASSUME when inside CUDA code compiled with VisualStudio.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !444
2016-06-09 15:43:31 -04:00
Kenneth Moreland
e47db6f610 Add dolly for 3D cameras
I forgot this one when adding roll, elevation, and azimuth.
2016-06-09 13:34:29 -06:00
Kenneth Moreland
ebfb1e7389 Make giving Camera to View optional
It is now optional to give a Camera object when constructing a View. If
a Camera is not specified, one is automatically set up by calling
ResetToBounds on the spatial bounds of the scene.

This makes it even easier to set up a view.
2016-06-09 13:34:29 -06:00
Kenneth Moreland
9f3e0e5952 Implement roll, elevation, and azimuth for 3D cameras
Also implement pan and zoom for 2D cameras.

Update the rendering tests to do these camera rotations. This matches
better the viewpoint used before the previous camera changes.
2016-06-09 13:34:29 -06:00
Kenneth Moreland
cdeeda67bb Make a shared header of 3D transformations
Affine transformations of homogeneous coordinates using 4x4 matrices are
quite common in visualization. Create a new math header file in the base
vtkm namespace that has common functions for such coordinates.

Much of this implementation was taken from the rendering matrix helpers.
2016-06-09 13:34:29 -06:00
Kenneth Moreland
d55402e998 Merge branch 'render-interface-consistency' into 'master'
Render interface consistency

These changes mostly represent changing the interface to some of
the rendering classes to be more consistent with the reset of VTK-m.
In particular, several exposed class members become private and
are accessed through methods.

There are some other changes to make the interface simpler to
use. One example is consolidating the width/height of the image
to the Canvas. (All other classes refer to the Canvas for the
width/height). Another example is removing the template from
the View class.

See merge request !442
2016-06-09 15:32:53 -04:00
Kenneth Moreland
9b34f9eccc Perform missing updates to OSMesa code
I do not have OSMesa on my main development platform, so I missed updating
some of the code when I changed the interface.

Also removed some inline statements on pure virtual functions that GCC
was complaining about.
2016-06-09 12:35:59 -06:00
Kenneth Moreland
ca87b5f736 Make defining WorldAnnotator for View optional
Most of the time, you just match the WorldAnnotator with the canvas of
the same type. Rather than make the user specify it every time, add a
method to the canvas that creates a "good" WorldAnnotator to use with
it. Then, if a WorldAnnotator is not given to the View constructor, one
is automatically created from the Canvas.
2016-06-09 12:08:03 -06:00
Kenneth Moreland
6e6177e2a8 Restore camera view diagnostics 2016-06-09 12:08:02 -06:00
Kenneth Moreland
2be7a8e032 Remove templating from View
The template parameters on vtkm::rendering::View are unnecessary. All
three of the templated classes are polymorphic (with virtual functions).
Thus, you just have to specify them at the constructor. Removing the
template parameters makes the syntax a bit cleaner and removes some
unnecessary duplication in the executable.

Removing the template does mean we cannot optimize in the future.
However, I expect us to start using more virtual methods rather than
less, so I think this is a move in the right direction.
2016-06-09 12:08:01 -06:00
Kenneth Moreland
5af7c6ff4c Hide internal parts of Canvas 2016-06-09 12:07:59 -06:00
Kenneth Moreland
55af901f60 Hide Camera private parts
With only a few exceptions for simple structures, we do not expose the
members of classes. Instead, we provide accessor methods. Do this for
Camera as well as add some helper methods.
2016-06-09 12:07:58 -06:00
Kenneth Moreland
0769b96bf3 Remove Width and Height from Camera
The width and height are maintained out of necessity by the canvas. A
second copy was maintained by the camera, which was only used for
computing the aspect ratio and similar metrics for projections.

Having to maintain the width/height in two places is a bit of a hassle
and provides the opportunity for bugs if they get out of sync. Instead,
have the width/height managed in one place (the canvas) and pass them as
parameters as necessary.
2016-06-09 12:07:56 -06:00
Kenneth Moreland
b01e8391b4 Consolidate functionality in Canvas classes
Move some of the management of the width, height, and buffers to the base
Canvas class. Also, when it makes sense, get the width and height from
the rendering system.

Also changed the color buffer to be a Vec so that you don't have to
manage array offsets by hand.

All of these changes snowballed from the observation that the glut
example did not properly enable the depth buffer.
2016-06-09 12:07:55 -06:00
Kenneth Moreland
c613145706 Add cool2warm color map as default
Make default color map automatic when creating a Plot.
2016-06-09 12:07:54 -06:00
Kenneth Moreland
e30607f134 Hide internal std::vector in Scene
Generally we try not to expose the implementation details of how things
are stored in objects.

Also changed some arguments that should have been declared const to
actually be const.
2016-06-09 12:07:53 -06:00
Kenneth Moreland
0569219b62 Merge branch 'gcc-warning' into 'master'
Fix conversion warning

This warning happened on GCC 4.8.0.

See merge request !443
2016-06-09 14:03:42 -04:00
Robert Maynard
a2f5278f12 Disable VTKM_ASSUME when inside CUDA code compiled with VisualStudio.
We have found a bug inside NVCC/VS where it will generate bad PTX code when
it encounters __assume.
2016-06-09 13:29:14 -04:00
Kenneth Moreland
eaa5747527 Fix conversion warning
This warning happened on GCC 4.8.0.
2016-06-09 11:00:06 -06:00
Kenneth Moreland
1d5fbea3e9 Merge branch 'volume-raytracing-crash' into 'master'
Fix use of uninitialized invSpacing value in volume raytracing

The SamplerRect worklet had an error where it was possible that the
invSpacing stack-local values could be used uninitialized. On the first
iteration of the loop in the SamplerRect operation, it calls LocateCell,
which is supposed to set invSpacing. Under most conditions it does, but
if one of the ray directions is 0 (which can happen with axis-aligned
views), one of the invSpacing dimensions was skipped, leaving the value
to whatever garbage happened to be on the stack. Later, the invSpacing
value was used to interpolate a scalar, which under some circumstances
could cause an array index error when looking up a color in the color
map.

This fix changes the condition for when the ray direction is 0 to still
initialize invSpacing.

See merge request !441
2016-06-07 12:54:29 -04:00
Kenneth Moreland
8834458238 Fix use of uninitialized invSpacing value
The SamplerRect worklet had an error where it was possible that the
invSpacing stack-local values could be used uninitialized. On the first
iteration of the loop in the SamplerRect operation, it calls LocateCell,
which is supposed to set invSpacing. Under most conditions it does, but
if one of the ray directions is 0 (which can happen with axis-aligned
views), one of the invSpacing dimensions was skipped, leaving the value
to whatever garbage happened to be on the stack. Later, the invSpacing
value was used to interpolate a scalar, which under some circumstances
could cause an array index error when looking up a color in the color
map.

This fix changes the condition for when the ray direction is 0 to still
initialize invSpacing.
2016-06-07 09:36:56 -06:00
Kenneth Moreland
30fdc7f984 Merge branch 'osmesa-link-error' into 'master'
Fix minor issues with building with OSMesa



See merge request !440
v1.0.0
2016-06-06 14:40:56 -04:00
Kenneth Moreland
74f93807d9 Add OpenGL library to renering tests when applicable
It is necessary for the OSMesa test, and will probably be needed for
tests in the future.
2016-06-06 09:55:38 -06:00
Kenneth Moreland
7673c739d1 Link rendering tests to OSMesa library, not include dir
There was an error in the CMakeLists.txt in the rendering tests where
the include directory was linked in instead of the OSMesa library.
It was a simple mistake of typing the wrong CMake variable.
2016-06-06 09:48:37 -06:00
Robert Maynard
5ba6afe688 Merge topic 'cmake_cuda_detection_use_working_dir'
a0af013c Auto-detection of cuda version requires usage of a working directory.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !439
2016-06-03 14:46:56 -04:00
Robert Maynard
c792dd505c Merge topic 'build_rendering_without_mesa'
1d379db4 Allow people to build rendering without mesa.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !438
2016-06-03 14:19:11 -04:00
Kenneth Moreland
bbb42a014c Merge branch 'rename-rendering-classes' into 'master'
Rename rendering classes

Per our discussion in our last technical meeting, we are renaming several
of the rendering classes to be more clear and consistent with other
software products.

See merge request !437
2016-06-03 14:15:26 -04:00
Robert Maynard
a0af013c22 Auto-detection of cuda version requires usage of a working directory.
Without a working directory specified, the executable will be output
to what-ever working directory cmake-gui was launched from. In most cases when
CMake is the 'system' version, this is a directory that you don't have write
access to.
2016-06-03 13:10:44 -04:00
Robert Maynard
1d379db417 Allow people to build rendering without mesa. 2016-06-03 10:20:25 -04:00
Kenneth Moreland
fa3e43fbaa Change vtkm::rendering::RenderSurface to Canvas
The word surface is more often used for something like a polygonal mesh,
so this name is quite confusing. Canvas is consistent with a
conventional name in GUI widget APIs.
2016-06-02 16:04:13 -06:00
Kenneth Moreland
eb9288cb1a Change vtkm::rendering::Window to View
The rendering classes do not actually manage windows, and window was not
descriptive of what this class was doing. We decided that the class was
mostly analogous to what we call a "view" in ParaView.
2016-06-02 15:43:40 -06:00
Kenneth Moreland
f4bf723cdf Change vtkm::rendering::Plot to Actor
This name was chosen to reflect the analogous name in VTK.
2016-06-02 13:49:49 -06:00
Kenneth Moreland
9fc86890eb Change vtkm::rendering::SceneRenderer* to Mapper*
This name was chosen to reflect the analogous name in VTK.
2016-06-02 13:41:14 -06:00
Kenneth Moreland
f66d72c72d Merge branch 'installed-files' into 'master'
Make sure all header files are listed with build

This should help ensure that all files are properly installed.

See merge request !436
2016-06-02 15:21:43 -04:00
Kenneth Moreland
1934049df9 Change vtkm::rendering::View to Camera 2016-06-02 13:04:01 -06:00
Kenneth Moreland
fe8654d7eb Add export macros to splat kernel methods
Not having them could cause compiler issues.
2016-06-02 12:30:37 -06:00
Kenneth Moreland
a8169fbf61 Make sure all source files are declared in the examples
For header files, this only adds the file to IDE file lists, which is
convenient but not critical. However, the test did find a ligit error in
the hello_world example where the TBB build was actually using the
serial device adapter.
2016-06-02 10:24:21 -06:00
Kenneth Moreland
caef882e9d List splatter worklet header files in build files 2016-06-02 10:24:21 -06:00
Kenneth Moreland
7f005562ac Make all benchmarking sources listed in build
The benchmarking header files were not listed. Not a huge deal since
these files do not need to be installed, but they should be listed
anyway. Changed the vtkm_save_benchmarks CMake macro to be able to list
headers.

Also moved everything from BenchmarkDeviceAdapter.h to
BenchmarkDeviceAdapter.cxx. Since this code shouldn't need to be
included by anything except this benchmark, there is no need to have it
in a header file. Plus, the build changes would mean that any change in
the header (where most of the source was) could cause all code in this
directory to recompile. I do not want to set that precedent.
2016-06-02 10:24:21 -06:00
Kenneth Moreland
4ae3a20dfc Add test to check that all source files are part of the build system
The test is a simple CMake script that finds all files in the build
directory with certain extensions (.h, .cxx, etc.) and makes sure that
the filename is listed somewhere in the CMakeLists.txt file of the same
directory. If the filename is listed in the CMakeLists.txt file, then
there is a good chance it is being addressed by the build.

This should help catch when header files are not being installed. It also
should help verify that test builds are being done on all files. It will
also highlight dead source files.
2016-06-02 10:23:37 -06:00
Kenneth Moreland
985cb971ea Merge branch 'install_missing_vtkm_filter_header' into 'master'
delete the vtkm::filter::FieldTypes header.



See merge request !434
2016-06-02 11:29:28 -04:00
Kenneth Moreland
0e114bb14d Merge branch 'annotation-compile-issues' into 'master'
Fix minor compile issues with font classes



See merge request !435
2016-06-01 18:53:10 -04:00
Kenneth Moreland
a28432d737 Fix some compile warnings
These compile warnings include implicit conversion from signed to
unsigned, a shadowed variable, and an unused static function.
2016-06-01 15:16:13 -06:00
Kenneth Moreland
bc979013e0 Use VTK-m's OpenGLHeaders.h instead of GL/gl.h
Not all systems put their OpenGL headers in a directory named GL. (In
particular, OSX decides to be different.) The vtkm/rendering/internal/
OpenGLHeaders.h header takes care of including the OpenGL header on all
platforms.
2016-06-01 15:16:13 -06:00
Kenneth Moreland
7154ba2968 Add new rendering files to CMakeLists.txt
This is required for installing the files. It is also useful for
developers because it adds the files to IDEs and creates test builds for
the header files. Those test builds highlighted some missing includes.
2016-06-01 15:15:18 -06:00
Robert Maynard
e3e94d102e delete the vtkm::filter::FieldTypes header.
The header is used by nothing, and contains an old version of
the FieldMetadata class.
2016-06-01 16:45:09 -04:00
Jeremy Meredith
298b9d2e6c Merge branch 'annot6' into 'master'
Adding text annotations to rendering

This adds bitmap font support and two types of text annotations - screen space text and world-space billboard text - as well as enables the labels in the axes.

See merge request !423
2016-06-01 14:35:06 -04:00