Commit Graph

52 Commits

Author SHA1 Message Date
Manish Mathai
f7c43960e5 Update code to follow styling and worklet invoker guidelines 2021-10-19 10:47:56 -07:00
Manish Mathai
8f025a2c56 Batch text and line annotation rendering
This commit makes `LineRenderer` and `TextRenderer` to batch line and
text rendering. Batching them has shown a significant speedup,
especially when usin CUDA.
2021-10-02 14:13:14 -07:00
nadavi
1818a885bf Generate and test regression-test images with io library updates 2020-12-02 16:24:07 +00:00
Kenneth Moreland
38bdfec40a Move ColorTable::Sample methods to vtkm_cont
There is little value to declare them `inline`. Instead, just have them
compiled once in the `vtkm_cont` library.
2020-09-14 16:40:26 -06:00
Kitware Robot
cf0cdcf7d1 clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
Kenneth Moreland
d1a4aecc59 Improvements to moving data into ArrayHandle
We have made several improvements to adding data into an `ArrayHandle`.

## Moving data from an `std::vector`

For numerous reasons, it is convenient to define data in a `std::vector`
and then wrap that into an `ArrayHandle`. It is often the case that an
`std::vector` is filled and then becomes unused once it is converted to an
`ArrayHandle`. In this case, what we really want is to pass the data off to
the `ArrayHandle` so that the `ArrayHandle` is now managing the data and
not the `std::vector`.

C++11 has a mechanism to do this: move semantics. You can now pass
variables to functions as an "rvalue" (right-hand value). When something is
passed as an rvalue, it can pull state out of that variable and move it
somewhere else. `std::vector` implements this movement so that an rvalue
can be moved to another `std::vector` without actually copying the data.
`make_ArrayHandle` now also takes advantage of this feature to move rvalue
`std::vector`s.

There is a special form of `make_ArrayHandle` named `make_ArrayHandleMove`
that takes an rvalue. There is also a special overload of
`make_ArrayHandle` itself that handles an rvalue `vector`. (However, using
the explicit move version is better if you want to make sure the data is
actually moved.)

## Make `ArrayHandle` from initalizer list

A common use case for using `std::vector` (particularly in our unit tests)
is to quickly add an initalizer list into an `ArrayHandle`. Now you can
by simply passing an initializer list to `make_ArrayHandle`.

## Deprecated `make_ArrayHandle` with default shallow copy

For historical reasons, passing an `std::vector` or a pointer to
`make_ArrayHandle` does a shallow copy (i.e. `CopyFlag` defaults to `Off`).
Although more efficient, this mode is inherintly unsafe, and making it the
default is asking for trouble.

To combat this, calling `make_ArrayHandle` without a copy flag is
deprecated. In this way, if you wish to do the faster but more unsafe
creation of an `ArrayHandle` you should explicitly express that.

This requried quite a few changes through the VTK-m source (particularly in
the tests).

## Similar changes to `Field`

`vtkm::cont::Field` has a `make_Field` helper function that is similar to
`make_ArrayHandle`. It also features the ability to create fields from
`std::vector`s and C arrays. It also likewise had the same unsafe behavior
by default of not copying from the source of the arrays.

That behavior has similarly been depreciated. You now have to specify a
copy flag.

The ability to construct a `Field` from an initializer list of values has
also been added.
2020-07-23 10:53:38 -06:00
NAThompson
0f0c465c1b Deprecate Camera::Activate() and Camera::Finish() 2020-06-14 11:04:06 -04:00
Kenneth Moreland
1e91b32ace Update image readers to style and library
Updated the image reader classes to better follow VTK-m naming
convention (i.e. use `ImageReaderPNG` instead of `PNGReader`).
The structure of the image reader class now also better matches
the interface for the VTK reader.

Also put the implementation of the image readers into the `vtkm_io`
library so that it only has to be compiled once.
2020-06-01 10:00:18 -06:00
Nick
981f0ed0d9 First stab at building a vtkm_io library target. 2020-04-28 07:13:27 -04:00
Nick
1d4ebaec9f Image was upside down; flip it over, demo usage. 2020-04-17 07:56:03 -04:00
Nick
104e7bd9c2 Halting first steps towards encoding .pngs. 2020-04-17 06:22:30 -04:00
Kenneth Moreland
ec34cb56c4 Use new ways to get array portal in control environment
Also fix deadlocks that occur when portals are not destroyed
in time.
2020-02-26 13:10:46 -07:00
Kenneth Moreland
0be50c119d Update VTK-m code to use new Vec aliases
Should make the code easier to read.
2019-07-31 12:55:40 -06:00
Robert Maynard
23aeff054e vtkm_rendering now uses vtkm/thirdparty/lodepng
Previously it used a version of the decode routines from lodepng
inside the decode functionality.
2019-06-19 14:39:46 -04:00
Robert Maynard
fa03dc664a ScopedRuntimeDeviceTracker requires a device to execute on when constructed.
To simplify using the ScopedRuntimeDeviceTracker it now takes the
device id you want to run on during construction.
2019-05-21 11:17:37 -04:00
Robert Maynard
e9482018ee ScopedRuntimeDeviceTracker has the same API as RuntimeDeviceTracker 2019-05-15 17:26:31 -04:00
nadavi
fbcea82e78 conslidate the license statement 2019-04-17 10:57:13 -06:00
Robert Maynard
ae11e115a0 RuntimeDeviceTracker: Remove Global from names 2019-03-22 08:53:26 -07:00
mclarsen
82e2300934 forcing serial sample again 2019-03-15 10:08:43 -07:00
mclarsen
b509081a9d Just disable CUDA for ctable sampling 2019-03-14 13:57:17 -07:00
mclarsen
cc20f80196 forcing color table sampling to be serial inside rendering lib 2019-03-14 13:28:13 -07:00
Kenneth Moreland
2e426ad547 Run the update-control-signature-tags.sh script 2019-01-11 12:23:10 -07:00
Robert Maynard
169ca722b3 Redesign vtkm::cont::ColorTable to work with separable compilation. 2018-10-31 08:18:08 -04:00
mclarsen
0b99ff5796 adding doxygen comments to new rendering 2018-09-12 07:41:37 -07:00
mclarsen
1c2f78ca92 refactoring ray tracing 2018-09-10 19:25:42 -07:00
Kenneth Moreland
d879188de0 Make DispatcherBase invoke using a TryExecute
Rather than force all dispatchers to be templated on a device adapter,
instead use a TryExecute internally within the invoke to select a device
adapter.

