Commit Graph

753 Commits

Author SHA1 Message Date
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
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
Jeremy Meredith
6c8045bdc3 unifying 2d and 3d scenes 2016-06-01 13:51:37 -04:00
Jeremy Meredith
501f34c27a cleanup and style 2016-06-01 13:37:03 -04:00
Jeremy Meredith
dd27e32cfc Merge branch 'master' into annot6
Conflicts:
	vtkm/rendering/RenderSurfaceGL.h
	vtkm/rendering/Window.h
2016-05-31 15:32:56 -04:00
Kenneth Moreland
507222c489 Change rendering classes to use Range and Bounds
In addition to this being necessary to be compatible with recent
changes, it makes for cleaner declaration of these values.
2016-05-29 18:49:37 -06:00
Kenneth Moreland
db6d61cadb Modify build to handle non-X-based OpenGL
Specifically, I am trying to compile the code on OSX. OSX uses OpenGL
libraries in a different directory than most other installs (including
X11) and does not generally support GLX. These changes remove the files
that support GLX in systems that do not support it.

I also added several header files to the CMake lists that were not there
but should have been.
2016-05-25 15:34:14 -06:00
Kenneth Moreland
c028329222 Merge branch 'rendering-warnings-style' into 'master'
Fix warnings and style in rendering module

Fix some coding style issues and a few warnings in the rendering code.

See merge request !424
2016-05-25 16:31:00 -04:00
Robert Maynard
a3d27a644c Merge topic 'rename_topology_tag'
8dfe8cd3 Rename ControlSignature tag TopologyIn to CellSetIn.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !416
2016-05-25 14:08:09 -04:00
Kenneth Moreland
fcbfacb4f0 Better conform Plot.h to VTK-m style
Principally, the indentation style was changed to 2 spaces and the
member variables of classes were changed to start with a capitol.
2016-05-24 14:54:20 -06:00
Kenneth Moreland
3456fc1455 Better conform Scene.h to VTK-m style
Principally, the indentation style was changed to 2 spaces and the
member variables of classes were changed to start with a capitol.
2016-05-24 14:46:12 -06:00
Kenneth Moreland
73a617db59 Fix warning about member init order and conform to style in Window.h
Made several changes to Window.h that fix the following:

* Fix warning about the member functions being initialized out of order
* Conform indentation to be 2 spaces
* Conform member functions to be capitolized
* Conform the use of "this->" when referencing class members
* Conform using full namespace when using classes
* Be more descriptive in some variable names
* Alphabetize includes
2016-05-24 14:36:25 -06:00
Jeremy Meredith
0dab70990b adding mention of SIL Open Font License. 2016-05-24 11:45:23 -04:00
Jeremy Meredith
b158ac2c11 removing debug code 2016-05-23 14:02:11 -04:00
Jeremy Meredith
dbdd670ba8 adding billboard text support and cleaning up. 2016-05-23 13:52:47 -04:00
Jeremy Meredith
dddc74904b bugfix to font texturing issue.
also, warning fixes and removing debugging statements.
2016-05-23 10:56:52 -04:00
Jeremy Meredith
230650c02b text annotations almost working, pending one texture bug fix 2016-05-20 17:57:56 -04:00
Jeremy Meredith
854cbf5c7f text annotaion infrastructure added and working. 2016-05-20 17:25:50 -04:00
Dave Pugmire
dc31494b59 Merge branch 'master' into annot5 2016-05-20 10:04:37 -04:00
Kenneth Moreland
1736a117ba Fix warnings about out of order member initialization
There are a lot of VTK-m coding style issues I would also like to clean
up (such as variable names and using "this->" before member variables),
but it is late and I want to go home.
2016-05-19 17:27:16 -06:00
Kenneth Moreland
68c18b2e38 Fix multiple warnings about unused params and precision loss 2016-05-19 17:15:06 -06:00
Kenneth Moreland
ee73ab96a8 Fix warning about initialization out of order in RenderSurface.h
C++ standard states that all class member variables are initialized in
the order they are declared in the class. Thus, it is considered good
C++ style to have their initialization listing in the constructor to
match the actual order they are initialized. The compiler could give a
warning otherwise.

