Commit Graph

429 Commits

Author SHA1 Message Date
Matt Larsen
ce2c29105f removing debug variable 2017-07-02 17:02:39 -07:00
Matt Larsen
0498f48269 Fixing incorrect logic when sampling the upper edge of a cell that is on the data set boundry 2017-07-02 17:00:10 -07:00
Matt Larsen
630e871ea7 refactoring ray tracing and adding new renderer 2017-06-17 14:28:45 -07:00
Robert Maynard
5dd346007b Respect VTK-m convention of parameters all or nothing on a line
clang-format BinPack settings have been disabled to make sure that the
VTK-m style guideline is obeyed.
2017-05-26 13:53:28 -04:00
Kitware Robot
4ade5f5770 clang-format: apply to the entire tree 2017-05-25 07:51:37 -04:00
Robert Maynard
5c12bf127e Fix OpenGL header order when testing GLFW 2017-05-24 11:04:59 -04:00
Kitware Robot
efbde1d54b clang-format: sort include directives 2017-05-18 12:59:33 -04:00
Robert Maynard
57ab48fe8e Replace occurrences of NULL with nullptr. 2017-05-04 10:50:57 -04:00
David Lonie
2a4e55770f Merge topic 'weak_vtable_warnings'
77baa8a2 Add test for exceptions thrown across library boundaries.
fd0e3e0e Remove vtable from WaveletFilter.
96bf0dac Give AxisAnnotation a virtual destructor.
4807b3c4 Silence warnings about unavoidable weak vtables.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !742
2017-04-14 08:56:03 -04:00
David C. Lonie
96bf0dac1b Give AxisAnnotation a virtual destructor.
This is necessary since the class has virtual methods, and also
instructs the compiler that the class's vtable is to be stored in the
vtk_rendering library.
2017-04-13 14:07:41 -04:00
Robert Maynard
23c4fe5fd8 Before calling glewInit we need to make sure glew can load all extensions 2017-04-05 14:18:37 -04:00
Dave Pugmire
ca93142512 Merge branch 'master' of gitlab.kitware.com:dpugmire/vtk-m 2017-03-28 09:30:13 -04:00
Dave Pugmire
69f9125663 Experiment with speeding up the GetHexahedronClassification. 2017-03-28 09:28:03 -04:00
Matt Larsen
1d4cfc2a28 Fixing Min and Max calls not defined for non-floating point types 2017-03-13 21:12:02 -07:00
Matt Larsen
cfc252ad83 completed refactoring 2017-03-13 20:59:32 -07:00
mclarsen
2f9fb6eecb Almost finished refactoring 2017-03-13 17:03:37 -07:00
mclarsen
237df547ec Adding classes to reduce the ammount of redundant code 2017-03-13 11:49:29 -07:00
Kenneth Moreland
6fdc7eb8c0 Add Field::GetRange and CoordinateSystem::GetBounds to library
Following what was done with ArrayRangeCompute, the GetRange and
GetBounds methods are embedded into the vtkm_cont library for the most
common type lists.

Also, and probably more importantly, the device adapter is no longer one
of the arguments for either of these methods. It is no longer needed as
ArrayRangeCompute no longer needs it.
2017-03-09 13:18:36 -05:00
Sujin Philip
9eddce6c99 Rename StreamCompact to CopyIf
Plus, removes the version that uses one array as both input and stencil.
2017-03-06 11:08:27 -05:00
Robert Maynard
ae9a8fd0a4 Fix CellSet* typeid to consistent across dynamic libraries.
Since we don't have explicit template instantiations for CellSetExplicit
and CellSetSingleType we need to mark them as being exported from all
libraries.
2017-03-01 17:12:46 -05:00
Kenneth Moreland
3e77f4e18b Merge topic 'refactor-runtime-device-tracker'
18c4190d Update classes using RuntimeDeviceTracker
200928ef Add a global RuntimeDeviceTracker
a3573117 Compile RuntimeDeviceTracker.cxx with CUDA when appropriate
814b2db1 Add the implementation of RuntimeDeviceTracker to cont library
b9d3206e Move RuntimeDeviceTracker to vtkm::cont

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !707
2017-02-24 10:50:19 -05:00
Kenneth Moreland
18c4190d85 Update classes using RuntimeDeviceTracker
They now grab the global runtime device tracker. In some cases, I've
added the ability to set/get the tracker to change it from the global.
In others I just removed the local copy, since it was just hooked into
the global tracker.
2017-02-23 09:54:41 -07:00
Kenneth Moreland
a3573117de Compile RuntimeDeviceTracker.cxx with CUDA when appropriate
The RuntimeDeviceTracker.cxx contains a library method that queries the
CUDA device, which only works if compiled as a CUDA source file.

