The future ( of Niagara ) and to bindless or to gpu pointers #14
Replies: 1 comment 1 reply
-
The way to think about the utility of GPU pointers is that it simplifies the GPU programming by allowing you to write code closer to how it works on CPUs. For example, imagine implementing a fully GPU centric renderer where a series of compute shaders traverse the scene graph, select objects to render, select level of detail, adjust material parameters, etc. etc.. - without any involvement from the CPU side (this is somewhat similar to what this repository is doing but if you take this to a level of a production renderer you'd need a lot more code and data structures to traverse). In that world, having to work with GPU data structures of indices etc. can become cumbersome. As a basic example, something I believe I mentioned on the stream, is that in a mesh shader driven architecture, to be able to render an entire scene in a single draw call you'd need to merge all geometry in a few very large buffers. This is doable, this is what niagara is doing today, but it can be inconvenient / cumbersome; having access to GPU pointers allows you to bypass that restriction by storing the pointers to vertex data (that can be allocated separately) inside structures available to the mesh shader to fetch data from. |
Beta Was this translation helpful? Give feedback.
-
Hello Zeux ! Happy holydays !
It's been a long time since the last stream of niagara.
I got many questions , but since the last one was about GPU pointers : what's their real purpose ? The spec states this : "There are various use cases this extension is designed for. It is required for ray tracing, useful for DX12 portability, and by allowing buffer addresses to be stored in memory it enables more complex data structures to be created."(https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_buffer_device_address.html) This is too vague, especially for beginners, and RTX gpus aren't that wide spread yet. So outside this ( and VK_NV_device_generated_commands ) , would it make sense to make my vtx buffer "into a gpu pointer" ?
Hope to see some more stuff about Vulkan soon !
Thanks in advance !
Beta Was this translation helpful? Give feedback.
All reactions