シェーダーの使用
要約
シェーダーとは、GPU上で動作する小さなグラフィックプログラムであり、リアルタイムでジェネレーティブビジュアルエフェクトを生成します。プロジェクションマッピングにおいて、シェーダーは容量の大きな動画ファイルを必要とせずに、無限のダイナミックなテクスチャを提供します。HeavyMなどのソフトウェアを使用すれば、ISFなどの標準フォーマットを簡単にインポートでき、コーディングを一切行わなくてもジェネレーティブビジュアルを操作することができます。.
シェーダーとは何ですか?
シェーダーとは、グラフィックス処理装置(GPU)上で動作するように特別に設計されたコンピュータプログラムの一種です。. 「シェーダー」という用語は「シェード(shade)」に由来しています。これは、シェーダーの最も初期の用途の一つが、3Dグラフィックスにおける影や反射のシミュレーションだったためです。しかし、現在では、, シェーダーは、多種多様なグラフィック処理タスクに使用されており、, テクスチャや色の適用から、複雑な特殊効果の生成に至るまで。.
シェーダー 極めて低いレベルで動作し、, つまり、画像や動画を構成する個々のピクセルを直接かつ正確に制御できるということです。最小限のリソースで画像データを非常に高速に処理できるため、特に リアルタイムのグラフィックスアプリケーションに有用であり、, 例えば、ビデオゲームやバーチャルリアリティ、そして ビデオマッピング.
シェーダーの種類
シェーダーにはさまざまな種類があり、3Dデータポイント(頂点)を操作する頂点シェーダー、これらのポイントから新しい形状を生成するジオメトリシェーダー、そして画面上の各ピクセルの最終的な色を決定するフラグメントシェーダー(ピクセルシェーダーとも呼ばれる)などがあります。シェーダーは通常、次のような専用のプログラミング言語で記述されます。 GLSL(OpenGLシェーディング言語)またはDirectX用のHLSL(高水準シェーディング言語)。.
ピクセルシェーダーまたはフラグメントシェーダー
フラグメントシェーダー、あるいはピクセルシェーダーとは、各ピクセルの色を個別に計算するように設計されたシェーダーのことです。. この関数は、画像内の各ピクセルのデータ(位置、テクスチャ座標、色)を入力として受け取り、その色を返します。.
HeavyMで使用する際、これらのシェーダーが最も注目すべきものです。これらは通常、 .FRAGファイル、またはISF形式の場合は.FSファイル。. ISF フォーマットは、GLSL フラグメントの標準を規定しています シェーダー、, これにより、インタラクティブなアプリケーションによる解釈が容易になります。.
頂点シェーダー
頂点シェーダーは、頂点をピクセルに変換するために使用されます。.
それらは .VSファイル ピクセルシェーダーに付属することがあるもので、同じ名前を持ち、同じフォルダ内に配置する必要があるものです。.
HeavyM 形状エフェクトシェーダー
HeavyMインターフェースの右側にある赤いアイコンをクリックすると、描いた図形に自動的に適応するエフェクトのカテゴリにアクセスできます。これらのエフェクトは、左側のレイヤーパネルにあるグループに関連付けられています。 グループ内のすべての図形は、同じ外観を共有します。異なる図形に異なるエフェクトを適用するには、追加のグループを作成し、そこに図形を追加する必要があります。.

現在、このカテゴリ内の既存のエフェクトシェーダーのコードを追加または変更することはできません。.
画像生成シェーダー
右側の縦型ツールバーにある白いアイコンからアクセスできるパネルで、画像生成シェーダーをソースとして追加できます。これらのシェーダーを表示するには、プレイヤーを作成する必要があります。その後、ターゲット形のアイコンをクリックして、ソースをプレイヤーにリンクさせます。 画像生成シェーダーはループで実行されるプログラムであるため、デフォルトの再生時間は設定されていません。ただし、ソースの表示時間は調整可能です。.
現在、このカテゴリ内の既存のエフェクトシェーダーのコードを追加または変更することはできません。.
画像生成シェーダー
右側の縦型ツールバーにある白いアイコンからアクセスできるパネルで、画像生成シェーダーをソースとして追加できます。これらのシェーダーを表示するには、プレイヤーを作成する必要があります。その後、ターゲット形のアイコンをクリックして、ソースをプレイヤーにリンクさせます。 画像生成シェーダーはループで実行されるプログラムであるため、デフォルトの再生時間は設定されていません。ただし、ソースの表示時間は調整可能です。.

プレイヤーでのシェーダーの処理
プレーヤーに画像処理エフェクトを適用することができます。これを行うには、プレーヤーを選択し、左下の「プロパティ」パネルにある「+」ボタンを使用してエフェクトを追加します。エフェクトは順次追加されます。各プレーヤーは独立しているため、たとえ同じグループ内のプレーヤーであっても、ソースや処理エフェクトはプレーヤーごとに異なります。.