This set up will allow code that is not compiled with CUDA use a
RuntimeDeviceTracker with other code that does use CUDA.
2017-02-22 16:18:23 -07:00
Matt Larsen
a6bd88d2fe Removing unused timing code and headers 2017-02-22 14:45:33 -08:00
Kenneth Moreland
b9d3206ea6 Move RuntimeDeviceTracker to vtkm::cont
Before it was in the vtkm::cont::internal namespace. However, we expect
to be using this feature quite a bit more as we want VTK-m to handle
multiple devices effectively (as in, just figure it out and go).
2017-02-22 13:33:52 -07:00
Matt Larsen
7d4334b5e3 Had conditional backwards 2017-02-22 11:21:48 -08:00
Matt Larsen
50ccedf828 Fixing the default behavior of the volume renderer 2017-02-22 11:17:22 -08:00
Matt Larsen
87e53d6c00 Fixing error in volume renderer 2017-02-10 14:00:02 -08:00
Matt Larsen
30c5c3be4a Merge topic 'volume_mapper_fix'
1f6ef23b adding the ability to turn off background compositing for volume renderer
3fe918ce adding sample distance to the volume mapper

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !688
2017-02-10 00:08:26 -05:00
Matt Larsen
1f6ef23b98 adding the ability to turn off background compositing for volume renderer 2017-02-09 16:26:23 -08:00
Matt Larsen
3fe918ce4d adding sample distance to the volume mapper 2017-02-09 16:12:23 -08:00
Matt Larsen
6b534a438f Fixing a typo in Actor 2017-02-09 15:59:37 -08:00
Matt Larsen
c2f0dd5a64 Adding the ablitiy to set the scalar range of an Actor to get a consistent mapping of scalar values when running with MPI 2017-02-09 15:38:40 -08:00
Matt Larsen
bd845f01d6 Adding coordinate system include to the volume renderer 2017-02-09 13:00:08 -08:00
Matt Larsen
59020fe98f Adding several more includes to the volume renderer 2017-02-09 12:51:46 -08:00
Matt Larsen
9f074e4ad8 Removing typename from typdef declaration in the volume renderer 2017-02-09 12:47:02 -08:00
Matt Larsen
bee6868254 Fixing the include in the rendering library 2017-02-09 12:36:59 -08:00
David C. Lonie
f601e38ba8 Simplify exception hierarchy.
Remove the ErrorControl class such that all subclasses now inherit from
error. Renamed all exception classes via s/ErrorControl/Error/.

See issue #57.
2017-02-07 15:42:38 -05:00
Robert Maynard
8035b526a8 Update the CMake components to have the concept of backends.
Now components are labeled as devices, and therefore allow other components
to link to only backends. We also have done the same thing for rendering.
2017-01-27 10:03:53 -05:00
Robert Maynard
a6bd3a22e0 Make sure all custom storage containers are exported. 2017-01-16 09:17:38 -05:00
Robert Maynard
a16f9fedbe Reduce the amount of vtables that vtkm::rendering produce. 2017-01-16 09:17:38 -05:00
Kenneth Moreland
713cf4228a Make it not possible to create a cell set without specifying num points
The CellSetExplicit and CellSetSingleType classes have an ivar that
marks the number of points. There were several instances of code
creating cell sets without specifying the number of points. This can be
very bad if subsequent code needs that information.
2017-01-12 13:02:10 -07:00
Robert Maynard
7d0a6d1975 Resolve errors building on windows. 2016-12-12 09:32:46 -05:00
Ben Boeckel
e06a998e5b Merge topic 'render_1D'
8a93ecc4 code alignment tweaks.
6fa448b5 Remove the 1D camera. 1D plots will use a 2D camera.
52aa9b9a Fix some compile errors.
23d8d585 Add explicit 1D rendering. Also added some data model suport.
db522c4c Add GetCanvas calls to the mapper classes.
87b1cdca cleanup. Remove some compiler warnings.
d38e6270 Support for 1D rendering.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !616
2016-12-09 09:34:11 -05:00
Dave Pugmire
8a93ecc404 code alignment tweaks. 2016-12-06 10:36:28 -05:00
Dave Pugmire
6fa448b5a5 Remove the 1D camera. 1D plots will use a 2D camera. 2016-12-02 10:26:36 -05:00
Robert Maynard
295de14deb Merge topic 'consistently_guard_around_windows_h'
6b1094c7 Consistently include windows.h by making a wrapper header.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !620
2016-11-30 13:56:49 -05:00
Dave Pugmire
52aa9b9ad0 Fix some compile errors. 2016-11-29 09:33:46 -05:00
Dave Pugmire
23d8d585a0 Add explicit 1D rendering. Also added some data model suport. 2016-11-28 16:07:40 -05:00
Robert Maynard
6b1094c767 Consistently include windows.h by making a wrapper header.
We previously included windows.h in numerous locations using different
techniques to guard against bringing in parts of the file that are bad
(min/max macros, etc). This solves the problem by consistently using
vtkm/internal/Windows.h to setup everything.
2016-11-28 09:54:37 -05:00
Dave Pugmire
db522c4cd1 Add GetCanvas calls to the mapper classes. 2016-11-28 09:41:01 -05:00
Kenneth Moreland
767fc9c659 Do not declare OpenGLHeaders.h when there is no OpenGL 2016-11-23 13:17:33 -07:00
Kenneth Moreland
0772a157fd Revert "Don't build vtkm_rendering if we can't find opengl"
There are many rendering classes that do not rely on OpenGL. We really
want to be able to use this functionality on systems that do not have
OpenGL. That is a big part of the point.

