{"id":20399843,"url":"https://github.com/kitware/vtk-m","last_synced_at":"2025-07-12T08:05:14.740Z","repository":{"id":37576857,"uuid":"190059477","full_name":"Kitware/VTK-m","owner":"Kitware","description":"Mirror of https://gitlab.kitware.com/vtk/vtk-m","archived":false,"fork":false,"pushed_at":"2025-04-02T22:13:27.000Z","size":29265,"stargazers_count":31,"open_issues_count":0,"forks_count":17,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T23:23:42.448Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kitware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"docs/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-03T18:26:09.000Z","updated_at":"2025-04-02T22:13:31.000Z","dependencies_parsed_at":"2023-11-21T15:28:42.065Z","dependency_job_id":"7c8f1e83-0fcf-448f-b4c9-2c5dbc21e0df","html_url":"https://github.com/Kitware/VTK-m","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FVTK-m","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FVTK-m/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FVTK-m/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FVTK-m/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kitware","download_url":"https://codeload.github.com/Kitware/VTK-m/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248574527,"owners_count":21127035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T04:34:14.511Z","updated_at":"2025-07-12T08:05:14.715Z","avatar_url":"https://github.com/Kitware.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitLab tag](https://img.shields.io/gitlab/v/tag/vtk/vtk-m?color=red\u0026gitlab_url=https%3A%2F%2Fgitlab.kitware.com\u0026include_prereleases\u0026sort=semver)  \n![Spack version](https://img.shields.io/spack/v/vtk-m.svg)  \n\n# ⚠️ DISCONTINUATION NOTICE ⚠️\n\n## VTK-m has been rebranded as Viskores\n\n**This repository is no longer maintained or updated.**\n\nAs part of the transition to the High Performance Software Foundation (HPSF), VTK-m has been rebranded as Viskores and migrated from Kitware's GitLab to GitHub. All future development, releases, and support will be provided through the Viskores repository.\n\n- **New Repository:** [https://github.com/Viskores/viskores](https://github.com/Viskores/viskores)\n\n\n# VTK-m #\n\nVTK-m is a toolkit of scientific visualization algorithms for emerging\nprocessor architectures. VTK-m supports the fine-grained concurrency for\ndata analysis and visualization algorithms required to drive extreme scale\ncomputing by providing abstract models for data and execution that can be\napplied to a variety of algorithms across many different processor\narchitectures.\n\nYou can find out more about the design of VTK-m on the [VTK-m Wiki].\n\n\n## Learning Resources ##\n\n  + A high-level overview is given in the IEEE Vis talk \"[VTK-m:\n    Accelerating the Visualization Toolkit for Massively Threaded\n    Architectures][VTK-m Overview].\"\n\n  + The [VTK-m Users Guide] provides extensive documentation. It is broken\n    into multiple parts for learning and references at multiple different\n    levels.\n      + \"Part 1: Getting Started\" provides the introductory instruction for\n        building VTK-m and using its high-level features.\n      + \"Part 2: Using VTK-m\" covers the core fundamental components of\n        VTK-m including data model, worklets, and filters.\n      + \"Part 3: Developing with VTK-m\" covers how to develop new worklets\n        and filters.\n      + \"Part 4: Advanced Development\" covers topics such as new worklet\n        types and custom device adapters.\n\n  + A practical [VTK-m Tutorial] based in what users want to accomplish with\n    VTK-m:\n      + Building VTK-m and using existing VTK-m data structures and filters.\n      + Algorithm development with VTK-m.\n      + Writing new VTK-m filters.\n\n  + Community discussion takes place on the [VTK-m users email list].\n\n  + Doxygen-generated reference documentation is available for both:\n    + Last Nightly build [VTK-m Doxygen nightly]\n    + Last release [VTK-m Doxygen latest]\n\n\n## Contributing ##\n\nThere are many ways to contribute to [VTK-m], with varying levels of\neffort.\n\n  + Ask a question on the [VTK-m users email list].\n\n  + Submit new or add to discussions of a feature requests or bugs on the\n    [VTK-m Issue Tracker].\n\n  + Submit a Pull Request to improve [VTK-m]\n      + See [CONTRIBUTING.md] for detailed instructions on how to create a\n        Pull Request.\n      + See the [VTK-m Coding Conventions] that must be followed for\n        contributed code.\n\n  + Submit an Issue or Pull Request for the [VTK-m Users Guide]\n\n\n## Dependencies ##\n\nVTK-m Requires:\n\n  + C++14 Compiler. VTK-m has been confirmed to work with the following\n      + GCC 5.4+\n      + Clang 5.0+\n      + XCode 5.0+\n      + MSVC 2015+\n      + Intel 17.0.4+\n  + [CMake](http://www.cmake.org/download/)\n      + CMake 3.15+\n      + CMake 3.24+ (for ROCM+THRUST support)\n\nOptional dependencies are:\n\n  + Kokkos Device Adapter\n      + [Kokkos](https://kokkos.github.io/) 3.7+\n      + CXX env variable or CMAKE_CXX_COMPILER should be set to\n        hipcc when using Kokkos device adapter with HIP (ROCM\u003e=6).\n  + CUDA Device Adapter\n      + [Cuda Toolkit 9.2, \u003e= 10.2](https://developer.nvidia.com/cuda-toolkit)\n      + Note CUDA \u003e= 10.2 is required on Windows\n  + TBB Device Adapter\n      + [TBB](https://www.threadingbuildingblocks.org/)\n  + OpenMP Device Adapter\n      + Requires a compiler that supports OpenMP \u003e= 4.0.\n  + OpenGL Rendering\n      + The rendering module contains multiple rendering implementations\n        including standalone rendering code. The rendering module also\n        includes (optionally built) OpenGL rendering classes.\n      + The OpenGL rendering classes require that you have a extension\n        binding library and one rendering library. A windowing library is\n        not needed except for some optional tests.\n  + Extension Binding\n      + [GLEW](http://glew.sourceforge.net/)\n  + On Screen Rendering\n      + OpenGL Driver\n      + Mesa Driver\n  + On Screen Rendering Tests\n      + [GLFW](http://www.glfw.org/)\n      + [GLUT](http://freeglut.sourceforge.net/)\n  + Headless Rendering\n      + [OS Mesa](https://www.mesa3d.org/osmesa.html)\n      + EGL Driver\n\nVTK-m has been tested on the following configurations:c\n  + On Linux\n      + GCC 5.4.0, 5.4, 6.5, 7.4, 8.2, 9.2; Clang 5, 8; Intel 17.0.4; 19.0.0\n      + CMake 3.12, 3.13, 3.16, 3.17\n      + CUDA 9.2, 10.2, 11.0, 11.1 \n      + TBB 4.4 U2, 2017 U7\n  + On Windows\n      + Visual Studio 2015, 2017\n      + CMake 3.12, 3.17\n      + CUDA 10.2\n      + TBB 2017 U3, 2018 U2\n  + On MacOS\n      + AppleClang 9.1\n      + CMake 3.12\n      + TBB 2018\n\n\n## Building ##\n\nVTK-m supports all major platforms (Windows, Linux, OSX), and uses CMake\nto generate all the build rules for the project. The VTK-m source code is\navailable from the [VTK-m download page] or by directly cloning the [VTK-m\ngit repository].\n\nThe basic procedure for building VTK-m is to unpack the source, create a\nbuild directory, run CMake in that build directory (pointing to the source)\nand then build. Here are some example *nix commands for the process\n(individual commands may vary).\n\n```sh\n$ tar xvzf ~/Downloads/vtk-m-v2.0.0.tar.gz\n$ mkdir vtkm-build\n$ cd vtkm-build\n$ cmake-gui ../vtk-m-v2.0.0\n$ cmake --build -j .              # Runs make (or other build program)\n```\n\nA more detailed description of building VTK-m is available in the [VTK-m\nUsers Guide].\n\n\n## Example ##\n\nThe VTK-m source distribution includes a number of examples. The goal of the\nVTK-m examples is to illustrate specific VTK-m concepts in a consistent and\nsimple format. However, these examples cover only a small portion of the\ncapabilities of VTK-m.\n\nBelow is a simple example of using VTK-m to create a simple data set and use VTK-m's rendering\nengine to render an image and write that image to a file. It then computes an isosurface on the\ninput data set and renders this output data set in a separate image file:\n\n```cpp\n#include \u003cvtkm/cont/Initialize.h\u003e\n#include \u003cvtkm/source/Tangle.h\u003e\n\n#include \u003cvtkm/rendering/Actor.h\u003e\n#include \u003cvtkm/rendering/CanvasRayTracer.h\u003e\n#include \u003cvtkm/rendering/MapperRayTracer.h\u003e\n#include \u003cvtkm/rendering/MapperVolume.h\u003e\n#include \u003cvtkm/rendering/MapperWireframer.h\u003e\n#include \u003cvtkm/rendering/Scene.h\u003e\n#include \u003cvtkm/rendering/View3D.h\u003e\n\n#include \u003cvtkm/filter/contour/Contour.h\u003e\n\nusing vtkm::rendering::CanvasRayTracer;\nusing vtkm::rendering::MapperRayTracer;\nusing vtkm::rendering::MapperVolume;\nusing vtkm::rendering::MapperWireframer;\n\nint main(int argc, char* argv[])\n{\n  vtkm::cont::Initialize(argc, argv, vtkm::cont::InitializeOptions::Strict);\n\n  auto tangle = vtkm::source::Tangle(vtkm::Id3{ 50, 50, 50 });\n  vtkm::cont::DataSet tangleData = tangle.Execute();\n  std::string fieldName = \"tangle\";\n\n  // Set up a camera for rendering the input data\n  vtkm::rendering::Camera camera;\n  camera.SetLookAt(vtkm::Vec3f_32(0.5, 0.5, 0.5));\n  camera.SetViewUp(vtkm::make_Vec(0.f, 1.f, 0.f));\n  camera.SetClippingRange(1.f, 10.f);\n  camera.SetFieldOfView(60.f);\n  camera.SetPosition(vtkm::Vec3f_32(1.5, 1.5, 1.5));\n  vtkm::cont::ColorTable colorTable(\"inferno\");\n\n  // Background color:\n  vtkm::rendering::Color bg(0.2f, 0.2f, 0.2f, 1.0f);\n  vtkm::rendering::Actor actor(tangleData.GetCellSet(),\n                               tangleData.GetCoordinateSystem(),\n                               tangleData.GetField(fieldName),\n                               colorTable);\n  vtkm::rendering::Scene scene;\n  scene.AddActor(actor);\n  // 2048x2048 pixels in the canvas:\n  CanvasRayTracer canvas(2048, 2048);\n  // Create a view and use it to render the input data using OS Mesa\n\n  vtkm::rendering::View3D view(scene, MapperVolume(), canvas, camera, bg);\n  view.Paint();\n  view.SaveAs(\"volume.png\");\n\n  // Compute an isosurface:\n  vtkm::filter::contour::Contour filter;\n  // [min, max] of the tangle field is [-0.887, 24.46]:\n  filter.SetIsoValue(3.0);\n  filter.SetActiveField(fieldName);\n  vtkm::cont::DataSet isoData = filter.Execute(tangleData);\n  // Render a separate image with the output isosurface\n  vtkm::rendering::Actor isoActor(\n    isoData.GetCellSet(), isoData.GetCoordinateSystem(), isoData.GetField(fieldName), colorTable);\n  // By default, the actor will automatically scale the scalar range of the color table to match\n  // that of the data. However, we are coloring by the scalar that we just extracted a contour\n  // from, so we want the scalar range to match that of the previous image.\n  isoActor.SetScalarRange(actor.GetScalarRange());\n  vtkm::rendering::Scene isoScene;\n  isoScene.AddActor(isoActor);\n\n  // Wireframe surface:\n  vtkm::rendering::View3D isoView(isoScene, MapperWireframer(), canvas, camera, bg);\n  isoView.Paint();\n  isoView.SaveAs(\"isosurface_wireframer.png\");\n\n  // Smooth surface:\n  vtkm::rendering::View3D solidView(isoScene, MapperRayTracer(), canvas, camera, bg);\n  solidView.Paint();\n  solidView.SaveAs(\"isosurface_raytracer.png\");\n\n  return 0;\n}\n```\n\nA minimal CMakeLists.txt such as the following one can be used to build this\nexample.\n\n```CMake\ncmake_minimum_required(VERSION 3.12...3.15 FATAL_ERROR)\nproject(VTKmDemo CXX)\n\n#Find the VTK-m package\nfind_package(VTKm REQUIRED QUIET)\n\nif(TARGET vtkm::rendering)\n  add_executable(Demo Demo.cxx)\n  target_link_libraries(Demo PRIVATE vtkm::filter vtkm::rendering vtkm::source)\nendif()\n```\n\n## License ##\n\nVTK-m is distributed under the OSI-approved BSD 3-clause License.\nSee [LICENSE.txt](LICENSE.txt) for details.\n\n\n[VTK-m]:                    https://gitlab.kitware.com/vtk/vtk-m/\n[VTK-m Coding Conventions]: docs/CodingConventions.md\n[VTK-m Doxygen latest]:     https://docs-m.vtk.org/latest/index.html\n[VTK-m Doxygen nightly]:    https://docs-m.vtk.org/nightly/\n[VTK-m download page]:      https://gitlab.kitware.com/vtk/vtk-m/-/releases\n[VTK-m git repository]:     https://gitlab.kitware.com/vtk/vtk-m/\n[VTK-m Issue Tracker]:      https://gitlab.kitware.com/vtk/vtk-m/-/issues\n[VTK-m Overview]:           http://m.vtk.org/images/2/29/VTKmVis2016.pptx\n[VTK-m Users Guide]:        https://gitlab.kitware.com/vtk/vtk-m-user-guide/-/wikis/home\n[VTK-m users email list]:   http://vtk.org/mailman/listinfo/vtkm\n[VTK-m Wiki]:               http://m.vtk.org/\n[VTK-m Tutorial]:           http://m.vtk.org/index.php/Tutorial\n[CONTRIBUTING.md]:          CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fvtk-m","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitware%2Fvtk-m","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fvtk-m/lists"}