# kitware/vtk architecture

> Architecture diagram of the GitHub repository kitware/vtk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kitware/vtk
- Repository: https://github.com/kitware/vtk

## Overview

VTK is a C++ toolkit for image processing, scientific algorithms, graphics, volume rendering, and visualization. Its central workflow is to supply data to a demand-driven algorithm pipeline, process or transform that data, and render or otherwise inspect the results. The tree also shows charting, VTK-m acceleration, and WebGPU compute as distinct capabilities. Pipeline request propagation is supported by the sampled executive documentation; several broader connections are architectural summaries from the README and tree, not verified call paths.

Main entry points: [`Common/DataModel/vtkCellArray.h`](https://github.com/kitware/vtk/blob/master/Common/DataModel/vtkCellArray.h) (Meshes and datasets), [`Filters/Temporal/Testing/Cxx/MeshCachePipeline.h`](https://github.com/kitware/vtk/blob/master/Filters/Temporal/Testing/Cxx/MeshCachePipeline.h) (Data algorithms), [`Common/ExecutionModel/vtkStreamingDemandDrivenPipeline.h`](https://github.com/kitware/vtk/blob/master/Common/ExecutionModel/vtkStreamingDemandDrivenPipeline.h) (Demand executive), [`Rendering/WebGPU/vtkWebGPUComputePipeline.h`](https://github.com/kitware/vtk/blob/master/Rendering/WebGPU/vtkWebGPUComputePipeline.h) (WebGPU compute)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data and Core"]
  node_arrays["Arrays and objects<br/>[vtkDataArray.h]"]
  node_data_model["Meshes and datasets<br/>[vtkCellArray.h]"]
  node_mesh_cache["Mesh cache"]
end

subgraph group_pipeline["Pipeline and Filters"]
  node_pipeline_exec["Demand executive"]
  node_algorithms["Data algorithms"]
  node_geometry["Geometry algorithms"]
  node_image["Image processing<br/>[vtkmExtractVOI.h]"]
end

subgraph group_visual["Visualization"]
  node_rendering["3D rendering<br/>[vtkStateStorage.h]"]
  node_charts["Charts and plots<br/>[vtkChartXY.h]"]
  node_graph_views["Graph views"]
end

subgraph group_compute["Compute Acceleration"]
  node_webgpu["WebGPU compute"]
  node_webgpu_texture["Compute textures"]
  node_vtkm["VTK-m filters<br/>[vtkmAlgorithm.h]"]
end

node_user(("VTK user"))

node_user -->|"requests updates"| node_pipeline_exec
node_pipeline_exec -->|"passes requests"| node_algorithms
node_algorithms -->|"produces datasets"| node_data_model
node_data_model -->|"contains attributes"| node_arrays
node_algorithms -->|"uses geometry"| node_geometry
node_algorithms -->|"processes images"| node_image
node_data_model -->|"supplies render data"| node_rendering
node_data_model -->|"supplies plot data"| node_charts
node_data_model -->|"supplies graph data"| node_graph_views
node_user -.->|"dispatches compute"| node_webgpu
node_webgpu -->|"manages textures"| node_webgpu_texture
node_algorithms -.->|"accelerates filters"| node_vtkm
node_mesh_cache -->|"caches mesh data"| node_data_model

click node_arrays "https://github.com/kitware/vtk/blob/master/Common/Core/vtkDataArray.h"
click node_data_model "https://github.com/kitware/vtk/blob/master/Common/DataModel/vtkCellArray.h"
click node_pipeline_exec "https://github.com/kitware/vtk/blob/master/Common/ExecutionModel/vtkStreamingDemandDrivenPipeline.h"
click node_algorithms "https://github.com/kitware/vtk/blob/master/Filters/Temporal/Testing/Cxx/MeshCachePipeline.h"
click node_geometry "https://github.com/kitware/vtk/blob/master/Common/ComputationalGeometry/vtkParametricFunction.h"
click node_image "https://github.com/kitware/vtk/blob/master/Accelerators/Vtkm/Filters/vtkmExtractVOI.h"
click node_rendering "https://github.com/kitware/vtk/blob/master/Rendering/Core/vtkStateStorage.h"
click node_webgpu "https://github.com/kitware/vtk/blob/master/Rendering/WebGPU/vtkWebGPUComputePipeline.h"
click node_webgpu_texture "https://github.com/kitware/vtk/blob/master/Rendering/WebGPU/Private/vtkWebGPUComputePassTextureStorageInternals.h"
click node_charts "https://github.com/kitware/vtk/blob/master/Charts/Core/vtkChartXY.h"
click node_graph_views "https://github.com/kitware/vtk/blob/master/Views/Infovis/vtkHierarchicalGraphPipeline.h"
click node_vtkm "https://github.com/kitware/vtk/blob/master/Accelerators/Vtkm/Filters/vtkmAlgorithm.h"
click node_mesh_cache "https://github.com/kitware/vtk/blob/master/Common/Cache/vtkDataObjectMeshCache.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_arrays,node_data_model,node_mesh_cache,node_user toneBlue
class node_pipeline_exec,node_algorithms,node_geometry,node_image toneAmber
class node_rendering,node_charts,node_graph_views toneMint
class node_webgpu,node_webgpu_texture,node_vtkm toneRose
```

## Components

### Data and Core

- [Arrays and objects](https://github.com/kitware/vtk/blob/master/Common/Core/vtkDataArray.h): `Common/Core/vtkDataArray.h`
- [Meshes and datasets](https://github.com/kitware/vtk/blob/master/Common/DataModel/vtkCellArray.h): `Common/DataModel/vtkCellArray.h`
- [Mesh cache](https://github.com/kitware/vtk/blob/master/Common/Cache/vtkDataObjectMeshCache.h): `Common/Cache/vtkDataObjectMeshCache.h`

### Pipeline and Filters

- [Demand executive](https://github.com/kitware/vtk/blob/master/Common/ExecutionModel/vtkStreamingDemandDrivenPipeline.h): `Common/ExecutionModel/vtkStreamingDemandDrivenPipeline.h`
- [Data algorithms](https://github.com/kitware/vtk/blob/master/Filters/Temporal/Testing/Cxx/MeshCachePipeline.h): `Filters/Temporal/Testing/Cxx/MeshCachePipeline.h`
- [Geometry algorithms](https://github.com/kitware/vtk/blob/master/Common/ComputationalGeometry/vtkParametricFunction.h): `Common/ComputationalGeometry/vtkParametricFunction.h`
- [Image processing](https://github.com/kitware/vtk/blob/master/Accelerators/Vtkm/Filters/vtkmExtractVOI.h): `Accelerators/Vtkm/Filters/vtkmExtractVOI.h`

### Visualization

- [3D rendering](https://github.com/kitware/vtk/blob/master/Rendering/Core/vtkStateStorage.h): `Rendering/Core/vtkStateStorage.h`
- [Charts and plots](https://github.com/kitware/vtk/blob/master/Charts/Core/vtkChartXY.h): `Charts/Core/vtkChartXY.h`
- [Graph views](https://github.com/kitware/vtk/blob/master/Views/Infovis/vtkHierarchicalGraphPipeline.h): `Views/Infovis/vtkHierarchicalGraphPipeline.h`

### Compute Acceleration

- [WebGPU compute](https://github.com/kitware/vtk/blob/master/Rendering/WebGPU/vtkWebGPUComputePipeline.h): `Rendering/WebGPU/vtkWebGPUComputePipeline.h`
- [Compute textures](https://github.com/kitware/vtk/blob/master/Rendering/WebGPU/Private/vtkWebGPUComputePassTextureStorageInternals.h): `Rendering/WebGPU/Private/vtkWebGPUComputePassTextureStorageInternals.h`
- [VTK-m filters](https://github.com/kitware/vtk/blob/master/Accelerators/Vtkm/Filters/vtkmAlgorithm.h): `Accelerators/Vtkm/Filters/vtkmAlgorithm.h`

### Other components

- **VTK user**

## Connections

- VTK user → Demand executive: requests updates
- Demand executive → Data algorithms: passes requests
- Data algorithms → Meshes and datasets: produces datasets
- Meshes and datasets → Arrays and objects: contains attributes
- Data algorithms → Geometry algorithms: uses geometry
- Data algorithms → Image processing: processes images
- Meshes and datasets → 3D rendering: supplies render data
- Meshes and datasets → Charts and plots: supplies plot data
- Meshes and datasets → Graph views: supplies graph data
- VTK user → WebGPU compute: dispatches compute
- WebGPU compute → Compute textures: manages textures
- Data algorithms → VTK-m filters: accelerates filters
- Mesh cache → Meshes and datasets: caches mesh data
