🍇
TouchDesignerでComputeShaderを使用してみる
TouchDesignerでComputeShaderを使用したことがなかったので調べてみました。
GLSLTopの下記画像の部分をComputeShaderに設定します。
GLSLのバージョンが4.3.0以上ではないとWarningが出てしまい使えないと思います。
ここがComputeShaderをディスパッチするときのスレッドグループサイズです。
ModeをComputeShaderにして画像部分を開くとComputeShader用のファイルが出現します。
実際にファイルを開いて一つ一つ見ていきます。
スレッドグループ一つに対するスレッドサイズがデフォルトで8,8,1で入っています。Unityと同じみたいです。
layout (local_size_x = 8, local_size_y = 8) in;
gl_GlobalInvocationIDに現在処理しているピクセル座標が入ってきます。
TDOutputSiwzzleでColorを通過させるTouchDesignerお決まりの処理を書いて色として出力しているみたいです。余談ですが、TDOutputSwizzleはWindowsやMacOSなどプラットフォームの違いを吸収してくれるやつです。
vec4 color = vec4(1.0, 0, 0, 1.0);
imageStore(sTDComputeOutputs[0], ivec2(gl_GlobalInvocationID.xy), TDOutputSwizzle(color));
sTDComputeOutpus[0]はComputeShaderで出力するColorBuffersのIndexを指定します。画像の部分です。ColorBuffersはすべてのBufferの総数を指定します。特定のBufferを使い時にそれぞれ指定したIndexを使用するみたいです。
例えば、GLSLTopからRenderSelectTopをつなげてColorBufferを指定することで特定のバッファを取り出せます。
imageStoreはGLSlでComputeShaderの計算結果をテキスチャに書き込むメソッドです。
Discussion