Great explanation and break down Richard. I very much enjoyed this.
-- Tom McGrath III http://lazyriver.on-rev.com 3mcgr...@comcast.net On Oct 12, 2011, at 9:54 AM, Richard Gaskin wrote: > James Hurley wrote: > >> Thank you for this Bernd. It is going to take me a while to digest these new >> graphic features in 5.0. I confess I am unaware of the interaction between >> RR code and the display on the screen. That's probably important. :-) >> >> Like you, I don't see much improvement of 5.0 over 4.6 in animation. The >> effect of lowering the syncRate, not so much the rate as the time between >> syncs (?), is significant, but then that was something available to us in >> 4.6--except that I didn't know it. The nomenclature suggests that it is the >> frequency, when it appears to be the period. And, as we all learned in >> physics, one is the reciprocal of the other. >> >> I would like to see a little help from RR on these new features--by way of a >> demonstration stack perhaps. > > Yes, I think that's going to be necessary, and over time as more is > understood about the new rendering scheme, hopefully there will also be more > intelligent defaults so users can immediately see at least some benefit > without having to do multiple iterations of experimentation. > > The v5.0 rendering engine represents perhaps the biggest change in the > history of the engine to how objects are rendered on screen. The upside is > that it's possible to see graphics performance increase many times over > previous versions. The downside is that it's not easy to realize that > performance gain without a great deal of experimentation. > > In earlier versions, cards were rendered using a very brute-force method, in > which every time there was a screen refresh every object was rendered from > back to front until all had been rendered, and then that composite image was > copied to the graphport of the window in which the card is displayed. > > So simply moving a single billiard ball, which might actually affect only one > small portion of the screen, caused the entire screen to go through that > rendering process. It was thorough and robust, but often redundant. > > In the new rendering engine, the screen composite is divided into tiles, and > logic is applied to determining whether a given tile is affected by a given > change. Those tiles that are affected will be re-rendered, while those that > aren't will simply retain their last rendering and use that to copy to the > window for the finished result. > > There is a certain amount of additional internal overhead to this tiled > scheme, however, since it now has to keep track of multiple sections of the > screen and run through that hit-testing to determine which ones need to be > re-rendered. On the one hand, more tiles can mean less re-rerendering, but > on the other hand it means more tile management. > > So the key to using the new graphics engine effectively boils down to finding > the right tile size optimal for your particular layout and the nature of the > changes happening within it. > > If you have relatively small objects whose changes affect relatively small > portions of the screen, you may find a smaller tile size will offer greater > performance. > > But if even a small object moves over a large area, a larger tile size may > provide even better performance. > > The optimal tile size can't be known in advance, because it depends on a wide > variety of factors driven by scripts that may exist in the objects on the > card themselves, or even in some remote library, and the sum of their > interactions may be too complex to expect that the engine can figure out in > advance how to set an optimal tile size. > > So in v5, to take advantage of this new rendering scheme we need to > experiment with different tile sizes, some larger and some smaller, and > perhaps even different rendering engines on the platforms they're available > on (LC now uses OpenGL, for example, on platforms where that technology is > available). > > Through the evolution of this new engine, developers on the dev list noted a > wide range of performance results from "worse than before" to "OMG this thing > just flies!", depending on the different combinations of tile sizes and other > rendering options they took the time to experiment with. > > Given the complexity of the new renderer, and how much conceptualization and > experimentation is required by the user to use it well, it could be argued > that it has introduced a level of complexity that seems counter-productive to > RunRev's goal of delivering the simplest system possible for delivering > professional software. > > But I believe that as we use it more often, and as experimentation and > development continue at RunRev, we will shortly see ever-better versions of > this engine which are able to apply defaults which provide at least some of > the benefits, leaving further performance enhancement to those developers who > need it and will be willing to put in the time to apply it effectively. > > In the meantime, it's my understanding that the current defaults should be > using rendering methods roughly on par with previous versions, so ideally > just running stuff you've already written should perform as well as it did > before. > > And if you want it even faster, just set aside some time to experiment with > different tile sizes and chances are you'll have a "Wow!" moment once you > find the right combination for your layout. > > -- > Richard Gaskin > Fourth World > LiveCode training and consulting: http://www.fourthworld.com > Webzine for LiveCode developers: http://www.LiveCodeJournal.com > LiveCode Journal blog: http://LiveCodejournal.com/blog.irv > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode