Hello Dimitri, I did check back through several things, and we never really got the issue fully resolved. We did figure out certain speeds that worked ok. This happens with text scrolling across the screen as well. We did eventually change how we presented things that sort of rolled up onto the screen with the intent of returning to it. I haven't really had time to see how much of this I can resolve with the current tool set but I am playing with it inbetween things. The stuff I oversaw was all for use on the AppleTV and that framework.

It has caught my attention again and I will see what I can resolve for you. I did notice that adding a small gap (at least a pixel) between images helped alot of flickering on various edge issues. We also used BASH to build an array that was loaded a certain intervals. This allowed us external changes to the data in the array (images). And the composition only had to worry about display. It solved several things, but that may not work for you.

As I said, I'm going to play around with it some more. Have you talked with those talented people over at Kineme? I've always been impressed with some of the solutions.

Back to you asap.

--

Jason Belec

1-613-482-9737

[email protected]









On 26-Feb-09, at 6:57 PM, Dimitri Delcourt wrote:

Hello List / George,

It doesn't seem to get smoother on my side. This is wicked! Jason, did you figure out how to make it work?

I am trying to figure out a solution where the interpolator would not be replicated inside the iterator with each image, maybe using the <Range> patch and <Rolled over value> which could produce a circular system.

I'm busy on another project so I'll try this in a few days…

dimitri



On 24 févr. 09, at 04:20, George Toledo wrote:

I don't know about you guys, but unchecking synchronous download on the image downloader makes this perform much better on my system, removes the stutter on the 7th image, and levels out the frame rate dips, and makes the images not do that weird stutter step on loading 8 out of 10 times ( and I mean "loading" from a freshly started qtz, with the synchronous unchecked). When I do see the stutter on load, it is very minor. GMAX3100 here...

-George Toledo

On Mon, Feb 23, 2009 at 9:57 PM, Jason Belec <[email protected]> wrote: Well this version is much better. I did realize that in Quartz Prefs you can set the Maximum FPS, I had my set at 30 FPS previously so I set to Unlimited. Now we run between 30 and 60 and things constantly jump back and forth with minor variations.

I do notice the dreaded stutter now and again. Various in frequency and intensity depending on speed.

I get the same CPU usage, I've got something similar in a large project, I will pull it out tomorrow and see if I can compare and offer you far better advice.

Every 7th image loaded is the stutter/hesitation.


--

Jason Belec

1-613-482-9737

[email protected]









On 23-Feb-09, at 8:02 PM, Dimitri Delcourt wrote:

Hi List, Chris, Troy, Jason,

I'm not a professional developper, but i would say from the experiment that the problem lies in the interpolator inside the iterator. Would that be correct?

Here's what i did:

