のぐそんブログ

暗いおじさんがシコシコ書くブログです。

TouchDesignerでGLSLを使う為の基礎の基礎知識

TouchDesignerでGLSLを使う為の基礎の基礎知識です。

3次元でシェーダーを利用する

他の方法もありますが、以下ではGLSL MATを利用しています。 GLSL MATのVertex ShaderPixel Shaderに頂点シェーダー(Text Data)、フラグメントシェーダ(Text Data)を設定します。

Vertex Shader

TDWorldToProjはプロジェクション座標変換用の関数で、 TDDeformはモデル、ビュー座標変換用の関数なのかな。。。 PにはGeometoryの頂点情報が入ってくるのだと思います。

 void main(){
    gl_Position = TDWorldToProj(TDDeform(P));
}

Pixel Shader

通常はgl_FragColorを利用するとおもうのですが、うまくいかず以下のような処理になるようです。

out vec4 fragColor;//変数名はなんでもよい

void main(){
    fragColor = vec4(1.0);
}

2次元でシェーダーを利用する

GLSL TOPを利用することで、2次元のシェーダーを利用することができます。 内部てきには、1枚の板ポリゴンが画面全体にはられている状態です。

その為、Pixel Shaderのみ指定が可能となります。

テクスチャの情報をGLSLにおくる

テクスチャの情報をGLSL側で受け取るやり方です。

テクスチャの情報をGLSLで受け取るためには、GLSL MATのSample 1タブのTOPにテクスチャ用のTOPオペレーターを設定します。そしてSampler Nameにシェーダー側で値を受け取るための変数名を設定します。

設定したSampler Nameをシェーダー側で受けるとことができるようになります。

エディタを利用する

オペレーターでGLSLを書くのは少々書きづらいので、外部エディタ利用してみます。

ツールバーTouchDesigner > Preferencesを選びます。 あとはDATsのタブからエディタを選択します。

オペレーターの上で右クリックをして、Edit Contentsを選ぶとエディタが立ち上がります。