Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Ogre rendering support (Waves shaders issues) #736

Open
Dat-Bois opened this issue Sep 12, 2023 · 1 comment
Open

Adding Ogre rendering support (Waves shaders issues) #736

Dat-Bois opened this issue Sep 12, 2023 · 1 comment

Comments

@Dat-Bois
Copy link

Dat-Bois commented Sep 12, 2023

Describe the bug
Ogre2 is giving significant issues when rendering, probably due to my VM and OpenGL GPU passthrough support with Gazebo. Running with Ogre as my rendering engine for other sample Gazebo environments seems to fix the rendering issues and use Gazebo as expected with GPU acceleration. However, using the shaders in the VRX project for the GerstnerWaves causes Gazebo to crash. I thought it was versioning between 330 and 150 for the GLSL files but I'm not sure anymore.

Expected behavior
Gazebo GUI loads/opens.

To Reproduce
List the steps to reproduce the problem:

  1. Run " ros2 launch vrx_gz competition.launch.py world:=sydney_regatta extra_gz_args:='--render-engine ogre' "
  2. See error

System Configuration:
Tell us about your system.

  • OS: Ubuntu 22.04 ARM64 (VMware Fusion)
  • ROS Version: ROS 2, Humble
  • Gazebo Version: Gazebo Garden Sim 7.0.0
  • Graphics Card: Integrated (Apple M2 Pro 19 GPU core)
  • Are you using VRX or VRX Classic? VRX

Error Log