- Downsampled the pictures, now they weigh 1/4 of what they weighed before
- Slowed down the animation
- Changed to backgrounds "Nature" because there are more images
- Added an "Enable images" option (Christopher's remark)
- Added a "Force loading to VRAM" option. Tricking QC by displaying all images at once and for a few seconds in a separate iterator - Added a "View range" option to kill processes some sprites processing at will (to release the iterator pressure, Jason's remark) - Added a "Speed boost" option that interpolate 60 times a second (to test Troy's sync remark)

Observations:

- Downsampling the images doesn't seem to help. Activity monitor displays 8-12% of CPU and it doesn't accelerate calculations. - Displaying all images at once eventually helps at the beginning, if you don't, each image is obviously read from disk the first time, and it stutters heavily at each new image until they have all been displayed once. - Killing sprite processes helps a bit, but the animation still has some stalls even with only 3 iterations - Boosting the speed reveals that the interpolation is not synced. It should more or less display the same images in the same position which it does to some extent, but you will see that after a while it gets desynced. (Famous bicycle wheel and camera effect)

So even with a few, scaled down images in the iterator, the interpolation does simply not sync to the screen refresh rate. Even when disabling the images! I see the fps dancing around 59, 42, 33, 19, up again. What does actually hit the CPU?

Interesting information: on my side, I am alternatively loading a folder with 1400 photos (600px * 600px) and the performance is not worse, not better (aside from the fact that it needs 30 seconds to force load them in VRAM).

I'm attaching the updated composition, still hoping that someone will find an obvious logic flaw that i can't see myself...

dimitri


<Directory_Interpolation_test02.qtz>



On 23 févr. 09, at 23:16, Troy Koelling wrote:
Be aware that QC framerate is synced with the monitor refresh rate. That means that if it can't keep up at the monitor's refresh of 60fps it's going to drop to the next multiple of two: 30fps. Or if the composition is running pretty good at 30 then something hits the CPU and it has to drop 5 frames so it can actually handle 25fps, it will draw at 15fps because of the refresh sync.

There are ways to make it draw as fast as possible without the sync in your own application, but the Quartz Composer app doesn't support* that. It would likely cause tearing in the rendering where only half the frame was updated before put on screen.

If you want to read more about this, google for NSOpenGLCPSwapInterval



On 23 févr. 09, at 19:07, Jason Belec wrote:

I ran this under latest Leopard on MacBookPro 17" CoreDuo 2GB RAM and had 29.0-29.9 FPS consistently varying between these values - BUT, every now and then, without anything else being done I would see a drop to about 15 FPS then right back up. I also noticed a small stutter between images that can be exasperated easily by increasing the size, specifically the width quite a bit. I think a buffer is needed or pre-load and attach images as a single image (or a few) and roll it as they scroll across the screen.

--

Jason Belec



On 23-Feb-09, at 12:47 PM, Dimitri Delcourt wrote:

Christopher,

could it be that one of your magic plugins is secretly handling the rendering? on my MBP the fps is lounging between 58 and 15, and funnily enough i have serious jitters.

I wouldn't mind if it stayed around 30 fps or even 20 fps if it stayed constant —

But even if i cap the rendering to 20 fps in the preferences, I'm experiencing different rendering speeds over time (even in the course of a second), the GPU seems to stall, become more fluid, stall again.

I'll test further according to your tips and report, I really need to get this going on 3 screens pretty soon!

Thanks for the time!

dimitri



On 23 févr. 09, at 15:52, Christopher Wright wrote:

- I am having this problem with my MBP 2.53GHz, NVidia 9600M GT, and on my iMac 2.4GHz, ATI Radeon HD 2400 XT.
Looks like you're hitting a case of the "NVidia's Drivers are sucktacularly bad, or QC has some magical code that only misfunctions on nvidia hardware" issue (this pops up from time to time, Apple is aware of the issue, the only workaround is get a different video card [not possible got MBPs]). I'm getting ~250 fps on my GMA950, so it's definitely not a difficult composition. A rare case of Old soundly beating New :)


Just kidding -- tested it on my MBP (nvidia also), and it's still puling 280-440 fps. I guess you mean the slight stall only (drops to ~55-65fps for me), as reported by the minimum fps mode reporter.

Those images should be vram. OpenGL Profile on an nvidia says that 97% of the gl time is spend in CGLFlushDrawable, while for other compositions I have it's much smaller (a few percent at worst). Not sure if that's significant, but it looks like it's capping the maximum framerate pretty severely.

Removing the image structure input, it doesn't really affect the performance (the minimum frame rate jumps a bit, but is still suffering), so it's not a texture problem. Removing more inputs doesn't really help either (so it's not a complex-graph- evaluation thing)

Ultimately: create a new composition, add a clear patch, add an iterator, add a sprite to the iterator, add a patch time to the enable input of the iterator (so we get it running, instead of a static composition), and then an fps, and you'll peak at about 90-100 fps (no image loading/texture swizzling/ whatever). On my machine, that's only a few fps higher than textured for me, so perhaps iterators are the culprit?

--
[ christopher wright ]
[email protected]
http://kineme.net/


        .......



        .......

        
        Dimitri Delcourt
        Graphiste indépendant

        C/o C-Side
        Rue de la Coulouvrenière 8
        CH - 1204 Genève
        T + 41 78 843 76 04

        [email protected]


        .......

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected] )
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/jasonbelec%40rogers.com

This email sent to [email protected]

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to