All Projects → datoviz → Datoviz

datoviz / Datoviz

Licence: mit
⚡ High-performance GPU interactive scientific data visualization with Vulkan

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
cpp
1120 projects

Projects that are alternatives of or similar to Datoviz

Matplotplusplus
Matplot++: A C++ Graphics Library for Data Visualization 📊🗾
Stars: ✭ 2,433 (+995.95%)
Mutual labels:  graphics, scientific-computing, scientific-visualization, data-visualization
Yt
Main yt repository
Stars: ✭ 279 (+25.68%)
Mutual labels:  scientific-computing, scientific-visualization, data-visualization
Agi
Android GPU Inspector
Stars: ✭ 327 (+47.3%)
Mutual labels:  graphics, vulkan, gpu
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+140.54%)
Mutual labels:  graphics, vulkan, scientific-visualization
Liblava
🌋 A modern and easy-to-use library for the Vulkan API
Stars: ✭ 275 (+23.87%)
Mutual labels:  graphics, vulkan, rendering
Awesome Scientific Python
A curated list of awesome scientific Python resources
Stars: ✭ 127 (-42.79%)
Mutual labels:  scientific-computing, scientific-visualization, data-visualization
Gfx
[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
Stars: ✭ 5,045 (+2172.52%)
Mutual labels:  graphics, vulkan, gpu
Gpu Gems Book Source Code
💿 CD Content ( Source Code ) Collection of Book <GPU Gems > 1~ 3 | 《GPU精粹》 1~ 3 随书CD(源代码)珍藏
Stars: ✭ 567 (+155.41%)
Mutual labels:  graphics, rendering, gpu
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+4518.02%)
Mutual labels:  graphics, vulkan, rendering
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-64.86%)
Mutual labels:  graphics, vulkan, rendering
Visit
VisIt - Visualization and Data Analysis for Mesh-based Scientific Data
Stars: ✭ 140 (-36.94%)
Mutual labels:  scientific-computing, scientific-visualization, data-viz
Vulkancore
Vulkan 1.0 graphics and compute API bindings for .NET Standard
Stars: ✭ 162 (-27.03%)
Mutual labels:  graphics, vulkan, gpu
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+928.83%)
Mutual labels:  graphics, scientific-visualization
Rvg
High level vulkan 2D vector-like graphics api (C++)
Stars: ✭ 171 (-22.97%)
Mutual labels:  graphics, vulkan
Unity Dithered Transparency Shader
Unity material and shader for applying clipped, dithered transparency
Stars: ✭ 174 (-21.62%)
Mutual labels:  graphics, rendering
Scikit Optimize
Sequential model-based optimization with a `scipy.optimize` interface
Stars: ✭ 2,258 (+917.12%)
Mutual labels:  scientific-computing, scientific-visualization
Alimer
Cross-platform game engine.
Stars: ✭ 172 (-22.52%)
Mutual labels:  graphics, vulkan
Computator.net
Computator.NET is a special kind of numerical software that is fast and easy to use but not worse than others feature-wise. It's features include: - Real and complex functions charts - Real and complex calculator - Real functions numerical calculations including different methods - Over 107 Elementary functions - Over 141 Special functions - Over 21 Matrix functions and operations - Scripting language with power to easy computations including matrices - You can declare your own custom functions with scripting language
Stars: ✭ 174 (-21.62%)
Mutual labels:  scientific-computing, scientific-visualization
Euc
A software rendering crate that lets you write shaders with Rust
Stars: ✭ 180 (-18.92%)
Mutual labels:  graphics, rendering
Nfancurve
A small and lightweight POSIX script for using a custom fan curve in Linux for those with an Nvidia GPU.
Stars: ✭ 180 (-18.92%)
Mutual labels:  graphics, gpu

Datoviz: GPU interactive scientific data visualization with Vulkan

Datoviz is an open-source high-performance interactive scientific data visualization library leveraging the graphics processing unit (GPU) for speed, visual quality, and scalability. It supports both 2D and 3D rendering, as well as minimal graphical user interfaces (using the Dear ImGUI library).