[ruby $(which gz) sim-1] gz sim server: ./OgreMain/src/OgreGpuProgramParams.cpp:1105: void Ogre::GpuProgramParameters::_writeRawConstants(size_t, const int*, size_t): Assertion `physicalIndex + count <= mIntConstants.size()' failed.
[ruby $(which gz) sim-1] Stack trace (most recent call last) in thread 37472:
[ruby $(which gz) sim-1] #25   Object "[0xffffffffffffffff]", at 0xffffffffffffffff, in 
[ruby $(which gz) sim-1] #24   Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa9835d1b, in 
[ruby $(which gz) sim-1] #23   Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa97cd5c7, in 
[ruby $(which gz) sim-1] #22   Object "/lib/aarch64-linux-gnu/libstdc++.so.6", at 0xffffa57b31fb, in 
[ruby $(which gz) sim-1] #21   Object "/usr/lib/aarch64-linux-gnu/gz-sim-7/plugins/libgz-sim-sensors-system.so", at 0xffff7d2bda77, in gz::sim::v7::systems::SensorsPrivate::RenderThread()
[ruby $(which gz) sim-1] #20   Object "/usr/lib/aarch64-linux-gnu/gz-sim-7/plugins/libgz-sim-sensors-system.so", at 0xffff7d2bccf3, in gz::sim::v7::systems::SensorsPrivate::RunOnce()
[ruby $(which gz) sim-1] #19   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fefed2b, in gz::rendering::v7::OgreScene::PreRender()
[ruby $(which gz) sim-1] #18   Object "/lib/aarch64-linux-gnu/libgz-rendering7.so.7", at 0xffff7cfa80ef, in gz::rendering::v7::BaseScene::PreRender()
[ruby $(which gz) sim-1] #17   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe67727, in 
[ruby $(which gz) sim-1] #16   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe7056f, in 
[ruby $(which gz) sim-1] #15   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe67727, in 
[ruby $(which gz) sim-1] #14   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe7056f, in 
[ruby $(which gz) sim-1] #13   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe67727, in 
[ruby $(which gz) sim-1] #12   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe7056f, in 
[ruby $(which gz) sim-1] #11   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fe6d5d3, in 
[ruby $(which gz) sim-1] #10   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fec4077, in 
[ruby $(which gz) sim-1] #9    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5fec8d0b, in 
[ruby $(which gz) sim-1] #8    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5febcb7b, in gz::rendering::v7::OgreMaterial::UpdateShaderParams()
[ruby $(which gz) sim-1] #7    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff5febc86f, in gz::rendering::v7::OgreMaterial::UpdateShaderParams(std::shared_ptr<gz::rendering::v7::ShaderParams const>, Ogre::SharedPtr<Ogre::GpuProgramParameters>)
[ruby $(which gz) sim-1] #6    Object "/lib/aarch64-linux-gnu/libOgreMain.so.1.9.0", at 0xffff5fa24127, in Ogre::GpuProgramParameters::_writeRawConstant(unsigned long, int)
[ruby $(which gz) sim-1] #5    Object "/lib/aarch64-linux-gnu/libOgreMain.so.1.9.0", at 0xffff5fa24107, in Ogre::GpuProgramParameters::_writeRawConstants(unsigned long, int const*, unsigned long)
[ruby $(which gz) sim-1] #4    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa978403f, in __assert_fail
[ruby $(which gz) sim-1] #3    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa9783fcf, in 
[ruby $(which gz) sim-1] #2    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa977712f, in abort
[ruby $(which gz) sim-1] #1    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa978a67b, in raise
[ruby $(which gz) sim-1] #0    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa97cf200, in 
[ruby $(which gz) sim-1] Aborted (Signal sent by tkill() 37432 1000)
[ruby $(which gz) sim-1] gz sim gui: ./OgreMain/src/OgreGpuProgramParams.cpp:1105: void Ogre::GpuProgramParameters::_writeRawConstants(size_t, const int*, size_t): Assertion `physicalIndex + count <= mIntConstants.size()' failed.
[ruby $(which gz) sim-1] Stack trace (most recent call last) in thread 37588:
[ruby $(which gz) sim-1] #31   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffa25cb523, in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
[ruby $(which gz) sim-1] #30   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffa13e2f13, in g_main_context_iteration
[ruby $(which gz) sim-1] #29   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffa143aeab, in 
[ruby $(which gz) sim-1] #28   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffa13e5a6f, in g_main_context_dispatch
[ruby $(which gz) sim-1] #27   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffa25cc057, in 
[ruby $(which gz) sim-1] #26   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffa256ff87, in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
[ruby $(which gz) sim-1] #25   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffa256cb8f, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
[ruby $(which gz) sim-1] #24   Object "/lib/aarch64-linux-gnu/libQt5Widgets.so.5", at 0xffffa3a12abf, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
[ruby $(which gz) sim-1] #23   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffa259cfd3, in QObject::event(QEvent*)
[ruby $(which gz) sim-1] #22   Object "/usr/lib/aarch64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0xffff68f64923, in gz::gui::plugins::RenderThread::RenderNext(gz::gui::plugins::RenderSync*)
[ruby $(which gz) sim-1] #21   Object "/usr/lib/aarch64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0xffff68f73f63, in gz::gui::plugins::RenderThreadRhiOpenGL::RenderNext(gz::gui::plugins::RenderSync*)
[ruby $(which gz) sim-1] #20   Object "/usr/lib/aarch64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0xffff68f69193, in gz::gui::plugins::GzRenderer::Render(gz::gui::plugins::RenderSync*)
[ruby $(which gz) sim-1] #19   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4e2e2b, in 
[ruby $(which gz) sim-1] #18   Object "/lib/aarch64-linux-gnu/libgz-rendering7.so.7", at 0xffff685d80ef, in gz::rendering::v7::BaseScene::PreRender()
[ruby $(which gz) sim-1] #17   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4c7727, in 
[ruby $(which gz) sim-1] #16   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4d056f, in 
[ruby $(which gz) sim-1] #15   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4c7727, in 
[ruby $(which gz) sim-1] #14   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4d056f, in 
[ruby $(which gz) sim-1] #13   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4c7727, in 
[ruby $(which gz) sim-1] #12   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4d056f, in 
[ruby $(which gz) sim-1] #11   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b4cd5d3, in 
[ruby $(which gz) sim-1] #10   Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b524077, in 
[ruby $(which gz) sim-1] #9    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b528d0b, in 
[ruby $(which gz) sim-1] #8    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b51cb7b, in gz::rendering::v7::OgreMaterial::UpdateShaderParams()
[ruby $(which gz) sim-1] #7    Object "/usr/lib/aarch64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre.so", at 0xffff2b51c86f, in gz::rendering::v7::OgreMaterial::UpdateShaderParams(std::shared_ptr<gz::rendering::v7::ShaderParams const>, Ogre::SharedPtr<Ogre::GpuProgramParameters>)
[ruby $(which gz) sim-1] #6    Object "/lib/aarch64-linux-gnu/libOgreMain.so.1.9.0", at 0xffff2b014127, in Ogre::GpuProgramParameters::_writeRawConstant(unsigned long, int)
[ruby $(which gz) sim-1] #5    Object "/lib/aarch64-linux-gnu/libOgreMain.so.1.9.0", at 0xffff2b014107, in Ogre::GpuProgramParameters::_writeRawConstants(unsigned long, int const*, unsigned long)
[ruby $(which gz) sim-1] #4    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa978403f, in __assert_fail
[ruby $(which gz) sim-1] #3    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa9783fcf, in 
[ruby $(which gz) sim-1] #2    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa977712f, in abort
[ruby $(which gz) sim-1] #1    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa978a67b, in raise
[ruby $(which gz) sim-1] #0    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0xffffa97cf200, in 
[ruby $(which gz) sim-1] Aborted (Signal sent by tkill() 37433 1000)
[INFO] [ruby $(which gz) sim-1]: process has finished cleanly [pid 37392]

Additional notes
I understand that I am creating an issue for an unsupported configuration (ARM64), but adding support can be incredibly useful given how many students may be using Apple M-series Macs. I am concurrently developing a guide on how to setup VRX with GPU support for this configuration and will publish it once I iron out the kinks (and figure this out).

@Dat-Bois Dat-Bois changed the title Changing wave shader GLSL version from 330 to 150 (Ogre rendering support) Adding Ogre rendering support (Waves shaders issues) Sep 13, 2023
@matthiaskiller
Copy link

@Dat-Bois I have the same issue. Have you figured it already out? :)
Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants