{"id":15033660,"url":"https://github.com/overv/vulkantutorial","last_synced_at":"2025-05-13T20:16:12.425Z","repository":{"id":28113428,"uuid":"31612175","full_name":"Overv/VulkanTutorial","owner":"Overv","description":"Tutorial for the Vulkan graphics and compute API","archived":false,"fork":false,"pushed_at":"2025-05-02T11:33:58.000Z","size":112784,"stargazers_count":3382,"open_issues_count":71,"forks_count":551,"subscribers_count":164,"default_branch":"main","last_synced_at":"2025-05-06T23:35:22.867Z","etag":null,"topics":["computer-graphics","cpp","graphics-programming","reference","tutorial","vulkan"],"latest_commit_sha":null,"homepage":"https://vulkan-tutorial.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Overv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.CC-BY-SA-40","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-03T17:45:42.000Z","updated_at":"2025-05-05T20:31:47.000Z","dependencies_parsed_at":"2023-09-26T01:15:26.072Z","dependency_job_id":"e617c5bd-cce7-4381-a554-89784234f080","html_url":"https://github.com/Overv/VulkanTutorial","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overv%2FVulkanTutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overv%2FVulkanTutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overv%2FVulkanTutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overv%2FVulkanTutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Overv","download_url":"https://codeload.github.com/Overv/VulkanTutorial/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020646,"owners_count":22000756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-graphics","cpp","graphics-programming","reference","tutorial","vulkan"],"created_at":"2024-09-24T20:22:15.277Z","updated_at":"2025-05-13T20:16:12.405Z","avatar_url":"https://github.com/Overv.png","language":"C++","readme":"Vulkan tutorial\n===============\n\nThis repository hosts the contents of [vulkan-tutorial.com](https://vulkan-tutorial.com).\nThe website itself is based on [daux.io](https://github.com/dauxio/daux.io),\nwhich supports [GitHub flavored Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/).\nThe 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](https://hub.docker.com/r/overv/vulkan-tutorial).\n\nUse issues and pull requests to provide feedback related to the website. If you\nhave a problem with your code, then use the comments section in the related\nchapter to ask a question. Please provide your operating system, graphics card,\ndriver version, source code, expected behaviour and actual behaviour.\n\nE-book\n------\n\nThis guide is now available in e-book formats as well:\n\n* EPUB ([English](https://vulkan-tutorial.com/resources/vulkan_tutorial_en.epub), [French](https://vulkan-tutorial.com/resources/vulkan_tutorial_fr.epub))\n* PDF ([English](https://vulkan-tutorial.com/resources/vulkan_tutorial_en.pdf), [French](https://vulkan-tutorial.com/resources/vulkan_tutorial_fr.pdf))\n\nThe e-book can be built from the existing content by running:\n\n     python3 build_ebook.py\n\nThis script depends on the following utilities being available on the path:\n\n* `inkscape`: SVG to PNG conversion (tested with version 1.0.2)\n* `pandoc`: Building a PDF and EPUB from the Markdown code (tested with version 2.13)\n\nYou also need to install a LaTeX distribution for PDF generation.\n\nChanging code across chapters\n-----------------------------\n\nIt is sometimes necessary to change code that is reused across many chapters,\nfor example a function like `createBuffer`. If you make such a change, then you\nshould update the code files using the following steps:\n\n* Update any chapters that reference the modified code.\n* Make a copy of the first file that uses it and modify the code there, e.g.\n`base_code_fixed.cpp`.\n* Create a patch using\n`diff -Naur base_code.cpp base_code_fixed.cpp \u003e patch.txt`.\n* Apply the patch to the specified code file and all files in later chapters\nusing the `incremental_patch.sh` script. Run it like this:\n`./incremental_patch.sh base_code.cpp patch.txt`.\n* Clean up the `base_code_fixed.cpp` and `patch.txt` files.\n* Commit.\n\nRendering the tutorial\n-----------------------------\n\nTo render the tutorial (i.e. convert the markdown to html), you have two options:\n\n1. Serve rendered files on the fly using a web server that has php installed\n2. Generate static html files that you can view locally or put on a server\n\nFor either of these options, you'll need php and a patch'ed daux.\n\n### PHP\n\n1. Make sure [PHP](http://php.net/downloads.php) is installed (Daux is written\n   in PHP)\n    1. Both the `php_mbstring` and `php_openssl` extensions need to be enabled\n    2. The `phar.readonly` setting needs to be set to `Off` (to be able to\n       rebuild Daux)\n2. Make sure [Composer](https://getcomposer.org/) is installed, a php dependency\n   manager that Daux uses\n\n### Clone, patch, and rebuild daux\n\n1. Clone [daux](https://github.com/dauxio/daux.io)\n    * `git clone https://github.com/dauxio/daux.io.git`\n2. Make a new branch at the older revision that the VulkanTutorial patch is\n   against:\n    * `git checkout d45ccff -b vtpatch`\n    * Making a new branch isn't strictly necessary, as you could reset `master`,\n      but this keeps master intact.\n3. Copy over the `daux.patch` file into the daux.io directory, make sure line\n   endings are UNIX style (in case you're using Windows), and apply the patch.\n   It should apply cleanly.\n    * `git am daux.patch`\n4. Run composer in the daux.io directory so that it downloads the dependencies\n   Daux needs in order to be built\n    * `composer install`\n5. Rebuild Daux\n    * `php bin/compile` (this can take a while)\n    * A newly made `daux.phar` will now be in your base directory\n\n### Using Daux to serve rendered files on the fly\n\nOnce you've completed the above, follow the instructions on the daux site\nfor how to [run daux using a web server](https://github.com/dauxio/daux.io/blob/master/README.md#running-remotely).\n\nAs a simple option considering you have php installed, you can also use php's\nbuilt in development web server if you just need to locally see what things\nlook like:\n\n1. In the `daux.io` directory, edit `global.json` so that the `docs_directory`\n   option points at your VulkanTutorial directory\n    * `\"docs_directory\": \"../VulkanTutorial\",`\n2. In the `daux.io` directory, run\n    * ` php -S localhost:8080 index.php`\n3. Type `localhost:8080` in your web browser URL bar and hit enter. You should\n   now see the VulkanTutorial front page.\n\n### Using Daux to statically generate html files\n\nBefore we generate the static files, we need to tweak daux and the tutorial\nsetup to prevent it from trying to load a few outside resources (which will\nstall your browser when trying to load the otherwise static page)\n\n1. In the `VulkanTutorial` directory, edit `config.json` and remove the\n   `google_analytics` line so daux doesn't try to load that.\n2. In the `daux.io` directory, edit `themes/daux/config.json` and remove the\n   `font` line so that daux doesn't try to load an external font.\n3. Rebuild daux according to the earlier instructions so it picks up the theme\n   changes.\n\nWe're working on improvements so in the future the above steps won't be\nnecessary.\n\nNow with the above done, we can generate the static files. Asuming the daux.io\nand VulkanTutorial directories are next to each other, go into the `daux.io`\ndirectory and run a command similar to:\n`php generate -s ../VulkanTutorial -d ../VulkanTutorial/out`.\n\n`-s` tells it where to find the documentation, while `-d` tells it where to put\nthe generated files.\n\nNote: if you want to generate the docs again, delete the `out` directory first\nor daux will make a new `out` directory within the existing `out` directory.\n\nLicense\n-------\n\nThe contents of this repository are licensed as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/),\nunless stated otherwise. By contributing to this repository, you agree to license\nyour contributions to the public under that same license.\n\nThe code listings in the `code` directory are licensed as [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/).\nBy contributing to that directory, you agree to license your contributions to\nthe public under that same public domain-like license.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverv%2Fvulkantutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foverv%2Fvulkantutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverv%2Fvulkantutorial/lists"}