GLSLからHLSLへ変換する方法


ShadertoyのGLSLのソースコードをHLSLへ変換するShaderManというツールがあるのですが、結構癖があるので説明します。

使い方などは以下にやり方が載っているのでそれを参考にしましょう。

ドキュメントが古い

Open ShaderMan from Tools\ShaderManと書かれていますが、実際には2021年現在はWindow\ShaderMan です。

エディタの癖が強い

コピへして、スクロールしようとすると、Macのマジックパッドなどでスクロールできず、矢印キー下(↓)で進んでいくと、下のコードへ辿り着けると言う仕様になっており、最初文字数制限で下にいけないのかと思ってしまうくらい、非常にわかりにくいUIです。

構文を少しでも違うと、変なエラーが出る

例えば、Shadertoyでよくある以下のようなメイン関数で

void mainImage( out vec4 fragColor, in vec2 fragCoord )

in を抜いた状態でconvertを走らせると、以下のようなバグが起こります。

i.uvfi.uvri.uvai.uvgi.uvCi.uvoi.uvli.uvoi.uvri.uv
i.uvfi.uvri.uvai.uvgi.uvCi.uvoi.uvli.uvoi.uvri.uv
<省略>

変更しないといけないコード

iFrame -> Time.y
tex2Dlod(_MainTex, uv, x) -> tex2Dlod(_MainTex, float4(uv, x, 0))