OIT and multiple render passes with multiple views #1187
theodoregoetz
started this conversation in
General
Replies: 1 comment 2 replies
-
You shouldn't need to use high level syncronization via vkRenderPass/vsg::RenderGraph, should be possible to just putting vk/vsg::PipelineBarrier within a RenderGraph to do the synchronization and any memory access changes that are required. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
We have successfully implemented OIT (order independent transparency) a la https://github.com/KhronosGroup/Vulkan-Samples/tree/main/samples/api/oit_linked_lists using VSG. This requires multiple render passes - 2 or more if we want to split out the opaque elements into it's own pass. The reason for 2 passes is that the technique requires a memory barrier that must be done outside of a render pass.
In our application we also have multiple views - both at the top-level of the scenegraph and nested - which is important to consider in the following case, but ultimately it boils down to having each view record it's own set of render graphs. The actual record would have be done after all children of a given view has been visited.
Judging from our failure to use render graphs to clear only a part of the framebuffer (See this issue and associated PR) we are now considering have each of our views render to a texture in it's own set of render passes and following up with a composite pass to write to the displayed framebuffer in the swapchain.
I guess this is more of a open discussion rather than a specific question. But I'd be interested if anyone thinks there's a better way to complish this.
Beta Was this translation helpful? Give feedback.
All reactions