This reverts commit c75feb74bb6add43e1be9a42a9bf4bf205b97c39.
2016-11-23 12:14:44 -07:00
Dave Pugmire
87b1cdcacf cleanup. Remove some compiler warnings. 2016-11-23 13:45:03 -05:00
Dave Pugmire
d38e627057 Support for 1D rendering. 2016-11-23 10:48:22 -05:00
Kenneth Moreland
02e37f4bc5 Fix an issue with casting a float to an int too soon
There was a case of bad casting where a Float32 that should be in the
range between 0 and 1 was cast to an Id and then multiplied by the size
of an array. The intention is to get a proportional index into the
array, but because the float was cast to an int first, you get either
the first or last index.

Instead, first cast the size of the array to a Float32, multiply it by
the fraction, and then cast back to an Id. That should give the desired
effect.
2016-11-22 15:34:56 -07:00
Kenneth Moreland
fdaccc22db Remove exports for header-only functions/methods
Change the VTKM_CONT_EXPORT to VTKM_CONT. (Likewise for EXEC and
EXEC_CONT.) Remove the inline from these macros so that they can be
applied to everything, including implementations in a library.

Because inline is not declared in these modifies, you have to add the
keyword to functions and methods where the implementation is not inlined
in the class.
2016-11-15 22:22:13 -07:00
Dave Pugmire
80eb8621e2 more uninitialized compiler warnings... 2016-11-07 15:24:38 -05:00
Dave Pugmire
2975b03a53 Remove 'uninitialized variable' warning. 2016-11-07 15:07:03 -05:00
Dave Pugmire
f413bac78c Fix compiler warnings. 2016-11-04 11:43:30 -04:00
Dave Pugmire
5bd9b0ff5f minor fixes. 2016-11-03 16:57:30 -04:00
Robert Maynard
6d9dd7d233 Correct conversion warning in VolumeRendererStructured 2016-10-31 15:27:45 -04:00
Robert Maynard
cc8121d997 Fix uninitialized warnings from DecodePNG. 2016-10-31 15:26:05 -04:00
Robert Maynard
c75feb74bb Don't build vtkm_rendering if we can't find opengl. 2016-10-31 15:16:36 -04:00
Kenneth Moreland
797d30d7bb Remove unnecessary link from vtkm_rendering to glfw
There is no code in the rendering library that uses GLFW. (GLFW is
currently only used directly by tests and examples.) This adds
unnecessary link dependencies that can only hurt us later.
2016-10-22 16:03:16 -06:00
Robert Maynard
ca9233226e Merge topic 'refactor_vtkm_rendering_export_markup'
7d295de8 Refactor vtk-m symbol visibility macros to be on the classes.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !585
2016-10-19 20:02:04 -04:00
Robert Maynard
7d295de8c9 Refactor vtk-m symbol visibility macros to be on the classes.
Instead of labeling each method that needs to have visibility
we can label entire classes, this reduces the amount of noise and
potential for mistakes when writing classes.
2016-10-19 15:01:32 -04:00
Mark Kim
4f835fb31d Need to continuously upload the camera for examples/Rendering. 2016-10-17 10:34:20 -04:00
Mark Kim
464da87d5a Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m 2016-10-12 14:40:32 -04:00
Dave Pugmire
b5007de0ab compile warnings. 2016-10-12 08:35:45 -04:00
Dave Pugmire
60b67fef71 code cleanup. 2016-10-05 09:33:47 -04:00
Dave Pugmire
c7da86f04c compiler warning. 2016-10-05 08:55:19 -04:00
Dave Pugmire
ebef07299e Remove some -Wreorder warnings. 2016-10-04 17:00:05 -04:00
Dave Pugmire
c25a028dcc compile warnings. 2016-10-04 15:29:42 -04:00
Dave Pugmire
a8feb67ad3 warnings.... 2016-10-04 15:10:20 -04:00
Dave Pugmire
31654c2545 fix compiler warning. 2016-10-04 14:38:35 -04:00
Dave Pugmire
fed8c7228c fix compiler warnings. 2016-10-04 13:31:52 -04:00
Dave Pugmire
827bf10795 compiler warnings. 2016-10-04 12:43:04 -04:00
Dave Pugmire
668e8115af Fix compiler warnings. 2016-10-04 11:59:00 -04:00
Dave Pugmire
c4bd8913c2 Use a new worklet to map vertex colors through a colormap. 2016-09-28 14:23:18 -04:00
Robert Maynard
0f58d6fc54 Add vtkm/cont/serial directory for the serial backend. 2016-09-28 14:22:53 -04:00
Mark Kim
0ace430746 Merge branch 'master' of gitlab.kitware.com:dpugmire/vtk-m 2016-09-28 10:59:27 -04:00
Mark Kim
f2a6d8d5e3 Change the for loop that converts color to Worklet. 2016-09-28 10:57:05 -04:00
Dave Pugmire
c99fe8b65e Remove rendering tests that have been moved to subdirectories.
Fix a compile error in canvas constructor in the GLFW test.
2016-09-27 14:04:28 -04:00
Mark Kim
a41e0f28df Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m 2016-09-26 16:12:19 -04:00
Mark Kim
2db35b0041 Removed extraneous debug output. 2016-09-26 15:09:41 -04:00
Mark Kim
5827473abb Merge branch 'master' of gitlab.kitware.com:dpugmire/vtk-m 2016-09-23 09:46:48 -04:00
Dave Pugmire
7a2874cf44 Add 1D support for uniform and rectilinear data. 2016-09-23 09:00:40 -04:00
Mark Kim
9100a58da4 glew undefs GLAPI and GLAPIENTRY. osmesa.h needs them. 2016-09-22 16:44:52 -04:00
Mark Kim
4076aef075 Ubuntu 16.04's OSMesa version 11.2.0 is compiled without gallium/llvmpipe, so it doesn't support GLSL 1.3 or higher. 2016-09-22 16:25:41 -04:00
Kenneth Moreland
4b83826345 Fix uninitialized variable warning in structured volume renderer
One of the dashboard was complaining that the bottomLeft variable might
have been used uninitialized because it got set in a condition above it.
In fact, that condition is always true the first during the first
iteration, but it is not worth fighting the compiler over it. Instead,
just initialize the value of bottomLeft when it is constructed.
2016-09-22 09:52:12 -06:00
Kenneth Moreland
1e819c335f Remove uninitialized value warnings from PNGDecode
One of the dashboard compilers found a code path in PNGDecode where if
given a buffer too short for a header the info.width and info.height
were not initialized but their values still returned to the calling
function. This case does not really matter since an error is also
returned, but still technically incorrect. Fixed the problem by
initializing the width and height to 0 (which could help anyway if the
error is not properly checked).
2016-09-22 09:43:24 -06:00
Dave Pugmire
a12b5eeae3 Fix compile errors. decl for memcpy required. 2016-09-20 11:03:25 -04:00
Kenneth Moreland
0ca69cf65f Merge topic 'osmesa-option'
123bc8b6 Add a configuration error if OSMesa was not found
0a61085d Do not load OpenGL libraries if OSMesa already loaded
640e92c7 Add VTKm_ENABLE_OSMESA option

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !548
2016-09-17 10:11:55 -04:00
Mark Kim
c99c05b6f0 Change glfw unit test to also test vbo uploading. 2016-09-15 13:56:50 -04:00
Mark Kim
bb7fe4ad8e It's possible that the length of shader compiler message to be less than
or equal to zero. If we don't check for that, it'll spit out garbage.
2016-09-15 13:55:16 -04:00
Kenneth Moreland
123bc8b6e2 Add a configuration error if OSMesa was not found
If VTKm_ENABLE_OSMesa was on but OSMesa was not found, CMake would just
give a status update but happily configure. This change checks for the
condition where VTKm_ENABLE_OSMesa is on but OSMesa was not configured
correctly and raises an error in this case.
2016-09-14 16:04:37 -06:00
Mark Kim
7cfc119999 Demo.cxx: MapperRayTracer is no longer a templated class.
UnitTestMapperEGL.cxx: MapperGL is no longer a templated class.
UnitTestMapperGLFW.cxx: strmp needs cstring
rendering/CMakeLists.txt: need to append egl_sources to sources.
2016-09-14 15:58:45 -04:00
Mark Kim
ecf57f8f31 need glewInit. 2016-09-14 11:25:03 -04:00
Mark Kim
c216c98c57 Merge branch 'umaster' 2016-09-14 10:39:52 -04:00
Mark Kim
fbaee11da9 Demo.cxx: MapperRayTracer is no longer a templated class.
UnitTestMapperEGL.cxx: MapperGL is no longer a templated class.
UnitTestMapperGLFW.cxx: strmp needs cstring
rendering/CMakeLists.txt: need to append egl_sources to sources.
2016-09-14 10:33:51 -04:00
Mark Kim
f293c5a0bc Merge branch 'glut-unittest' 2016-09-14 09:19:57 -04:00
Dave Pugmire
36be354980 Merge branch 'glut-rendertest' into 'master'
Add glut rendering unittest.

