Dalla versione 3.7 Flutter permette di compilare ed eseguire fragment shader GLSL direttamente nella pipeline di rendering, sia con Skia sia con Impeller. È lo strumento definitivo quando gradienti, BackdropFilter e CustomPainter non bastano più: effetti di dissolvenza pixel-per-pixel, distorsioni liquide, noise procedurale, transizioni cinematiche — tutto calcolato sulla GPU, senza costi sul thread UI.
In questo tutorial avanzato vedremo:
- come dichiarare gli shader nel
pubspec.yamle quali vincoli impone Impeller; - la struttura di un fragment shader compatibile con Flutter (
FlutterFragCoord, uniform,out vec4 fragColor); - come caricare un
ui.FragmentPrograme disegnarlo con unCustomPainter; - come animarlo con un
Tickersenza ricostruire l'albero dei widget; - come usare un widget reale come texture di input grazie a
AnimatedSamplerdel pacchettoflutter_shaders; - le regole di performance, il ciclo di vita degli shader e il debug degli errori di compilazione.
Prerequisiti: buona conoscenza di CustomPainter, del ciclo di vita dei widget e almeno una infarinatura di algebra vettoriale. Non serve essere esperti di GLSL: partiamo da zero sul linguaggio, ma a ritmo sostenuto.