What is this project ==================== This project is a QML extension plugin which provides two new QML elements (ShaderEffectItem & ShaderEffectSource). These elements can be used to embed OpenGL(ES) shader language code directly into QML. How is it implemented ===================== Plugin implementation is a backport from scenegraph project (http://labs.qt.nokia.com/2010/10/08/qt-scene-graph-round-2) and the QML API has been kept as similar as possible, but there are some minor deviations. Adaptation to QGraphicsView (instead of scenegraph) is implemented inside following classes: - shadereffect.cpp - shadereffectitem.cpp - shadereffectsource.cpp - shadereffectbuffer.cpp - scenegraph/qsggeometry.cpp (identical to the scenegraph version) Additionally there is some code related to qml extension plugin mechanism and opengl function usage. Why is it implemented ===================== Scenegraph (a.k.a QtQuick 2.0) is not yet released officially and it is somewhat incompatible with QGraphicsView based QtQuick 1.x packages. This plugin aims to provide early access for the developers to combine the power of QML and GLSL. Requirements ============ Qt 4.7 (or later) QtDeclarative and QtOpenGL modules are required. Build & install instructions =========================== Compile and install the plugin with commands: qmake qmlshadersplugin.pro make install Finally check that the plugin binary libary can be found from $QTDIR/imports/Qt/labs/shaders Usage instructions ================== Take a look at "helloworld" and "shadereffects" apps in the examples folder. There is also some API documentation about the new QML elements available in html format in the doc/html folder. Known differencies between this plugin (Qt.labs.shaders) ShaderEffectItem and scenegraph (QML 2.0) ShaderEffectItem =================================================================================================================== These differencies are changing almost daily as QML 2.0 is still currently under development, but here are some major known issues: - ShaderEffectItem cannot use source items that have property 'visible' set to false or are outside the view area. QML2.0 can use also these. - ShaderEffectItem requires Images to be used via ShaderEffectSource items. QML2.0 can work also on images directly. - ShaderEffectItem/source texture coordinates are not flipped, QML2.0 may have flipped coordinate system. - ShaderEffectSource does not draw itself, QML2.0 version does. - ShaderEffectSource does not support mipmaps, multisampling, culling or other texture formats than RGBA. These are supported in QML 2.0. - ShaderEffectSource grab() is asyncronous, in QML2.0 it is syncronous. - ...