All Projects → ShabbyX → vktut

ShabbyX / vktut

Licence: GPL-3.0 license
Shabi's Vulkan Tutorials

Programming Languages

c
50402 projects - #5 most used programming language
GLSL
2045 projects

Projects that are alternatives of or similar to vktut

Glove
GLOVE (GL Over Vulkan) is a cross-platform software library that acts as an intermediate layer between an OpenGL application and Vulkan
Stars: ✭ 394 (+347.73%)
Mutual labels:  vulkan, computer-graphics
Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+167.05%)
Mutual labels:  vulkan, computer-graphics
clustered forward demo vk
Clustered forward rendering demo with Vulkan
Stars: ✭ 50 (-43.18%)
Mutual labels:  vulkan, computer-graphics
CLUSEK-RT
Vulkan based C++ ray-tracing game engine.
Stars: ✭ 24 (-72.73%)
Mutual labels:  vulkan, computer-graphics
Vulkantutorial
Tutorial for the Vulkan graphics and compute API
Stars: ✭ 1,962 (+2129.55%)
Mutual labels:  vulkan, computer-graphics
Nimgl
NimGL is a Nim library that offers bindings for popular libraries used in computer graphics
Stars: ✭ 218 (+147.73%)
Mutual labels:  vulkan, computer-graphics
racket-vulkan
Racket integration with all things Vulkan 💥
Stars: ✭ 40 (-54.55%)
Mutual labels:  vulkan, computer-graphics
kompute
General purpose GPU compute framework built on Vulkan to support 1000s of cross vendor graphics cards (AMD, Qualcomm, NVIDIA & friends). Blazing fast, mobile-enabled, asynchronous and optimized for advanced GPU data processing usecases. Backed by the Linux Foundation.
Stars: ✭ 872 (+890.91%)
Mutual labels:  vulkan
tiny-path
An instructive one-file Ruby path tracer
Stars: ✭ 53 (-39.77%)
Mutual labels:  computer-graphics
ComputerGraphics-OpenGL
No description or website provided.
Stars: ✭ 25 (-71.59%)
Mutual labels:  computer-graphics
MineCube
A Cool Voxel Editor Based on OpenGL 3.3+ !
Stars: ✭ 23 (-73.86%)
Mutual labels:  computer-graphics
cain-ncnn-vulkan
CAIN, Channel Attention Is All You Need for Video Frame Interpolation implemented with ncnn library
Stars: ✭ 85 (-3.41%)
Mutual labels:  vulkan
opengl-demos
A list of small OpenGL applications to demonstrate concepts of Computer Graphics
Stars: ✭ 33 (-62.5%)
Mutual labels:  computer-graphics
eseed-window
A minimal cross-platform C++17 window management library for rendering (deprecated)
Stars: ✭ 18 (-79.55%)
Mutual labels:  vulkan
neuraltexture
Learning a Neural 3D Texture Space from 2D Exemplars [CVPR 2020]
Stars: ✭ 88 (+0%)
Mutual labels:  computer-graphics
Vortex2D
Real-time fluid simulation engine running on GPU with Vulkan
Stars: ✭ 91 (+3.41%)
Mutual labels:  vulkan
ncnn-android-squeezenet
The squeezenet image classification android example
Stars: ✭ 100 (+13.64%)
Mutual labels:  vulkan
magma
Abstraction layer to facilitate usage of Khronos Vulkan API
Stars: ✭ 23 (-73.86%)
Mutual labels:  vulkan
snarf
Official code release for ICCV 2021 paper SNARF: Differentiable Forward Skinning for Animating Non-rigid Neural Implicit Shapes.
Stars: ✭ 184 (+109.09%)
Mutual labels:  computer-graphics
ZinoEngineV1
A custom Vulkan 3D game engine in C++ 3d that I make for fun.
Stars: ✭ 17 (-80.68%)
Mutual labels:  vulkan

Shabi's Vulkan Tutorials

Travis-CI: Build Status

This is a repository of tutorials on Vulkan. It starts with the basics, enumerating your GPUs, allocating memory and getting computation done. It then moves on to actually displaying things and using shaders. Along the way, some of the optional Vulkan layers are explored.

Each tutorial may use functions implemented in a previous tutorial. The functions are thus named as tutX_*() so that it would be immediately obvious which tutorial you should refer to, if you don't remember what that function does.

These tutorials were developed in Linux, and I have no intention of trying them on Windows. Feel free to send a pull request for the tweaks they would need to run on that. You would need the following external libraries:

  • Vulkan, of course
  • SDL2
  • X11-xcb
  • ncurses (optional for Tutorial 12)

The tutorials are source code themselves, with enough comments in them to explain how things are done and/or why. I strongly recommend reading the Vulkan specifications alongside the tutorials. It is well-written and easy to grasp. Also note that Vulkan is not for the faint of heart. I expect you are not struggling with reading C code and have some understanding of computer graphics and operating systems.

The main.c of each tutorial glues together the functionalities implemented in the tut*.c files, and may include uninteresting things like printing out information. The core usage of Vulkan is usually in tut[0-9]\+.c files, with tut[0-9]\+_render.c files containing utilities useful for rendering based on top of the core functions.

Build and Execution

This project uses autotools. If you have received the project as a release tarball, you can go through the usual procedure:

mkdir build && cd build
../configure --enable-silent-rules
make -j

If your Vulkan SDK installation is not in the standard locations, you would need to have the VULKAN_SDK variable set, for example set it in your environment:

export VULKAN_SDK=/path/to/vulkan/arch

Or run configure file with this environment:

VULKAN_SDK=/path/to/vulkan/arch ../configure

If you are building from source, you would need autotools installed as well as autoconf-archive and do the following step beforehand:

autoreconf -i

Each tutorial will have an executable in its own directory that you can run.


Disclaimer: I am writing these tutorials as I am learning Vulkan myself. I am in no way an expert in computer graphics and my own knowledge of OpenGL barely passes 1.2. Please do not consider these tutorials as "best practices" in Vulkan. They are intended to merely ease you in Vulkan, getting you familiar with the API. How to best utilize the API is beyond me at this point.

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].