This repository hosts the contents of vulkan-tutorial.com. The website itself is based on daux.io, which supports GitHub flavored Markdown. The actual site runs daux.io with a custom theme and a few modifications (https://github.com/Overv/daux.io) and this is built into a Docker image.
Use issues and pull requests to provide feedback related to the website. If you have a problem with your code, then use the comments section in the related chapter to ask a question. Please provide your operating system, graphics card, driver version, source code, expected behaviour and actual behaviour.
This guide is now available in e-book formats as well:
The e-book can be built from the existing content by running:
python3 build_ebook.py
This script depends on the following utilities being available on the path:
inkscape
: SVG to PNG conversion (tested with version 1.0.2)pandoc
: Building a PDF and EPUB from the Markdown code (tested with version 2.13)You also need to install a LaTeX distribution for PDF generation.
It is sometimes necessary to change code that is reused across many chapters,
for example a function like createBuffer
. If you make such a change, then you
should update the code files using the following steps:
base_code_fixed.cpp
.diff -Naur base_code.cpp base_code_fixed.cpp > patch.txt
.incremental_patch.sh
script. Run it like this:
./incremental_patch.sh base_code.cpp patch.txt
.base_code_fixed.cpp
and patch.txt
files.To render the tutorial (i.e. convert the markdown to html), you have two options:
For either of these options, you'll need php and a patch'ed daux.
php_mbstring
and php_openssl
extensions need to be enabledphar.readonly
setting needs to be set to Off
(to be able to
rebuild Daux)git clone https://github.com/dauxio/daux.io.git
git checkout d45ccff -b vtpatch
master
,
but this keeps master intact.daux.patch
file into the daux.io directory, make sure line
endings are UNIX style (in case you're using Windows), and apply the patch.
It should apply cleanly.
git am daux.patch
composer install
php bin/compile
(this can take a while)daux.phar
will now be in your base directoryOnce you've completed the above, follow the instructions on the daux site for how to run daux using a web server.
As a simple option considering you have php installed, you can also use php's built in development web server if you just need to locally see what things look like:
daux.io
directory, edit global.json
so that the docs_directory
option points at your VulkanTutorial directory
"docs_directory": "../VulkanTutorial",
daux.io
directory, run
php -S localhost:8080 index.php
localhost:8080
in your web browser URL bar and hit enter. You should
now see the VulkanTutorial front page.Before we generate the static files, we need to tweak daux and the tutorial setup to prevent it from trying to load a few outside resources (which will stall your browser when trying to load the otherwise static page)
VulkanTutorial
directory, edit config.json
and remove the
google_analytics
line so daux doesn't try to load that.daux.io
directory, edit themes/daux/config.json
and remove the
font
line so that daux doesn't try to load an external font.We're working on improvements so in the future the above steps won't be necessary.
Now with the above done, we can generate the static files. Asuming the daux.io
and VulkanTutorial directories are next to each other, go into the daux.io
directory and run a command similar to:
php generate -s ../VulkanTutorial -d ../VulkanTutorial/out
.
-s
tells it where to find the documentation, while -d
tells it where to put
the generated files.
Note: if you want to generate the docs again, delete the out
directory first
or daux will make a new out
directory within the existing out
directory.
The contents of this repository are licensed as CC BY-SA 4.0, unless stated otherwise. By contributing to this repository, you agree to license your contributions to the public under that same license.
The code listings in the code
directory are licensed as CC0 1.0 Universal.
By contributing to that directory, you agree to license your contributions to
the public under that same public domain-like license.