Sur cette page

Portage des effets Shadertoy sur Qt Quick Effect Maker

Vous pouvez utiliser les effets créés dans Shadertoy sur Qt Quick Effect Maker. Lorsque vous utilisez des effets Shadertoy, tenez compte de ce qui suit :

  • Qt Quick Effect Maker ne prend pas en charge les fonctionnalités suivantes de Shadertoy :
    • Effets multi-passages (Buffer tabs)
    • Audio
    • Cartes cubiques
    • Textures 3D
  • Shadertoy ne prend en charge que les nuanceurs de fragment et les textures intégrées. Pour améliorer les performances de l'effet dans Qt Quick Effect Maker, déplacez certains calculs vers le vertex shader et utilisez des images personnalisées pour simplifier le code du shader.
  • Le système de coordonnées diffère entre Shadertoy et Qt Quick Effect Maker. Dans Shadertoy, l'origine (0,0) est située dans le coin inférieur gauche, tandis que dans Qt Quick Effect Maker, l'origine est située dans le coin supérieur gauche.

Utilisation d'un effet Shadertoy dans Qt Quick Effect Maker

Pour utiliser un effet Shadertoy dans Qt Quick Effect Maker :

  1. Dans Qt Quick Effect Maker, créez un nouvel effet.
  2. Dans l'éditeur de nœuds, sélectionnez Add node puis, sous Common, sélectionnez Custom. Cela crée un nœud vide.

    La boîte de dialogue Ajouter un nœud d'effet avec l'option Personnalisé sélectionnée dans la catégorie Commun.

  3. Dans Shadertoy, copiez tout le code de l'onglet Image.
  4. Dans Qt Quick Effect Maker, double-cliquez sur le nœud Custom dans l'éditeur de nœuds. Cela ouvre l'éditeur de code.
  5. Collez le code Shadertoy dans l'onglet Frag.
  6. Trouvez la fonction Main dans le code, elle ressemble à quelque chose comme :
    void mainImage( out vec4 fragColor, in vec2 fragCoord )
  7. Remplacez cette ligne par :
    @main

    Note : Vous ne pouvez pas avoir @main et le { suivant sur la même ligne.

  8. Facultatif. Si l'effet dépend du système de coordonnées, il apparaît à l'envers. Pour résoudre ce problème, vous devez inverser la coordonnée y :
    1. Allez dans l'onglet Vert.

      L'éditeur de code avec l'onglet VERT sélectionné montre le vertex shader

    2. Dans le menu déroulant, sélectionnez Main.
    3. Trouvez la ligne fragCoord, elle devrait ressembler à quelque chose comme :
      fragCoord = qt_Vertex.xy;
    4. Remplacez cette ligne par :
      fragCoord = vec2(qt_Vertex.x, iResolution.y - qt_Vertex.y);
    5. De même, vous devrez peut-être ajuster texCoord et iMouse.

Maintenant, l'effet s'exécute et a la même apparence que l'effet Shadertoy.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.