New Feature Development RoadMap for future VulkanSceneGraph-1.2 release and beyond #600
Replies: 5 comments
-
Other items that would be useful to have: VulkansSceneGraph
|
Beta Was this translation helpful? Give feedback.
-
Standardizing lighting and material models within core VSG would be great. I guess shaders that are bundled with vsgXchange have become the de facto standard shaders in VSG, but this is poorly documented, not to mention included in an obfuscated way right now. I would like to see (and maybe even implement) a standard PBR rendering mode with some sort of global illumination support, and tone mapping of the result. The community may not be ready for this to be the default, so an OpenGL-like backup is probably necessary too. I don't know how this interacts with model loading, where shaders should live in the scene graph, where descriptor sets should be bound, etc. |
Beta Was this translation helpful? Give feedback.
-
On Sun, 20 Nov 2022 at 15:20, timoore ***@***.***> wrote:
Standardizing lighting and material models within core VSG would be great.
I guess shaders that are bundled with vsgXchange have become the de facto
standard shaders in VSG, but this is poorly documented, not to mention
included in an obfuscated way right now.
Much of the work I did this Autumn was standardizing the lighting and
shaders using ShaderSet as the framework for this. vsgXchange no longer
provides any shaders, they are all provided by the core VSG with the
FlatShader, Phong and PBR ShaderSets. I wrote this work uip as it
progressed.
https://github.com/vsg-dev/VulkanSceneGraph/blob/master/include/vsg/utils/ShaderSet.h#L137
I would like to have resolved the disparate material structs used for
osg2vsg shaders, Phong and PBR so there would be one material type but they
were a bit too different to easily merge so can to delay this refactor.
The osg2vsg rewrite will likely help refine exactly what will need to be in
a unified material struct if it's possible.
I would like to see (and maybe even implement) a standard PBR rendering
mode with some sort of global illumination support, and tone mapping of the
result. The community may not be ready for this to be the default, so an
OpenGL-like backup is probably necessary too. I don't know how this
interacts with model loading, where shaders should live in the scene graph,
where descriptor sets should be bound, etc.
The vsgXchange::Assimp uses the PBR ShaderSet for all the models I've used
in testing, in theory it has a code path that uses the Phong ShaderSet but
so ar haven't come across a Assimp material setting that selects it over
PBR.
Expanding/refining the PBR shaders/ShaderSet is something I have in mind
for 1.2.
The vsg::Options class has a shaderSets member that is a
std::mapt[std::string,. ref_ptr<ShaderSet>> for the purpose of overriding
the default ShaderSet used by the loaders, so if you want to override the
PBR shader used by the vsgXhcnage::assimp loader you do something like:
auto options = vsg::Options::create();
options->add(vsgXchange::all);
options->shaderSet["pbr"] = myCustomPbrShaderSet;
auto model = vsg::read("model.gltf", options);
This allows you to use entirely different shaders or simply different
defaults for the various elements of the graphics pipeline settings.
The vsgtext example illustrates this in action when customizing the
settings in setting up text by creating a text ShaderSet then changing the
defaults.
https://github.com/vsg-dev/vsgExamples/blob/master/examples/text/vsgtext/vsgtext.cpp#L202
All of these features I've written up extensively over the past years on
vsg-users. It's not formal documentation but as the features were evolving
as I figured out how to design/implement them.
Now that 1.0.0 is out and the API is more set, documentation becomes more
achievable. It would be good for companies wanting to use the VSG to help
fund this effort as I can't indefinitely pour my time into the "greater
good" - it's already self funded myself for 3/4'rs of the past year getting
VSG to 1.0.0.
Cheers,
Robert.
Message ID: <vsg-dev/VulkanSceneGraph/repo-discussions/600/comments/4188827@
… github.com>
|
Beta Was this translation helpful? Give feedback.
-
In response to discussion thread "PBR Specular missing" #608 I'm adding another feature item for VulkanSceneGraph/vsgXchange:
|
Beta Was this translation helpful? Give feedback.
-
One of the items I've had on my own personal wish list, but missed adding it to the wish list is noise. The OSG has perlin noise, but there are others out there such as simplex and worley noise, and now another contender - octavia noise: https://github.com/lorenSchmidt/fractal_cell_noise Adding to the growing list for VulkanSceneGraph:
|
Beta Was this translation helpful? Give feedback.
-
I have put down my thoughts on maintenance of the VulkanSceneGraph-1.0 series in Discussion thread #596. and in this thread will put down my thoughts on what would be useful to tackle for new feature development in the VulkanSceneGraph and companion projects. Feel free to add in your thoughts on what would be useful, but please be prepared to roll your sleeves up and help develop those feature, or if you work for a company that needs these features perhaps funding some open source development work, by myself or others, might be a good way to make things happen.
In no order, these as my possible items that I think would be useful to be tackled for 1.2 or perhaps later:
VulkanSceneGraph
osg2vsg
vsgXhange
vsgImGui
vsgQt
vsgUnity
vsgPoints
vsgExamples
Treat all these as ideas of what I/others can potentially tackle in the next 3-6 months. I'm sure the community will have ideas of what they'd like to see and help develop, these might be within the umbrella of things that I'm personally managing but also could be companion projects that are managed entirely separately.
As discussions progress I aim to distill out an update of the VulkanSceneGrah/ROADMAP.md.
Beta Was this translation helpful? Give feedback.
All reactions