Thursday, August 16, 2012

Qt5 Cinematic Experience


During the past ~20 months I've made several blog posts about Qt5, QML Scene Graph, shaders and whatnot. As Qt5 beta is getting reeeeally close, I thought this would be a good time for a fresh Qt5 technology demo. This one is called 'Cinematic Experience' and looks a bit like this:


(best viewed in HD)

Cinematic Experience collects many of the new Qt5 QtQuick 2.0 features into the same UX demo application. It uses particles, sprites, path animation, custom shaders etc. features which Qt5 introduces for QML UIs. As usual, source codes are available from here.

Performance note: The GPU in N9 (SGX530, released Jul 2005) is showing its age. Especially fragment shaders need to be very conservative as the GPU just isn't powerful enough for the N9 screen resolution. To get the application perform in N9, some optimizations were required like disabling the normal-mapping lighting and reducing the amount of fog particles. As seen in the video, after these tweakings N9 can run the demo okeyish. Definitely far from velvet, but I would say it's more like butter ;P

PS. In case you own RPi, Beagleboard, Pandaboard, Snowball or any other embedded hardware running Qt5, please grab the demo and give it a go. I'm waiting for feedback and videos!

10 comments:

Holger Schurig said...

Absolutely awful demo.

Don't get me wrong: what is possible might be nice.

But the effects are just distracting from the purpose of the application. They make the covers less easy to read.

And when you press the "i"nformation button the zigzagged text is also not easy to read. Worse when you scroll vertically, I almost get a headache.

I hope that you don't set a precendent for wannebe-hackers.

Does Qt5 have a system-wide configuration file where I can disable this useless gimmicks, should I ever install an application where the programmer(s) decided to put that in?

Kaitsu said...

@Holger: Thanks for comments!

Yes, there is a bit "too much" and that's by design =) Demo tries to show what kind of things are possible with Qt5, not present a real application UI.

Zigzagged text is a good example which hardly fits any desktop application, but might be e.g. suitable for games. And if you peek into sources, it's easy to adjust the amount of effect with InfoView.qml endCurly property, so zigzagging can also be very subtle ;)

kedadi said...

Wonderful demo, you rock Kaitsu.

This is probably one of the best demos I've seen in my life, along with Qt5 demos made by Andrew Baldwin.

@Holger: I hope you get the idea behind it; it's not a final product but more a showcase of Qt5 capabilities.

p.s.
@Kaitsu: I'm getting an error when I run the demo.

$ ~/qt5/qtbase/bin/qmlscene Qt5_CinematicExperience.qml
ASSERT: "i >= 0 && i < elementCount()" in file painting/qpainterpath.cpp, line 499
Aborted

I just updated both, Qt5 and QtGraphicalEffects to the most recent revision, but the error is not going away.

Kaitsu said...

@kedadi: Thanks! Andrew really does magic.. real magic

About the error, I haven't seen that and tried also with very latest Qt5. I think only PathAnimation is utilizing QPainterPath, so either Qt5 has a bug which triggers with your HW or your Qt5 build is somehow messed up... Please try to make a clean Qt5 build and if this still happens, report a bug into http://bugreports.qt-project.org

Thanks!

capisce said...

Tested it on the Raspberry Pi, runs pretty well :)

Kaitsu said...

@Samuel: Great, thanks for testing! I had high hopes that RPi Broadcom VideoCore IV can pull this through at least with some effects disabled, good to know it performs OK!

kedadi said...

@kaitsu

Looks like my Qt5 was messed up. I just did a fresh clone and build, and it works great :).

Thanks again for this great demo.

Florian said...

Awesome demo! Tested it on the Beagleboard xM, resulting in a frame rate of about 12 fps only (all features enabled). Is the Beagleboard GPU that much slower than the one of the Raspberry Pi? Or are TI's OpenGL drivers simply crap?

Kaitsu said...

@Florian: What was the resolution? Beagleboard xM has the same SGX 530 GPU as N900&N9 which is really showing it's age. 12fps sounds anyway quite low, especially if you used the more optimized RPi version... Thanks for testing!

Florian said...

@Kaitsu: Resolution was 1024x600. Yes, I used the RPi version. According to my web research SGX530 GPU has some 1.6 GFLOPS compared to 24 of the RPi Broadcom GPU. Don't know whether this justifies the performance difference. Maybe it's just a driver issue.

http://en.wikipedia.org/wiki/PowerVR#Series_5_.28SGX.29

http://www.raspberrypi.org/faqs