Because this removes the need to declare a device when invoking a
worklet, this commit also removes the need to declare a device in
several other areas of the code.
2018-08-29 19:18:54 -07:00
Allison Vacanti
93506d25e2 Change function signatures to use 'using' aliases.
Also cleaned up some lingering type typedefs.
2018-05-25 17:18:41 -04:00
Robert Maynard
ebf96077fd Correct casting warnings found inside vtkm_rendering 2018-04-24 13:00:33 -04:00
Robert Maynard
944bc3c0d6 Introduce vtkm::cont::ColorTable replacing vtkm::rendering::ColorTable
The new and improved vtkm::cont::ColorTable provides a more feature complete
color table implementation that is modeled after
vtkDiscretizableColorTransferFunction. This class therefore supports different
color spaces ( rgb, lab, hsv, diverging ) and supports execution across all
device adapters.
2018-03-28 16:11:23 -04:00
Matt Larsen
c57fad48ee Depth no considered with annotations. Fix for volume renderer. Consistent color blending. 2018-01-29 11:39:21 -08:00
Matt Larsen
b420a4b3d2 fixing typo 2018-01-18 15:01:15 -08:00
Matt Larsen
2bb64e6598 fixing opacity for veritical bar 2018-01-18 14:57:40 -08:00
Matt Larsen
6d61630928 let there be foreground color 2017-12-04 20:46:38 -08:00
Matt Larsen
46f58dffc6 fixing various warnings 2017-10-26 08:36:27 -07:00
Matt Larsen
7325508093 removing debug statements 2017-10-26 08:01:00 -07:00
Matt Larsen
035814a4a7 adding 2d ortho support to ray tracing and updating WireFramer to support 2d lines and 1D line plots 2017-10-26 07:58:02 -07:00
Manish Mathai
495adacc38 Merge branch 'master' into concrete-canvas 2017-09-22 09:32:21 -07:00
Manish Mathai
dc0e3d51f6 Enhances colorbar with translucent indicator for alpha values 2017-09-21 16:20:54 -07:00
Kenneth Moreland
c3a3184d51 Update copyright for Sandia
Sandia National Laboratories recently changed management from the
Sandia Corporation to the National Technology & Engineering Solutions
of Sandia, LLC (NTESS). The copyright statements need to be updated
accordingly.
2017-09-20 15:33:44 -06:00
Manish Mathai
7a39002522 Removes font management from WorldAnnotator and relies on Canvas 2017-09-18 14:41:28 -07:00
Manish Mathai
6a3229779f Move the Canvas state to an internals class
This is to maintain compability with future minor releases
2017-09-17 20:40:24 -07:00
Manish Mathai
8b88a043e4 Adds text rendering and line rendering to WorldAnnotator 2017-09-17 15:10:40 -07:00
Manish Mathai
3e5878394e Extract canvas's line rendering to LineRenderer
This allows for the line rendering to be shared for other use cases like
`WorldAnnotator`
2017-09-14 09:40:23 -07:00
Manish Mathai
3051d88de0 Adds text rendering to Canvas. 2017-09-13 13:42:11 -07:00
Manish Mathai
e9c4e0056c Implements Canvas::AddColorBar 2017-08-31 15:12:08 -07:00
Manish Mathai
3440f74c45 Removes warnings about unsed parameters 2017-08-31 10:50:28 -07:00
Manish Mathai
7f18d17d24 Converts Canvas to a concrete implementation.
This commit converts `Canvas` from an abstract class to a concrete
class by converting the pure virtual methods to empty/default
implementations. It provides an implementation for `Canvas::AddLine`
using Bresenham's line drawing algorithm.
2017-08-31 10:40:30 -07:00
Mark Kim
8c5129fa68 Saving pnms with VS2015 converts LF into CRLF unless the file is opened as binary. 2017-07-06 18:56:16 -04:00
Kitware Robot
4ade5f5770 clang-format: apply to the entire tree 2017-05-25 07:51:37 -04:00
Kitware Robot
efbde1d54b clang-format: sort include directives 2017-05-18 12:59:33 -04:00