Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion guide/src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,9 @@ Some examples of what this guide _does not_ focus on:

- GPU-driven rendering
- Real-time graphics from ground-up
- Considerations for tiled GPUs (eg mobile devices / Android)
- Considerations for tiled GPUs (eg mobile devices / Android)

## Source

The source code for the project (as well as this guide) is located in [this repository](https://github.com/cpp-gamedev/learn-vulkan). A `section/*` branch intends to reflect the state of the code at the end of a particular section of the guide. Bugfixes / changes are generally backported, but there may be some divergence from the current state of the code (ie, in `main`). The source of the guide itself is only up-to-date on `main`, changes are not backported.

15 changes: 9 additions & 6 deletions guide/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
- [Vulkan Device](initialization/device.md)
- [Scoped Waiter](initialization/scoped_waiter.md)
- [Swapchain](initialization/swapchain.md)

# Hello Triangle

- [Rendering](rendering/README.md)
- [Swapchain Loop](rendering/swapchain_loop.md)
- [Render Sync](rendering/render_sync.md)
Expand All @@ -24,9 +27,9 @@
- [Dear ImGui](dear_imgui/README.md)
- [class DearImGui](dear_imgui/dear_imgui.md)
- [ImGui Integration](dear_imgui/imgui_integration.md)
- [Graphics Pipeline](pipeline/README.md)
- [Locating Assets](pipeline/locating_assets.md)
- [Shaders](pipeline/shaders.md)
- [Pipeline Creation](pipeline/pipeline_creation.md)
- [Drawing a Triangle](pipeline/drawing_triangle.md)
- [Switching Pipelines](pipeline/switching_pipelines.md)
- [Shader Objects](shader_objects/README.md)
- [Locating Assets](shader_objects/locating_assets.md)
- [Shader Program](shader_objects/shader_program.md)
- [GLSL to SPIR-V](shader_objects/glsl_to_spir_v.md)
- [Drawing a Triangle](shader_objects/drawing_triangle.md)
- [Graphics Pipelines](shader_objects/pipelines.md)
4 changes: 2 additions & 2 deletions guide/src/getting_started/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Vulkan is platform agnostic, which is one of the main reasons for its verbosity: it has to account for a wide range of implementations in its API. We shall be constraining our approach to Windows and Linux (x64 or aarch64), and focusing on discrete GPUs, enabing us to sidestep quite a bit of that verbosity. Vulkan 1.3 is widely supported by the target desktop platforms and reasonably recent graphics cards.

> _This doesn't mean that eg an integrated graphics chip will not be supported, it will just not be particularly designed/optimized for._
> This doesn't mean that eg an integrated graphics chip will not be supported, it will just not be particularly designed/optimized for.

## Technical Requirements

Expand Down Expand Up @@ -31,4 +31,4 @@ The project uses a "Build the World" approach, enabling usage of sanitizers, rep
1. While Vulkan is a C API, it offers an official C++ wrapper library with many quality-of-life features. This guide almost exclusively uses that, except at the boundaries of other C libraries that themselves use the C API (eg GLFW and VMA).
1. [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/) for dealing with Vulkan memory heaps
1. [GLM](https://github.com/g-truc/glm) for GLSL-like linear algebra in C++
1. [Dear ImGui](https://github.com/ocornut/imgui) for UI
1. [Dear ImGui](https://github.com/ocornut/imgui) for UI
14 changes: 0 additions & 14 deletions guide/src/pipeline/README.md

This file was deleted.

138 changes: 0 additions & 138 deletions guide/src/pipeline/drawing_triangle.md

This file was deleted.

121 changes: 0 additions & 121 deletions guide/src/pipeline/shaders.md

This file was deleted.

39 changes: 0 additions & 39 deletions guide/src/pipeline/switching_pipelines.md

This file was deleted.

5 changes: 5 additions & 0 deletions guide/src/shader_objects/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Shader Objects

A [Vulkan Graphics Pipeline](https://docs.vulkan.org/spec/latest/chapters/pipelines.html) is a large object that encompasses the entire graphics pipeline. It consists of many stages - all this happens during a single `draw()` call. There is however an extension called [`VK_EXT_shader_object`](https://www.khronos.org/blog/you-can-use-vulkan-without-pipelines-today) which enables avoiding graphics pipelines entirely. Almost all pipeline state becomes dynamic, ie set at draw time, and the only Vulkan handles to own are `ShaderEXT` objects. For a comprehensive guide, check out the [Vulkan Sample from Khronos](https://github.com/KhronosGroup/Vulkan-Samples/tree/main/samples/extensions/shader_object).

Vulkan requires shader code to be provided as SPIR-V (IR). We shall use `glslc` (part of the Vulkan SDK) to compile GLSL to SPIR-V manually when required.
Loading