vkcompviz

Vulkan image and data processing framework capable of running a cascade of compute shaders and displaying or storing the result.

https://github.com/ichlubna/vkcompviz

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

compute-shader gpgpu gpu render shader vulkan vulkan-api
Last synced: 4 months ago · JSON representation ·

Repository

Vulkan image and data processing framework capable of running a cascade of compute shaders and displaying or storing the result.

Basic Info
  • Host: GitHub
  • Owner: ichlubna
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 5.17 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 5
Topics
compute-shader gpgpu gpu render shader vulkan vulkan-api
Created 8 months ago · Last pushed 5 months ago
Metadata Files
Readme License Citation

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

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

All Time
  • Total Commits: 55
  • Total Committers: 1
  • Avg Commits per committer: 55.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 55
  • Committers: 1
  • Avg Commits per committer: 55.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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)
Top Labels
Issue Labels
Pull Request Labels