Goal: Test scene graph library against real-world applications and shake down the API and implementation for it's first stable release.
The next major item that I'll be tackling this month is the item "Positional state support to enable easier support of lighting, shadows, texture projection". I have already begun provisional work fleshing out the breadth of the work and what classes would be necessary.
...
I will start up a separate thread for this work so I'd ask you to keep you comments/suggestions on this work to that thread.
--
You received this message because you are subscribed to the Google Groups "vsg-users : VulkanSceneGraph Developer Discussion Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vsg-users+...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/vsg-users/fcbc5f7b-c48e-48ba-bd1e-decbeae59a9dn%40googlegroups.com.
This all looks great and it's exciting to see VSG moving towards version 1.0. The main feature I'm looking for is improvements to dynamically adding and removing subgraphs. I have a solution based on your DynamicLoadAndCompile example (PR https://github.com/vsg-dev/VulkanSceneGraph/pull/369), but you thought there were better ways to go about it.
- Support for integration with OpenGL/OSG applications via EXT_external_object & VK_KHR_external_memory
I've been working with Pelican for several months on prototyping and evaluating a possible port of osgEarth to VSG, as well as other approaches. The experience has been mostly pleasant. Here are some things that I wish were different and that would be nice for VSG 1.0.
osgEarth makes extensive use of pretty much every feature of OpenSceneGraph, from the math, geometry, and texture objects up through extensive customization of the scene graph and database paging. There's no way that I would jump in and change all of this at once, if ever. Instead, we keep as much OSG code around as possible and treat it as an "intermediate" format, converting it to the VSG scene graph as needed. I suspect that many sophisticated OSG users will use the same strategy. We do construct the basic terrain directly in VSG. We don't create any OpenGL contexts (that I know of :)) and might eventually get bitten by code that wants to know about capabilities, but so far this has worked out. With that in mind:
On Mon, Jan 3, 2022 at 12:19 PM Robert Osfield <robert....@gmail.com> wrote:
- Support for integration with OpenGL/OSG applications via EXT_external_object & VK_KHR_external_memory
Unless you have a specific usage in mind (or a paying client:)), I would make this low priority. It is going to be very squirrelly to get right, quantify performance, work around driver bugs, etc. I would much rather see effort put into refining vsgXchange for in-memory OSG scenegraph conversion, starting with an external interface to ConvertToVsg.
In no particular order, here are changes that don't seem to impact the existing VSG ecosystem much:Descriptor dstBinding and dstElement should not be properties of Descriptor. This complicates descriptor set creation and management. It seems much more intuitive to me that the binding come from the position of the Descriptor in the DescriptorSet::descriptors array.
It would be great if VSG implemented the reverse Z depth buffer scheme as described, among many other places, in https://developer.nvidia.com/content/depth-precision-visualized and https://vincent-p.github.io/notes/20201216234910-the_projection_matrix_in_vulkan/ . For the kinds of simulation and visualization apps targeted by VSG, this has the precision advantages of a logarithmic depth buffer without the hassle. On the other hand, in current VSG it is quite hard to properly implement this; it's impractical to customize the RecordTraversal to change the projection matrix. The cleanest way to do implement reverse Z is to change the VSG notion of clip coordinates to range from 1 to 0 near to far, and also change the default depth test. If you are receptive to this, I will implement it and submit a pull request.
It is unfortunate that RecordTraversal is not a Visitor and that it is currently tricky to create and insert a custom render traversal. Also unfortunate is the fact that the traversal object and its state are not passed to the record() functions of commands. Perhaps state isn't supposed to matter at that point...
The new StateSwitch node is great. Why not make the masks for it and Switch be uint64_t? We will inevitably want that, and due to alignment requirements it won't use any more memory in the nodes.
Hi Tim,On Wed, 5 Jan 2022 at 12:45, Tim Moore <timo...@gmail.com> wrote:It would be great if VSG implemented the reverse Z depth buffer scheme as described, among many other places, in https://developer.nvidia.com/content/depth-precision-visualized and https://vincent-p.github.io/notes/20201216234910-the_projection_matrix_in_vulkan/ . For the kinds of simulation and visualization apps targeted by VSG, this has the precision advantages of a logarithmic depth buffer without the hassle. On the other hand, in current VSG it is quite hard to properly implement this; it's impractical to customize the RecordTraversal to change the projection matrix. The cleanest way to do implement reverse Z is to change the VSG notion of clip coordinates to range from 1 to 0 near to far, and also change the default depth test. If you are receptive to this, I will implement it and submit a pull request.Another interesting suggestion. I haven't yet experimented with it myself. I only have so many hours in the day so if you could try out an implementation that would be helpful.
It would be great if VSG implemented the reverse Z depth buffer scheme as described, among many other places, in https://developer.nvidia.com/content/depth-precision-visualized and https://vincent-p.github.io/notes/20201216234910-the_projection_matrix_in_vulkan/ . For the kinds of simulation and visualization apps targeted by VSG, this has the precision advantages of a logarithmic depth buffer without the hassle. On the other hand, in current VSG it is quite hard to properly implement this; it's impractical to customize the RecordTraversal to change the projection matrix. The cleanest way to do implement reverse Z is to change the VSG notion of clip coordinates to range from 1 to 0 near to far, and also change the default depth test. If you are receptive to this, I will implement it and submit a pull request.Another interesting suggestion. I haven't yet experimented with it myself. I only have so many hours in the day so if you could try out an implementation that would be helpful.I've created a pull request that implements this. It's a small change. It impacts a couple of examples (vsgheadless, vsgrendertotexture) that explicitly specify a depth clear value. If you accept this, the convention should be well-documented somewhere.
What are your thoughts for VSG 1.0 documentation?