vkcompviz
Vulkan image and data processing framework capable of running a cascade of compute shaders and displaying or storing the result.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.9%) to scientific vocabulary
Keywords
Repository
Vulkan image and data processing framework capable of running a cascade of compute shaders and displaying or storing the result.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 5
Topics
Metadata Files
README.md
Temporary notes
The current version of the project needs to use CMake 4.1.0. This will be fixed in the future when CMake support for import of std module is no longer an experimental feature. See the CMakeLists.txt file for more details.
Vulkan GPGPU Compute Framework
Vulkan Compute Vizualization (vkCompViz) is a Vulkan library for GPU-accelerated data processing. The main purpose are computer-graphics-related GPU-accelerated operations on images.
The library can load input images, run a sequence of compute shaders, display the result in window, and store the result. Uniform parameters can be interactively changed in console with the result updated in the display window. The application can run in headless mode or with window. The library can also generate memory and time performance reports.
How to run
Simple compilation of examples:
git clone --recursive https://github.com/ichlubna/vkCompViz.git
cd vkCompViz
mkdir build
cmake .. -G "Ninja"
ninja
cd ./examples/exampleName/
./exampleName
More detailed instructions can be found here.
A path to Artistic Style (astyle) program can be defined with ccmake and the project can be formatted using:
ninja format
Usage
See the existing examples for reference. Especially, Simple Blending, Parallel Reduction, and 3D Viewer are simple and contain explanatory comments. It is recommended to use them as templates for new examples. The API of the library is described in the documentation.
A simple basic code using this library, with no window output, that loads an image, processes it with a compute shader and one workgroup, and stores the result is:
import vkCompViz;
void main()
{
vkCompViz::App::Parameters params;
params.shaders.compute.push_back("shader.slang");
params.shaders.workGroupCounts.push_back({1, 1, 1});
params.textures.input.push_back("input.jpg");
params.textures.output.push_back({.sameResolutionAsInputID = 0, .sameFormatAsInputID = 0});
vkCompViz::App app;
app.run(params);
app.saveResultImage("output.jpg");
}
The bindings in shaders are:
| Binding | Resource | |---|---| | 0 | Uniform buffer (One common buffer for all shaders) | | 1 | Sampler for output textures | | 2 | Writeable output textures | | 3 | Sampler for input textures | | 4 | Readable input textures | | 5 | Shader storage buffer |
The first output texture is considered the final one and is displayed in the window. Its content is also stored to file.
Keys for window application:
| Key | Action | |---|---| | Esc | Exit program | | Space | Edit uniforms in runtime | | F1 | Store the the result | | F2 | Store benchmark report | | F3 | Print uniforms |
Possible future features
- RTX pipeline that can render to texture.
- Add a class reflecting the input buffers and textures which can be asynchronously updated in runtime. GPU would update its data when changes happen. This can allow for data changes during runtime (e.g. video player).
Owner
- Login: ichlubna
- Kind: user
- Company: FIT Brno University of Technology
- Website: https://www.fit.vut.cz/person/ichlubna/
- Repositories: 9
- Profile: https://github.com/ichlubna
Citation (CITATION.cff)
@article{chlubna2026,
title = {TODO},
author = {T. Chlubna}
}
GitHub Events
Total
- Create event: 7
- Issues event: 1
- Release event: 4
- Issue comment event: 2
- Push event: 47
- Pull request event: 6
Last Year
- Create event: 7
- Issues event: 1
- Release event: 4
- Issue comment event: 2
- Push event: 47
- Pull request event: 6
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| ichlubna | i****a@f****z | 55 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 5 months ago
All Time
- Total issues: 1
- Total pull requests: 4
- Average time to close issues: about 1 hour
- Average time to close pull requests: less than a minute
- Total issue authors: 1
- Total pull request authors: 1
- Average comments per issue: 1.0
- Average comments per pull request: 0.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 4
- Average time to close issues: about 1 hour
- Average time to close pull requests: less than a minute
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 1.0
- Average comments per pull request: 0.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- dhelmrich (1)
Pull Request Authors
- ichlubna (4)