Shadertoyエフェクトの移植Qt Quick Effect Maker

Shadertoy で作成したエフェクトは、Qt Quick Effect Maker で使用できます。Shadertoyエフェクトを使用する際は、以下の点を考慮してください:

  • Qt Quick Effect Maker は以下の Shadertoy 機能をサポートしていません:
    • マルチパスエフェクト(バッファタブ)
    • オーディオ
    • キューブマップ
    • 3Dテクスチャ
  • Shadertoy はフラグメントシェーダとビルトインテクスチャのみをサポートしています。Qt Quick Effect Maker でエフェクトのパフォーマンスを向上させるには、一部の計算をバーテックスシェーダに移し、カスタムイメージを使用してシェーダコードを簡素化します。
  • Shadertoy とQt Quick Effect Maker では座標系が異なります。Shadertoy では原点 (0,0) は左下隅にあり、Qt Quick Effect Maker では原点は左上隅にあります。

Shadertoyエフェクトの使用Qt Quick Effect Maker

Qt Quick Effect Maker で Shadertoy エフェクトを使用するには:

  1. Qt Quick Effect Maker で、新しいエフェクトを作成します。
  2. ノードエディタで、Add node を選択し、Common の下でCustom を選択します。これで空のノードが作成されます。

  3. Shadertoy で、Image タブからすべてのコードをコピーします。
  4. Qt Quick Effect Maker で、ノードエディタのCustom ノードをダブルクリックします。コードエディタが開きます。
  5. Shadertoy のコードをFrag タブに貼り付けます。
  6. コードの中からMain 関数を見つけてください:
    void mainImage( out vec4 fragColor, in vec2 fragCoord )
  7. この行を次のように置き換えます:
    @main

    注: @main と次の { を同じ行に書くことはできません。

  8. オプション。効果が座標系に依存する場合、上下反転して表示されます。これを解決するには、y座標を反転させる必要があります:
    1. Vert

    2. ドロップダウンメニューで、Main を選択します。
    3. fragCoord 、次のように表示されます:
      fragCoord = qt_Vertex.xy;
    4. この行を次のように置き換える:
      fragCoord = vec2(qt_Vertex.x, iResolution.y - qt_Vertex.y);
    5. 同様に、texCoordiMouse を調整する必要があるかもしれません。

これで、エフェクトが実行され、Shadertoyエフェクトと同じように見えます。

© 2025 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.