最近にわかに盛り上がっている感の『TouchDesigner』。
一方熊本で『TouchDesigner』に詳しい人がいないということで始まった
『KumaMCN』勉強会。
会を重ねるに連れ、少しずつ『GLSL』の話がでてくるようになり、
ぜひともヌルヌル動かしたいなということでググりにググり、
『ShaderToys』に書かれたコードの使い方の動画(全編英語)を見つけたので、
メモ書きしつつ画像キャプチャすることにしました。
詳細+画像キャプチャ版はブログにまとめてます。
オリジナルのYoutubeはこちら。
YouTube
もってきたコードはこちら。
ShaderToys marble
変更点は下記。
- uniform変数の定義
- Cube対応(sTDCubeInputs)
- mainImage関数→main関数に変更
- fragColor設定(main関数外に出す)
- fragCoord設定
- マウス入力設定
1. uniform変数の定義
ShaderToysはデフォルトで変数定義されているものの、
コピーしたコードには含まれないので追記します。
uniform float iTime;
uniform vec2 iResolution;
uniform vec3 iMouse;
2. Cube対応(sTDCubeInputs)
TouchDesignerのマニュアル『Write a GLSL TOP』の中で、
cubeで検索すると、
どうやらcubeの場合は、
『sTD2DInputs』ではなく、『sTDCubeInputs』 を使うようです。
# define iChannel0 sTDCubeInputs[0]
360度撮影された画像を使い、
『Movie File In』 -> 『Projection』 とつないで、
『Projection』のInput/Outputを下記に変更します。
- Input・・Equirectangular
- Output・・Cube Map
3. mainImage関数→main関数に変更
//void mainImage( out vec4 fragColor, in vec2 fragCoord )
void main()
4. fragColor設定(main関数外に出す)
out vec4 fragColor;
void main()
{
vec4 fragCoord = gl_FragCoord;
5. fragCoord設定
fragCoordも追加します。
//void mainImage( out vec4 fragColor, in vec2 fragCoord )
out vec4 fragColor;
void main()
{
vec2 fragCoord = vec2(vUV.s*iResolution.x, vUV.t*iResolution.y);
6. マウス入力設定
『Mouse In CHOP』→『Null CHOP』とつないで
『Null CHOP』を
『GLSL TOP』->Vectors1->iMouse の箇所にドラッグドラップします。
ドラッグドラップ時に『Export CHOP』を選択すると、
マウス座標が『GLSL TOP』に反映されるようになります。
ググってみてもなかなか見つからなかったので助かりました。
一方、
コードによっていろいろ対応必要そうで、
なかなか一筋縄ではいかないようです。