Replies: 4 comments 4 replies
-
|
I'd also be curious to hear @robertosfield's thoughts on this - but from what I can tell, VSG is currently built to support Vulkan 1.0 spec (although I believe it enables some extensions that may need greater support). VSG is also required to work well on mobile, where I think layout transitions are more important for compression optimization/tiling. This of-course means that Dynamic Rendering, which handles layout transitions and other things automatically, aren't integrated into the VSG yet. From what I gather, it may be possible to create a patch to VSG to implement it. It would simply require implementing the required API for vkBegin/EndRendering, perhaps with a Integrating such a feature into the VSG itself could be tricky - since the actual usage of the API requires runtime checks for availability (I believe the extension is available since 1.2.197, and is Core since 1.3). I don't know how Robert likes handling these kinds of things. There's no way to do a static assert on the API usage. Perhaps if a user ever creates a |
Beta Was this translation helpful? Give feedback.
-
|
The minimum Vulkan version for the VSG is 1.1.70, features after this are supported, and for these we check at runtime and individually enable features when supported. I haven't looked at support for vkCmdBeginRendering and without reviewing the feature spec and examples that use it, I am not in position to comment on how quickly it could be implemented and how well it work with the rest of the VSG. In terms of implementing dynamic rendering, well this is such an open ended topic that has many different interpretations again I really provide guidance. You can do multi-pass with/without use multiple sub passes. You mix in compute as part of this as well. There are lots of different ways of different things. |
Beta Was this translation helpful? Give feedback.
-
|
Ok, I've solved depth peeling algorithm with vsg without using Dynamic Rendering ( I've created two render passes:
After last render pass (and of course outside) the intermediate result image is copied to current swap chain image using My current shaders use Robert's Phong and Flat implementations. Slightly modified, of course (with input attachments, manual depth checks, etc.) to add depth peeling data. Although it works now, in my opinion, dynamic rendering would significantly improve the handling of such situations. |
Beta Was this translation helpful? Give feedback.
-
|
Glad you have got something working. I haven't implemented depth peeling with the VSG so can't provide specific input, but when I read that you can needed vsg::CopyImageViewToWindow() I did wonder you might be able to structure it differently to avoid this. I have lots of others tasks on my plate right now so not in position to look into VK_KHR_dynamic_rendering. One way forward when implementing features like this is to create a test bed in vsgExamples that is implemented using standard VSG then create an experimental code path that extends the VSG classes then have the ability to toggle between the standard and the extended versions. Then others can chip in and help refine two versions, and finally if it's appropriate create core features that mean the the local extensions in the testbed can be dropped and the new core feature used. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I want to implement DepthPeeling like proposed in chapter 5 of "The Modern Vulkan Cookbook" to handle transparencies correctly.
I'm using DepthPeeling because it seems to be a good middle way between memory- and performance-requirements.
Does vsg support dynamic rendering using vkCmdBeginRendering?
It seems that the current implementation of GraphicsPipeline::Implementation does not support rendering without a valid renderpass and so binding and creating pipeline without a renderpass is not possible.
I think supporting dynamic rendering would improve handling of dynamic situations like transparency handling drastically.
src\vsg\state\GraphicsPipeline.cpp:
Khronos states that there is no need for a render pass soon as the pNext-list of VkGraphicsPipelineCreateInfo contains a valid VkPipelineRenderingCreateInfo-structure ...
Is there another way to handle dynamic rendering or shall I describe a render pass having multiple sub-passes?
Thanks in advance.
Beta Was this translation helpful? Give feedback.
All reactions