GLSL sandboxのコードを「とりあえず」PureDataに移植して動かす方法
おはようございます^ – ^
ナカジ(@cp_nakajun)です。
以前「PureDataもまだまだ捨てたもんじゃない!GEMを使った映像表現が想像以上」
という記事を書きました。
なぜかと言うと、PureDataはもともと音楽寄りに開発された経緯もあってか、あまり映像表現に強くありません。
この手のプロトタイピング開発環境ですと、最近は「vvvv」や「TouchDesigner」といった映像特化の環境があるのであまりPureDataでの映像表現は特に注目度はない感じではあります。
が…
今までプリミティブ(原始的)な図形表現や動画再生だけだと思ってたPureData環境でもGSLSが使えるとわかったのでもう少しの可能性を感じた訳です。
まぁ、どんな表現をするかにもよりますが
たとえ、「vvvv」や「TouchDesigner」を利用するにしてもGSLS等を学習しておくことに損はないと思います。
GLSL (OpenGL Shading Language) はGLslangとしても知られ、C言語をベースとした高レベルシェーディング言語である。
※「vvvv」はHLSLが使えます。
High Level Shading Language(ハイレベル シェーディング ランゲージ、略称: HLSL)はマイクロソフトによって開発された、Direct3D (DirectX) で使われるプログラマブルシェーダーのためのプロプライエタリなシェーディング言語である。
HLSLはOpenGLで使われるシェーディング言語であるGLSLと(機能的には)類似の物である。
glsl sandboxのコードをPDに移植する
先にことわっておきます。
タイトルで「とりあえず」移植するとしたのは
シェーダー言語には2つの要素、頂点シェーダーとフラグメントシェーダーがあって
今回は頂点シェーダーの方は理解もせずにフラグメントシェーダーだけを移植してきてます。
まずは、glsl sandboxにアクセスします。
glsl sandboxとはウェブ上でGLSL言語によるシェーダ開発・実行ができて、その作品の公開・共有・派生までできるWEBサービスです。
その中から好きな物を選ぶと、glslが実行されつつコードが表示されます。
コードをコピーし、テキストエディタなどに貼り付け、「ファイル名.frag」として保存します。
PureDataからのインプットを受け取る為の変数をglslコードに追加します。
上記の赤で囲った部分に「uniform float inputval1;」と追記します。
インプットが2つなら「uniform float inputval1, inputval2;」と続けて記載します。
続いて、「inputval」で受け取った値でどのパラメーターを変化させるかです。
今回は試しに「scale」、大きさに当てはめてみました。
あとは、コレを保存しPureDataのパッチに読み込んで実行します。
上の赤で囲った部分で読み込んで、下の「inputval」に接続したスライダーで変化させます。
今回はglsl sandboxからの移植ということでPureDataパッチの詳細説明は割愛しますが
上記のパッチは以下のリンクからダウンロードできるようにしておきますので
参考にでもなれば、遊んでみてください。
【GitHub】201705-gem-glsl-sample