GLSL sandboxのコードを「とりあえず」PureDataに移植して動かす方法

投稿日:2017-05-17



おはようございます^ – ^

ナカジ(@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

サポート募集中

この記事はお役に立てましたか。
よかったら、コーヒー ☕ をご馳走いただけたら励みになります。



PureDataの貴重な書籍



おすすめのクリエイティブ・コーディング関連カテゴリー

ウェブツール

機能はシンプルなものですが、p5.jsやTone.jsで描画したり音が出たりするので遊んでみてください。
・【Midi Number Tools】:MIDIナンバーから音名と周波数を判定します
・【Delay Time Calculator】:テンポに応じた音符の長さを判定します