CG
TouchDesigner
VisualProgramming

[#TouchDesigner] マルチパスGLSL

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3132373430322f33313137333465332d343535372d363932342d373965382d3536616338333738346661622e706e67.png

はじめに

1つのGLSL TOPから複数の画像をレンダリングする、「Multiple Render Target」を行う方法について解説します。
取るに足りない感じの記事なので雑に書きます。
2017-11-18_183050.png

GLSL TOP の設定

# of Color Buffers を、用意するレンダーターゲット数分確保します。
2017-11-18_182713.png

GLSLコード

2017-11-18_182549.png

glsl_pixel
layout (location=?) out hoge

で、レンダーターゲットのインデックスと、値を格納する変数名(hoge)を指定することができます。
後は普段のGLSLコードと同様それぞれの変数にピクセル色を格納します。

レンダーターゲットの取り出し

レンダリングした結果(レンダーターゲット)の画像の取得は、
以下のようにRender Select TOP内のTOPパラメータにGLSL TOPをアサインし、
Color Buffer IndexをGLSLコード内で指定したインデックスに変更することで行えます。

2017-11-18_182636.png

2017-11-18_182652.png

終わりに

この方法とFeedback TOPとを組み合わせることで、マルチパスレンダリング(ReactionDiffusionなど)が行えるみたいですが、
まだそこまでの検証ができていないので、でき次第記事をあげようと思います。