Make the GLFW package variables advanced, and add it to the configure components.
Modify the other examples that use GLUT to use the configure components command.

See merge request !546
2016-09-13 14:20:04 -04:00
Kenneth Moreland
5455608c69 Remove boost::shared_ptr from rendering library
The remove boost::shared_ptr and the rendering library branches where
developed simultaneously, and thus some of the rendering library
implementation was using boost::shared_ptr like the old code. Bring up
to date with the rest of VTK-m by using std::shared_ptr instead.
2016-09-12 11:08:06 -06:00
Dave Pugmire
ffd2d0eac6 Add glut rendering unittest.
Make the GLFW package variables advanced, and add it to the configure components.
Modify the other examples that use GLUT to use the configure components command.
2016-09-09 15:33:34 -04:00
Kenneth Moreland
77ecfbeb78 Explicitly implement constructors and destructors
The clang compiler was running into linker errors constructors of
classes with virtual methods that were inline and destructors that were
not declared at all. In this case, the compiler was not creating
everything needed by a virtual table and the link died.
2016-09-08 17:08:17 -06:00
Kenneth Moreland
52838e9ed2 Make font factory arrays static for faster compilation
I noticed that Visual Studio was taking an insane amount of time to
compile BitmapFontFactory.cxx (~20 minutes). Following some suggestions
on stackoverflow (http://stackoverflow.com/questions/7893850/long-
compile-times-in-visual-c-2010-with-large-static-arrays) I changed the
arrays to be static const (something that is more viable when compiling
a library instead of header-only). The compile after this changes seems
basically immediate now.
2016-09-07 16:48:11 -06:00
Kenneth Moreland
17194ff3a6 Update OSMesa test for new rendering class interfaces 2016-09-07 16:48:07 -06:00
Kenneth Moreland
0dab3f2adf Fix warning about precision conversion 2016-09-07 16:48:05 -06:00
Kenneth Moreland
22c6741152 Add View to rendering library
To get rid of some templates, I added the ability to create new
instances of mappers and canvases without knowing their type.
2016-09-07 16:48:04 -06:00
Kenneth Moreland
26671e9fd6 Add WorldAnnotator to rendering library 2016-09-07 16:48:01 -06:00
Kenneth Moreland
219d6c02a1 Add TextureGL to rendering library
Also hide internals and other GL-ness from the interface.
2016-09-07 16:48:00 -06:00
Kenneth Moreland
c446f1bc7a Add TextAnnotation to rendering library
Also made the TextAnnotation classes conform better to VTK-m coding
style. Specifically, changed the order of words in subclass names (e.g.
TextAnnotationBillboard instead of BillboardTextAnnotation) and broke
out each subclass into its own header/source files.
2016-09-07 16:47:58 -06:00
Kenneth Moreland
d4afc12add Add Actor and Scene to rendering library
Also took away some unnecessary templates.
2016-09-07 16:47:56 -06:00
Kenneth Moreland
668f93a66b Move Mappers to rendering library
Also changed the mappers to not be templated on the device adapter.
Instead, use TryExecute to determine the device adapter at runtime.
2016-09-07 16:47:52 -06:00
Kenneth Moreland
111850ef08 Use TryExecute within the rendeirng library
When things in the rendering library need to execute things in parallel
(outside of another rendering library like OpenGL) it should run it on
available parallel devices. This means using TryExecute to attempt on
whatever devices may be available. It also means that some of the
sources must be compiled with CUDA's nvcc. To enable this, made a code
wrapping mechanism to compile within a .cu file.
2016-09-07 16:47:50 -06:00
Kenneth Moreland
d8ca9f0125 Add ColorBarAnnotation and ColorTable to rendering library 2016-09-07 16:47:48 -06:00
Kenneth Moreland
1073fdede1 Move Canvas classes to rendering library 2016-09-07 16:47:46 -06:00
Kenneth Moreland
e20648b845 Add Camera code to rendering library 2016-09-07 16:47:44 -06:00
Kenneth Moreland
2c34c1ac9d Move BitmapFont code to library 2016-09-07 16:47:42 -06:00
Kenneth Moreland
07df53d7d1 Move AxisAnnotation classes to rendering library 2016-09-07 16:47:40 -06:00
Kenneth Moreland
ea8602d882 Create configuration for rendering library
I have noticed at least on my windows machine that source code that uses
the rendering package is taking a long time to compile. The rendering
library does not rely much on templates and more on virtual methods.
Thus, it is a good candidate for moving to a library so that it need be
compiled only once.

