├── .clang-format ├── .copyrightignore ├── .github ├── ISSUE_TEMPLATE │ └── issue-template.md ├── docker │ ├── Dockerfile │ ├── files │ │ └── package-list.txt │ ├── readme.md │ └── scripts │ │ ├── check_copyright_headers.py │ │ ├── clang_format.py │ │ ├── run-clang-tidy.py │ │ ├── snake_case.py │ │ └── vk_convert.lex └── workflows │ ├── build.yml │ ├── check.yml │ ├── external.yml │ ├── image.yml │ └── jekyll-gh-pages.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitmodules ├── .snakeignore ├── CMakeLists.txt ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── LICENSE ├── README.md ├── _config.yml ├── app ├── CMakeLists.txt ├── android │ ├── AndroidManifest.xml │ ├── ic_launcher-web.png │ ├── java │ │ └── com │ │ │ └── khronos │ │ │ └── vulkan_samples │ │ │ ├── FilterDialog.java │ │ │ ├── NativeSampleActivity.java │ │ │ ├── SampleArrayAdapter.java │ │ │ ├── SampleLauncherActivity.java │ │ │ ├── TabFragment.java │ │ │ ├── ViewPagerAdapter.java │ │ │ ├── common │ │ │ ├── Notifications.java │ │ │ └── Utils.java │ │ │ ├── model │ │ │ ├── Permission.java │ │ │ ├── Sample.java │ │ │ └── SampleStore.java │ │ │ └── views │ │ │ ├── PermissionView.java │ │ │ └── SampleListView.java │ └── res │ │ ├── drawable │ │ └── icon.png │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── fragment_tab.xml │ │ └── listview_item.xml │ │ ├── menu │ │ └── main_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── values │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── provider_paths.xml ├── apps │ ├── CMakeLists.txt │ ├── apps.cpp.in │ └── apps.h ├── main.cpp └── plugins │ ├── CMakeLists.txt │ ├── batch_mode │ ├── batch_mode.cpp │ └── batch_mode.h │ ├── benchmark_mode │ ├── benchmark_mode.cpp │ └── benchmark_mode.h │ ├── data_path │ ├── data_path.cpp │ └── data_path.h │ ├── file_logger │ ├── file_logger.cpp │ └── file_logger.h │ ├── force_close │ ├── force_close.cpp │ └── force_close.h │ ├── fps_logger │ ├── fps_logger.cpp │ └── fps_logger.h │ ├── generic_options │ ├── generic_options.cpp │ └── generic_options.h │ ├── plugins.cpp.in │ ├── plugins.h │ ├── screenshot │ ├── screenshot.cpp │ └── screenshot.h │ ├── start_sample │ ├── start_sample.cpp │ └── start_sample.h │ ├── start_test │ ├── start_test.cpp │ └── start_test.h │ ├── stop_after │ ├── stop_after.cpp │ └── stop_after.h │ └── window_options │ ├── window_options.cpp │ └── window_options.h ├── assets_local ├── .gitattributes ├── README.md ├── monkey.gltf ├── nanite_mat_id_01.png └── nanite_mat_id_02.png ├── banner.jpg ├── bldsys ├── cmake │ ├── android_package.cmake │ ├── android_sync_folder.cmake │ ├── check_atomic.cmake │ ├── create_gradle_project.cmake │ ├── create_sample_project.cmake │ ├── global_options.cmake │ ├── module │ │ ├── FindAdb.cmake │ │ └── FindGradle.cmake │ ├── sample_helper.cmake │ ├── template │ │ ├── gradle │ │ │ ├── app.build.gradle.in │ │ │ ├── build.gradle.in │ │ │ ├── download_vvl.gradle │ │ │ ├── gradle-wrapper.jar │ │ │ ├── gradle-wrapper.properties.in │ │ │ ├── gradle.properties.in │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ └── settings.gradle.in │ │ └── sample │ │ │ ├── CMakeLists.txt.in │ │ │ ├── sample.cpp.in │ │ │ └── sample.h.in │ └── utils.cmake ├── scripts │ ├── clang-format.sh │ ├── generate_android_gradle.bat │ ├── generate_android_gradle.sh │ ├── generate_sample.bat │ └── generate_sample.sh └── toolchain │ ├── android_gradle.cmake │ └── android_nsight_tegra.cmake ├── docs ├── build.md ├── create_sample.md ├── debug_graphs.md ├── doxygen │ └── doxyfile ├── images │ ├── debug-graph.png │ └── debug-window.png ├── memory_limits.md ├── misc.md ├── pull_request_template.md └── testing.md ├── framework ├── CMakeLists.txt ├── api_vulkan_sample.cpp ├── api_vulkan_sample.h ├── buffer_pool.cpp ├── buffer_pool.h ├── camera.cpp ├── camera.h ├── common │ ├── error.cpp │ ├── error.h │ ├── glm_common.h │ ├── helpers.h │ ├── hpp_error.h │ ├── hpp_resource_caching.h │ ├── hpp_strings.h │ ├── hpp_utils.h │ ├── hpp_vk_common.h │ ├── logging.h │ ├── optional.h │ ├── resource_caching.h │ ├── strings.cpp │ ├── strings.h │ ├── tags.h │ ├── utils.cpp │ ├── utils.h │ ├── vk_common.cpp │ ├── vk_common.h │ └── vk_initializers.h ├── core │ ├── acceleration_structure.cpp │ ├── acceleration_structure.h │ ├── buffer.cpp │ ├── buffer.h │ ├── command_buffer.cpp │ ├── command_buffer.h │ ├── command_pool.cpp │ ├── command_pool.h │ ├── debug.cpp │ ├── debug.h │ ├── descriptor_pool.cpp │ ├── descriptor_pool.h │ ├── descriptor_set.cpp │ ├── descriptor_set.h │ ├── descriptor_set_layout.cpp │ ├── descriptor_set_layout.h │ ├── device.cpp │ ├── device.h │ ├── framebuffer.cpp │ ├── framebuffer.h │ ├── hpp_buffer.cpp │ ├── hpp_buffer.h │ ├── hpp_command_buffer.cpp │ ├── hpp_command_buffer.h │ ├── hpp_command_pool.cpp │ ├── hpp_command_pool.h │ ├── hpp_debug.h │ ├── hpp_descriptor_pool.h │ ├── hpp_descriptor_set.h │ ├── hpp_descriptor_set_layout.h │ ├── hpp_device.cpp │ ├── hpp_device.h │ ├── hpp_framebuffer.h │ ├── hpp_image.cpp │ ├── hpp_image.h │ ├── hpp_image_view.cpp │ ├── hpp_image_view.h │ ├── hpp_instance.cpp │ ├── hpp_instance.h │ ├── hpp_physical_device.cpp │ ├── hpp_physical_device.h │ ├── hpp_pipeline.h │ ├── hpp_pipeline_layout.h │ ├── hpp_query_pool.h │ ├── hpp_queue.cpp │ ├── hpp_queue.h │ ├── hpp_render_pass.h │ ├── hpp_sampler.h │ ├── hpp_shader_module.h │ ├── hpp_swapchain.cpp │ ├── hpp_swapchain.h │ ├── hpp_vulkan_resource.cpp │ ├── hpp_vulkan_resource.h │ ├── image.cpp │ ├── image.h │ ├── image_view.cpp │ ├── image_view.h │ ├── instance.cpp │ ├── instance.h │ ├── physical_device.cpp │ ├── physical_device.h │ ├── pipeline.cpp │ ├── pipeline.h │ ├── pipeline_layout.cpp │ ├── pipeline_layout.h │ ├── query_pool.cpp │ ├── query_pool.h │ ├── queue.cpp │ ├── queue.h │ ├── render_pass.cpp │ ├── render_pass.h │ ├── sampled_image.cpp │ ├── sampled_image.h │ ├── sampler.cpp │ ├── sampler.h │ ├── scratch_buffer.cpp │ ├── scratch_buffer.h │ ├── shader_binding_table.cpp │ ├── shader_binding_table.h │ ├── shader_module.cpp │ ├── shader_module.h │ ├── swapchain.cpp │ ├── swapchain.h │ ├── vulkan_resource.cpp │ └── vulkan_resource.h ├── debug_info.cpp ├── debug_info.h ├── fence_pool.cpp ├── fence_pool.h ├── geometry │ ├── frustum.cpp │ └── frustum.h ├── glsl_compiler.cpp ├── glsl_compiler.h ├── gltf_loader.cpp ├── gltf_loader.h ├── graphing │ ├── framework_graph.cpp │ ├── framework_graph.h │ ├── graph.cpp │ ├── graph.h │ ├── graph_node.cpp │ ├── graph_node.h │ ├── scene_graph.cpp │ └── scene_graph.h ├── gui.cpp ├── gui.h ├── heightmap.cpp ├── heightmap.h ├── hpp_api_vulkan_sample.cpp ├── hpp_api_vulkan_sample.h ├── hpp_buffer_pool.h ├── hpp_fence_pool.h ├── hpp_glsl_compiler.h ├── hpp_gltf_loader.h ├── hpp_gui.cpp ├── hpp_gui.h ├── hpp_resource_binding_state.h ├── hpp_resource_cache.cpp ├── hpp_resource_cache.h ├── hpp_resource_record.h ├── hpp_resource_replay.h ├── hpp_vulkan_sample.cpp ├── hpp_vulkan_sample.h ├── platform │ ├── android │ │ ├── android_platform.cpp │ │ ├── android_platform.h │ │ ├── android_window.cpp │ │ └── android_window.h │ ├── application.cpp │ ├── application.h │ ├── configuration.cpp │ ├── configuration.h │ ├── filesystem.cpp │ ├── filesystem.h │ ├── glfw_window.cpp │ ├── glfw_window.h │ ├── headless_window.cpp │ ├── headless_window.h │ ├── hpp_application.h │ ├── hpp_platform.h │ ├── hpp_window.h │ ├── input_events.cpp │ ├── input_events.h │ ├── parser.cpp │ ├── parser.h │ ├── parsers │ │ ├── CLI11.cpp │ │ ├── CLI11.h │ │ ├── help_formatter.cpp │ │ └── help_formatter.h │ ├── platform.cpp │ ├── platform.h │ ├── plugins │ │ ├── plugin.cpp │ │ ├── plugin.h │ │ └── plugin_base.h │ ├── unix │ │ ├── direct_window.cpp │ │ ├── direct_window.h │ │ ├── unix_d2d_platform.cpp │ │ ├── unix_d2d_platform.h │ │ ├── unix_platform.cpp │ │ └── unix_platform.h │ ├── window.cpp │ ├── window.h │ └── windows │ │ ├── windows_platform.cpp │ │ └── windows_platform.h ├── rendering │ ├── hpp_pipeline_state.h │ ├── hpp_render_context.cpp │ ├── hpp_render_context.h │ ├── hpp_render_frame.h │ ├── hpp_render_pipeline.h │ ├── hpp_render_target.cpp │ ├── hpp_render_target.h │ ├── hpp_subpass.h │ ├── pipeline_state.cpp │ ├── pipeline_state.h │ ├── postprocessing_computepass.cpp │ ├── postprocessing_computepass.h │ ├── postprocessing_pass.cpp │ ├── postprocessing_pass.h │ ├── postprocessing_pipeline.cpp │ ├── postprocessing_pipeline.h │ ├── postprocessing_renderpass.cpp │ ├── postprocessing_renderpass.h │ ├── render_context.cpp │ ├── render_context.h │ ├── render_frame.cpp │ ├── render_frame.h │ ├── render_pipeline.cpp │ ├── render_pipeline.h │ ├── render_target.cpp │ ├── render_target.h │ ├── subpass.cpp │ ├── subpass.h │ └── subpasses │ │ ├── forward_subpass.cpp │ │ ├── forward_subpass.h │ │ ├── geometry_subpass.cpp │ │ ├── geometry_subpass.h │ │ ├── hpp_forward_subpass.h │ │ ├── lighting_subpass.cpp │ │ └── lighting_subpass.h ├── resource_binding_state.cpp ├── resource_binding_state.h ├── resource_cache.cpp ├── resource_cache.h ├── resource_record.cpp ├── resource_record.h ├── resource_replay.cpp ├── resource_replay.h ├── scene_graph │ ├── component.cpp │ ├── component.h │ ├── components │ │ ├── aabb.cpp │ │ ├── aabb.h │ │ ├── camera.cpp │ │ ├── camera.h │ │ ├── hpp_image.h │ │ ├── hpp_sub_mesh.h │ │ ├── image.cpp │ │ ├── image.h │ │ ├── image │ │ │ ├── astc.cpp │ │ │ ├── astc.h │ │ │ ├── ktx.cpp │ │ │ ├── ktx.h │ │ │ ├── stb.cpp │ │ │ └── stb.h │ │ ├── light.cpp │ │ ├── light.h │ │ ├── material.cpp │ │ ├── material.h │ │ ├── mesh.cpp │ │ ├── mesh.h │ │ ├── orthographic_camera.cpp │ │ ├── orthographic_camera.h │ │ ├── pbr_material.cpp │ │ ├── pbr_material.h │ │ ├── perspective_camera.cpp │ │ ├── perspective_camera.h │ │ ├── sampler.cpp │ │ ├── sampler.h │ │ ├── sub_mesh.cpp │ │ ├── sub_mesh.h │ │ ├── texture.cpp │ │ ├── texture.h │ │ ├── transform.cpp │ │ └── transform.h │ ├── node.cpp │ ├── node.h │ ├── scene.cpp │ ├── scene.h │ ├── script.cpp │ ├── script.h │ └── scripts │ │ ├── animation.cpp │ │ ├── animation.h │ │ ├── free_camera.cpp │ │ ├── free_camera.h │ │ ├── node_animation.cpp │ │ └── node_animation.h ├── semaphore_pool.cpp ├── semaphore_pool.h ├── spirv_reflection.cpp ├── spirv_reflection.h ├── stats │ ├── frame_time_stats_provider.cpp │ ├── frame_time_stats_provider.h │ ├── hpp_stats.h │ ├── hwcpipe_stats_provider.cpp │ ├── hwcpipe_stats_provider.h │ ├── stats.cpp │ ├── stats.h │ ├── stats_common.h │ ├── stats_provider.cpp │ ├── stats_provider.h │ ├── vulkan_stats_provider.cpp │ └── vulkan_stats_provider.h ├── timer.cpp ├── timer.h ├── vulkan_sample.cpp └── vulkan_sample.h ├── samples ├── CMakeLists.txt ├── README.md ├── api │ ├── README.md │ ├── compute_nbody │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── compute_nbody.cpp │ │ └── compute_nbody.h │ ├── dynamic_uniform_buffers │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── dynamic_uniform_buffers.cpp │ │ └── dynamic_uniform_buffers.h │ ├── hdr │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hdr.cpp │ │ └── hdr.h │ ├── hello_triangle │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hello_triangle.cpp │ │ └── hello_triangle.h │ ├── hlsl_shaders │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hlsl_shaders.cpp │ │ └── hlsl_shaders.h │ ├── hpp_compute_nbody │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_compute_nbody.cpp │ │ └── hpp_compute_nbody.h │ ├── hpp_dynamic_uniform_buffers │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_dynamic_uniform_buffers.cpp │ │ └── hpp_dynamic_uniform_buffers.h │ ├── hpp_hdr │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_hdr.cpp │ │ └── hpp_hdr.h │ ├── hpp_hello_triangle │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_hello_triangle.cpp │ │ └── hpp_hello_triangle.h │ ├── hpp_hlsl_shaders │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_hlsl_shaders.cpp │ │ └── hpp_hlsl_shaders.h │ ├── hpp_instancing │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_instancing.cpp │ │ └── hpp_instancing.h │ ├── hpp_separate_image_sampler │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_separate_image_sampler.cpp │ │ └── hpp_separate_image_sampler.h │ ├── hpp_terrain_tessellation │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_terrain_tessellation.cpp │ │ └── hpp_terrain_tessellation.h │ ├── hpp_texture_loading │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_texture_loading.cpp │ │ └── hpp_texture_loading.h │ ├── hpp_texture_mipmap_generation │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_texture_mipmap_generation.cpp │ │ └── hpp_texture_mipmap_generation.h │ ├── hpp_timestamp_queries │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_timestamp_queries.cpp │ │ └── hpp_timestamp_queries.h │ ├── instancing │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── instancing.cpp │ │ └── instancing.h │ ├── separate_image_sampler │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── separate_image_sampler.cpp │ │ └── separate_image_sampler.h │ ├── terrain_tessellation │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── terrain_tessellation.cpp │ │ └── terrain_tessellation.h │ ├── texture_loading │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── texture_loading.cpp │ │ └── texture_loading.h │ ├── texture_mipmap_generation │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── mip_mapping_anisotropic.jpg │ │ │ ├── mip_mapping_bilinear.jpg │ │ │ └── mip_mapping_off.jpg │ │ ├── texture_mipmap_generation.cpp │ │ └── texture_mipmap_generation.h │ └── timestamp_queries │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── timestamp_queries.cpp │ │ └── timestamp_queries.h ├── extensions │ ├── README.md │ ├── buffer_device_address │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── buffer_device_address.cpp │ │ ├── buffer_device_address.h │ │ └── images │ │ │ └── sample.png │ ├── calibrated_timestamps │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── calibrated_timestamps.cpp │ │ └── calibrated_timestamps.h │ ├── conditional_rendering │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── conditional_rendering.cpp │ │ ├── conditional_rendering.h │ │ └── images │ │ │ ├── conditional-buffer-mapping.png │ │ │ └── sample.png │ ├── conservative_rasterization │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── conservative_rasterization.cpp │ │ └── conservative_rasterization.h │ ├── debug_utils │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── debug_utils.cpp │ │ ├── debug_utils.h │ │ └── images │ │ │ ├── renderdoc_final.jpg │ │ │ ├── renderdoc_launch_settings.jpg │ │ │ ├── renderdoc_nested_cmd.jpg │ │ │ ├── renderdoc_no_labels.jpg │ │ │ ├── renderdoc_pipeline_state_names.jpg │ │ │ ├── renderdoc_resource_inspector_names.jpg │ │ │ ├── renderdoc_resource_inspector_no_names.jpg │ │ │ └── renderdoc_with_labels.jpg │ ├── descriptor_buffer_basic │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── descriptor_buffer_basic.cpp │ │ └── descriptor_buffer_basic.h │ ├── descriptor_indexing │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── descriptor_indexing.cpp │ │ ├── descriptor_indexing.h │ │ └── images │ │ │ ├── non-uniform-draw.png │ │ │ ├── non-uniform-usage.png │ │ │ ├── sample.png │ │ │ └── update-after-bind.png │ ├── dynamic_rendering │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── dynamic_rendering.cpp │ │ └── dynamic_rendering.h │ ├── extended_dynamic_state2 │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── extended_dynamic_state2.cpp │ │ ├── extended_dynamic_state2.h │ │ └── images │ │ │ └── extended_dynamic_state2_screenshot.png │ ├── fragment_shader_barycentric │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── fragment_shader_barycentric.cpp │ │ ├── fragment_shader_barycentric.h │ │ └── images │ │ │ └── fragment_shader_barycentric_screenshot.png │ ├── fragment_shading_rate │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── fragment_shading_rate.cpp │ │ └── fragment_shading_rate.h │ ├── fragment_shading_rate_dynamic │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── diagram.png │ │ ├── fragment_shading_rate_dynamic.cpp │ │ ├── fragment_shading_rate_dynamic.h │ │ ├── frequency.png │ │ ├── rendered.png │ │ └── shading_rate.png │ ├── full_screen_exclusive │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── full_screen_exclusive.cpp │ │ └── full_screen_exclusive.h │ ├── gpu_dispatch │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── gpu_dispatch.cpp │ │ ├── gpu_dispatch.h │ │ └── vk_amdx_shader_enqueue.h │ ├── gpu_draw_dispatch │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── example.h │ │ ├── example_default.cpp │ │ ├── example_default.h │ │ ├── example_dynamic_state.cpp │ │ ├── example_dynamic_state.h │ │ ├── gpu_draw_dispatch.cpp │ │ └── gpu_draw_dispatch.h │ ├── graphics_pipeline_library │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── graphics_pipeline_library.cpp │ │ ├── graphics_pipeline_library.h │ │ └── images │ │ │ └── sample.jpg │ ├── logic_op_dynamic_state │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ └── logic_op_dynamic_state_screenshot.png │ │ ├── logic_op_dynamic_state.cpp │ │ └── logic_op_dynamic_state.h │ ├── memory_budget │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ └── memory_budget_ui_overlay.png │ │ ├── memory_budget.cpp │ │ └── memory_budget.h │ ├── mesh_shading │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── mesh_shading.cpp │ │ └── mesh_shading.h │ ├── open_cl_interop │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── sample.png │ │ │ └── shared_hardware_buffer.png │ │ ├── open_cl_functions.inl │ │ ├── open_cl_interop.cpp │ │ ├── open_cl_interop.h │ │ ├── open_cl_utils.cpp │ │ └── open_cl_utils.h │ ├── open_gl_interop │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── offscreen_context.cpp │ │ ├── offscreen_context.h │ │ ├── open_gl_interop.cpp │ │ ├── open_gl_interop.h │ │ └── third_party │ │ │ └── glad │ │ │ ├── include │ │ │ ├── KHR │ │ │ │ └── khrplatform.h │ │ │ └── glad │ │ │ │ └── glad.h │ │ │ └── src │ │ │ └── glad.c │ ├── portability │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── portability.cpp │ │ └── portability.h │ ├── push_descriptors │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── push_descriptors.cpp │ │ └── push_descriptors.h │ ├── ray_queries │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── ray_queries.cpp │ │ └── ray_queries.h │ ├── ray_tracing_reflection │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── img1.png │ │ ├── img2.png │ │ ├── img3.png │ │ ├── ray_tracing_reflection.cpp │ │ └── ray_tracing_reflection.h │ ├── raytracing_basic │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── raytracing_basic.cpp │ │ └── raytracing_basic.h │ ├── raytracing_extended │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── raytracing_extended.cpp │ │ └── raytracing_extended.h │ ├── synchronization_2 │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── synchronization_2.cpp │ │ └── synchronization_2.h │ ├── timeline_semaphore │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ └── sample.png │ │ ├── timeline_semaphore.cpp │ │ └── timeline_semaphore.h │ └── vertex_dynamic_state │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ └── sample.png │ │ ├── vertex_dynamic_state.cpp │ │ └── vertex_dynamic_state.h ├── performance │ ├── 16bit_arithmetic │ │ ├── 16bit_arithmetic.cpp │ │ ├── 16bit_arithmetic.h │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── images │ │ │ ├── blobs_result_fp16.jpg │ │ │ └── blobs_result_fp32.jpg │ ├── 16bit_storage_input_output │ │ ├── 16bit_storage_input_output.cpp │ │ ├── 16bit_storage_input_output.h │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── images │ │ │ ├── fp16_input_output_disable.jpg │ │ │ └── fp16_input_output_enable.jpg │ ├── README.md │ ├── afbc │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── afbc.cpp │ │ ├── afbc.h │ │ └── images │ │ │ ├── afbc_disabled.jpg │ │ │ ├── afbc_enabled.jpg │ │ │ ├── streamline_disabled.png │ │ │ └── streamline_enabled.png │ ├── async_compute │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── async_compute.cpp │ │ ├── async_compute.h │ │ └── images │ │ │ ├── async.jpg │ │ │ ├── image.jpg │ │ │ └── noasync.jpg │ ├── command_buffer_usage │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── command_buffer_usage.cpp │ │ ├── command_buffer_usage.h │ │ └── images │ │ │ ├── allocate_and_free.jpg │ │ │ ├── android_profiler_allocate_and_free.png │ │ │ ├── multi_threading.png │ │ │ ├── reset_buffers.jpg │ │ │ ├── reset_pool.jpg │ │ │ └── single_threading.png │ ├── constant_data │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── constant_data.cpp │ │ ├── constant_data.h │ │ └── images │ │ │ ├── controls.png │ │ │ ├── descriptor_set_performance.jpg │ │ │ ├── dynamic_descriptor_set_performance.jpg │ │ │ ├── graph_data.jpg │ │ │ ├── loadcycles.png │ │ │ └── push_constants_performance.jpg │ ├── descriptor_management │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── descriptor_management.cpp │ │ ├── descriptor_management.h │ │ └── images │ │ │ ├── bonza_caching_multiple_buf.jpg │ │ │ ├── bonza_no_caching_multiple_buf.jpg │ │ │ ├── bonza_no_caching_single_buf.jpg │ │ │ └── streamline_desc_caching.png │ ├── hpp_pipeline_cache │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_pipeline_cache.cpp │ │ └── hpp_pipeline_cache.h │ ├── hpp_swapchain_images │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── hpp_swapchain_images.cpp │ │ └── hpp_swapchain_images.h │ ├── layout_transitions │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── last_layout.jpg │ │ │ └── undefined_layout.jpg │ │ ├── layout_transitions.cpp │ │ └── layout_transitions.h │ ├── msaa │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── example_comparison.png │ │ │ ├── msaa_bad.png │ │ │ ├── msaa_bad_postprocessing.png │ │ │ ├── msaa_good.png │ │ │ ├── msaa_good_postprocessing.png │ │ │ ├── no_msaa.png │ │ │ ├── no_msaa_postprocessing.png │ │ │ ├── screenshot_color_depth_separate.jpg │ │ │ ├── screenshot_color_depth_writeback.jpg │ │ │ ├── screenshot_color_separate.jpg │ │ │ ├── screenshot_color_writeback.jpg │ │ │ ├── screenshot_no_msaa.jpg │ │ │ ├── screenshot_no_msaa_postprocessing.jpg │ │ │ ├── steps_msaa.png │ │ │ ├── steps_no_msaa.png │ │ │ └── streamline_writeback_separate.png │ │ ├── msaa.cpp │ │ └── msaa.h │ ├── multi_draw_indirect │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── multi_draw_indirect.cpp │ │ └── multi_draw_indirect.h │ ├── multithreading_render_passes │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── android_studio_capture_no_multithreading.png │ │ │ ├── android_studio_capture_secondary_buffers.png │ │ │ ├── no_multi_threading.png │ │ │ ├── primary_command_buffers.png │ │ │ ├── render_passes_diagram.png │ │ │ └── secondary_command_buffers.png │ │ ├── multithreading_render_passes.cpp │ │ └── multithreading_render_passes.h │ ├── pipeline_barriers │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── immediate_mode_rendering.png │ │ │ ├── mali_three_stage_pipeline.png │ │ │ ├── sample_bot_to_top.jpg │ │ │ ├── sample_frag_to_frag.jpg │ │ │ ├── sample_frag_to_vert.jpg │ │ │ └── tile_based_rendering.png │ │ ├── pipeline_barriers.cpp │ │ └── pipeline_barriers.h │ ├── pipeline_cache │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── compute_pipeline_dependencies.png │ │ │ ├── graphics_pipeline_dependencies.png │ │ │ ├── pipeline_cache_disable.jpg │ │ │ └── pipeline_cache_enable.jpg │ │ ├── pipeline_cache.cpp │ │ └── pipeline_cache.h │ ├── render_passes │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── clear_dont_care.jpg │ │ │ ├── clear_store.jpg │ │ │ ├── load_store.jpg │ │ │ ├── render_passes_streamline.png │ │ │ └── vk_cmd_clear.png │ │ ├── render_passes.cpp │ │ └── render_passes.h │ ├── specialization_constants │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── UBOs_graph.png │ │ │ ├── specialization_constants_graph.png │ │ │ └── specialization_constants_sample.png │ │ ├── specialization_constants.cpp │ │ └── specialization_constants.h │ ├── subpasses │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── gbuffer-size.jpg │ │ │ ├── good-practice.jpg │ │ │ ├── render-passes.jpg │ │ │ ├── subpasses-renderpasses-trace.jpg │ │ │ └── transient-attachments.jpg │ │ ├── subpasses.cpp │ │ └── subpasses.h │ ├── surface_rotation │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── android_compositor.jpg │ │ │ ├── android_prerotation.jpg │ │ │ ├── fov_components.png │ │ │ ├── prerotate_streamline.png │ │ │ └── rotation_cases.jpg │ │ ├── surface_rotation.cpp │ │ └── surface_rotation.h │ ├── swapchain_images │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── sponza_double_buffering.jpg │ │ │ ├── sponza_triple_buffering.jpg │ │ │ ├── streamline_swapchain_marker.png │ │ │ ├── swapchain_double_buffering.png │ │ │ ├── swapchain_double_buffering_slow.png │ │ │ └── swapchain_triple_buffering.png │ │ ├── swapchain_images.cpp │ │ └── swapchain_images.h │ ├── texture_compression_basisu │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ │ ├── 2021-ktx-universal-gpu-compressed-textures.png │ │ │ └── texture_compression_basisu_sample.jpg │ │ ├── texture_compression_basisu.cpp │ │ └── texture_compression_basisu.h │ ├── texture_compression_comparison │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── texture_compression_comparison.cpp │ │ └── texture_compression_comparison.h │ └── wait_idle │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── images │ │ ├── fences_graph.png │ │ ├── wait_idle_graph.png │ │ └── wait_idle_sample.png │ │ ├── wait_idle.cpp │ │ └── wait_idle.h ├── tooling │ ├── README.md │ └── profiles │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── profiles.cpp │ │ ├── profiles.h │ │ ├── renderdoc_device_1.png │ │ ├── renderdoc_device_2.png │ │ └── vulkan_profiles.hpp └── vulkan_basics.md ├── shaders ├── 16bit_arithmetic │ ├── compute_buffer.comp │ ├── compute_buffer_fp16.comp │ ├── visualize.frag │ └── visualize.vert ├── 16bit_storage_input_output │ ├── 16bit_storage_input_output_disabled.frag │ ├── 16bit_storage_input_output_disabled.vert │ ├── 16bit_storage_input_output_enabled.frag │ └── 16bit_storage_input_output_enabled.vert ├── async_compute │ ├── blur_common.h │ ├── blur_down.comp │ ├── blur_up.comp │ ├── composite.frag │ ├── composite.vert │ ├── forward.frag │ ├── forward.vert │ ├── shadow.frag │ ├── shadow.vert │ └── threshold.comp ├── base.frag ├── base.vert ├── buffer_device_address │ ├── render.frag │ ├── render.vert │ └── update_vbo.comp ├── compute_nbody │ ├── particle.frag │ ├── particle.vert │ ├── particle_calculate.comp │ └── particle_integrate.comp ├── conditional_rendering │ ├── model.frag │ └── model.vert ├── conservative_rasterization │ ├── fullscreen.frag │ ├── fullscreen.vert │ ├── triangle.frag │ ├── triangle.vert │ └── triangleoverlay.frag ├── constant_data │ ├── buffer_array.frag │ ├── buffer_array.vert │ ├── push_constant.frag │ ├── push_constant.vert │ ├── ubo.frag │ └── ubo.vert ├── debug_utils │ ├── bloom.frag │ ├── bloom.vert │ ├── composition.frag │ ├── composition.vert │ ├── gbuffer.frag │ └── gbuffer.vert ├── deferred │ ├── geometry.frag │ ├── geometry.vert │ ├── lighting.frag │ └── lighting.vert ├── descriptor_buffer_basic │ ├── cube.frag │ └── cube.vert ├── descriptor_indexing │ ├── nonuniform-quads.frag │ ├── nonuniform-quads.vert │ ├── update-after-bind-quads.frag │ └── update-after-bind-quads.vert ├── dynamic_rendering │ ├── gbuffer.frag │ └── gbuffer.vert ├── dynamic_uniform_buffers │ ├── base.frag │ └── base.vert ├── extended_dynamic_state2 │ ├── background.frag │ ├── background.vert │ ├── baseline.frag │ ├── baseline.vert │ ├── tess.frag │ ├── tess.tesc │ ├── tess.tese │ └── tess.vert ├── fragment_shader_barycentric │ ├── object.frag │ ├── object.vert │ ├── skybox.frag │ └── skybox.vert ├── fragment_shading_rate │ ├── scene.frag │ └── scene.vert ├── fragment_shading_rate_dynamic │ ├── generate_shading_rate.comp │ ├── scene.frag │ └── scene.vert ├── gpu_dispatch │ ├── build.bat │ ├── classify_gpu_enqueue_cs.hlsl │ ├── classify_material_map_gpu_enqueue_cs.hlsl │ ├── common.hlsl │ ├── compose_gpu_enqueue_cs.hlsl │ ├── compose_material_map_gpu_enqueue_cs.hlsl │ ├── geometry_material_map_ps.hlsl │ ├── geometry_material_map_vs.hlsl │ ├── geometry_ps.hlsl │ ├── geometry_vs.hlsl │ ├── sanity_aggregation_cs.hlsl │ ├── sanity_dynamic_exp_cs.hlsl │ ├── sanity_entry_cs.hlsl │ ├── sanity_fixed_exp_cs.hlsl │ └── spv │ │ ├── classify_gpu_enqueue_cs_a.spv │ │ ├── classify_gpu_enqueue_cs_de.spv │ │ ├── classify_gpu_enqueue_cs_fe.spv │ │ ├── classify_material_map_gpu_enqueue_cs_a.spv │ │ ├── classify_material_map_gpu_enqueue_cs_de.spv │ │ ├── classify_material_map_gpu_enqueue_cs_fe.spv │ │ ├── compose_gpu_enqueue_cs_a.spv │ │ ├── compose_gpu_enqueue_cs_de.spv │ │ ├── compose_gpu_enqueue_cs_fe.spv │ │ ├── compose_gpu_enqueue_cs_t.spv │ │ ├── compose_material_map_gpu_enqueue_cs_a.spv │ │ ├── compose_material_map_gpu_enqueue_cs_de.spv │ │ ├── compose_material_map_gpu_enqueue_cs_fe.spv │ │ ├── geometry_material_map_ps.spv │ │ ├── geometry_material_map_vs.spv │ │ ├── geometry_ps.spv │ │ ├── geometry_vs.spv │ │ ├── sanity_aggregation_cs.spv │ │ ├── sanity_dynamic_exp_cs.spv │ │ ├── sanity_entry_cs.spv │ │ └── sanity_fixed_exp_cs.spv ├── gpu_draw_dispatch │ ├── build.bat │ ├── common.hlsl │ ├── compute_to_mesh_cs.hlsl │ ├── compute_to_mesh_multi_cs.hlsl │ ├── geometry_forward_ps.hlsl │ ├── geometry_mesh_ms.hlsl │ ├── geometry_mesh_multi_ms.hlsl │ └── spv │ │ ├── compute_to_mesh_cs.spv │ │ ├── compute_to_mesh_multi_cs.spv │ │ ├── compute_to_mesh_multi_cs_share_input.spv │ │ ├── geometry_forward_ps.spv │ │ ├── geometry_mesh_ms.spv │ │ ├── geometry_mesh_multi_ms.spv │ │ └── geometry_mesh_multi_ms_share_input.spv ├── graphics_pipeline_library │ ├── shared.vert │ └── uber.frag ├── hdr │ ├── bloom.frag │ ├── bloom.vert │ ├── composition.frag │ ├── composition.vert │ ├── gbuffer.frag │ └── gbuffer.vert ├── hlsl_shaders │ ├── hlsl_shader.frag │ └── hlsl_shader.vert ├── imgui.frag ├── imgui.vert ├── instancing │ ├── instancing.frag │ ├── instancing.vert │ ├── planet.frag │ ├── planet.vert │ ├── starfield.frag │ └── starfield.vert ├── khr_ray_tracing_basic │ ├── closesthit.rchit │ ├── miss.rmiss │ └── raygen.rgen ├── khr_ray_tracing_extended │ ├── closesthit.rchit │ ├── miss.rmiss │ ├── raygen.rgen │ └── raytracing_extended.h ├── lighting.h ├── logic_op_dynamic_state │ ├── background.frag │ ├── background.vert │ ├── baseline.frag │ └── baseline.vert ├── mesh_shading │ ├── ms.mesh │ └── ps.frag ├── multi_draw_indirect │ ├── cull.comp │ ├── cull_address.comp │ ├── multi_draw_indirect.frag │ └── multi_draw_indirect.vert ├── open_cl_interop │ └── procedural_texture.cl ├── pbr.frag ├── pbr.vert ├── postprocessing │ ├── outline.frag │ └── postprocessing.vert ├── profiles │ ├── profiles.frag │ └── profiles.vert ├── push_descriptors │ ├── cube.frag │ └── cube.vert ├── ray_queries │ ├── ray_shadow.frag │ └── ray_shadow.vert ├── ray_tracing_reflection │ ├── closesthit.rchit │ ├── miss.rmiss │ ├── missShadow.rmiss │ └── raygen.rgen ├── separate_image_sampler │ ├── separate_image_sampler.frag │ └── separate_image_sampler.vert ├── shadows │ ├── main.frag │ ├── main.vert │ ├── shadowmap.frag │ └── shadowmap.vert ├── specialization_constants │ ├── UBOs.frag │ └── specialization_constants.frag ├── synchronization_2 │ ├── particle.frag │ ├── particle.vert │ ├── particle_calculate.comp │ └── particle_integrate.comp ├── terrain_tessellation │ ├── skysphere.frag │ ├── skysphere.vert │ ├── terrain.frag │ ├── terrain.tesc │ ├── terrain.tese │ └── terrain.vert ├── texture_compression_basisu │ ├── texture.frag │ └── texture.vert ├── texture_loading │ ├── texture.frag │ └── texture.vert ├── texture_mipmap_generation │ ├── texture.frag │ └── texture.vert ├── timeline_semaphore │ ├── game_of_life_init.comp │ ├── game_of_life_mutate.comp │ ├── game_of_life_update.comp │ ├── render.frag │ └── render.vert ├── triangle.frag ├── triangle.vert ├── uioverlay │ ├── uioverlay.frag │ └── uioverlay.vert └── vertex_dynamic_state │ ├── gbuffer.frag │ └── gbuffer.vert ├── tests ├── CMakeLists.txt ├── external_project │ └── CMakeLists.txt ├── generate_sample │ └── generate_sample_test.py └── system_test │ ├── CMakeLists.txt │ ├── sub_tests │ ├── bonza │ │ ├── CMakeLists.txt │ │ ├── bonza.cpp │ │ └── bonza.h │ └── sponza │ │ ├── CMakeLists.txt │ │ ├── sponza.cpp │ │ └── sponza.h │ ├── system_test.py │ └── test_framework │ ├── CMakeLists.txt │ ├── gltf_loader_test.cpp │ ├── gltf_loader_test.h │ ├── vulkan_test.cpp │ └── vulkan_test.h └── third_party └── CMakeLists.txt /.copyrightignore: -------------------------------------------------------------------------------- 1 | .clang-format 2 | .gitignore 3 | .snakeignore 4 | .yml 5 | .gitmodules 6 | .jpg 7 | .png 8 | .ttf 9 | .github 10 | .jar 11 | doxyfile 12 | download_vvl.gradle 13 | build.gradle.in 14 | app.build.gradle.in 15 | settings.gradle.in 16 | gradle.properties.in 17 | local.properties.in 18 | gradlew 19 | gradlew.bat 20 | gradle.properties.in 21 | gradle-wrapper.properties.in 22 | pull_request_template.md 23 | glad.h 24 | glad.c 25 | khrplatform.h 26 | clang_format.py 27 | run-clang-tidy.py 28 | package-list.txt 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Issue template 3 | about: 'Submit issues with Vulkan Samples ' 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/docker/files/package-list.txt: -------------------------------------------------------------------------------- 1 | build-tools;31.0.0 2 | platform-tools 3 | platforms;android-28 4 | tools 5 | -------------------------------------------------------------------------------- /.github/workflows/external.yml: -------------------------------------------------------------------------------- 1 | name: "External Project Check" 2 | 3 | on: 4 | pull_request: 5 | branches: [main] 6 | push: 7 | branches: [main] 8 | 9 | jobs: 10 | external_project: 11 | name: Build as external project 12 | strategy: 13 | matrix: 14 | platform: [windows, ubuntu, macos] 15 | runs-on: "${{ matrix.platform }}-latest" 16 | steps: 17 | - uses: actions/checkout@v3 18 | with: 19 | submodules: "recursive" 20 | 21 | - if: ${{ matrix.platform == 'ubuntu' }} 22 | name: Install RandR headers 23 | run: | 24 | sudo apt-get update 25 | sudo apt install xorg-dev libglu1-mesa-dev 26 | 27 | - run: cmake -Htests/external_project -Bbuild -DVKB_BUILD_SAMPLES=OFF 28 | -------------------------------------------------------------------------------- /.github/workflows/image.yml: -------------------------------------------------------------------------------- 1 | name: "Update Docker Image" 2 | 3 | # Adaptation of https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-ghcrio 4 | 5 | on: 6 | workflow_dispatch: 7 | 8 | env: 9 | IMAGE_NAME: vulkan-samples 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | permissions: 15 | packages: write 16 | contents: read 17 | 18 | steps: 19 | - name: Checkout Repository 20 | uses: actions/checkout@v3 21 | 22 | - name: Build Image 23 | run: cd .github/docker && docker build --tag $IMAGE_NAME . 24 | 25 | - name: Login to GitHub Container Registry 26 | run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin 27 | 28 | - name: Push Image 29 | run: | 30 | IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME 31 | IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') 32 | echo IMAGE_ID=$IMAGE_ID 33 | 34 | VERSION=latest 35 | echo VERSION=$VERSION 36 | 37 | docker tag $IMAGE_NAME $IMAGE_ID:$VERSION 38 | docker push $IMAGE_ID:$VERSION 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | assets/scenes 2 | build 3 | .vs 4 | .vscode 5 | imgui.ini 6 | doxygen/ 7 | tests/system_test/artifacts 8 | tests/system_test/tmp 9 | output/* 10 | .mypy_cache -------------------------------------------------------------------------------- /.snakeignore: -------------------------------------------------------------------------------- 1 | glfw* 2 | glad* -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | 19 | 20 | A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil. 21 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | exclude: [third_party] 3 | -------------------------------------------------------------------------------- /app/android/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/ic_launcher-web.png -------------------------------------------------------------------------------- /app/android/res/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/drawable/icon.png -------------------------------------------------------------------------------- /app/android/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/android/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/android/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/app/android/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | #008FBE 22 | #333E47 23 | #F26B21 24 | 25 | -------------------------------------------------------------------------------- /app/android/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | #000000 22 | 23 | -------------------------------------------------------------------------------- /app/android/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/plugins/plugins.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2021, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "platform/plugins/plugin.h" 21 | 22 | namespace plugins 23 | { 24 | extern std::vector get_all(); 25 | } // namespace plugins -------------------------------------------------------------------------------- /assets_local/.gitattributes: -------------------------------------------------------------------------------- 1 | *.gltf -diff 2 | -------------------------------------------------------------------------------- /assets_local/README.md: -------------------------------------------------------------------------------- 1 | # Attributions 2 | 3 | monkey.gltf is Blender Suzanne model with added UV map and exported to glTF. 4 | 5 | nanite_mat_id_*.png are screenshots of Unreal Engine 5 scenes rendered with Nanite. 6 | -------------------------------------------------------------------------------- /assets_local/nanite_mat_id_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/assets_local/nanite_mat_id_01.png -------------------------------------------------------------------------------- /assets_local/nanite_mat_id_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/assets_local/nanite_mat_id_02.png -------------------------------------------------------------------------------- /banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/banner.jpg -------------------------------------------------------------------------------- /bldsys/cmake/template/gradle/build.gradle.in: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.application' version '7.4.2' apply false 3 | id 'com.android.library' version '7.4.2' apply false 4 | } 5 | 6 | task clean(type: Delete) { 7 | delete rootProject.buildDir 8 | } 9 | -------------------------------------------------------------------------------- /bldsys/cmake/template/gradle/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/bldsys/cmake/template/gradle/gradle-wrapper.jar -------------------------------------------------------------------------------- /bldsys/cmake/template/gradle/gradle-wrapper.properties.in: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /bldsys/cmake/template/gradle/gradle.properties.in: -------------------------------------------------------------------------------- 1 | android.useAndroidX=true 2 | android.enableJetifier=false 3 | org.gradle.parallel=true 4 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 5 | org.gradle.caching=true 6 | android.prefabVersion=2.0.0 7 | 8 | -------------------------------------------------------------------------------- /bldsys/cmake/template/gradle/settings.gradle.in: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | rootProject.name = "@PROJECT_NAME@" 16 | include ':app' 17 | -------------------------------------------------------------------------------- /bldsys/cmake/template/sample/CMakeLists.txt.in: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Arm Limited and Contributors 2 | # 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | # Licensed under the Apache License, Version 2.0 the "License"; 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | get_filename_component(FOLDER_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) 19 | get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH) 20 | get_filename_component(CATEGORY_NAME ${PARENT_DIR} NAME) 21 | 22 | add_sample( 23 | ID ${FOLDER_NAME} 24 | CATEGORY ${CATEGORY_NAME} 25 | AUTHOR "Khronos" 26 | NAME "@SAMPLE_NAME@" 27 | DESCRIPTION "Sample description") 28 | -------------------------------------------------------------------------------- /bldsys/cmake/template/sample/sample.h.in: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "rendering/render_pipeline.h" 21 | #include "scene_graph/components/camera.h" 22 | #include "vulkan_sample.h" 23 | 24 | class @SAMPLE_NAME@ : public vkb::VulkanSample 25 | { 26 | public: 27 | @SAMPLE_NAME@(); 28 | 29 | virtual bool prepare(vkb::Platform &platform) override; 30 | 31 | virtual ~@SAMPLE_NAME@() = default; 32 | }; 33 | 34 | std::unique_ptr create_@SAMPLE_NAME_FILE@(); 35 | -------------------------------------------------------------------------------- /bldsys/scripts/clang-format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2023, Thomas Atkinson 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | # Licensed under the Apache License, Version 2.0 the "License"; 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # Usage: ./bldsys/scripts/clang-format HEAD 20 | # Usage: ./bldsys/scripts/clang-format master 21 | # Usage: ./bldsys/scripts/clang-format 22 | 23 | set -ux 24 | 25 | for file in `git diff-index --name-only $1 | grep -iE '\.(cpp|cc|h|hpp)$' ` ; do 26 | if [ -f $file ]; then 27 | clang-format -i $file 28 | fi 29 | done -------------------------------------------------------------------------------- /docs/images/debug-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/docs/images/debug-graph.png -------------------------------------------------------------------------------- /docs/images/debug-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/docs/images/debug-window.png -------------------------------------------------------------------------------- /framework/common/error.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2020, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "error.h" 19 | 20 | #include "helpers.h" 21 | 22 | namespace vkb 23 | { 24 | VulkanException::VulkanException(const VkResult result, const std::string &msg) : 25 | result{result}, 26 | std::runtime_error{msg} 27 | { 28 | error_message = std::string(std::runtime_error::what()) + std::string{" : "} + to_string(result); 29 | } 30 | 31 | const char *VulkanException::what() const noexcept 32 | { 33 | return error_message.c_str(); 34 | } 35 | } // namespace vkb 36 | -------------------------------------------------------------------------------- /framework/common/glm_common.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #ifndef GLM_FORCE_RADIANS 21 | # define GLM_FORCE_RADIANS 22 | #endif 23 | #ifndef GLM_FORCE_DEPTH_ZERO_TO_ONE 24 | # define GLM_FORCE_DEPTH_ZERO_TO_ONE 25 | #endif 26 | #include 27 | #include 28 | #include -------------------------------------------------------------------------------- /framework/common/hpp_strings.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include 21 | 22 | #include 23 | 24 | namespace vkb 25 | { 26 | namespace common 27 | { 28 | /** 29 | * @brief facade helper functions around the functions in common/strings.h, providing a vulkan.hpp-based interface 30 | */ 31 | std::string to_string(vk::Extent2D const &extent) 32 | { 33 | return vkb::to_string(static_cast(extent)); 34 | } 35 | } // namespace common 36 | } // namespace vkb 37 | -------------------------------------------------------------------------------- /framework/graphing/graph_node.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2020, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | #include "graphing/graph_node.h" 18 | 19 | namespace vkb 20 | { 21 | namespace graphing 22 | { 23 | Node::Node(size_t id, const char *title, const char *style, const nlohmann::json &data) 24 | { 25 | attributes["id"] = id; 26 | attributes["label"] = title; 27 | attributes["data"] = data; 28 | attributes["style"] = style; 29 | } 30 | } // namespace graphing 31 | } // namespace vkb 32 | -------------------------------------------------------------------------------- /framework/platform/unix/unix_d2d_platform.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2021, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "platform/platform.h" 21 | 22 | namespace vkb 23 | { 24 | class UnixD2DPlatform : public Platform 25 | { 26 | public: 27 | UnixD2DPlatform(int argc, char **argv); 28 | 29 | virtual ~UnixD2DPlatform() = default; 30 | 31 | virtual const char *get_surface_extension() override; 32 | 33 | protected: 34 | virtual void create_window(const Window::Properties &properties) override; 35 | }; 36 | } // namespace vkb 37 | -------------------------------------------------------------------------------- /framework/scene_graph/component.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "component.h" 19 | 20 | #include 21 | 22 | #include "node.h" 23 | 24 | namespace vkb 25 | { 26 | namespace sg 27 | { 28 | Component::Component(const std::string &name) : 29 | name{name} 30 | {} 31 | 32 | const std::string &Component::get_name() const 33 | { 34 | return name; 35 | } 36 | } // namespace sg 37 | } // namespace vkb 38 | -------------------------------------------------------------------------------- /framework/scene_graph/components/image/ktx.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2022, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "scene_graph/components/image.h" 21 | 22 | namespace vkb 23 | { 24 | namespace sg 25 | { 26 | class Ktx : public Image 27 | { 28 | public: 29 | Ktx(const std::string &name, const std::vector &data, ContentType content_type); 30 | 31 | virtual ~Ktx() = default; 32 | }; 33 | 34 | } // namespace sg 35 | } // namespace vkb -------------------------------------------------------------------------------- /framework/scene_graph/components/image/stb.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2022, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "scene_graph/components/image.h" 21 | 22 | namespace vkb 23 | { 24 | namespace sg 25 | { 26 | class Stb : public Image 27 | { 28 | public: 29 | Stb(const std::string &name, const std::vector &data, ContentType content_type); 30 | 31 | virtual ~Stb() = default; 32 | }; 33 | 34 | } // namespace sg 35 | } // namespace vkb 36 | -------------------------------------------------------------------------------- /framework/scene_graph/components/material.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "material.h" 19 | 20 | namespace vkb 21 | { 22 | namespace sg 23 | { 24 | Material::Material(const std::string &name) : 25 | Component{name} 26 | {} 27 | 28 | std::type_index Material::get_type() 29 | { 30 | return typeid(Material); 31 | } 32 | 33 | } // namespace sg 34 | } // namespace vkb 35 | -------------------------------------------------------------------------------- /framework/scene_graph/components/pbr_material.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "pbr_material.h" 19 | 20 | namespace vkb 21 | { 22 | namespace sg 23 | { 24 | PBRMaterial::PBRMaterial(const std::string &name) : 25 | Material{name} 26 | {} 27 | 28 | std::type_index PBRMaterial::get_type() 29 | { 30 | return typeid(PBRMaterial); 31 | } 32 | } // namespace sg 33 | } // namespace vkb 34 | -------------------------------------------------------------------------------- /framework/scene_graph/components/sampler.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "sampler.h" 19 | 20 | namespace vkb 21 | { 22 | namespace sg 23 | { 24 | Sampler::Sampler(const std::string &name, core::Sampler &&vk_sampler) : 25 | Component{name}, 26 | vk_sampler{std::move(vk_sampler)} 27 | {} 28 | 29 | std::type_index Sampler::get_type() 30 | { 31 | return typeid(Sampler); 32 | } 33 | } // namespace sg 34 | } // namespace vkb 35 | -------------------------------------------------------------------------------- /framework/timer.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019, Arm Limited and Contributors 2 | * 3 | * SPDX-License-Identifier: Apache-2.0 4 | * 5 | * Licensed under the Apache License, Version 2.0 the "License"; 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #include "timer.h" 19 | 20 | namespace vkb 21 | { 22 | Timer::Timer() : 23 | start_time{Clock::now()}, 24 | previous_tick{Clock::now()} 25 | { 26 | } 27 | 28 | void Timer::start() 29 | { 30 | if (!running) 31 | { 32 | running = true; 33 | start_time = Clock::now(); 34 | } 35 | } 36 | 37 | void Timer::lap() 38 | { 39 | lapping = true; 40 | lap_time = Clock::now(); 41 | } 42 | 43 | bool Timer::is_running() const 44 | { 45 | return running; 46 | } 47 | } // namespace vkb 48 | -------------------------------------------------------------------------------- /samples/api/README.md: -------------------------------------------------------------------------------- 1 | 19 | 20 | # API samples 21 | 22 | The goal of these samples is to demonstrate how to use a given Vulkan feature at the API level with as little abstraction as possible. 23 | 24 | A list of all API samples can be found [here](../README.md#api-samples). -------------------------------------------------------------------------------- /samples/api/compute_nbody/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Compute shader N-Body simulation 20 | 21 | Compute shader example that uses two passes and shared compute shader memory for simulating a N-Body particle system. 22 | -------------------------------------------------------------------------------- /samples/api/dynamic_uniform_buffers/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Dynamic Uniform buffers 20 | 21 | Dynamic uniform buffers are used for rendering multiple objects with separate matrices stored in a single uniform buffer object, that are addressed dynamically. 22 | -------------------------------------------------------------------------------- /samples/api/hdr/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### High dynamic range 20 | 21 | Implements a high dynamic range rendering pipeline using 16/32 bit floating point precision for all calculations. 22 | -------------------------------------------------------------------------------- /samples/api/hello_triangle/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019-2021, Arm Limited and Contributors 2 | # 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | # Licensed under the Apache License, Version 2.0 the "License"; 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | get_filename_component(FOLDER_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) 19 | get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH) 20 | get_filename_component(CATEGORY_NAME ${PARENT_DIR} NAME) 21 | 22 | add_sample( 23 | ID ${FOLDER_NAME} 24 | CATEGORY ${CATEGORY_NAME} 25 | AUTHOR "Arm" 26 | NAME "Hello Triangle" 27 | DESCRIPTION "An introduction into Vulkan and its respective objects." 28 | SHADER_FILES_GLSL 29 | "triangle.vert" 30 | "triangle.frag") 31 | -------------------------------------------------------------------------------- /samples/api/hello_triangle/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Hello Triangle 20 | 21 | A self-contained (minimal use of framework) sample that illustrates the rendering of a triangle. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_compute_nbody/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Compute shader N-Body simulation 20 | 21 | A transcoded version of the API sample [Compute N-Body](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/compute_nbody) that illustrates the usage of the C++ bindings of vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_dynamic_uniform_buffers/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Dynamic Uniform Buffers 20 | 21 | A transcoded version of the API sample [Dynamic Uniform buffers](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/dynamic_uniform_buffers) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_hdr/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP High dynamic range 20 | 21 | A transcoded version of the API sample [High dynamic range](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/hdr) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. -------------------------------------------------------------------------------- /samples/api/hpp_hello_triangle/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Hello Triangle 20 | 21 | A transcoded version of the API sample [Hello Triangle](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/hello_triangle) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_instancing/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Instancing 20 | 21 | A transcoded version of the API sample [Instancing](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/instancing) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_terrain_tessellation/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Terrain Tessellation 20 | 21 | A transcoded version of the API sample [Terrain Tessellation](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/terrain_tessellation) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/hpp_texture_loading/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### HPP Texture Loading 20 | 21 | A transcoded version of the API sample [Texture loading](https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/api/texture_loading) that illustrates the usage of the C++ bindings of Vulkan provided by vulkan.hpp. 22 | -------------------------------------------------------------------------------- /samples/api/instancing/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Instancing 20 | 21 | Uses the instancing feature for rendering many instances of the same mesh from a single vertex buffer with variable parameters and textures. 22 | -------------------------------------------------------------------------------- /samples/api/terrain_tessellation/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Terrain Tessellation 20 | 21 | Uses a tessellation shader for rendering a terrain with dynamic level-of-detail and frustum culling. 22 | -------------------------------------------------------------------------------- /samples/api/texture_loading/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Texture loading 20 | 21 | Loading and rendering of a 2D texture map from a file. 22 | -------------------------------------------------------------------------------- /samples/api/texture_mipmap_generation/images/mip_mapping_anisotropic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/api/texture_mipmap_generation/images/mip_mapping_anisotropic.jpg -------------------------------------------------------------------------------- /samples/api/texture_mipmap_generation/images/mip_mapping_bilinear.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/api/texture_mipmap_generation/images/mip_mapping_bilinear.jpg -------------------------------------------------------------------------------- /samples/api/texture_mipmap_generation/images/mip_mapping_off.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/api/texture_mipmap_generation/images/mip_mapping_off.jpg -------------------------------------------------------------------------------- /samples/extensions/README.md: -------------------------------------------------------------------------------- 1 | 19 | 20 | # Extension samples 21 | 22 | The goal of these samples is to demonstrate how to use a particular Vulkan extension at the API level with as little abstraction as possible. 23 | 24 | A list of all extension samples can be found [here](../README.md#extension-samples). -------------------------------------------------------------------------------- /samples/extensions/buffer_device_address/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/buffer_device_address/images/sample.png -------------------------------------------------------------------------------- /samples/extensions/conditional_rendering/images/conditional-buffer-mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/conditional_rendering/images/conditional-buffer-mapping.png -------------------------------------------------------------------------------- /samples/extensions/conditional_rendering/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/conditional_rendering/images/sample.png -------------------------------------------------------------------------------- /samples/extensions/conservative_rasterization/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Conservative Rasterization 20 | 21 | **Extension**: [```VK_EXT_conservative_rasterization```](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization) 22 | 23 | Uses conservative rasterization to change the way fragments are generated. Enables overestimation to generate fragments for every pixel touched instead of only pixels that are fully covered. 24 | -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_final.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_final.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_launch_settings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_launch_settings.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_nested_cmd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_nested_cmd.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_no_labels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_no_labels.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_pipeline_state_names.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_pipeline_state_names.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_resource_inspector_names.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_resource_inspector_names.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_resource_inspector_no_names.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_resource_inspector_no_names.jpg -------------------------------------------------------------------------------- /samples/extensions/debug_utils/images/renderdoc_with_labels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/debug_utils/images/renderdoc_with_labels.jpg -------------------------------------------------------------------------------- /samples/extensions/descriptor_indexing/images/non-uniform-draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/descriptor_indexing/images/non-uniform-draw.png -------------------------------------------------------------------------------- /samples/extensions/descriptor_indexing/images/non-uniform-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/descriptor_indexing/images/non-uniform-usage.png -------------------------------------------------------------------------------- /samples/extensions/descriptor_indexing/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/descriptor_indexing/images/sample.png -------------------------------------------------------------------------------- /samples/extensions/descriptor_indexing/images/update-after-bind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/descriptor_indexing/images/update-after-bind.png -------------------------------------------------------------------------------- /samples/extensions/dynamic_rendering/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020-2021, Holochip Corporation 2 | # 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | # Licensed under the Apache License, Version 2.0 the "License"; 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | get_filename_component(FOLDER_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) 19 | get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH) 20 | get_filename_component(CATEGORY_NAME ${PARENT_DIR} NAME) 21 | 22 | add_sample( 23 | ID ${FOLDER_NAME} 24 | CATEGORY ${CATEGORY_NAME} 25 | AUTHOR "Holochip" 26 | NAME "Dynamic Rendering" 27 | DESCRIPTION "Demonstrates the dynamic rendering extension to streamline render passes and avoid the requirement of render pass objects" 28 | ) 29 | -------------------------------------------------------------------------------- /samples/extensions/extended_dynamic_state2/images/extended_dynamic_state2_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/extended_dynamic_state2/images/extended_dynamic_state2_screenshot.png -------------------------------------------------------------------------------- /samples/extensions/fragment_shader_barycentric/images/fragment_shader_barycentric_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/fragment_shader_barycentric/images/fragment_shader_barycentric_screenshot.png -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate/README.md: -------------------------------------------------------------------------------- 1 | 19 | ### Fragment shading rate 20 | 21 | **Extension**: [```VK_KHR_fragment_shading_rate```](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_fragment_shading_rate.html) 22 | 23 | Uses a special framebuffer attachment to control fragment shading rates for different framebuffer regions. This allows explicit control over the number of fragment shader invocations for each pixel covered by a fragment, which is e.g. useful for foveated rendering. 24 | 25 | -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate_dynamic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Holochip 2 | # 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | # Licensed under the Apache License, Version 2.0 the "License"; 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | get_filename_component(FOLDER_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) 19 | get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH) 20 | get_filename_component(CATEGORY_NAME ${PARENT_DIR} NAME) 21 | 22 | add_sample_with_tags( 23 | ID ${FOLDER_NAME} 24 | CATEGORY ${CATEGORY_NAME} 25 | AUTHOR "Holochip" 26 | NAME "Dynamic fragment shading rate" 27 | DESCRIPTION "Using dynamically-generated fragment shading rate patterns generated each frame") 28 | -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate_dynamic/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/fragment_shading_rate_dynamic/diagram.png -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate_dynamic/frequency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/fragment_shading_rate_dynamic/frequency.png -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate_dynamic/rendered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/fragment_shading_rate_dynamic/rendered.png -------------------------------------------------------------------------------- /samples/extensions/fragment_shading_rate_dynamic/shading_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/Vulkan-Samples/0cfdd95ac6ffaec133c5b107be3e2b9c173120d4/samples/extensions/fragment_shading_rate_dynamic/shading_rate.png -------------------------------------------------------------------------------- /samples/extensions/gpu_draw_dispatch/README.md: -------------------------------------------------------------------------------- 1 | Command line options 2 | -------------------- 3 | 4 | You can select various options (some can be combined) when running the application: 5 | 6 | vulkan_samples [--log-fps] [--width W] [--height H] [-o