OpenSceneGraph Forum Forum Index OpenSceneGraph Forum
Official forum which mirrors the existent OSG mailing lists. Messages posted here are forwarded to the mailing list and vice versa.
 
   FAQFAQ    SearchSearch    MemberlistMemberlist    RulesRules    UsergroupsUsergroups    RegisterRegister 
 Mail2Forum SettingsMail2Forum Settings  ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
   AlbumAlbum  OpenSceneGraph IRC ChatOpenSceneGraph IRC Chat   SmartFeedSmartFeed 

Slow down with shared nodes

Goto page 1, 2  Next
 
Post new topic   Reply to topic    OpenSceneGraph Forum Forum Index -> General
View previous topic :: View next topic  
Author Message
Andre Normann
Guest





PostPosted: Tue Mar 07, 2017 8:24 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my application I get a significant slow down, when I share nodes. Here is a quick example layout of my scenegraph:




Parent
  |
  + ---> MatrixTransform1 --> Node1
  |
  + ---> MatrixTransform2 --> Node1
  |

  ...
  |
  + ---> MatrixTransform3 --> Node1
          

I have a root node with several MatrixTransforms. The nodes below the MatrixTransforms are shared. In 3.2.3 everything works well and I have a framerate of 60 Hz. In 3.4.0 the framerate drops with each new added MatrixTransform. But when I do not share the nodes and instead create clones with a DEEP_COPY_ALL flag, everything is well in 3.4.0.


So what could cause the slow down in 3.4.0 with node sharing?


I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.




Best regards,
André

------------------
Post generated by Mail2Forum
Back to top
robertosfield
OSG Project Lead


Joined: 18 Mar 2009
Posts: 10859

PostPosted: Tue Mar 07, 2017 10:36 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann <> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is a
quick example layout of my scenegraph:


Parent
|
+ ---> MatrixTransform1 --> Node1
|
+ ---> MatrixTransform2 --> Node1
|
...
|
+ ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André






------------------
Post generated by Mail2Forum
Back to top
View user's profile Send private message
Andre Normann
Guest





PostPosted: Tue Mar 07, 2017 4:30 pm    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here. There is a VirtualPlanetBuilder model present in the scene, but this model is hidden for my test case. The test scene contains only some thousand triangles and I am using a GeForce 1080 which can handle much more. Currently I have no idea what is going wrong here.


-André




2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André




Quote:
_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


------------------
Post generated by Mail2Forum
Back to top
Andre Normann
Guest





PostPosted: Tue Mar 07, 2017 4:43 pm    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

some more screenshots. This time without any other model.


3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes


Best regards,
André




2017-03-07 17:27 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here. There is a VirtualPlanetBuilder model present in the scene, but this model is hidden for my test case. The test scene contains only some thousand triangles and I am using a GeForce 1080 which can handle much more. Currently I have no idea what is going wrong here.


-André




2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André




Quote:
_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org







------------------
Post generated by Mail2Forum
Back to top
robertosfield
OSG Project Lead


Joined: 18 Mar 2009
Posts: 10859

PostPosted: Tue Mar 07, 2017 5:13 pm    Post subject:
Slow down with shared nodes
Reply with quote

Hi André,

Thanks for the screenshots. They tells us it's the draw dispatch that
is gating performance, so the question now moves to why draw dispatch
is so slow in this case.

Are you running the osgUtil::Optimizer on your scene graph?

Could you run the tests with SingleThreaded threading model?

There may be chance that a bug fix to the OSG somewhere has tightened
up the assumptions it makes about threading. That's just a guess
though, there still is too few titbits of information to know what the
cause is.

Robert.



On 7 March 2017 at 16:40, Andre Normann <> wrote:
Quote:
Hi Robert,

some more screenshots. This time without any other model.

3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes

Best regards,
André


2017-03-07 17:27 GMT+01:00 Andre Normann <>:
Quote:

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here.
There is a VirtualPlanetBuilder model present in the scene, but this model
is hidden for my test case. The test scene contains only some thousand
triangles and I am using a GeForce 1080 which can handle much more.
Currently I have no idea what is going wrong here.

-André


