This implements the Loop/Blinn algorithm for quadratic curves as an optional backend for Qt Quick Shapes, basically distance fields where the distance to curves are calculated in the fragment shader. This means cubic curves are approximated, which will give varying results, but for many shapes (such as text) this is efficient and means the shapes can be zoomed indefinitely while still retaining curvature as well as anti-aliasing working without MSAA. Preliminary results give some frame rate improvements compared to doing MSAA and GeometryRenderer, but the major improvement is that you can get smooth curves at any zoom level without re-triangulating the shape. Note that the renderer currently does not do antialiasing for straight lines. This would still require MSAA, but at a lower cost than for GeometryRenderer since there are much fewer triangles. Adding AA here as well is work in progress. Task-number: QTBUG-104122 Done-with: Paul Olav Tvete <paul.tvete@qt.io> Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io> Done-with: Amr Elsayed <amr.elsayed@qt.io> Change-Id: I6b4a1103546fbdfe760906f7a183101f8eedb9d3 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> |
||
---|---|---|
.. | ||
1535737773.svg | ||
CMakeLists.txt | ||
ControlPanel.qml | ||
ControlPoint.qml | ||
ControlledShape.qml | ||
CubicShape.qml | ||
FONTLOG.txt | ||
Graziano.ttf | ||
OFL-FAQ.txt | ||
OFL.txt | ||
README.md | ||
SimpleShape.qml | ||
SmallPolygon.qml | ||
Squircle.qml | ||
SvgShape.qml | ||
TextShape.qml | ||
arcDirection.qml | ||
arcRotation.qml | ||
background.png | ||
capStyles.qml | ||
cubicCurve.qml | ||
dashPattern.qml | ||
debugpaintitem.cpp | ||
debugpaintitem.h | ||
debugvisualizationcontroller.cpp | ||
debugvisualizationcontroller.h | ||
ellipticalArcs.qml | ||
fillRules.qml | ||
gradientSpreadModes.qml | ||
hand-print.svg | ||
joinStyles.qml | ||
largeOrSmallArc.qml | ||
linearGradient.qml | ||
main.cpp | ||
main.qml | ||
peace_victory.svg | ||
quadraticCurve.qml | ||
radialGradient.qml | ||
strokeOrFill.qml | ||
svgpathloader.cpp | ||
svgpathloader.h | ||
text.qml | ||
tiger.qml |
README.md
SVGs included: peace_victory.svg: Public Domain by OpenClipart (https://freesvg.org/peace-sign) hand-print.svg: Public Domain by OpenClipart (https://freesvg.org/palm-print-in-black-and-white) 1535737773.svg: Public Domain by publicdomainvectors.org (https://freesvg.org/piece-of-cake-4)
Fonts included: Graziano.ttf: by Graziano Capelli (https://fontlibrary.org/en/font/graziano), OFL (SIL Open Font License)