This sets up the configure scripts to create the library. There is also
a simple port of one class to the library. More will follow.
2016-09-07 16:47:35 -06:00
Kenneth Moreland
8cb2803b45 Merge branch 'precision-warnings' into 'master'
Fix precision warnings when FloatDefault is 64 bit

When VTKm_USE_DOUBLE_PRECISION is on (not the default), then
vtkm::FloatDefault is set to 64 bit values. There was some code that was
coded for 32 bit and never checked for 64 bit (on all compilers).

See merge request !526
2016-09-07 13:54:13 -04:00
Robert Maynard
f81c42b9b4 Replace NULL with nullptr where applicable. 2016-09-01 09:38:25 -04:00
Mark Kim
387d2a6a76 Stop copying the data in the render call. Instead, upload it on the first
call and then never upload again.

RenderTest: overload the Render function to pass in a Mapper.
UnitTestMapperGLFW: global variable for the MapperGL to pass into RenderTest::Render

MapperGL: Creating the VBO/VAO is now wrapped in check to see if the data's
already been loaded.

Moved some variables to class scope.
2016-08-29 04:33:14 -06:00
Kenneth Moreland
893f3115f2 Fix precision warnings when FloatDefault is 64 bit
When VTKm_USE_DOUBLE_PRECISION is on (not the default), then
vtkm::FloatDefault is set to 64 bit values. There was some code that was
coded for 32 bit and never checked for 64 bit (on all compilers).
2016-08-26 09:33:37 -06:00
Kenneth Moreland
4fd9ba7e11 Make glfw auto-terminate during testing
The UnitTestMapperGLFW test was coded to run in an interactive mode,
which was problematic when simply running the test. If no one was there
to exit the interactive window, the test would time out. This change
adds a "batch" mode that is on when run by ctest. The batch mode runs
through all configurations and exits.
2016-08-26 08:28:35 -06:00
Kenneth Moreland
7f8ea09f88 Fix configuration of dependent rendering libraries
The VTKmConfigureComponents.cmake file has lots of careful configuration
of many of VTK-m components and dependent libraries (like OpenGL,
OSMesa, etc.) that takes care of several corner cases. The configuration
is consolidated here so that it can be consistent across the many
directories in VTK-m as well as other projects that use VTK-m.

Recent changes to the configuration in rendering circumvented these and
directly tried to configure dependent rendering libraries. This is wrong
(and more importantly broke my OSX build).
2016-08-25 14:44:30 -06:00
Kenneth Moreland
1b69a83423 Don't add tests from parent directories
The testing subdirectories were including the tests from the parent
directory. I believe this was a copy-paste error from the tests
originally all being in one file (where the unit_tests variable had all
tests appended) and then moved to subdirectories where they should not
be appended.
2016-08-25 13:20:40 -06:00
Kenneth Moreland
8fd0768b39 Add RenderTest.h to configure scripts
The SourceInBuild was failing because of that.
2016-08-25 10:34:40 -06:00
Dave Pugmire
6f30b786f5 Add GLFW unit test.
Simplify the test code with a class templated on mapper, canvas and view.
2016-08-24 16:22:48 -04:00
Dave Pugmire
78f368486c Did a chmod on these files that had the execute bit set. 2016-08-24 13:08:23 -04:00
Mark Kim
e920659ab8 Don't need to set uni_tests. 2016-08-19 14:27:40 -06:00
Mark Kim
5fbc55fa52 Check to see if osmesa or egl were found before adding testing. 2016-08-18 14:04:37 -06:00
Mark Kim
a5c3be294e Not specifying GLFW compatibility mode and OpenGL version allows for
annotation.
2016-08-12 19:29:01 -06:00
Mark Kim
cd27a71e2b Some Windows specific problems:
snprintf is incorrect pre-VS2013.
There are iterator issues (see 2121a36f)
far is a reserved #defined in windows *sigh*
2016-08-12 18:33:27 -06:00
Mark Kim
7bb3e89e87 Split EGL and OSMesa into separate directories. libGL and libOSMesa do not play well together. 2016-08-08 21:57:38 -04:00
Robert Maynard
31138293f9 Pass Fields and CoordinateSystems to Dispatcher::Invoke
Now that we can handle scheduling Fields and CoordinateSystems, do
2016-08-05 15:26:17 -04:00
Mark Kim
5535751a17 Merge branch 'glut-unittest' of gitlab.kitware.com:dpugmire/vtk-m into glut-unittest
Merge of Dave's clean-up with some of my fixes.
2016-08-03 10:40:53 -04:00
Dave Pugmire
f5de22b919 Add VBO rendering for MapperGL 2016-08-03 09:45:41 -04:00
Mark Kim
54b463c363 Don't need glBindAttributeLocation if layout(attribute) is given in shader. 2016-08-02 16:23:41 -04:00
Mark Kim
e966eb6b94 Merge branch 'glut-unittest' of https://gitlab.kitware.com/dpugmire/vtk-m into glut-unittest 2016-08-02 16:23:32 -04:00
Mark Kim
4928a4706d Row vs Column order for the view and projection matrix.
Rudimentary error checking on shader compilation.
layout location swapped for vertex_position and vertex_color.
2016-08-02 16:16:32 -04:00
Dave Pugmire
6c5834ed94 fix mtx copy 2016-08-02 15:32:39 -04:00
Dave Pugmire
35411b140f debugging mappergl 2016-08-02 14:59:44 -04:00
Dave Pugmire
7d5934ea22 use the matricies from the camera for the VBO rendering. 2016-08-02 13:42:47 -04:00
Dave Pugmire
9b81cd9ed2 Remove compiler warning. 2016-08-02 13:01:36 -04:00
Dave Pugmire
9ee497edb9 Add GLUT unit test. 2016-08-02 13:01:36 -04:00
Dave Pugmire
17e2a836f0 Adding GLUT unit test for rendering. 2016-08-02 13:01:36 -04:00
Matt Larsen
9659f35509 my changes 2016-08-02 09:56:26 -07:00
Kenneth Moreland
8863769ea7 Fix an infinite recursion where the wrong overload was called
The intension was that if Camera::Zoom was called with a Float64, it
would call the Float32 version. However, I made a type where it called
itself. The latest version of XCode called me out on this infinite
recursion.

