Important: Please read the Qt Code of Conduct -

QML ShaderEffect and property type

  • Hi all,

    I would like to pass a matrix3x3 to my openGL script but I can't find the right type to use in QML.
    It works with a matrix4x4 in the following example :

    ShaderEffect {

    property matrix4x4 uMatrix: Qt.matrix4x4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1)


    Unfortunately the QML type "matrix3x3" does not exist. I tried many other types without success.
    Does anyone have a solution please ?

  • Could you just use the matrix4x4, and then just fill the 4th column with '1'?
    The shaders are always using 4x4 and 4x1, and I guess that you are using the matrix in your shader. Post your full code, maybe I can help some more.

  • amund_l Thanks for reply.
    In my shader I use a matrix3x3 so I would like to set it directly from QML.
    Another solution would be to convert a matrix4x4 to matrix3x3 at the beginning of my shader. Is it possible ?
    Something like :
    mat3 matrix3x3 = matrix4x4 * ???;"

  • The property types which are provided by QtQuick are listed at however not all of them have conversions to uniforms/varyings in ShaderEffect. Matrix3x3 doesn't exist at all. vector2d, vector3d, vector4d, quaternion and matrix4x4 should all have conversions.


Log in to reply