2017-03-07 11:33 GMT+01:00 Robert Osfield <>:
Quote:

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann <> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is
a
quick example layout of my scenegraph:


Parent
|
+ ---> MatrixTransform1 --> Node1
|
+ ---> MatrixTransform2 --> Node1
|
...
|
+ ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have
a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create
clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André













------------------
Post generated by Mail2Forum
Back to top
View user's profile Send private message
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 7:43 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

attached you will find two screenshots while running in SingleThreaded-Mode. Using osgUtil::Optimizer does not make any big difference. I will try to create an example, so that you can test it on your computer.


André




2017-03-07 18:10 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

Thanks for the screenshots.  They tells us it's the draw dispatch that
is gating performance, so the question now moves to why draw dispatch
is so slow in this case.

Are you running the osgUtil::Optimizer on your scene graph?

Could you run the tests with SingleThreaded threading model?

There may be chance that a bug fix to the OSG somewhere has tightened
up the assumptions it makes about threading.  That's just a guess
though, there still is too few titbits of information to know what the
cause is.

Robert.



On 7 March 2017 at 16:40, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi Robert,

some more screenshots. This time without any other model.

3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes

Best regards,
André


2017-03-07 17:27 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here.
There is a VirtualPlanetBuilder model present in the scene, but this model
is hidden for my test case. The test scene contains only some thousand
triangles and I am using a GeForce 1080 which can handle much more.
Currently I have no idea what is going wrong here.

-André


2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is
a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have
a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create
clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André


_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)

http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




------------------
Post generated by Mail2Forum
Back to top
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 8:01 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

when I use display lists instead of vertex buffer objects (using osgUtil::GLObjectsVisitor), everything is fine with 3.4.0.


André




2017-03-08 8:40 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

attached you will find two screenshots while running in SingleThreaded-Mode. Using osgUtil::Optimizer does not make any big difference. I will try to create an example, so that you can test it on your computer.


André




2017-03-07 18:10 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

Thanks for the screenshots.  They tells us it's the draw dispatch that
is gating performance, so the question now moves to why draw dispatch
is so slow in this case.

Are you running the osgUtil::Optimizer on your scene graph?

Could you run the tests with SingleThreaded threading model?

There may be chance that a bug fix to the OSG somewhere has tightened
up the assumptions it makes about threading.  That's just a guess
though, there still is too few titbits of information to know what the
cause is.

Robert.



On 7 March 2017 at 16:40, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi Robert,

some more screenshots. This time without any other model.

3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes

Best regards,
André


2017-03-07 17:27 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here.
There is a VirtualPlanetBuilder model present in the scene, but this model
is hidden for my test case. The test scene contains only some thousand
triangles and I am using a GeForce 1080 which can handle much more.
Currently I have no idea what is going wrong here.

-André


2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is
a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have
a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create
clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André


_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)

http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org









------------------
Post generated by Mail2Forum
Back to top
robertosfield
OSG Project Lead


Joined: 18 Mar 2009
Posts: 10859

PostPosted: Wed Mar 08, 2017 8:34 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Andre,

On 8 March 2017 at 07:59, Andre Normann <> wrote:
Quote:
Hi Robert,

when I use display lists instead of vertex buffer objects (using
osgUtil::GLObjectsVisitor), everything is fine with 3.4.0.

Good to hear you've been able to get the performance back.

It doesn't quite get to the bottom of what is going on, but does give
us some more clues. Use of VBO's shouldn't affect performance as much
as you've seen, it can increase the draw dispatch overhead for models
with a very large number of osg::Geometry, but for scenes with a
moderate number of osg::Geometry and large number of vertices one
normally sees a performance improvement.

I have never see the scale of performance with use of VBO's, so
something is happening somewhere in your scene graph or in the way the
OSG is handling it so cause this massive increasing in the draw
dispatch overhead. Unfortunately we don't yet have enough clues to
know what it might be.

Is there any chance that the osg::Geometry have vertex arrays that are
set as dynamic/updated per frame? I'm just clutching at straws as
downloading the VBO's on every frame would increase the draw dispatch
time.