I think this is the equivalent of the compiler calling me a dumb-ass.
2016-07-31 11:47:30 -06:00
Matt Larsen
a4012c1667 Rmoving throw from worklet that prevents rendering from compiling with CUDA 2016-07-29 07:50:14 -07:00
Dave Pugmire
be643811d6 Add GLFW unittest. 2016-06-30 15:12:53 -04:00
Kenneth Moreland
1d0eac6301 Update some configuration to new components 2016-06-21 18:03:25 -06:00
Kenneth Moreland
a8384d6b7a Unify configuration for VTK-m build and packages
Have VTK-m eat its own dog food when it comes to its configuration. Load
the same configuration for building VTK-m as would be loaded (more or
less) when using find_package(VTKm) in an external project.

This includes adding lots more components to the packages so that all the
setup (e.g. OpenGL, TBB, etc.) can be set up correctly. It is also a
significant change to how these components are declared. The component
configuration is simplified a bit and unified in a single file.
2016-06-21 18:03:23 -06:00
Dave Pugmire
e30f3c58f9 Create a templated function to handle basic rendering tests.
Eliminates a lot of duplicated test code.
2016-06-17 13:39:16 -04:00
Kenneth Moreland
952929a7d0 Merge branch 'msvc-rendering' into 'master'
Fix several issues concerning using rendering library with Visual Studio

Write a comment or drag your files here...

See merge request !457
2016-06-16 19:40:50 -04:00
Dave Pugmire
f427011002 Merge branch 'EGL2' into 'master'
Add support for offscreen rendering with EGL. Added new class CanvasEGL, and a test.