シェーダーのインポートまたは作成
シェーダーはどこで見つけられますか?
HeavyMでシェーダーを使用するのに、プログラミングの知識は必要ありません。ソフトウェアにすでに含まれているライブラリに加え、, 新しいシェーダーが見つかるプラットフォームもあります 自分で作成する必要はありません。シェーダー制作者のコミュニティは急速に拡大しており、 彼らが公開している作品は、非営利のプロジェクトで利用できることがよくあります。.
.FSシェーダーを見つけるには: https://www.interactiveshaderformat.com/
.FRAGシェーダーを見つけるには: http://glslsandbox.com/ と https://www.shadertoy.com/
注:HeavyMでは、.FRAGファイルは認識されません。これらのファイルは.ISF形式に変換する必要があります。その方法については、以下で説明します。.
ライセンスに記載されている使用権限を必ず確認してください。通常、これらはシェーダーのコードの冒頭に明記されています。具体的な記載がない場合は、デフォルトで著作権が適用されますので、シェーダーを商用目的で使用する場合は、作者と相談することを強くお勧めします。.
シェーダーのインポート
前述の通り、, HeavyMにおけるシェーダーには、主に「生成シェーダー」と「処理シェーダー」の2つのカテゴリがあります。. HeavyM を使用すると、これら 2 つのカテゴリに属するシェーダーを簡単に組み合わせることができます。HeavyM では、各シェーダー選択ウィンドウの「ライブラリ」タブにデフォルトのシェーダーが用意されています。これらのシェーダーはすべて .FS 形式であるため、ISF 規格に準拠しています。. 独自のシェーダーを「My Shaders」タブにインポートするには、, この規格に準拠している必要があります。そうすることで、HeavyMのインターフェース内でシェーダーのパラメータを簡単に変更できるようになります。.
HeavyMに他のシェーダー形式を取り込みたいですか?以下のツールを使えば、シェーダーの変換はとても簡単です:
- https://magicmusicvisuals.com/utils/shadertoy_to_isf.php – ベータ版
- 「GLSL Sandboxからインポート」および「Shadertoyからインポート」機能を使用するISF Editorソフトウェア(Macのみ)
独自のシェーダーの開発
独自のシェーダーを作成するには, 、できるだけ多くのアプリケーションとの互換性を確保するため、ISF形式を直接使用することをお勧めします。本記事の目的は、ISF形式で使用される言語であるGLSLのコーディング方法を解説することではありません。その点については、以下の非常に充実したサイトをご覧になることをお勧めします:
- https://thebookofshaders.com/ にとって GLSL
- https://docs.isf.video/ にとって ISF
とはいえ、まずは、, ISFのサイトにぜひアクセスして、既存のシェーダーを自由に修正してみてください。. このインタラクティブなサイトでは、シェーダーへの変更をリアルタイムで確認することができます。また、基本的なテンプレートを基に作業を始めることも可能です。.
シェーダーの作成や修正における主な難点は、エラーのフィードバックがないことです。設計上の問題があると、シェーダーが実行されないか、何も表示されない場合があり、エラーの原因を特定するのが困難になります。そのため、コーディングには細心の注意を払うことが極めて重要です。.
続きを読む
このガイドは、以下の著者によって執筆されました。 HeavyM, 、2013年からプロジェクションマッピングを専門とする企業です。.
ご質問、ご意見、アドバイスなどございましたら、こちらの問い合わせフォームをご利用ください: https://help.heavym.net/hc/requests/new. 24時間以内に必ずご返信いたします。.
よくある質問(FAQ)
プロジェクションマッピングにおけるシェーダーとは何ですか?
シェーダーとは、グラフィックスハードウェア上でレンダリング効果を高い柔軟性をもって計算するために使用されるコンピュータプログラムのことです。プロジェクションマッピングでは、シェーダーを用いて、あらかじめレンダリングされたビデオループを再生するのではなく、GPU上で直接、動的でリアルタイムなテクスチャや、音に反応するビジュアルを生成します。.
ISF形式とは何ですか?
ISFは「Interactive Shader Format」の略称です。これはGLSL(OpenGLシェーディング言語)に基づいた規格であり、さまざまなVJingやプロジェクションマッピングソフトウェア間でジェネレーティブビジュアルを容易に共有・利用できるようにし、クロスプラットフォームの互換性を確保するものです。.
シェーダーを使うには、プログラミングの知識が必要ですか?
いいえ、プログラマーである必要はありません。シェーダーはコード(GLSL)で記述されますが、次のような最新のプロジェクションマッピングソフトウェアでは HeavyM 既成のISFファイルをインポートしたり、組み込みのシェーダーエフェクトをシェイプ上にドラッグ&ドロップするだけで利用したりすることができます。.