Another possibility is that the GL driver is buggy and in certain
combinations of usage falls off it's fast paths. What is the hardware
and drivers that you are using?

Robert.


------------------
Post generated by Mail2Forum
Back to top
View user's profile Send private message
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 8:43 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

hopefully I am getting closer. I find out, that the source model might be the problem. I exported an obj file from Bentley Microstation and imported into OpenSceneGraph. When I now export the scene into an osg file, I see a lot of PrimiteSets (e.g. > 1000). So I will end up with a lot calls to DrawElementsUShort. When I load the obj file into 3dsmax convert it into a fbx file and reexport it from OpenSceneGraph into an osg file, I have only one PrimitiveSet with one DrawArrays call. This file is working well in 3.4.0 with sharing nodes.


So I guess there might be a problem with sharing osg::Geometry which has a lot of primitive sets. In 3.2.3 it was working well. What do you think?


André




2017-03-08 8:59 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

when I use display lists instead of vertex buffer objects (using osgUtil::GLObjectsVisitor), everything is fine with 3.4.0.


André




2017-03-08 8:40 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

attached you will find two screenshots while running in SingleThreaded-Mode. Using osgUtil::Optimizer does not make any big difference. I will try to create an example, so that you can test it on your computer.


André




2017-03-07 18:10 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

Thanks for the screenshots.  They tells us it's the draw dispatch that
is gating performance, so the question now moves to why draw dispatch
is so slow in this case.

Are you running the osgUtil::Optimizer on your scene graph?

Could you run the tests with SingleThreaded threading model?

There may be chance that a bug fix to the OSG somewhere has tightened
up the assumptions it makes about threading.  That's just a guess
though, there still is too few titbits of information to know what the
cause is.

Robert.



On 7 March 2017 at 16:40, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi Robert,

some more screenshots. This time without any other model.

3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes

Best regards,
André


2017-03-07 17:27 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here.
There is a VirtualPlanetBuilder model present in the scene, but this model
is hidden for my test case. The test scene contains only some thousand
triangles and I am using a GeForce 1080 which can handle much more.
Currently I have no idea what is going wrong here.

-André


2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is
a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have
a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create
clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André


_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)

http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org














------------------
Post generated by Mail2Forum
Back to top
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 8:45 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

I am using a GeForce 1080 and driver is 378.66. Windows 7 64Bit.


-André




2017-03-08 9:40 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

hopefully I am getting closer. I find out, that the source model might be the problem. I exported an obj file from Bentley Microstation and imported into OpenSceneGraph. When I now export the scene into an osg file, I see a lot of PrimiteSets (e.g. > 1000). So I will end up with a lot calls to DrawElementsUShort. When I load the obj file into 3dsmax convert it into a fbx file and reexport it from OpenSceneGraph into an osg file, I have only one PrimitiveSet with one DrawArrays call. This file is working well in 3.4.0 with sharing nodes.


So I guess there might be a problem with sharing osg::Geometry which has a lot of primitive sets. In 3.2.3 it was working well. What do you think?


André




2017-03-08 8:59 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

when I use display lists instead of vertex buffer objects (using osgUtil::GLObjectsVisitor), everything is fine with 3.4.0.


André




2017-03-08 8:40 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Robert,

attached you will find two screenshots while running in SingleThreaded-Mode. Using osgUtil::Optimizer does not make any big difference. I will try to create an example, so that you can test it on your computer.


André




2017-03-07 18:10 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi André,

Thanks for the screenshots.  They tells us it's the draw dispatch that
is gating performance, so the question now moves to why draw dispatch
is so slow in this case.

Are you running the osgUtil::Optimizer on your scene graph?

Could you run the tests with SingleThreaded threading model?

There may be chance that a bug fix to the OSG somewhere has tightened
up the assumptions it makes about threading.  That's just a guess
though, there still is too few titbits of information to know what the
cause is.

Robert.



On 7 March 2017 at 16:40, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi Robert,

some more screenshots. This time without any other model.

3.2.3_1: My application using 3.2.3 and sharing nodes
3.4.0_1: My application using 3.4.0 and sharing nodes
3.4.0_2: My application using 3.4.0 without sharing nodes

