En esta página

Portar efectos de Shadertoy a Qt Quick Effect Maker

Puede utilizar efectos creados en Shadertoy en Qt Quick Effect Maker. Cuando utilices efectos de Shadertoy, ten en cuenta lo siguiente:

  • Qt Quick Effect Maker no soporta las siguientes características de Shadertoy:
    • Efectos multipase (pestañas Buffer)
    • Audio
    • Mapas cúbicos
    • Texturas 3D
  • Shadertoy sólo soporta fragment shaders y texturas incorporadas. Para mejorar el rendimiento del efecto en Qt Quick Effect Maker, traslada algunos cálculos al sombreador de vértices y utiliza imágenes personalizadas para simplificar el código del sombreador.
  • El sistema de coordenadas difiere entre Shadertoy y Qt Quick Effect Maker. En Shadertoy, el origen (0,0) está situado en la esquina inferior izquierda, mientras que Qt Quick Effect Maker tiene el origen en la esquina superior izquierda.

Utilizar un efecto Shadertoy en Qt Quick Effect Maker

Para utilizar un efecto Shadertoy en Qt Quick Effect Maker:

  1. En Qt Quick Effect Maker, cree un nuevo efecto.
  2. En el editor de nodos, seleccione Add node y luego, bajo Common, seleccione Custom. Esto crea un nodo vacío.

    Cuadro de diálogo Añadir nodo de efectos con la opción Personalizado seleccionada en la categoría Común

  3. En Shadertoy, copia todo el código de la pestaña Image.
  4. En Qt Quick Effect Maker, haz doble clic en el nodo Custom en el editor de nodos. Esto abre el editor de código.
  5. Pega el código de Shadertoy en la pestaña Frag.
  6. Encuentra la función Main en el código, se ve algo como:
    void mainImage( out vec4 fragColor, in vec2 fragCoord )
  7. Reemplaza esta línea por:
    @main

    Nota: No puedes tener @main y el siguiente { en la misma línea.

  8. Opcional. Si el efecto depende del sistema de coordenadas, aparece invertido. Para solucionarlo, tienes que invertir la coordenada y:
    1. Vaya a la pestaña Vert.

      Editor de código con la pestaña VERT seleccionada mostrando el sombreador de vértices

    2. En el menú desplegable, selecciona Main.
    3. Busque la línea fragCoord, debería tener un aspecto similar:
      fragCoord = qt_Vertex.xy;
    4. Sustituye esta línea por:
      fragCoord = vec2(qt_Vertex.x, iResolution.y - qt_Vertex.y);
    5. Del mismo modo, es posible que tenga que ajustar texCoord y iMouse.

Ahora, el efecto se ejecuta y tiene el mismo aspecto que el efecto 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.