ShadertoyエフェクトのQtクイックエフェクトメーカーへの移植

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では原点が左上にあります。

QtクイックエフェクトメーカーでShadertoyエフェクトを使う

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エフェクトと同じように見えます。

本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。