Written in C, Datoviz has been designed from the ground up for performance. It provides native Python bindings (based on Cython). Bindings to other languages could be developed thanks to community efforts (Julia, R, MATLAB, Rust, C#, and so on). Datoviz uses the Vulkan graphics API created by the Khronos consortium, successor of OpenGL. Supporting other modern graphics API, such as WebGPU, would constitute interesting developments.

Datoviz is currently being developed mostly by Cyrille Rossant at the International Brain Laboratory, a consortium of neuroscience research labs around the world.

Datoviz is at an early stage of development. The library is quite usable but evolves quickly. Datoviz has been tested on Linux, macOS (Intel), and to a lesser extent, Windows. It should work on most computers, with or without a discrete GPU (but with up-to-date graphics drivers). Many more features will come later and the documentation will be improved. Contributions are highly welcome!

Screenshots

Credits: mouse brain volume: Allen SDK. France: Natural Earth. Molecule: Crystal structure of S. pyogenes Cas9 from PDB (thanks to Eric for conversion to OBJ mesh). Earth: Pixabay. Raster plot: IBL. 3D human brain: Anneke Alkemade et al. 2020, thanks to Pierre-Louis Bazin and Julia Huntenburg.

Documentation

The documentation is divided into:

  • Installation: install guide (no precompiled packages yet, coming soon),
  • Tutorials: quickstart Python tutorial,
  • Examples: gallery of screenshots and associated Python code,
  • How to guides: advanced topics for expert users, explaining how to use C and Vulkan for making custom visuals and applications,
  • Reference: comprehensive list of included colormaps, visuals, and graphics,
  • C API reference: list of all publicly available C functions,
  • Discussions: explanations, Vulkan crash course, and notes.

Preliminary performance results

  • scatter plot with 10M points: 250 FPS (point visual)
  • high-resolution 3D mesh with 10M triangles and 5M vertices: 400 FPS
  • 1000 signals with 30K points each (30M vertices): 200 FPS

GPU: 2019 NVIDIA GeForce RTX 2070 SUPER. Window size: 1024x768.

Features

  • High-quality antialiased 2D visuals: markers, paths, lines, text, polygons, and more (visuals originally implemented in Glumpy)
  • 3D visuals: meshes, surfaces, volumes
  • Mixing 2D and 3D plots seamlessly in the same window
  • ~150 colormaps included (from matplotlib, colorcet, MATLAB)
  • High-level interactivity: pan & zoom, mouse arcball, first-person cameras
  • Axes: ticks, grids, labels
  • Subplots organized in a grid layout
  • DPI-aware: partial support for high-resolution monitors
  • GUIs integrated via the Dear ImGUI C++ library (Qt or other backends not required)
  • Custom visuals, with custom shaders and/or custom data transformations
  • Mouse picking
  • Initial support for multiple canvases
  • Initial builtin support for screencasts and video recording with ffmpeg (optional dependency)
  • Initial support for offscreen rendering and CPU emulation via swiftshader

Upcoming features:

  • More visuals: arrows, triangulations, planar straight-line graphs (PSLG), histograms, areas, graphs...
  • Further data transformations: logarithmic, polar, basic Earth coordinate systems for geographical data
  • Colorbars
  • 3D axes
  • Better support of multiple GPUs
  • Qt integration
  • Continuous integration, more robust testing

Long-term future (or shorter if there are community contributions):

  • Support for other languages (Julia, R, MATLAB, Rust...)
  • Jupyter notebook integration
  • Web integration via WebGPU?
  • Remote desktop integration?

Credits and related projects

Datoviz is developed primarily by Cyrille Rossant at the International Brain Laboratory. The logo was graciously created by Chiara Zini.

Datoviz borrows heavily ideas and code from other projects.

VisPy

VisPy is a Python scientific visualization library created in 2013 by Luke Campagnola (developer of pyqtgraph), Almar Klein (developer of visvis), Nicolas Rougier (developer of glumpy), and myself (Cyrille Rossant, developer of galry). We joined forces to create a single library unifying all of our approaches, which proved to be challenging. There is today a community of users and projects based on VisPy (napari), and the library is currently being maintained by David Hoese, Eric Larson, and others. VisPy recently received funding from the Chan Zuckerberg Initiative to improve the documentation and knowledge base.

VisPy is written entirely in Python and it is based on OpenGL, an almost 30 year old technology. Vulkan was first released in 2016 by the Khronos consortium and it can be seen, to some extent, as a successor to OpenGL. However, Vulkan is a lower-level library and it is harder to use. This is the price to pay to reach better GPU performance.

Datoviz may be seen as a ground-up reincarnation of VisPy, with two fundamental differences: it is written in C rather than Python, and it uses Vulkan rather than OpenGL.

  • The main advantages of C compared to Python are: ability to bind to any other language beyond Python; performance; possibility to use the Vulkan C API directly rather than via a wrapper.
  • The main advantages of Vulkan compared to OpenGL are: modern API, more adapted to today's hardware; performance. However, it is more complex and less user-friendly. Datoviz abstracts a lot of that complexity away.

Glumpy

Glumpy, developed by Nicolas Rougier, provides efficient implementations of high-quality 2D visuals on the GPU, using algorithms from the antigrain geometry library. The GPU code of most 2D visuals in Datoviz comes directly from Glumpy.

Dependencies and algorithms

An upcoming version will also have the following dependencies:

Related projects

Funding

Datoviz is being developed at the International Brain Laboratory, with funding from the Simons Foundation, the Flatiron Institute, the Wellcome Trust, INCF.

Glossary:

*[Vulkan]: Low-level graphics API created by Khronos, and successor of OpenGL *[shaders]: code written in GLSL and executed on the GPU to customize the graphics pipeline *[GLSL]: OpenGL shading language, the C-like language used to write shaders

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].