{"id":20596546,"url":"https://github.com/tcoppex/vk-playground","last_synced_at":"2025-09-26T07:31:45.783Z","repository":{"id":146232507,"uuid":"104001051","full_name":"tcoppex/vk-playground","owner":"tcoppex","description":"🔥 A simple c++20 Vulkan framework, for fun \u0026 exploration.","archived":false,"fork":false,"pushed_at":"2025-09-23T15:27:43.000Z","size":956,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-23T17:18:52.300Z","etag":null,"topics":["3d-framework","cpp20","graphics-programming","vulkan"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tcoppex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-18T23:09:49.000Z","updated_at":"2025-09-19T13:55:31.000Z","dependencies_parsed_at":"2025-02-07T13:36:25.915Z","dependency_job_id":"8ee4123d-49af-406b-986b-bd7162b9174b","html_url":"https://github.com/tcoppex/vk-playground","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tcoppex/vk-playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcoppex%2Fvk-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcoppex%2Fvk-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcoppex%2Fvk-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcoppex%2Fvk-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tcoppex","download_url":"https://codeload.github.com/tcoppex/vk-playground/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcoppex%2Fvk-playground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277043159,"owners_count":25750508,"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","status":"online","status_checked_at":"2025-09-26T02:00:09.010Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["3d-framework","cpp20","graphics-programming","vulkan"],"created_at":"2024-11-16T08:17:32.193Z","updated_at":"2025-09-26T07:31:45.778Z","avatar_url":"https://github.com/tcoppex.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![language: c++20](https://img.shields.io/badge/c++-20-blue.svg)\n![api: vulkan1.1](https://img.shields.io/badge/vulkan-1.1-red.svg)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n# :fire: vk-playground :fire:\n\nA c++20 / Vulkan 1.1 rendering framework flavored like 1.4 and inspired by WebGPU and _vk_minimal_latest_.\n\nRuns on GNU / Linux and Windows 11, compiled with _GCC 11.4_ and _MSVC 19.38_.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eQuick start \u0026 run !\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\n# [Optional] Retrieve system build dependencies with Synaptic.\n# sudo apt install git git-lfs build-essential cmake vulkan-sdk\n\n# Clone the repository.\ngit clone https://github.com/tcoppex/vk-playground\ncd vk-playground\n\n# Build.\ncmake . -B build -DCMAKE_BUILD_TYPE=Release\ncmake --build build --config Release\n\n# Run the first demo.\n./bin/00_hello\n```\n\n\u003c/details\u003e\n\n### Demos\n\n* **[00_hello](src/samples/00_hello)**: Display a surface and clear its color (_Device, Swapchain, dynamic rendering_).\n* **[01_triangle](src/samples/01_triangle)**: Display a simple triangle (_Shader, Graphics Pipeline, Vertex Buffer, Commands_).\n* **[02_push_constant](src/samples/02_push_constant)**: Update per-frame values via push constants and dynamic states (_Push Constant_).\n* **[03_descriptor_set](src/samples/03_descriptor_set)**: Initialize \u0026 update a descriptor set on a single uniform buffer (_Descriptor Set_).\n* **[04_texturing](src/samples/04_texturing)**: Display a textured cube with a linear sampler (_Image, Sampler_).\n* **[05_stencil_op](src/samples/05_stencil_op)**: Stencil operations and instancing through a multi-passes portal effect (_Stencil, instancing_).\n* **[06_blend_op](src/samples/06_blend_op)**: Fast \u0026 simple billboarded GPU particles with additive blending (_Blending_).\n* **[07_compute](src/samples/07_compute)**: Waves simulation with sorted alpha-blended particles (_Compute Pipeline, Buffer Barriers_).\n* **[08_hdr_envmap](src/samples/08_hdr_envmap)**: Image-based lighting from a prefiltered HDR environment map (_Texture Barriers_).\n* **[09_post_process](src/samples/09_post_process)**: Screen-space contour effect via a post-processing pipeline (_Render Target_, _Blit_).\n* **[10_material](src/samples/10_material)**: Showcase the internal PBR material system with scene graph ordering (_Pipeline Cache_, _Specialization Constants_).\n* **[11_ray_tracing](src/samples/11_raytracing)**: Simple path tracer on a Cornell box via hardware-accelerated ray tracing (_Acceleration Structure_, _Ray Tracing Pipeline_, _Buffer Device Address_).\n\n### Dependencies\n\n##### Third parties\n\n * Vulkan SDK 1.1\n * CMake 3.31\n * CPM 0.40.3 (_downloaded automatically_)\n * GLFW 3.4 (_via CPM_)\n * Volk 1.4 (_via CPM_)\n * VulkanMemoryAllocator 3.2.0 (_via CPM_)\n * ImGUI (_via CPM_)\n * MikkTSpace (_via CPM_)\n * linalg v2.2 (_via CPM_)\n * stb_image.h (_included_)\n\n##### Vulkan device extensions\n\n* [VK_EXT_descriptor_indexing](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_descriptor_indexing.html)\n* [VK_EXT_extended_dynamic_state](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_extended_dynamic_state.html)\n* [VK_EXT_extended_dynamic_state2](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_extended_dynamic_state2.html)\n* [VK_EXT_extended_dynamic_state3](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_extended_dynamic_state3.html)\n* [VK_EXT_image_view_min_lod](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_image_view_min_lod.html)\n* [VK_EXT_vertex_input_dynamic_state](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_vertex_input_dynamic_state.html)\n* [VK_KHR_buffer_device_address]( https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_buffer_device_address.html)\n* [VK_KHR_create_renderpass2](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_create_renderpass2.html)\n* [VK_KHR_depth_stencil_resolve](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_depth_stencil_resolve.html)\n* [VK_KHR_dynamic_rendering](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_dynamic_rendering.html)\n* [VK_KHR_index_type_uint8](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_index_type_uint8.html)\n* [VK_KHR_maintenance4](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance4.html)\n* [VK_KHR_maintenance5](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance5.html)\n* [VK_KHR_maintenance6](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance6.html)\n* [VK_KHR_swapchain](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_swapchain.html)\n* [VK_KHR_synchronization2](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_synchronization2.html)\n* [VK_KHR_timeline_semaphore](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_timeline_semaphore.html)\n* [VK_KHR_acceleration_structure](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_acceleration_structure.html)\n* [VK_KHR_ray_tracing_pipeline](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_ray_tracing_pipeline.html)\n\n### Acknowledgement\n\nThis project was inspired by the work of **NVIDIA DesignWorks Samples**, in particular the _[vk_minimal_latest](https://github.com/nvpro-samples/vk_minimal_latest)_ project.\n\n### License\n\n*vk-playground* is released under the *MIT* license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcoppex%2Fvk-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftcoppex%2Fvk-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcoppex%2Fvk-playground/lists"}