{"id":26923104,"url":"https://github.com/roy-fokker/vulkan-minimal","last_synced_at":"2025-04-02T00:39:02.726Z","repository":{"id":269471949,"uuid":"907462376","full_name":"Roy-Fokker/vulkan-minimal","owner":"Roy-Fokker","description":"Minimal Example of using Descriptor Buffer with Vulkan 1.3","archived":false,"fork":false,"pushed_at":"2025-01-30T22:31:19.000Z","size":542,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T23:25:56.654Z","etag":null,"topics":["cmake","cpp-modules","cpp23","glfw3","glm","vcpkg","vulkan","vulkan-memory-allocator"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Roy-Fokker.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-12-23T16:28:13.000Z","updated_at":"2025-01-30T22:31:22.000Z","dependencies_parsed_at":"2025-01-14T02:41:08.591Z","dependency_job_id":"980d61fb-747f-4ffd-a366-80a0dc35403a","html_url":"https://github.com/Roy-Fokker/vulkan-minimal","commit_stats":null,"previous_names":["roy-fokker/vulkan-minimal"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roy-Fokker%2Fvulkan-minimal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roy-Fokker%2Fvulkan-minimal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roy-Fokker%2Fvulkan-minimal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roy-Fokker%2Fvulkan-minimal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Roy-Fokker","download_url":"https://codeload.github.com/Roy-Fokker/vulkan-minimal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246735356,"owners_count":20825223,"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":["cmake","cpp-modules","cpp23","glfw3","glm","vcpkg","vulkan","vulkan-memory-allocator"],"created_at":"2025-04-02T00:39:02.122Z","updated_at":"2025-04-02T00:39:02.704Z","avatar_url":"https://github.com/Roy-Fokker.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vulkan 1.3 Minimal Example\n---\n\nAim of this project is to create a purely minimal example of using Vulkan-Hpp, Vulkan Memory Allocator,\nvk-bootstrap and glm.\n\nIt does not use any \"framework\" style scaffolding.\n\n## Project Setup\nProject uses CMake `3.31.x`, Ninja `1.12.1` and VCPKG, for a cross-platform build (Windows and Linux)\n`C++23` support is required, including C++ Modules.\nVulkan SDK is at `1.4.304`, which was latest available SDK, and vk-bootstrap is at `1.4.304`.\n\nFor Linux build, it requires LLVM/Clang version `18.1.x` or better.\nFor Windows build, it requires MSVC version `17.10.x` or better.\n\nThere are two presets in the config, one for windows and one for linux.\nBoth builds assume Vulkan sdk is setup correctly.\n\nFor few of the dependencies VCPKG overlays are being used as these either don't exist in VCPKG's port repo or version in their repo was/is outdated.\n\n### Dependencies\n- [Vulkan SDK](https://vulkan.lunarg.com) `1.3.296`\n- [DXC](https://github.com/Microsoft/DirectXShaderCompiler/wiki/SPIR%E2%80%90V-CodeGen) `1.8`, HLSL shader compiler bundled in Vulkan SDK\n- [VK-Bootstrap](https://github.com/charles-lunarg/vk-bootstrap) `1.3.298`, retrived via vcpkg overlay from vk-bootstrap github.\n- [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) `3.1`, used by VMA-HPP\n- [Vulkan Memory Allocator HPP](https://github.com/YaaZ/VulkanMemoryAllocator-Hpp) `3.1`\n- [GLM](https://github.com/g-truc/glm) `1.0.1`\n- [GLFW](https://www.glfw.org/) `3.4`\n- [dds-ktx](https://github.com/septag/dds-ktx) `latest`, retrived via vcpkg overlay from dds-ktx github\n\n## Code Layout\nAll the code is in `vk-min-src.cpp` file. \nHave made best effort to document/comment how it's being used.\n\n## Vulkan features used\n- Viewport height negative, to get +X right, +Y up, +Z into screen (LHS)\n- Dynamic Rendering\n- Shader Device Address\n- Descriptor Buffers\n  - Uniform buffer\n  - Texture buffer, image + sampler\n\n## References\n- https://github.com/KhronosGroup/Vulkan-Samples/tree/main/samples/extensions/descriptor_buffer_basic\n- https://github.com/steps3d/vulkan-with-classes/blob/main/example-descriptor-buffer.cpp\n- https://docs.vulkan.org/features/latest/features/proposals/VK_EXT_descriptor_buffer.html\n- https://www.khronos.org/blog/vk-ext-descriptor-buffer\n\n## Screenshot\n![DDS Textured Triangles](Textured_Triangles.png \"Triangles\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froy-fokker%2Fvulkan-minimal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froy-fokker%2Fvulkan-minimal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froy-fokker%2Fvulkan-minimal/lists"}