独自のVFXを作成するためのHeavyMシェーダー入門
はじめに
HeavyMで独自の視覚効果を作成することに興味がありますか?この記事では、シェーダーが提供するエキサイティングなクリエイティブの可能性を紹介します。ところで、シェーダーとは何でしょうか?
シェーダーは、コンピュータのグラフィックカード上で動作するコンピュータプログラムです。これにより、スクリーンやビデオプロジェクターに表示されるデータ(ピクセル)を素早く操作することができます。
シェーダーは抽象的であるため、あまり知られていない技術だが、私たちの日常生活には非常に多く存在している。この小さなコンピュータ・プログラムは、雨、霧、光の反射、物体の浮き彫りなど、複雑な視覚効果をリアルにシミュレートする。そのため、ビデオゲーム、特殊効果を必要とする映画、テレビ・セット...そして、ここで取り上げるデジタル・アートの分野で広く使われています。
HeavyMソフトウェアでは、内蔵シェーダーが多くの可能性を提供します。また、独自のシェーダーをインポートすることも可能で、組み合わせは無限に広がります!
シェーダーを使用したビデオゲームの例:マインクラフト
プロジェクションマッピング中のシェーダー使用例
パート1:シェーダー技術
シェーダーの考え方をよりよく理解するために、手で絵を描くことを例に考えてみよう。図面を構成する要素をひとつずつ描いていく必要がある。円、長方形、線などの幾何学的な図形から描き始め、色を付けていく。まるで手作業で図面をコピーするように、一歩一歩進めていくのだ。シェーダーを使うと、これらの操作がすべて一度に実行されるため、ジェスチャーひとつで紙にスタンプを押すように、プロセスがはるかに速くなる。さらに良いのは、このスタンプは、時間、位置、すでに用紙にある要素の色など、与えられた情報に応じて変更できることだ。
なぜシェーダーは速いのか?
なぜなら、HeavyMのような数十万行のコードを含むソフトウェアとは異なり、シェーダーは一般的にせいぜい数百行しかないからです。シェーダーの速度は、主にそれを実行するためのハードウェア、つまりグラフィックカードのアーキテクチャによるものです。HeavyMを使用するためには、ソフトウェアが提供する可能性を倍増させることができるため、この問題に注意を払う必要があります。
コンピュータのCPUが次々とタスクを処理するのとは対照的に、グラフィックカードの計算は並列に行われます。大きな演算能力を持つプロセッサーを1つ持つ代わりに、グラフィックカードには多数の小さなプロセッサーが搭載されています。つまり、同時にタスクを実行できるのです。この並列化に頼ることで、シェーダーは複雑なグラフィック計算を数ミリ秒で実行できる。
シェーダーの利点:インタラクティブアート
シェーダーの実行速度のおかげで、リアルタイムで画像を作成することができる。リアルタイムという用語は、フレームごとにレンダリングされるビデオファイルに適用される事前計算という用語とは対照的に使用されます。レンダリング計算は非常に時間がかかり、数日かかることもあります!シェーダーを使えば、ビデオゲームのように画像を直接操作することができる。インタラクティブなデジタルアートは、音楽や人の動きに反応するビジュアルを生成できるため、このリアルタイム原理に依存しています。音楽とビジュアルをミックスしたパフォーマンスの例として、次の2つの作品をご覧ください。 アピュー・ツインのコンサート用ウィアードコア または ノノタクのパフォーマンス.
シェーダーの種類
シェーダーは、特定の拡張子を持つテキストファイルにすぎません。シェーダーにはさまざまな種類があることがわかります。共通しているのは、GLSL言語でコーディングされていることです:OpenGLシェーディング言語。プラットフォームやハードウェアによって、他のタイプのシェーダーもありますが、ここではOpenGLベースのシェーダーに焦点を当てます。HeavyMでシェーダーを使用するには、OpenGL 2.0をサポートするグラフィックカードが必要です。
ピクセルシェーダーまたはフラグメントシェーダー
フラグメントシェーダまたはピクセルシェーダは、各ピクセルの色を個別に計算することを目的としたシェーダです。画像の各ピクセルのデータ(位置、テクスチャ座標、色)を入力として受け取り、その色を出力します。
HeavyMで使いたいのは、これらのシェーダーです。これらは通常.FRAGファイルであり、ISFフォーマットの場合は.FSファイルです。ISFフォーマットはGLSLシェーダーフラグメントの標準を提供し、インタラクティブなアプリケーションでより簡単に解釈できるようにします。
頂点シェーダー
頂点シェーダーは、入力ピークをピクセルに変換するために使用される。
これは、ピクセルシェーダに付随する.VSファイルで、同じ名前を持ち、同じフォルダにあることがあります。
シェーダーはどこで手に入りますか?
HeavyMでシェーダーを使うのにプログラミングの知識は必要ありません。ソフトウェアにあるビルトイン・ライブラリに加えて、自分で作成しなくても新しいシェーダーを見つけられるプラットフォームが存在します。シェーダーアーティストのコミュニティは成長し続けており、彼らが共有する作品を自由に使うことができます。
.FSを見つけるには https://www.interactiveshaderformat.com/
.FRAGを見つけるには http://glslsandbox.com/ と https://www.shadertoy.com/
警告:.FRAGはHeavyMではサポートされていません。.FRAGを.ISFに変換する必要があります。
通常、シェーダーコードの最初に明記されているライセンスで使用権を必ず確認してください。特に記載がない場合は、デフォルトで著作権が適用されますので、商用利用を希望する場合はプログラムの作者と相談することを強くお勧めします。
独自のシェーダーを開発する
独自のシェーダーを作成するには、ISF フォーマットを直接使用することをお勧めします。この記事の目的は、ISFフォーマットで使用される言語であるGLSLコードの学習を提供することではありません。そのためには、非常に包括的なサイト.NETを読むことをお勧めします:
- https://thebookofshaders.com/ GLSL言語用
- https://docs.isf.video/ ISFフォーマット用
しかし、手始めにISFのサイトに行って、既存のシェーダーを変更してみてください。このインタラクティブなサイトでは、シェーダーに加えられた修正をライブで視覚化することができます。基本的なテンプレートから始めることも可能です。
シェーダーの作成と編集の主な欠点は、エラーのフィードバックがないことです。設計に問題がある場合、シェーダは実行されず、何も表示されません。エラーの原因を見つけるのは困難です。そのため、コードを厳密に記述する必要があります。
パート2:HeavyMのシェーダー
HeavyMソフトウェアは、内蔵のビジュアルエフェクトライブラリに数百のネイティブシェーダを提供しています。使用する機能に応じて、いくつかのタイプのエフェクトをソフトウェアで使用できます。
シェーダーの形状への影響
インターフェイスの右側にある赤いアイコンをクリックすると、描かれた図形に自動的に適応するエフェクトのカテゴリにアクセスできます。これらのエフェクトは、左側のレイヤーパネルのグループにリンクされています。グループ内のすべての図形は同じ外観を持ちます。異なるシェイプに異なるエフェクトを適用するには、他のグループを作成し、そこにシェイプを追加する必要があります。
現在のところ、このカテゴリーに既存のエフェクト・シェーダーを追加したり修正したりすることはできません。
画像生成シェーダー
右側の垂直ツールバーにある白いアイコンからアクセスできるパネルで、画像生成シェーダーをソースとして追加します。これらのシェーダを表示するには、プレーヤの作成が必要です。ターゲットアイコンをクリックして、ソースをプレーヤーにリンクします。画像生成シェーダはループで動作するプログラムであるため、デフォルトの表示時間はありません。ただし、ソースの表示時間は変更できます。
選手のシェーダー処理
プレーヤーに画像処理エフェクトを適用することができます。これを行うには、プレーヤーを選択し、左下のプロパティで+ボタンを使用してエフェクトを追加します。エフェクトは次々に追加されます。各プレーヤーは独立しているので、プレーヤーが同じグループであっても、ソースと処理エフェクトはプレーヤー間で異なります。
シーケンスのシェーダー処理
画像処理シェーダーは、ビデオ出力全体に適用することもできる。これらのエフェクトはシーケンスに対して相対的なものです。シーケンスに処理エフェクトを追加するには、歯車をクリックし、+ボタンを使用してシェーダを追加します。シーケンスに対する処理効果は、プレーヤーに対する処理効果と同じです。
シーケンスのトランジション・シェーダー
トランジションもシーケンスに関連し、ビデオ出力全体に適用される。デフォルトでは、0.20秒のフェードが適用されます。このトランジションは、シーケンスの歯車をクリックしてアクセスできるメニューで変更します。トランジションはシーケンスの入力にのみ適用されます。
シェーダーのインポート
HeavyMのシェーダには、生成シェーダと処理シェーダの2つの主要なカテゴリがあることを見てきました。HeavyMでは、この2つのカテゴリのシェーダーを簡単に組み合わせることができます。HeavyMでは、各シェーダ選択ウィンドウのライブラリタブにデフォルトのシェーダが用意されています。これらのシェーダーはすべて.FSであるため、ISF規格に準拠しています。マイシェーダ]タブで独自のシェーダをインポートするには、この規格に準拠する必要があります。このようにして、HeavyMのインターフェイスでシェーダーのパラメータを簡単に変更することができます。
他のシェーダーフォーマットをHeavyMにインポートしたいですか?このツールを使ってシェーダーを変換するのはとても簡単です:Desktop ISF Editor(Windows beta/Mac)"GLSL Sandbox からのインポート "および "Shadertoy からのインポート "機能を備えています。
最後に、独自のISFフォーマットを作成するために、ISFフォーマットのアーキテクチャを詳細に理解したい場合は、ISFフォーマットのドキュメントをご覧になることをお勧めします:https://docs.isf.video/
パート3:シェーダーのコントロール
シェーダーは、レンダリング段階を経ることなく、ライブで変更できるリアルタイムの視覚効果を可能にします。ここでは、エフェクトをコントロールし、インタラクティブなビジュアルを作成するためのさまざまな可能性を紹介します。
シェーダのパラメータは、ソースアイコンの歯車をクリックすることで変更できます。値のスケールは0から100の間で正規化されており、特定の単位には対応していません。HeavyMでは、各シェーダーパラメータの横にある矢印をクリックすることで、パラメータを変化させることができます。
固定値モード
これはマウスで値を変更できるデフォルトのモードである。一度に1つのパラメーターしか変更できないのが欠点です。キーボードで値を入力することもできます。
バリュー・ジェネレーター
HeavyMには、シェーダーのパラメーターを自動的に変更できる7つのバリュージェネレーターがあります。これらは、音楽ソフトやシンセサイザーで見られるようなLFO(低周波発振器)タイプのジェネレーターです。各ジェネレーターには、2つのアニメーションモードがあります:BPMまたはテンポラルです。BPMモードは、インターフェースの右下にある一般的なテンポにリンクしており、メトロノームのアイコンで象徴されています。テンポモードでは、一般的なテンポから独立した周波数を定義できます。
健全な分析によるコントロール
インターフェースの右下には、サウンド分析モジュールがあります。3つの異なる周波数帯域の振幅変動を検出することができます:低中高。シェーダーパラメータの変動モードで、これらの値の変動を見つけることができます。
MIDIコントロール
複数のパラメーターを同時にマニュアル操作したいですか?MIDIプロトコルを使いましょう。市場には音楽用のMIDIコントローラーがたくさんあります。これらは全てHeavyMと互換性があります。インターフェースの右上にあるオレンジ色のアイコンからアクセスできるコンフィギュレーション・ウィンドウでハードウェアを接続してください。次に、MIDI学習モードで、シェーダーパラメータとハードウェアのキーの間のリンクを設定できます。
結論
シェーダーが提供するクリエイティブな可能性は無限です。これらのプログラムを使えば、数回クリックするだけで、グラフィックカードのパワーを活用することができます。コンピュータを使えば、アルゴリズムから作品を生み出すジェネレーティブ・アートに簡単にアクセスできる。アントワーヌ・シュミット、ミゲル・シュヴァリエ、ヴェラ・モルナール、ドゥ・ジェンジュン、ダニエル・ロジンなど、多くのデジタルアーティストがこのテクニックを使っている。
HeavyMでは、シェーダーの使用とコントロールが非常に簡単であることがわかりました。シェーダーを無限に組み合わせて、自分だけのビジュアルと個性を作り出してください!