Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package osg2vsg for openSUSE:Factory checked in at 2026-10-27 16:47:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/osg2vsg (Old) and /work/SRC/openSUSE:Factory/.osg2vsg.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "osg2vsg" Tue Oct 27 16:47:46 2026 rev:2 rq:1392976 version:0.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/osg2vsg/osg2vsg.changes 2023-07-04 15:23:22.094561987 +0200 +++ /work/SRC/openSUSE:Factory/.osg2vsg.new.2252680/osg2vsg.changes 2026-10-27 16:48:06.329331736 +0100 @@ -1,0 +2,8 @@ +Wed Oct 21 12:47:05 UTC 2026 - Ralf Habacker <[email protected]> + +- Update to version 0.4.0: + * Updates to build with lat3est changes to VSG + * gcc 13 warning fix + * Replaced vsg::AnimationPath usage with vsg::CameraAnimation + +------------------------------------------------------------------- Old: ---- osg2vsg-0.1.0.tar.xz New: ---- osg2vsg-0.4.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ osg2vsg.spec ++++++ --- /var/tmp/diff_new_pack.tOEPCA/_old 2026-10-27 16:48:07.360374974 +0100 +++ /var/tmp/diff_new_pack.tOEPCA/_new 2026-10-27 16:48:07.362375058 +0100 @@ -1,7 +1,7 @@ # # spec file for package osg2vsg # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define _vsg_so_nr 0 Name: osg2vsg -Version: 0.1.0 +Version: 0.4.0 Release: 0 Summary: 3D graphics toolkit License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.tOEPCA/_old 2026-10-27 16:48:07.417377365 +0100 +++ /var/tmp/diff_new_pack.tOEPCA/_new 2026-10-27 16:48:07.422377575 +0100 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="disabled"> <param name="scm">git</param> <param name="url">https://github.com/vsg-dev/osg2vsg.git</param> - <param name="revision">v0.1.0</param> + <param name="revision">v0.4.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> ++++++ osg2vsg-0.1.0.tar.xz -> osg2vsg-0.4.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/.gitignore new/osg2vsg-0.4.0/.gitignore --- old/osg2vsg-0.1.0/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/osg2vsg-0.4.0/.gitignore 2026-08-21 18:07:15.000000000 +0200 @@ -0,0 +1,76 @@ + +cmake_uninstall.cmake + +lib/ +bin/ + +# Autogenerated files + +*.pc +*.conf +*.backup +CMakeCache.txt +CMakeFiles +CMakeScripts +Makefile +cmake_install.cmake +install_manifest.txt +src/osg2vsg/osg2vsgConfigVersion.cmake +CMakeDoxyfile.in +CMakeDoxygenDefaults.cmake +Doxyfile.docs-osg2vsg + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Visual Studio files +*.sln +*.vcxproj +*.vcxproj.filters +*.vcxproj.user +*.lastbuildstate +*.tlog +*.log +*.pdb +.vs/ +x64/ +src/vsg/vsg.dir/ + +#xcode +DerivedData/ +*.build +*.xcodeproj + +# Gradle +.gradle/ +.idea/ +.externalNativeBuild/ +*.iml +build/ +local.properties diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/CMakeLists.txt new/osg2vsg-0.4.0/CMakeLists.txt --- old/osg2vsg-0.1.0/CMakeLists.txt 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/CMakeLists.txt 2026-08-21 18:07:15.000000000 +0200 @@ -1,7 +1,7 @@ -cmake_minimum_required(VERSION 3.7) +cmake_minimum_required(VERSION 3.10) project(osg2vsg - VERSION 0.1.0 + VERSION 0.4.0 DESCRIPTION "OpenSceneGraph/VulkanSceneGraph integration library" LANGUAGES CXX ) @@ -12,14 +12,14 @@ find_package(OpenGL REQUIRED) # Find OpenSceneGraph packages for reference -# set prefrence for using modern OpenGL library. +# set preference for using modern OpenGL library. find_package(OpenSceneGraph REQUIRED COMPONENTS osgDB osgTerrain osgUtil osgGA osgViewer) if (VULKAN_SDK) set(ENV{VULKAN_SDK} ${VULKAN_SDK}) endif() -find_package(vsg 1.0.3) +find_package(vsg 1.1.13) vsg_setup_dir_vars() vsg_setup_build_vars() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/README.md new/osg2vsg-0.4.0/README.md --- old/osg2vsg-0.1.0/README.md 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/README.md 2026-08-21 18:07:15.000000000 +0200 @@ -1 +1 @@ -osg2vsg is a small utility library and utilities that convert OpenSceneGraph images and 3D modules into [VSG](https://github.com/vsg-dev/VulkanSceneGraph)/Vulkan equivalents and provide integration between OpenSceneGraph/OpenGL and VulkanSceneGraph/Vulkan. +osg2vsg is a small utility library with tools that convert OpenSceneGraph images and 3D models into [VSG](https://github.com/vsg-dev/VulkanSceneGraph)/Vulkan equivalents and provide integration between OpenSceneGraph/OpenGL and VulkanSceneGraph/Vulkan. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/applications/CMakeLists.txt new/osg2vsg-0.4.0/applications/CMakeLists.txt --- old/osg2vsg-0.1.0/applications/CMakeLists.txt 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/applications/CMakeLists.txt 2026-08-21 18:07:15.000000000 +0200 @@ -1,6 +1,4 @@ # set the use of C++17 globally as all examples require it -set(CMAKE_CXX_STANDARD 17) - add_subdirectory(osggroups) add_subdirectory(osgmaths) add_subdirectory(vsgnodes) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/applications/osggroups/osggroups.cpp new/osg2vsg-0.4.0/applications/osggroups/osggroups.cpp --- old/osg2vsg-0.1.0/applications/osggroups/osggroups.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/applications/osggroups/osggroups.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -122,15 +122,15 @@ std::cout<<"average node size : "<<double(numBytes)/double(numNodes)<<std::endl; std::cout<<"numNodesVisited : "<<numNodesVisited<<std::endl; if (!inputFilename.empty()) std::cout<<"read time : "<<std::chrono::duration<double>(after_construction-start).count()<<std::endl; - else std::cout<<"construcion time : "<<std::chrono::duration<double>(after_construction-start).count()<<std::endl; + else std::cout<<"construction time : "<<std::chrono::duration<double>(after_construction-start).count()<<std::endl; std::cout<<"traversal time : "<<std::chrono::duration<double>(after_traversal-after_construction).count()<<std::endl; if (!outputFilename.empty()) std::cout<<"write time : "<<std::chrono::duration<double>(after_write-after_traversal).count()<<std::endl; - std::cout<<"destrucion time : "<<std::chrono::duration<double>(after_destruction-after_write).count()<<std::endl; + std::cout<<"destruction time : "<<std::chrono::duration<double>(after_destruction-after_write).count()<<std::endl; std::cout<<"total time : "<<std::chrono::duration<double>(after_destruction-start).count()<<std::endl; std::cout<<std::endl; std::cout<<"Nodes constructed per second : "<<double(numNodes)/std::chrono::duration<double>(after_construction-start).count()<<std::endl; std::cout<<"Nodes visited per second : "<<double(numNodesVisited)/std::chrono::duration<double>(after_traversal-after_construction).count()<<std::endl; - std::cout<<"Nodes destrctored per second : "<<double(numNodes)/std::chrono::duration<double>(after_destruction-after_traversal).count()<<std::endl; + std::cout<<"Nodes destructed per second : "<<double(numNodes)/std::chrono::duration<double>(after_destruction-after_traversal).count()<<std::endl; } return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/applications/osgmaths/osgmaths.cpp new/osg2vsg-0.4.0/applications/osgmaths/osgmaths.cpp --- old/osg2vsg-0.1.0/applications/osgmaths/osgmaths.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/applications/osgmaths/osgmaths.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -140,7 +140,7 @@ if (vsg_test) { - vsg::dmat4 identiy; + vsg::dmat4 identity; double vsg_delta = 0.0; double vsg_transposed_delta = 0.0; @@ -154,7 +154,7 @@ for(auto& matrix : vsg_dmatrices) { auto inv = vsg::inverse(matrix); - auto result = difference(matrix * inv, identiy); + auto result = difference(matrix * inv, identity); vsg_delta += result; std::cout<<"\n\nvsgmatrix = "<<matrix<<std::endl; std::cout<<"inv = "<<inv<<std::endl; @@ -167,7 +167,7 @@ for(auto& matrix : vsg_transposed_dmatrices) { auto inv = vsg::inverse(matrix); - auto result = difference(matrix * inv, identiy); + auto result = difference(matrix * inv, identity); vsg_transposed_delta += result; std::cout<<"\n\nvsgmatrix = "<<matrix<<std::endl; std::cout<<"inv = "<<inv<<std::endl; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/applications/vsgobjects/vsgobjects.cpp new/osg2vsg-0.4.0/applications/vsgobjects/vsgobjects.cpp --- old/osg2vsg-0.1.0/applications/vsgobjects/vsgobjects.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/applications/vsgobjects/vsgobjects.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -21,31 +21,31 @@ void apply(vsg::Object& object) final { - std::cout<<"Myvisitor::apply(Object& "<<&object<<")"<<std::endl; + std::cout<<"MyVisitor::apply(Object& "<<&object<<")"<<std::endl; object.traverse(*this); } void apply(vsg::Node& node) final { - std::cout<<"Myvisitor::apply(Node& "<<&node<<")"<<std::endl; + std::cout<<"MyVisitor::apply(Node& "<<&node<<")"<<std::endl; node.traverse(*this); } void apply(vsg::Group& group) final { - std::cout<<"Myvisitor::apply(Group& "<<&group<<")"<<std::endl; + std::cout<<"MyVisitor::apply(Group& "<<&group<<")"<<std::endl; group.traverse(*this); } void apply(vsg::QuadGroup& group) final { - std::cout<<"Myvisitor::apply(QuadGroup& "<<&group<<")"<<std::endl; + std::cout<<"MyVisitor::apply(QuadGroup& "<<&group<<")"<<std::endl; group.traverse(*this); } void apply(vsg::StateGroup& group) final { - std::cout<<"Myvisitor::apply(StateGroup& "<<&group<<")"<<std::endl; + std::cout<<"MyVisitor::apply(StateGroup& "<<&group<<")"<<std::endl; group.traverse(*this); } }; @@ -65,7 +65,7 @@ group->addChild(vsg::Node::create()); group->addChild(vsg::Group::create()); - //std::cout<<"++++ Removing child to group"<<std::endl; + //std::cout<<"++++ Removing child from group"<<std::endl; //group->removeChild(pos); group->setObject("userdata", vsg::Object::create()); @@ -91,11 +91,11 @@ std::string name; if (global->getValue("name", name)) std::cout<<" global->getValue(\"name\") = "<<name<<std::endl; - else std::cout<<" Failed global->getValue(\"name\") = "<<std::endl; + else std::cout<<" global->getValue(\"name\") failed "<<std::endl; float height; if (global->getValue("height", height)) std::cout<<" global->getValue(\"height\") = "<<height<<std::endl; - else std::cout<<" Failed global->getValue(\"height\") = "<<std::endl; + else std::cout<<" global->getValue(\"height\") failed "<<std::endl; vsg::observer_ptr<vsg::Group> observer; @@ -122,7 +122,7 @@ std::cout<<"size_of<osg::Referenced> "<<sizeof(osg::Referenced)<<std::endl; std::cout<<"size_of<osg::Object> "<<sizeof(osg::Object)<<std::endl; std::cout<<"size_of<osg::Node> "<<sizeof(osg::Node)<<std::endl; - std::cout<<"size_of<osg::Grouo> "<<sizeof(osg::Group)<<std::endl; + std::cout<<"size_of<osg::Group> "<<sizeof(osg::Group)<<std::endl; std::cout<<"size_of<osg::ObserverSet> "<<sizeof(osg::ObserverSet)<<std::endl; std::cout<<"size_of<osg::UserDataContainer> "<<sizeof(osg::UserDataContainer)<<std::endl; std::cout<<std::endl; @@ -130,7 +130,7 @@ std::cout<<"size_of<vsg::Node> "<<sizeof(vsg::Node)<<std::endl; std::cout<<"size_of<vsg::Group> "<<sizeof(vsg::Group)<<std::endl; std::cout<<"size_of<vsg::QuadGroup> "<<sizeof(vsg::QuadGroup)<<std::endl; - std::cout<<"size_of<vsg::StateGrouo> "<<sizeof(vsg::StateGroup)<<std::endl; + std::cout<<"size_of<vsg::StateGroup> "<<sizeof(vsg::StateGroup)<<std::endl; std::cout<<"size_of<vsg::Auxiliary> "<<sizeof(vsg::Auxiliary)<<std::endl; return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/applications/vsgwithosg/vsgwithosg.cpp new/osg2vsg-0.4.0/applications/vsgwithosg/vsgwithosg.cpp --- old/osg2vsg-0.1.0/applications/vsgwithosg/vsgwithosg.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/applications/vsgwithosg/vsgwithosg.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -79,14 +79,14 @@ // set up graphics pipeline vsg::DescriptorSetLayoutBindings descriptorBindings { - {0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr} // { binding, descriptorTpe, descriptorCount, stageFlags, pImmutableSamplers} + {0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr} // { binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers } }; auto descriptorSetLayout = vsg::DescriptorSetLayout::create(descriptorBindings); vsg::PushConstantRanges pushConstantRanges { - {VK_SHADER_STAGE_VERTEX_BIT, 0, 128} // projection view, and model matrices, actual push constant calls autoaatically provided by the VSG's DispatchTraversal + {VK_SHADER_STAGE_VERTEX_BIT, 0, 128} // projection, view, and model matrices, actual push constant calls automatically provided by the VSG's RecordTraversal }; vsg::VertexInputState::Bindings vertexBindingsDescriptions @@ -123,7 +123,7 @@ auto descriptorSet = vsg::DescriptorSet::create(descriptorSetLayout, vsg::Descriptors{texture}); auto bindDescriptorSets = vsg::BindDescriptorSets::create(VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline->layout, 0, vsg::DescriptorSets{descriptorSet}); - // create StateGroup as the root of the scene/command graph to hold the GraphicsProgram, and binding of Descriptors to decorate the whole graph + // create StateGroup as the root of the scene/command graph to hold the GraphicsPipeline, and binding of Descriptors to decorate the whole graph auto scenegraph = vsg::StateGroup::create(); scenegraph->add(bindGraphicsPipeline); scenegraph->add(bindDescriptorSets); @@ -151,7 +151,7 @@ {1.0f, 1.0f, 1.0f} }); // VK_FORMAT_R32G32B32_SFLOAT, VK_VERTEX_INPUT_RATE_VERTEX, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_SHARING_MODE_EXCLUSIVE - uint8_t origin = textureData->properties.origin; // in Vulkan the origin is by default top left. + uint8_t origin = textureData->properties.origin; // in Vulkan the origin is in the top left corner by default. float left = 0.0f; float right = 1.0f; float top = (origin == vsg::TOP_LEFT) ? 0.0f : 1.0f; @@ -183,12 +183,12 @@ } int main(int argc, char** argv) { - // set up vsg::Options to pass in filepaths and ReaderWriter's and other IO related options to use when reading and writing files. + // set up vsg::Options to pass in filepaths, ReaderWriters and other IO related options to use when reading and writing files. auto options = vsg::Options::create(); options->fileCache = vsg::getEnv("VSG_FILE_CACHE"); options->paths = vsg::getEnvPaths("VSG_FILE_PATH"); - // add vsgXchange's support for reading and writing 3rd party file formats + // add OpenSceneGraph's support for reading and writing 3rd party file formats options->add(vsg::VSG::create()); options->add(vsg::spirv::create()); options->add(osg2vsg::OSG::create()); @@ -213,7 +213,7 @@ if (argc <= 1) { - std::cout<<"Please specifiy a model to load on commnadline."<<std::endl; + std::cout<<"Please specify a model to load on command line."<<std::endl; } vsg::Path filename = arguments[1]; @@ -268,21 +268,20 @@ } auto vsg_camera = vsg::Camera::create(perspective, lookAt, vsg::ViewportState::create(vsg_window->extent2D())); - // add close handler to respond the close window button and pressing escape + // add close handler to respond to the close window button and pressing escape vsg_viewer->addEventHandler(vsg::CloseHandler::create(vsg_viewer)); if (pathFilename) { - auto animationPath = vsg::read_cast<vsg::AnimationPath>(pathFilename, options); - if (!animationPath) + auto animation = vsg::read_cast<vsg::Animation>(pathFilename, options); + if (!animation) { std::cout<<"Warning: unable to read animation path : "<<pathFilename<<std::endl; return 1; } - auto animationPathHandler = vsg::AnimationPathHandler::create(vsg_camera, animationPath, vsg_viewer->start_point()); - animationPathHandler->printFrameStatsToConsole = true; - vsg_viewer->addEventHandler(animationPathHandler); + auto cameraAnimation = vsg::CameraAnimation::create(vsg_camera, pathFilename, options); + vsg_viewer->addEventHandler(cameraAnimation); } else vsg_viewer->addEventHandler(vsg::Trackball::create(vsg_camera)); @@ -331,7 +330,7 @@ // rendering main loop while (vsg_viewer->advanceToNextFrame() && !osg_viewer.done()) { - // render VulkanScenGraph frame + // render VulkanSceneGraph frame { vsg_viewer->handleEvents(); vsg_viewer->update(); @@ -339,7 +338,7 @@ vsg_viewer->present(); } - // render OpenScenGraph frame + // render OpenSceneGraph frame { osg_viewer.advance(); osg_viewer.updateTraversal(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/include/osg2vsg/OSG.h new/osg2vsg-0.4.0/include/osg2vsg/OSG.h --- old/osg2vsg-0.1.0/include/osg2vsg/OSG.h 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/include/osg2vsg/OSG.h 2026-08-21 18:07:15.000000000 +0200 @@ -41,7 +41,7 @@ bool getFeatures(Features& features) const override; - // vsg::Options::setValue(str, value) suppoorted options: + // vsg::Options::setValue(str, value) supported options: static constexpr const char* original_converter = "original_converter"; // select early osg2vsg implementation static constexpr const char* read_build_options = "read_build_options"; // read build options from specified file static constexpr const char* write_build_options = "write_build_options"; // write build options to specified file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/BuildOptions.cpp new/osg2vsg-0.4.0/src/osg2vsg/BuildOptions.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/BuildOptions.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/BuildOptions.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -93,12 +93,12 @@ vsg::DescriptorSetLayoutBindings descriptorBindings; - // add material first if any (for now material is hardcoded to binding MATERIAL_BINDING) - if (shaderModeMask & MATERIAL) descriptorBindings.push_back({MATERIAL_BINDING, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); // { binding, descriptorTpe, descriptorCount, stageFlags, pImmutableSamplers} + // add material first, if any (for now material is hardcoded to binding MATERIAL_BINDING) + if (shaderModeMask & MATERIAL) descriptorBindings.push_back({MATERIAL_BINDING, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); // { binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers } - // these need to go in incremental order by texture unit value as that how they will have been added to the descriptor set - // VkDescriptorSetLayoutBinding { binding, descriptorTpe, descriptorCount, stageFlags, pImmutableSamplers} - if (shaderModeMask & DIFFUSE_MAP) descriptorBindings.push_back({DIFFUSE_TEXTURE_UNIT, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); // { binding, descriptorTpe, descriptorCount, stageFlags, pImmutableSamplers} + // these need to go in incremental order by texture unit value as that is how they will have been added to the descriptor set + // VkDescriptorSetLayoutBinding { binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers } + if (shaderModeMask & DIFFUSE_MAP) descriptorBindings.push_back({DIFFUSE_TEXTURE_UNIT, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); // { binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers } if (shaderModeMask & OPACITY_MAP) descriptorBindings.push_back({OPACITY_TEXTURE_UNIT, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); if (shaderModeMask & AMBIENT_MAP) descriptorBindings.push_back({AMBIENT_TEXTURE_UNIT, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); if (shaderModeMask & NORMAL_MAP) descriptorBindings.push_back({NORMAL_TEXTURE_UNIT, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr}); @@ -154,7 +154,7 @@ { VkVertexInputRate trate = geometryAttributesMask & TRANSLATE_OVERALL ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX; vertexBindingsDescriptions.push_back(VkVertexInputBindingDescription{vertexBindingIndex, sizeof(vsg::vec3), trate}); - vertexAttributeDescriptions.push_back(VkVertexInputAttributeDescription{TRANSLATE_CHANNEL, vertexBindingIndex, VK_FORMAT_R32G32B32_SFLOAT, 0}); // tangent as vec4 + vertexAttributeDescriptions.push_back(VkVertexInputAttributeDescription{TRANSLATE_CHANNEL, vertexBindingIndex, VK_FORMAT_R32G32B32_SFLOAT, 0}); // translation as vec3 vertexBindingIndex++; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/ConvertToVsg.cpp new/osg2vsg-0.4.0/src/osg2vsg/ConvertToVsg.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/ConvertToVsg.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/ConvertToVsg.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -345,10 +345,9 @@ } } checkForCullNodes; - // search the subgraph to see if any cull ndoes are present so we know whether transform the view frustum in local coords will be reuiqred. + // search the subgraph to see if any cull nodes are present so we know whether transforming the view frustum to local coords will be required. vsg_transform->accept(checkForCullNodes); - // need to run visitor to seeif it contains any CullNode/LOD/PagedLOD vsg_transform->subgraphRequiresLocalFrustum = checkForCullNodes.containsCullNodes; root = vsg_transform; @@ -490,7 +489,7 @@ const double pixel_ratio = 1.0 / 1080.0; const double angle_ratio = 1.0 / osg::DegreesToRadians(30.0); // assume a 60 fovy for reference - // build a map of minimum screen ration to child + // build a map of minimum screen ratio to child std::map<double, vsg::ref_ptr<vsg::Node>> ratioChildMap; for (unsigned int i = 0; i < numChildren; ++i) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/ConvertToVsg.h new/osg2vsg-0.4.0/src/osg2vsg/ConvertToVsg.h --- old/osg2vsg-0.1.0/src/osg2vsg/ConvertToVsg.h 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/ConvertToVsg.h 2026-08-21 18:07:15.000000000 +0200 @@ -31,6 +31,7 @@ vsg::ref_ptr<vsg::Node> root; + using osg::NodeVisitor::apply; using MasksAndState = std::tuple<uint32_t, uint32_t, osg::ref_ptr<osg::StateSet>>; using BindDescriptorSetMap = std::map<MasksAndState, vsg::ref_ptr<vsg::BindDescriptorSet>>; BindDescriptorSetMap bindDescriptorSetMap; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/GeometryUtils.cpp new/osg2vsg-0.4.0/src/osg2vsg/GeometryUtils.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/GeometryUtils.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/GeometryUtils.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -152,7 +152,7 @@ return mask; } - VkSamplerAddressMode covertToSamplerAddressMode(osg::Texture::WrapMode wrapmode) + VkSamplerAddressMode convertToSamplerAddressMode(osg::Texture::WrapMode wrapmode) { switch (wrapmode) { @@ -194,9 +194,9 @@ sampler->minFilter = minFilterMipmapMode.first; sampler->magFilter = magFilterMipmapMode.first; sampler->mipmapMode = minFilterMipmapMode.second; - sampler->addressModeU = covertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_S)); - sampler->addressModeV = covertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_T)); - sampler->addressModeW = covertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_R)); + sampler->addressModeU = convertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_S)); + sampler->addressModeV = convertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_T)); + sampler->addressModeW = convertToSamplerAddressMode(texture->getWrap(osg::Texture::WrapParameter::WRAP_R)); // requires Logical device to have deviceFeatures.samplerAnisotropy = VK_TRUE; set when creating the vsg::Device sampler->anisotropyEnable = texture->getMaxAnisotropy() > 1.0f ? VK_TRUE : VK_FALSE; @@ -220,7 +220,7 @@ sampler->mipLodBias = 0; } - // Vulkan doesn't supoort a vec4 border colour so have to map across to the enum's based on a best fit. + // Vulkan doesn't support a vec4 border colour so have to map across to the enum's based on a best fit. osg::Vec4 borderColor = texture->getBorderColor(); if (borderColor.a() < 0.5f) { @@ -294,8 +294,8 @@ { uint32_t instanceCount = 1; - // work out if we need to enable instance by looking at BIND_OVERALL entries - // to see if any have more than one element which we'll interpret requesting instancing, such as used for our custom osg::Billboard handling. + // work out if we need to enable instancing by looking at BIND_OVERALL entries + // to see if any have more than one element which we'll interpret as requesting instancing, such as for our custom osg::Billboard handling. { osg::Geometry::ArrayList arrays; if (ingeometry->getArrayList(arrays)) @@ -312,7 +312,7 @@ uint32_t bindOverallPaddingCount = instanceCount; - // convert attribute arrays, create defaults for any requested that don't exist for now to ensure pipline gets required data + // convert attribute arrays, create defaults for any requested attributes that don't exist for now to ensure pipeline gets required data vsg::ref_ptr<vsg::Data> vertices(osg2vsg::convertToVsg(ingeometry->getVertexArray(), bindOverallPaddingCount)); if (!vertices.valid() || vertices->valueCount() == 0) return {}; @@ -356,7 +356,7 @@ // convert indices - // assume all the draw elements use the same primitive mode, copy all drawelements indices into one indicie array and use in single drawindexed command + // assume all the draw elements use the same primitive mode, copy all drawelements indices into one index array and use a single drawindexed command // create a draw command per drawarrays primitive set vsg::Geometry::DrawCommands drawCommands; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/ImageUtils.cpp new/osg2vsg-0.4.0/src/osg2vsg/ImageUtils.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/ImageUtils.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/ImageUtils.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -33,7 +33,7 @@ auto itr = s_GLtoVkFormatMap.find({dataType, pixelFormat}); if (itr != s_GLtoVkFormatMap.end()) { - std::cout << "convertGLImageFormatToVulkan(" << dataType << ", " << pixelFormat << ") vkFormat=" << itr->second << std::endl; + std::cout << "convertGLImageFormatToVulkan(" << dataType << ", " << pixelFormat << ") VkFormat=" << itr->second << std::endl; return itr->second; } else @@ -93,7 +93,7 @@ *reinterpret_cast<double*>(component_default) = 1.0; break; default: { - std::cout << "Warning: formateImage() DataType " << image->getDataType() << " not supported." << std::endl; + std::cout << "Warning: formatImage() DataType " << image->getDataType() << " not supported." << std::endl; return {}; } } @@ -110,7 +110,7 @@ case (GL_RGBA): numComponents = 4; break; case (GL_BGRA): numComponents = 4; break; default: { - std::cout << "Warning: formateImage() targetPixelFormat " << targetPixelFormat << " not supported." << std::endl; + std::cout << "Warning: formatImage() targetPixelFormat " << targetPixelFormat << " not supported." << std::endl; return {}; } } @@ -143,7 +143,7 @@ componentOffset = {numBytesPerComponent * 2, numBytesPerComponent, 0, numBytesPerComponent * 3}; break; default: { - std::cout << "Warning: formateImage() source PixelFormat " << image->getPixelFormat() << " not supported." << std::endl; + std::cout << "Warning: formatImage() source PixelFormat " << image->getPixelFormat() << " not supported." << std::endl; return {}; } } @@ -285,7 +285,7 @@ void* data = vsg::allocate(size, vsg::ALLOCATOR_AFFINITY_DATA); memcpy(data, image->data(), size); - layout.maxNumMipmaps = image->getNumMipmapLevels(); + layout.mipLevels = image->getNumMipmapLevels(); uint32_t width = image->s() / layout.blockWidth; uint32_t height = image->t() / layout.blockHeight; @@ -411,7 +411,7 @@ return {}; } - // we want to pass ownership of the new_image data onto th vsg_image so reset the allocation mode on the image to prevent deletetion. + // we want to pass ownership of the new_image data on to the vsg_image so reset the allocation mode on the image to prevent deletion. new_image->setAllocationMode(osg::Image::NO_DELETE); vsg::ref_ptr<vsg::Data> vsg_data; @@ -469,7 +469,7 @@ } vsg::Data::Properties& layout = vsg_data->properties; - layout.maxNumMipmaps = image->getNumMipmapLevels(); + layout.mipLevels = image->getNumMipmapLevels(); layout.origin = (image->getOrigin() == osg::Image::BOTTOM_LEFT) ? vsg::BOTTOM_LEFT : vsg::TOP_LEFT; return vsg_data; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/OSG.cpp new/osg2vsg-0.4.0/src/osg2vsg/OSG.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/OSG.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/OSG.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -47,7 +47,7 @@ for (auto& filename : all_plugins) { std::cout<<" filename = "<<filename<<std::endl; - // the plugin list icludes the OSG's serializers so we need to discard these from being queried. + // the plugin list includes the OSG's serializers so we need to discard these from being queried. if (filename.find("osgdb_serializers_") == std::string::npos && filename.find("osgdb_deprecated_") == std::string::npos) { plugins.push_back(filename); @@ -114,18 +114,21 @@ osg::ref_ptr<osg::AnimationPath> osg_animationPath = new osg::AnimationPath; osg_animationPath->read(fin); - auto vsg_animationPath = vsg::AnimationPath::create(); + auto vsg_animation = vsg::Animation::create(); + auto cameraSampler = vsg::CameraSampler::create(); + auto keyframes = cameraSampler->keyframes = vsg::CameraKeyframes::create(); + vsg_animation->samplers.push_back(cameraSampler); switch (osg_animationPath->getLoopMode()) { case (osg::AnimationPath::SWING): - vsg_animationPath->mode = vsg::AnimationPath::FORWARD_AND_BACK; + vsg_animation->mode = vsg::Animation::FORWARD_AND_BACK; break; case (osg::AnimationPath::LOOP): - vsg_animationPath->mode = vsg::AnimationPath::REPEAT; + vsg_animation->mode = vsg::Animation::REPEAT; break; case (osg::AnimationPath::NO_LOOPING): - vsg_animationPath->mode = vsg::AnimationPath::ONCE; + vsg_animation->mode = vsg::Animation::ONCE; break; } @@ -133,12 +136,12 @@ { const auto& position = cp.getPosition(); const auto& rotation = cp.getRotation(); - // const auto& scale = cp.getScale(); // TODO - vsg_animationPath->add(time, vsg::dvec3(position.x(), position.y(), position.z()), vsg::dquat(rotation.x(), rotation.y(), rotation.z(), rotation.w())); + keyframes->add(time, vsg::dvec3(position.x(), position.y(), position.z()), + vsg::dquat(rotation.x(), rotation.y(), rotation.z(), rotation.w())); } - return vsg_animationPath; + return vsg_animation; } return {}; } @@ -169,7 +172,7 @@ } else { - vsg::warn("OSG::ImplementationreadFile(", filename, ") cannot convert object type ", object->className(), ")"); + vsg::warn("OSG::read(", filename, ") cannot convert object type ", object->className(), ")"); } return {}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/SceneBuilder.cpp new/osg2vsg-0.4.0/src/osg2vsg/SceneBuilder.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/SceneBuilder.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/SceneBuilder.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -76,7 +76,7 @@ osg::Program* program = dynamic_cast<osg::Program*>(attribute.second.first.get()); if (program) { - DEBUG_OUTPUT << "Found program removing from dataState" << program << " inserting into programState" << std::endl; + DEBUG_OUTPUT << "Found program, removing from dataState" << program << " and inserting into programState" << std::endl; dataState->removeAttribute(program); programState->setAttribute(program, attribute.second.second); } @@ -342,7 +342,7 @@ { if (primitive->getNumPrimitives() == 0) { - DEBUG_OUTPUT << "SceneBuilder::apply(osg::Geometry& geometry), ignoring geometry with as it contains an empty PrimitiveSet : " << primitive->className() << std::endl; + DEBUG_OUTPUT << "SceneBuilder::apply(osg::Geometry& geometry), ignoring geometry as it contains an empty PrimitiveSet : " << primitive->className() << std::endl; return; } } @@ -655,7 +655,7 @@ } else { - DEBUG_OUTPUT << "Using CullGroupe" << std::endl; + DEBUG_OUTPUT << "Using CullGroup" << std::endl; auto cullGroup = vsg::CullGroup::create(boundingSphere); cullGroup->addChild(leaf); localGroup->addChild(cullGroup); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osg2vsg/ShaderUtils.cpp new/osg2vsg-0.4.0/src/osg2vsg/ShaderUtils.cpp --- old/osg2vsg-0.1.0/src/osg2vsg/ShaderUtils.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osg2vsg/ShaderUtils.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -44,22 +44,22 @@ return stateMask; } -// create defines string based of shader mask +// create defines string based on shader mask std::set<std::string> osg2vsg::createPSCDefineStrings(const uint32_t& shaderModeMask, const uint32_t& geometryAttrbutes) { bool hasnormal = geometryAttrbutes & NORMAL; - bool hastanget = geometryAttrbutes & TANGENT; + bool hastangent = geometryAttrbutes & TANGENT; bool hascolor = geometryAttrbutes & COLOR; bool hastex0 = geometryAttrbutes & TEXCOORD0; std::set<std::string> defines; - // vertx inputs + // vertex inputs if (hasnormal) defines.insert("VSG_NORMAL"); if (hascolor) defines.insert("VSG_COLOR"); if (hastex0) defines.insert("VSG_TEXCOORD0"); - if (hastanget) defines.insert("VSG_TANGENT"); + if (hastangent) defines.insert("VSG_TANGENT"); // shading modes/maps if (hasnormal && (shaderModeMask & LIGHTING)) defines.insert("VSG_LIGHTING"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osgPlugins/vsg/CMakeLists.txt new/osg2vsg-0.4.0/src/osgPlugins/vsg/CMakeLists.txt --- old/osg2vsg-0.1.0/src/osgPlugins/vsg/CMakeLists.txt 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osgPlugins/vsg/CMakeLists.txt 2026-08-21 18:07:15.000000000 +0200 @@ -3,7 +3,6 @@ ) add_library(osgdb_vsg MODULE ${SOURCES}) -set_property(TARGET osgdb_vsg PROPERTY CXX_STANDARD 17) target_include_directories(osgdb_vsg PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/osg2vsg-0.1.0/src/osgPlugins/vsg/ReaderWriterVSG.cpp new/osg2vsg-0.4.0/src/osgPlugins/vsg/ReaderWriterVSG.cpp --- old/osg2vsg-0.1.0/src/osgPlugins/vsg/ReaderWriterVSG.cpp 2023-05-25 15:57:10.000000000 +0200 +++ new/osg2vsg-0.4.0/src/osgPlugins/vsg/ReaderWriterVSG.cpp 2026-08-21 18:07:15.000000000 +0200 @@ -1,7 +1,6 @@ // Released under the OSGPL license, as part of the OpenSceneGraph distribution. // -// ReaderWriter for sgi's .rgb format. -// specification can be found at http://local.wasp.uwa.edu.au/~pbourke/dataformats/sgirgb/sgiversion.html +// ReaderWriter for converting and writing scenes to vsgt/vsgb files. Reading files back in is not currently implemented. #include <osgDB/FileNameUtils> #include <osgDB/FileUtils>