Best regards,
André


2017-03-07 17:27 GMT+01:00 Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi Robert,

I attached two screenshots. As you can see, I am doing nothing fancy here.
There is a VirtualPlanetBuilder model present in the scene, but this model
is hidden for my test case. The test scene contains only some thousand
triangles and I am using a GeForce 1080 which can handle much more.
Currently I have no idea what is going wrong here.

-André


2017-03-07 11:33 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:

Hi André,

I can't think of any changes between 3.2.x and 3.4.0 that would cause
a slow down like you are describing.

The best way to start looking at what might be the cause would be to
isolate what part of the application is the bottleneck, the first step
would be to use on the on screen stats and then look at the costs of
the update, event, cull, draw dispatch and draw GPU phases.

Also have a look at the full stats with to see if there is a different
number of nodes or state being rendered in the two cases.

Robert.



On 7 March 2017 at 08:21, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
Hi,

I am currently migrating from OpenSceneGraph 3.2.3 to 3.4.0. In my
application I get a significant slow down, when I share nodes. Here is
a
quick example layout of my scenegraph:


Parent
   |
   + ---> MatrixTransform1 --> Node1
   |
   + ---> MatrixTransform2 --> Node1
   |
   ...
   |
   + ---> MatrixTransform3 --> Node1

I have a root node with several MatrixTransforms. The nodes below the
MatrixTransforms are shared. In 3.2.3 everything works well and I have
a
framerate of 60 Hz. In 3.4.0 the framerate drops with each new added
MatrixTransform. But when I do not share the nodes and instead create
clones
with a DEEP_COPY_ALL flag, everything is well in 3.4.0.

So what could cause the slow down in 3.4.0 with node sharing?

I am using OpenSceneGraph 3.2.3/3.4.0 with a release build on Window 7.


Best regards,
André


_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)

http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org



















------------------
Post generated by Mail2Forum
Back to top
robertosfield
OSG Project Lead


Joined: 18 Mar 2009
Posts: 10859

PostPosted: Wed Mar 08, 2017 8:47 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Andre,

On 8 March 2017 at 08:40, Andre Normann <> wrote:
Quote:
hopefully I am getting closer. I find out, that the source model might be
the problem. I exported an obj file from Bentley Microstation and imported
into OpenSceneGraph. When I now export the scene into an osg file, I see a
lot of PrimiteSets (e.g. > 1000). So I will end up with a lot calls to
DrawElementsUShort. When I load the obj file into 3dsmax convert it into a
fbx file and reexport it from OpenSceneGraph into an osg file, I have only
one PrimitiveSet with one DrawArrays call. This file is working well in
3.4.0 with sharing nodes.

So I guess there might be a problem with sharing osg::Geometry which has a
lot of primitive sets. In 3.2.3 it was working well. What do you think?

It sounds like data import path is the crucial part, perhaps changes
to the .obj plugin between 3.2.3 and 3.4.0 are what is causing the
difference.

Doing an:

osgconv myfile.obj myfile.osgt

In 3.2.3 and 3.4.0 will tell you the differences that the plugin and
any optimization passes are making.

Is there any chance you could share an example of one of these .obj
files that is causing the performance problems?

Robert.


------------------
Post generated by Mail2Forum
Back to top
View user's profile Send private message
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 9:41 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Robert,

I used 3.2.3 to load the obj files and converted it into ive format. In 3.2.3 I load the ive file, build my scenegraph and I get 60 fps. When I now load the same ive file into 3.4.0, build my scenegraph, I get the slow down. 


- There must be something which is causing the slow down in OpenSceneGraph
- The obj loader is creating a lot of primitive sets, which is not optimal. In near future I will try to fix that issue.


I created a test file. Simply do an "osgviewer SlowDownTest.zip".






2017-03-08 9:45 GMT+01:00 Robert Osfield < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Hi Andre,

