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 エフェクトを使うには、以下の手順に従います:
- Qt Quick Effect Maker で、新しいエフェクトを作成します。
- ノードエディタで、Add node を選択し、Common の下でCustom を選択します。これで空のノードが作成されます。
- Shadertoy で、Image タブからすべてのコードをコピーします。
- Qt Quick Effect Maker で、ノードエディタでCustom ノードをダブルクリックします。コードエディタが開きます。
- Shadertoy のコードをFrag タブに貼り付けます。
- コードの中から
Main
関数を見つけてください:void mainImage( out vec4 fragColor, in vec2 fragCoord )
- この行を次のように置き換えます:
@main
注:
@main
と次の { を同じ行に書くことはできません。 - オプション。効果が座標系に依存する場合、上下反転して表示されます。これを解決するには、y座標を反転させる必要があります:
- Vert 。
- ドロップダウンメニューで、Main を選択します。
fragCoord
、次のように表示されます:fragCoord = qt_Vertex.xy;
- この行を次のように置き換える:
fragCoord = vec2(qt_Vertex.x, iResolution.y - qt_Vertex.y);
- 同様に、
texCoord
とiMouse
を調整する必要があるかもしれません。
これで、エフェクトが実行され、Shadertoyエフェクトと同じように見えます。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。