See merge request !455
2016-06-16 14:48:00 -04:00
Kenneth Moreland
42cc4a0c10 Remove warning about loss of precision
Remove the ever fun loss of precision warning.
2016-06-15 18:03:20 -06:00
Kenneth Moreland
1d158346db Get raw pointer from checked iterators
In some cases on windows pointers used as iterators are wrapped in
checked iterators. This is fine for most uses, but you cannot pass them
to a C function as a pointer (as we were doing for OpenGL). This change
converts the checked iterator back to a raw pointer in this case.
2016-06-15 18:02:52 -06:00
Kenneth Moreland
dc15a6bedb Get around issue with min/max macros defined
There were a few places in the source code where
std::numeric_limits::min and max were used. There is an issue with these
methods on windows because the standard libraries there define macros
with the same name. Get around this problem by either places parentheses
so that they do not look like macros or use the vtkm::Infinity methods
instead.
2016-06-15 17:44:45 -06:00
Kenneth Moreland
a4d3dfe4a1 Include windows.h before gl.h
This is a requirement when compiling for windows.
2016-06-15 16:11:41 -06:00
Kenneth Moreland
05388ebfdf Do not use snprintf
This function is not portable to all MSVC compilers. Instead, use the
standard C++ stringstream that should be in every C++ compiler.
2016-06-15 16:06:50 -06:00
Kenneth Moreland
15d7132a2f Do not use "near" and "far" as variable names
Microsoft visual studio treats these as keywords. These keywords were
used for pointers on 16-bit architectures. That makes them pretty much
obsolete for any software written in the last 20 years, but happily they
stick around to give us confusing compile errors.
2016-06-15 14:37:18 -06:00
Dave Pugmire
af1daf2f66 Add support for offscreen rendering with EGL. Added new class CanvasEGL, and a test. 2016-06-15 09:48:45 -04:00
Kenneth Moreland
d861c1ec60 Reset Camera pan and zoom when setting range
It is odd to set the Camera range based on bounds and still have pan and
zoom activitated. This change resets the pan and zoom in these cases.
2016-06-14 17:44:16 -06:00
Kenneth Moreland
303b4da4c8 Remove BackgroundColor from Mapper
This was supposed to be removed in an earlier commit where the
background color was consolidated to Canvas, but I missed this one.
2016-06-14 14:18:21 -06:00
Kenneth Moreland
45a73baab1 Use degrees instead of radians for rotation transforms
It is more common to use degrees when specifying a transform (thanks to
the classic OpenGL interface). Also, camera specifies the field of view in
degrees, which made rotations inconsistent. This change unifies all that.
2016-06-14 13:52:55 -06:00
Kenneth Moreland
a2fee371b3 Add vtkm::Float64 versions of Camera methods
All of the Camera math (currently) uses 32-bit floats. However, to make
it easier to use the Camera class, I've duplicated the accessor methods
to also accept 64-bit floats.
2016-06-14 13:08:10 -06:00
Kenneth Moreland
123a3da8e6 Correct near clipping plane in ResetToBounds
Make it proportional to the size of the geometry.
2016-06-14 12:50:17 -06:00
Kenneth Moreland
d4e5bb0aee Resolve conflicting merges
Merge request !445 (Camera enhancements) and merge request !448
(Consolidate background color) had conflicting changes in View.h.
Although git did not pick up on the conflict because each merge modified a
different portion of View.h, the final merge with both of these resulted
in a compile error.

Basically what happened was `Consolidate background color` changed all
the View constructors to reflect changes. `Camera enhancements` added a
new constructor to View using the old construction method. The new
constructor with the old construction method caused an error.
2016-06-13 09:57:19 -06:00
Kenneth Moreland
e50d91199c Merge branch 'consolidate-background-color' into 'master'
Consolidate background color in rendering classes

Before this commit, there were three separate classes (Mapper, Canvas,
and View) that were all managing their own version of the background
color. As you can imagine, this could easily become out of sync, and in
fact if the user code did not specify the same background at least
twice, it would not work.

Fix this by consolidating the background color management to the Canvas.
This is the class most responsible for maintaining the background. All
other classes get or set the background from the Canvas.

That said, I also removed setting the background color from the
constructor in the Canvas. This background color is overridden by the
View anyway, so having it there was only confusing.

See merge request !448
2016-06-13 11:46:18 -04:00
Kenneth Moreland
9110214e7c Update OSMesa test
In the previous commit, I removed the background color arguments from
all the constructors from the Canvas class. I had missed the fact that
this was used in UnitTestMapperOSMesa.
2016-06-13 09:23:49 -06:00
Kenneth Moreland
72b43d7151 Consolidate background color in rendering classes
Before this commit, there were three separate classes (Mapper, Canvas,
and View) that were all managing their own version of the background
color. As you can imagine, this could easily become out of sync, and in
fact if the user code did not specify the same background at least
twice, it would not work.

Fix this by consolidating the background color management to the Canvas.
This is the class most responsible for maintaining the background. All
other classes get or set the background from the Canvas.

That said, I also removed setting the background color from the
constructor in the Canvas. This background color is overridden by the
View anyway, so having it there was only confusing.
2016-06-11 12:09:51 -06: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
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
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
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
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
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
1934049df9 Change vtkm::rendering::View to Camera 2016-06-02 13:04:01 -06: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