On 8 March 2017 at 08:40, Andre Normann < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)> wrote:
Quote:
hopefully I am getting closer. I find out, that the source model might be
the problem. I exported an obj file from Bentley Microstation and imported
into OpenSceneGraph. When I now export the scene into an osg file, I see a
lot of PrimiteSets (e.g. > 1000). So I will end up with a lot calls to
DrawElementsUShort. When I load the obj file into 3dsmax convert it into a
fbx file and reexport it from OpenSceneGraph into an osg file, I have only
one PrimitiveSet with one DrawArrays call. This file is working well in
3.4.0 with sharing nodes.

So I guess there might be a problem with sharing osg::Geometry which has a
lot of primitive sets. In 3.2.3 it was working well. What do you think?

It sounds like data import path is the crucial part, perhaps changes
to the .obj plugin between 3.2.3 and 3.4.0 are what is causing the
difference.

Doing an:

    osgconv myfile.obj myfile.osgt

In 3.2.3 and 3.4.0 will tell you the differences that the plugin and
any optimization passes are making.

Is there any chance you could share an example of one of these .obj
files that is causing the performance problems?

Robert.


------------------
Post generated by Mail2Forum
Back to top
Alberto Luaces
Guest





PostPosted: Wed Mar 08, 2017 11:31 am    Post subject:
Slow down with shared nodes
Reply with quote

Andre Normann writes:

Quote:
Hi Robert,

I used 3.2.3 to load the obj files and converted it into ive format. In 3.2.3 I load the ive file, build my scenegraph and I get 60 fps. When I now load the same ive file into 3.4.0, build my scenegraph, I get the slow down.

Hi Andre, I guess the point was to convert to .osgt since it is a text
format and therefore you can compare both easily with a diff tool or an
editor.

--
Alberto



------------------
Post generated by Mail2Forum
Back to top
Andre Normann
Guest





PostPosted: Wed Mar 08, 2017 11:34 am    Post subject:
Slow down with shared nodes
Reply with quote

Hi Alberto,

I did it. The two files differ only in format style but not the syntax. I would say the two files are identical. With the provided example every one can reproduce the slow down effect.


-André


2017-03-08 12:28 GMT+01:00 Alberto Luaces < (
Only registered users can see emails on this board!
Get registred or enter the forums!
)>:
Quote:
Andre Normann writes:

Quote:
Hi Robert,

I used 3.2.3 to load the obj files and converted it into ive format. In 3.2.3 I load the ive file, build my scenegraph and I get 60 fps. When I now load the same ive file into 3.4.0, build my scenegraph, I get the slow down.

Hi Andre, I guess the point was to convert to .osgt since it is a text
format and therefore you can compare both easily with a diff tool or an
editor.

--
Alberto

_______________________________________________
osg-users mailing list
(
Only registered users can see emails on this board!
Get registred or enter the forums!
)
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




------------------
Post generated by Mail2Forum
Back to top
Alberto Luaces
Guest





PostPosted: Wed Mar 08, 2017 11:47 am    Post subject:
Slow down with shared nodes
Reply with quote

Andre Normann writes:

Quote:
Hi Alberto,

I did it. The two files differ only in format style but not the syntax. I would say the two files are identical. With the provided example every one can reproduce the slow down effect.

Sorry, I was confused by the fact that only one file was sent.

I still get 60fps with 3.4.0, but my system is quite different than
yours.

--
Alberto



------------------
Post generated by Mail2Forum
Back to top
Display posts from previous:   
Post new topic   Reply to topic    OpenSceneGraph Forum Forum Index -> General All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum

Similar Topics
Topic Author Forum Replies Posted
No new posts Removing stateset for all assoc nodes... YuraIU02 General 1 Wed Apr 12, 2017 12:10 pm View latest post
No new posts Fast move a lot of nodes to another g... YuraIU02 General 27 Fri Mar 31, 2017 8:05 am View latest post
No new posts Multisampled FBO camera with shared d... HonzaS General 0 Fri Mar 17, 2017 3:19 pm View latest post
No new posts slow speed of osgDB::writeImageFile()... cbuchner1 General 0 Mon Sep 12, 2016 9:09 am View latest post
No new posts how safe is to add nodes in cull trav... Trajce Nikolov NICK General 3 Sat Sep 10, 2016 11:44 am View latest post


Board Security Anti Bot Question MOD - phpBB MOD against Spam Bots
Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP