I will be working on improving the general performance of display during the development of V6. @jeff will also be helping with this, but his focus is generally on improved stability and new display features. My plan is to continue to contribute to this post over time with updates of what I am working on or thoughts about what I am attempting to do. Please feel free to provide feedback or general thoughts in this thread, but try to keep it oriented toward display performance in V6.
In the build available today (Aug 7,2014), performance improvements have been made to text dots.
Text dots should now be anti-aliased and display significantly faster than in V5. I realize that dots may not be a high priority object type to many of you, but I started with this object type for several reasons:
- Dot display performance is pretty bad in V5. I have seen models with 1000s of dots while visiting users and their models are slow to display purely due to these dots
- Dots were always drawn with aliased edges which just bugged me
- I need to start figuring out a new caching system for our display architecture. Dots are a simple entity that I could focus on creating a caching system without going insane trying to deal with all of the little quirks involved with drawing other types of geometry
To see the difference between the speed and look of dots, you can use the “TestNewDotDisplay” command to toggle between the V5 mode and V6 mode. As always “TestMaxSpeed” is a good way to see the performance difference.
If you see any oddities with text dots please let me know. The technique used for drawing this object type in V6 is radically different than V5 so I wouldn’t be surprised to see some bugs crop up.
I’ll assist in any way I can.
To me the biggest wish are:
- a speedup regarding blocks
- static shadows that are not recalculated if nothing is moved
- a speedy mode (v4 style)
- a presentation mode where only the rendermeshes are used, again to speed up the framrate.
Oh, and I presume you are talking about TestMaxSpeed and not TextMaxSpeed
Dots 6x faster here…
Are there any thoughts about improving the pipeline in general?
To be more specific, I (we) often find the computing power of the graphics adapter not to be the limiting factor for frame rates. Is there anything to get more work transferred to the GPU?
That is all part of the performance improvements and is exactly why I need to design a new caching system. With respect to text dots, V6 is using cached textures on the GPU for the text portion of the dot. The text dots need to know that these textures exist and be able to create/destroy textures when appropriate. The same goes for many other geometry types.
I guess the transparent text dot bug is gone with this re-write? Thanks.
This might be the correct place to ask [though not necessarily the right time ].
The top-of-the-notch (at least 6 years ago) GPU on my home PC fried and I have been holding off replacing it pending development of RH6.
First off, I basically don’t know what I’m talking about - bottom line is only a RH6-safe GPU recommendation
I see that there is more to display than just the GPU… But as drivers appear to be an issue, will the display engine continue to run on OpenGL 2(?) calls only? I guess Neon runs on something else and Cycles apparently does CUDA and OpenCL…
I don’t believe so. The transparency bug should be unrelated to the rewrite of text dot display.
I don’t really think this is the correct place to discuss this topic. Jeff is working on using features available in OpenGL 4, but that still doesn’t give me any good way to give advice on a card to purchase.
That’s fine. Thanks for the feedback! There’s no rush on my part.
The next build (due out today or tomorrow) will no longer have the TestNewDotDisplay command. I tore out all of the old dot drawing routines and now have everything piped through this new function. There may be some bugs, but I’m pretty confident this is going to be a better way to draw text dots in V6 so there is no reason to keep the old code cluttering up the place.
Hi Steve, I made a simple test to compare this and on my laptop V6 is 15X faster than V5!
V5: 23.95 seconds
V6 1.56 seconds
So keep on hacking!
PS, if they are selected in V6 it is a bit slower, 1.92 seconds.
Oh and PPS! V6 died when I tried to run 100x100 items.
Here is the test:
import rhinoscriptsyntax as rs import time n=30 rs.CurrentView("Perspective") strView=rs.CurrentView() rs.EnableRedraw(False) for i in range(n): for ii in range(n): rs.AddTextDot(str(i)+","+str(ii), (i,ii,0)) rs.EnableRedraw(True) rs.CurrentView(strView) rs.ZoomExtents(strView) rs.Sleep(1) rs.Command("_TestMaxSpeed")
By ‘died’, does that mean V6 crashed? My current caching scheme is not smart enough to place any sort of sane caps on what to store, so if Rhino is crashing it is probably because I’m just dumping too many tiny textures on the card.
Your test is the worst case scenario in that none of the dots share the same text. Does Rhino die if you run 100x100, but all with the same text?
Yes, “died” means crash, badly. Screen flickering and Rhino not disapperaing. Crash report pops up.
If I use “hello” then it still crashes, so I’ll check how many items the machine handles, the ram use is fine. The card is a GeForce 330M with 512MB Vram.
Hm, it crashes after a few runs no matter if I use “hello” or custom text. I can run ut at 60x60 items, but only two times as it crashes on the third. So can the “undo stack” keep stuff in the Vram that uses it up?
I wonder because the test runs fast the first time, then the next run is slow to generate, it spins fast, but takes time to precalculate. And the third run is even slower and crashes.
Probably a dumb bug in my code; I’ll try to reproduce this on my computer
Edit: yep, this was just a dumb bug. It will be fixed in next week’s build.
Thanks for setting up this test case.
Hi Steve, I ll be happy to test it. But it will only be in a week since I am on holidays without PC now. Where can I get Rh6 ?
To respond, reply to this email or visit V6 Goal: Display Performance in your browser.