Krita Paint Program Will Get SVG Mesh Gradients, Storyboard Docker, MyPaint Brush Engine And Dynamic Fill Layers Thanks To GSoC Students
Four students have been working hard on new functionality for the already superb Krita painting program as part of Google's Summer of Code program this summer. Support for dynamic fill layers using Disney's SeExpr expression language has made it into the Krita 4.4 branch scheduled to be released later this month. Krita 5.0, coming next year, will additionally have support for mesh gradients, storyboard and the MyPaint brush engine thanks to these students hard work.
The Krita painting program is one of the most successful free software projects of all time, mostly thanks to the great Windows support they provide. There are, after all, a lot more people using Windows than there are people using fully free operating systems.
Four young programmers worked on four very different projects adding new features and functionality to Krita this summer. All of them managed to reach their goals and their code will either be a part of the Krita 4.4 release coming later this month or the big Krita 5.0 release coming early next year.
SVG Mesh Gradient Support By Sharaf Zaman
Developer Sharaf Zaman is not new to the Krita project. He participated in the Krita Google Summer Of Code program in 2019. He spent that summer successfully porting Krita to Android. The Android version available in the Google Play store has been downloaded more than 50,000 times.
The new Krita Mash Gradient feature implemented by Sharaf Zaman this summer.
Sharaf Zaman spent this summer implementing mesh gradients in Krita. This involved extending Krita's existing SVG parster to support mesh gradient rendering and a new user-interface for manipulating mesh gradients.
The merge request for the mesh gradient code is still open. Sharaf Zaman is still adding improvements to the code. It will likely get merged in time for Krita 5.0. It won't be in the Krita 4.4 release scheduled to be released later this month.
Storyboard Docker by Saurabh Kumar
Saurabh Kumar made a storyboard docker feature for Krita this summer.
Saurabh Kumar spent the summer implementing a new storyboard docker for managing storyboards in Krita. It ties into Krita's existing animation features to allow quick and easy switching between the various boards. Support to PDF and SVG files has been implemented.
Dynamic SeExpr Expression Fill Layer Support By Amy Spark
Krita 5.0.0 pre-alpha showing off the new Dynamic SeExpr Fill Layers using the Malachite pre-set as an example.
Developer Amy Spark has implemented a new type of Dynamic Fill layers using the SeExpr expression engine developed by Disney Animation under the Apache License 2.0. SeExpr is a procedural graphics expression language similar to vector graphics in nature. A layer with a single color can be created in SeExpr with somewhat simple statements:
$ratiov = $h/$w; $uv = [$u, $v*$ratiov, 0]; $uv = $uv+vfbm($uv); $uv = $uv+vfbm($uv); $uv = $uv+vfbm($uv); $uv = $uv+vfbm($uv); $c = fbm($uv); $color = ccurve($c,0,[0,0,0],4,0.567308,[0,0.666667,0.498039],4,1,[0.235294,1,0.45098],4); $color
The above code is the actual code used by the Malachite SeExpr layer in the Krita 5.0.0 pre-alpha screenshot above.
The SeExpr Dynamic Fill Layers code has been merged into the Krita git tree and page called Introduction to SeExpr is already set up at the Krita manual website. This functionality will be available in Krita 4.4 when it is released later this month.
MyPaint Brush Engine By Ashwin Daikata
MyPaint is a free painting program created by Martin Renold in 2005. It has it's own brush engine which is available in a separate library called
libmypaint. GNU Image Manipulation Program supports MyPaint brushes and Krita used to support them. That functionality was throw out because it was slow, it was badly implemented and it was based on MyPaint's internal code. The separate
libmypaint library did not exist the first time Krita got support for the MyPaint brush engine.
Developer Ashwin Daikata spent the summer (re-)implementing support for MyPaint brushes in Krita using the
libmypaint library. The KDE Community Wiki has a page detailing his efforts. Ashwin Daikata has also setup a My Google Summer of Code Journal
The MyPaint brush support will not be part of Krita 4.4. The Krita projects has promised that it will make it in time for Krita 5.0 - but it is not yet merged into the 5.0 source tree.
The new dynamic SeExpr expression fill layer feature by Amy Spark is already available in the Krita "nightly" builds listed on the Krita download page. The "Krita Plus" build, available for Windows and Linux, is currently offering "alpha" versions of the Krita 4.4.0 branch. The "Krita Next" build, available for Windows, Linux and Mac, offers the more experimental Krita 5.0 pre-alpha versions. The current 5.0 pre-alpha does not appear to respect or care about system font sizes or DPI settings so you may want to set
QT_SCALE_FACTOR to something like
QT_SCALE_FACTOR="1.4" if you want to that that one and you have a modern HiDPI monitor.