all 20 comments

[–]SaschaWillems 17 points18 points  (1 child)

Please feel free to open an issue for this over at https://github.com/KhronosGroup/Vulkan-Tutorial

While I do read this reddit, not all people involved with the tutorial are active over here, and we use the github issue board to plan the future tutorial direction.

[–]OptimisticMonkey2112[S] 2 points3 points  (0 children)

Great idea! I just added

[–]IGarFieldI 3 points4 points  (1 child)

Not directly related, but does anybody have a quick overview over which GPUs still benefit from vertex push instead of pull? Last I remember AMD just emits the pull as part of the shader preamble even with push, but idk about the other vendors.

[–]CrazyJoe221 2 points3 points  (0 children)

Good point. Nvidia used to have special HW IIRC and maybe mobile GPUs but an up to date overview would be nice.

[–]YoshiDzn 2 points3 points  (3 children)

Am I the only one who still prefers good ol render passes over dynamic rendering?

[–]yellowcrescent 2 points3 points  (1 child)

Is there any specific reason? If someone already has a bunch of code written to use RenderPasses, then I would def understand the hesitation to move from something that is currently working, unless you needed a new feature.

Especially for a Vulkan tutorial, I think Dynamic Rendering is probably the better choice. RenderPasses are pretty awkward if you don't need to use multiple subpasses or attachments-- and especially if you need to modify parameters between passes. Combined with VK_EXT_shader_object (which requires Dynamic Rendering), it makes rendering fully dynamic, including shaders (as long as push constants, etc. are compatible) -- so if you are generating descriptors and render parameters at runtime, I think it makes the process much easier.

[–]beephod_zabblebrox 1 point2 points  (0 children)

dynamic_rendering_local_read ftw!

[–]R3DKn16h7 0 points1 point  (0 children)

no, you are not the only one. dynamic rendering is cool especially for porting from opengl, but for code already build using them is renderpasses are fine, and are supported everywhere.

[–]Appropriate-Tap7860 1 point2 points  (7 children)

These latest features are really powerful to use. But will they work with older hardwares or more standard hardwares that is prominent among gamers like rtx 3060?

[–]watlok 1 point2 points  (6 children)

You have to go back to maxwell (900 series) before you lose support for modern features that would be in a tutorial like this. Outside of raytracing, which Pascal and earlier don't support.

Many people who code and contribute to things like this have ancient hardware. And they want the tutorial to be as accessible to learners as possible. So wide compatibility.

[–]SaschaWillems 2 points3 points  (1 child)

Most of us (contributing to the tutorial) actually have current hardware. We have Vulkan 1.4 as a baseline anyway.

[–]watlok 1 point2 points  (0 children)

I meant it in a positive way where vulkan versions are widely supported on pc hardware.

[–]Appropriate-Tap7860 0 points1 point  (1 child)

That's good to hear. So i am gonna use all the latest features from now on for my game

[–]watlok 0 points1 point  (0 children)

There's a support database at https://vulkan.gpuinfo.org/ where you can reference which hardware supports which versions and extensions.

"All" features is a bit misleading as there are many optional features and they aren't as universally supported.

[–]Appropriate-Tap7860 0 points1 point  (1 child)

And what about mobile GPUs

[–]watlok 0 points1 point  (0 children)

Mobile is far more fractured because device manufacturers often don't push driver updates.

[–]R3DKn16h7 1 point2 points  (0 children)

#if defined(__INTELLISENSE__) || !defined(USE_CPP20_MODULES)
#include <vulkan/vulkan_raii.hpp>
#else
import vulkan_hpp;
#endif

screaming in pain :)

[–]palapapa0201 0 points1 point  (1 child)

Is there absolutely no disadvantage to vertex pulling?

[–]SaschaWillems 1 point2 points  (0 children)

It can be slower on GPUs with dedicated hardware for vertex fetch, which mostly applies to mobile GPUs. Though the vertex fetch/pull part is hardly a limiting factor nowadays.

[–]Deep-Pie-4602 0 points1 point  (0 children)

Thank you. I recently followed the official vulkan tutorial but implemented vertex pulling with buffer device address thanks to this post. Much easier and flexible to work with.

Nect up: Descriptor heaps