映像表現の行き着く先は「GLSL」習得なのか!?映像表現者に必須のスキルはコレだ

投稿日:2018-05-09



ナカジ(@cp_nakajun)です。

あくまでも僕の今現在での所感ではありますが
コンピューターを使った映像表現を突き詰めて行こうとすると
その先いずれ「GLSL」や「HLSL」などのシェーダー言語にたどり着く、もしくは経由することになる

と、感じます。

きっかけは友人にPureDataのGemで遊んでみた時の映像を見せた時

以下の映像には「おお!PureDataやるね〜」と言う反応だったのですが


次の映像は「これはOFとかでも普通にできるね」と言う反応でした。


借りてきたGSLSがよかった!だけ、ということもありますが

反応がいまいちだった方は「パーティクルに3Dモデルデータを貼って飛ばす」という割と簡単にできるもの

この違い、別にPureDataがすごい訳ではないのですがGLSL的な表現の見栄えの良さがこの時の友人の反応の違いだと感じたわけです。

シェーダー言語を学ぶメリット

その理由は

  • GPU処理による高速かつ美しい描画
  • 汎用性:様々な開発・動作環境で利用可

GPU処理による高速かつ美しい描画

ざっくり言うと
「高度なグラフィックスを高速に描画するには必ず必要」になるから。

コンパイルしてネイティブアプリ化するOpenFrameWorksは高速動作ですがあくまでもC++で記述された処理はCPU処理です。

リアルタイム画像処理に特化したGPUの処理能力に比べたら、汎用的な演算装置であるCPUの処理能力は遠く及びません。

映像表現はGPUを使いこなせればより豊かな表現が可能になります。

様々な開発・動作環境で利用可

習得していくと汎用的なスキルにもなると思ってます。

例えば、以前、このブログでも紹介したPureDataやOpenFrameWorks、TouchDesignerなど
メディアアートにもよく使われるような開発環境でも当然のようにGLSLを利用することができます。

また、Unityなどの環境や3DCG作成ソフトも利用可能です。
(これらに対して僕はまだ詳しくないですm(_ _)m)

ここまで書いておいて今さらですが「GLSL」「HSLS」とは

GLSL (OpenGL Shading Language) はGLslangとしても知られ、C言語をベースとした高レベルシェーディング言語である。

これはアセンブリ言語やハードウェアに依存した言語を使わないで、アプリケーションソフトウェア開発者がグラフィックスパイプラインを直接制御できるようにOpenGL ARB (Architecture Review Board) で策定された。(wiki)

High Level Shading Language(ハイレベル シェーディング ランゲージ、略称: HLSL)はマイクロソフトによって開発された、Direct3D (DirectX) で使われるプログラマブルシェーダーのためのプロプライエタリなシェーディング言語である。

HLSLはOpenGLで使われるシェーディング言語であるGLSLと(機能的には)類似の物である。(wiki)

いろんな制作ツール、環境から使えるので

例えば、ベーシック部分はTouchDesignerで作ってエフェクトなどのリアルタイム部分をGLSLで作る。

とか、

ほとんどGLSLで制作して、外部ハードウェアからのパラメータのやりとりにTouchDesignerを使う。

そしてそれはTouchDesignerに限らずPureData、OpenFrameWorksなど色んな環境で行えるということです。

習得してしまえば高次元で色々使えると思います。

GLSLを学習する方法

上記に「GLSLはC言語をベースとした高レベルシェーディング言語」とあります。

ですので、if、else if/else、for、do-while、break、continueなどの繰り返しや分岐といった制御文や演算子などC言語と同じものが使える。

なので、C言語に精通している人は学習しやすいでしょうし、そうでない人は多少C言語を学ぶのも良いでしょう。

そこから、GLSLに特化した部分を学習するとより理解しやすいと思います。

今回はここまでです。

サポート募集中

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



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

クリエイティブコーディング系 講座


ウェブツール

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