While I am at it, rename the member variables to be more aligned with
VTK-m coding style (i.e. start with capital letter and be descriptive).
2016-05-19 16:59:39 -06:00
Kenneth Moreland
732a45ff3b Fix shadowed variable warnings and style for View.h
Several of the methods in View.h were giving me warnings about shadowed
variables because the name of the arguments were the same as some class
member variables. I fixed this by changing the variable names to match
the VTK-m coding convention of using capitalized words for class member
variables and starting lower case letter for method arguments and local
variables.

Since this ended up changing over half of the lines of View.h and
Camera.h anyway, I also made some other modifications to the style to put
it in alignment with VTK-m coding conventions including 2-space
indentation and more descriptive variable names.
2016-05-19 16:37:37 -06:00
Dave Pugmire
5be7ef945c convert float/double to vtkm::Float32/vtkm::Float64 2016-05-19 12:49:45 -04:00
Jeremy Meredith
d221166235 fixing warning about type conversion 2016-05-19 10:18:18 -04:00
Dave Pugmire
9f05b128ec refactor window2D, window3D
push a lot of common code up into a base class.
2016-05-19 10:13:04 -04:00
Dave Pugmire
88864f8453 fix compiler warning. 2016-05-19 10:10:44 -04:00
Dave Pugmire
6322ff2d86 fix compiler warning. 2016-05-19 09:58:39 -04:00
Dave Pugmire
ff2e5885f3 fix compiler warnings. 2016-05-19 09:57:54 -04:00
Dave Pugmire
fedb41b6c9 fix compiler warning. 2016-05-19 09:56:42 -04:00
Dave Pugmire
2dd0c89c08 Fix compiler warning. 2016-05-19 09:56:18 -04:00
Dave Pugmire
75ce0657fc Fix compiler warning. 2016-05-19 09:55:50 -04:00
Matt Larsen
f01b66dc52 Merge topic 'volumeRenderingCleanup'
e6a4570b Added copyright statement to VolumeRendererStructured.h
d0c18e83 Fixing typo in CMakeLists
6ada07ea Added structured
cca9b3de merged volume renderers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !420
2016-05-18 21:27:40 -04:00
Matt Larsen
e6a4570b6d Added copyright statement to VolumeRendererStructured.h 2016-05-18 20:51:04 -04:00
mclarsen
d0c18e83a9 Fixing typo in CMakeLists 2016-05-18 16:38:15 -07:00
mclarsen
6ada07ea31 Added structured 2016-05-18 16:30:07 -07:00
Jeremy Meredith
93d06bc9f2 Merge branch 'annot4' into 'master'
adding color bar legend

Adding a color bar to 2D and 3D windows.  Some code cleanup as well.

See merge request !419
2016-05-18 16:44:05 -04:00
Jeremy Meredith
f443d0ad4a adding color bar legend 2016-05-18 15:29:50 -04:00
Dave Pugmire
cf4fa5f665 Merge branch 'annot3' into 'master'
Annot3

Example for rendering using GLUT.

See merge request !418
2016-05-18 14:44:08 -04:00
Jeremy Meredith
1608495f1c refactoring render surfaces to unify duplicate code. 2016-05-18 14:34:10 -04:00
mclarsen
cca9b3dea9 merged volume renderers 2016-05-18 10:25:05 -07:00
Dave Pugmire
5f9403b881 Add trackball rotation, translate and zoom ot examples/rendering, and to the view classes. 2016-05-18 10:32:02 -04:00
mclarsen
ed98f6dc24 Ray Tracer 2016-05-17 22:13:36 -07:00
Robert Maynard
8dfe8cd385 Rename ControlSignature tag TopologyIn to CellSetIn. 2016-05-17 15:07:08 -04:00
Jeremy Meredith
9f7525ae03 removing header files 2016-05-13 14:24:06 -04:00
Jeremy Meredith
9e3484dcde Merge branch 'annot2' of gitlab.kitware.com:jsmeredith/vtk-m into annot2 2016-05-09 16:32:44 -04:00
Jeremy Meredith
790844472d adding 2d annotations and fixing a viewport bug 2016-05-09 16:32:27 -04:00
Dave Pugmire
72673ed952 Add glut-based rendering example.
Added a GL-based render surface.
2016-05-05 13:26:39 -04:00
Jeremy Meredith
7603b638d9 adding 3d axes 2016-04-19 17:04:00 -04:00
Dave Pugmire
a28c22e031 remove some unused code. 2016-04-19 09:42:12 -04:00
Dave Pugmire
e409255c61 Merge branch 'annot2' of gitlab.kitware.com:jsmeredith/vtk-m into annot2 2016-04-19 09:16:10 -04:00
Dave Pugmire
1af37d0102 Support for 2D rendering. And some general clean up. 2016-04-18 16:42:59 -04:00
Jeremy Meredith
4593ceb408 adding world annotation capability and 3d bounding box. 2016-04-15 15:24:23 -04:00
Jeremy Meredith
1cd0cde51f fixing minor compiler warnings 2016-04-15 12:50:25 -04:00
Dave Pugmire
d40f1b8bf9 Add support for 2D structured cells. 2016-04-14 17:04:58 -04:00
Dave Pugmire
ad0a290051 compile warning. 2016-04-14 17:04:20 -04:00
Dave Pugmire
fa981fde72 indent. 2016-04-14 16:49:34 -04:00
Dave Pugmire
965e36b10f fix compile warning. 2016-04-14 16:48:57 -04:00
Dave Pugmire
62ab59db25 Separate the renderers.
Fix a bug with depth not turned on.
2016-04-13 15:31:13 -04:00
Jeremy Meredith
449f8ceadb fixing compile error and untabifying 2016-04-13 15:10:34 -04:00
Matt Larsen
80b011542e removing unused file 2016-04-11 12:12:44 -07:00
Robert Maynard
27f23480b3 Correct more warnings and formatting issues with vtkm::rendering. 2016-04-07 20:07:22 -04:00
Robert Maynard
daf419feb7 Correct unused and casting warnings in Scene.h 2016-04-07 20:07:22 -04:00
Robert Maynard
12ffd536fd Suppress false positive warnings from nvcc about host/device. 2016-04-01 15:50:52 -04:00
Robert Maynard
7543bfe159 Fixed warning about unused variables in RenderSurface. 2016-04-01 15:50:52 -04:00
Robert Maynard
af2ae8e6e2 Correct issue in matrix mult in View. 2016-03-30 11:35:01 -04:00
Robert Maynard
660ee99752 vtkm::rendering::Triangluator now support CellSetSingleType of triangles. 2016-03-30 10:14:21 -04:00
Robert Maynard
76b6179abf Add missing copyright headers. 2016-03-28 11:16:35 -04:00
Dave Pugmire
d7c295f46e added rectilinear to test. 2016-03-28 08:51:36 -04:00
Dave Pugmire
a8c7f92d58 Move mesa package to right place.
Also, add in code for rectlinear mesh.
2016-03-28 08:51:36 -04:00
Dave Pugmire
294b73e00e Make the rendering part of the build optional.
Add the mesa libs to the link line.
2016-03-28 08:51:36 -04:00
Dave Pugmire
719b715b59 Support for explicit cell sets. 2016-03-28 08:51:36 -04:00
Matt Larsen
9883773557 Corrected error in projection matrix that was causing mismatches with ray tracing image and depth buffers. 2016-03-28 08:51:36 -04:00
Dave Pugmire
f9c6f9cde7 cleanup of code. 2016-03-28 08:51:36 -04:00
mclarsen
693b98b92a Merging 2016-03-28 08:51:36 -04:00
mclarsen
39cffd7baa Triangulator fix 2016-03-28 08:51:36 -04:00
Dave Pugmire
aa90c06c09 Allow the renderSurface to get passed to the Plot::Render() 2016-03-28 08:51:36 -04:00
Dave Pugmire
b36091f7f4 Clean up the rendersurface code. 2016-03-28 08:51:35 -04:00
Dave Pugmire
f84401243a Initial checkin for rendering infrastructure.
This largely follows things from EAVL. This is going to change going forward.
Most of the stuff is inside Window.h right now for convenience.
2016-03-28 08:51:35 -04:00
mclarsen
03a95c44b1 adding rendering from other branch 2016-03-28 08:50:04 -04:00