{ "QEN": { "description": "Bends the source to circle / arc in the vertex shader.", "name": "CircleBend", "properties": [ { "defaultValue": "0", "description": "Start angle for the circle bending in radians.", "maxValue": "6.283", "minValue": "0", "name": "circleBendStartAngle", "type": "float" }, { "defaultValue": "6.283", "description": "Spanning angle for the circle bending in radians.", "maxValue": "6.283", "minValue": "0", "name": "circleBendSpanAngle", "type": "float" }, { "defaultValue": "0.2", "description": "Width of the bending ring. Values are between 0.0 and 1.0 (full size of the source item).", "maxValue": "1", "minValue": "0", "name": "circleBendRingWidth", "type": "float" }, { "customValue": "Qt.point(width, height)", "defaultValue": "0, 0", "maxValue": "1, 1", "minValue": "0, 0", "name": "circleBendTexSize", "type": "vec2", "useCustomValue": true } ], "version": 1, "vertexCode": [ "@mesh 512, 1", "@main", "{", " const float PI_H = 1.5707964;", " vec2 vPos = vec2(0.5);", " float s = 0.5 - 0.5 * circleBendRingWidth + texCoord.y * 0.5 * circleBendRingWidth;", " float spanX = texCoord.x * circleBendSpanAngle;", " vPos.x += s * sin(circleBendStartAngle + spanX);", " vPos.y += s * sin(circleBendStartAngle + spanX + PI_H);", " vPos *= circleBendTexSize;", " vertCoord = vPos;", "}", "" ] } }