シェーダーインクルードライブラリを使用する¶
シェーダーインクルードライブラリは、Kanzi Studio とともにインストールされる再利用可能な .glsl ファイルのセットを提供します。これらのシステムシェーダーファイルは、プロジェクトディレクトリにコピーすることなく、任意のプロジェクトシェーダーにインクルードできます。Kanzi Studio はシステムシェーダーをプロジェクトの保存データに含めないため、システムシェーダーを使用しない既存のプロジェクトは影響を受けません。
シェーダーコードの再利用 も参照してください。
システムシェーダーディレクトリ¶
Kanzi Studio は、Kanzi に同梱されている .glsl ファイルを格納するシステムシェーダーディレクトリを管理します。Kanzi Studio はこのディレクトリの外部からの変更を監視し、Kanzi Studio の実行中にファイルの追加、削除、変更を取り込みます。Kanzi Studio をリスタートする必要はありません。
システムシェーダーディレクトリは <KanziInstallation>/Studio/Asset Library/System Shaders/ にあります。
システムシェーダーディレクトリに配置された .glsl ファイルは、自動的にインクルードファイルとして使用可能になります。ファイルを登録したり、プロジェクトを設定したりする必要はありません。
システムシェーダーディレクトリは Kanzi Studio 内からは読み取り専用です。プロジェクト用にシステムシェーダーをカスタマイズするには、まずそのシェーダーをクローンします。システムシェーダーをプロジェクトにクローンする を参照してください。
システムシェーダーのインクルード¶
#include ディレクティブは、C/C++ のインクルード規則に従う 2 つの形式をサポートしています。
構文 |
Resolution |
|---|---|
|
まず |
|
まずプロジェクトの |
システムシェーダーをインクルードするには、山括弧 (<>) を使用します。プロジェクトの Shaders ディレクトリ内でシステムシェーダーと同じパスにあるファイルは、そのシステムシェーダーをオーバーライドします。これは、他のシステムシェーダーがそのシステムシェーダーをインクルードしている箇所にも適用されます。システムシェーダーをプロジェクトにクローンする を参照してください。シェーダーと同じ場所にあるファイルには、引用符付きのインクルード ("") を使用します。
例:
// Resolves from the project Shaders directory first, then from the system shader directory.
#include <kanzi/common/lights.glsl>
// Resolves from the directory of this shader first, then like an include with angle brackets.
#include "math_utils.glsl"
システムシェーダーをプロジェクトにクローンする¶
プロジェクト用にシステムシェーダーをカスタマイズするには、そのシェーダーをクローンできます。クローンすると、システムシェーダーファイルが、システムシェーダーディレクトリ内と同じパスでプロジェクトの Shaders ディレクトリにコピーされます。コピーは自由に編集できます。例えば、kanzi/common/lights.glsl をクローンすると Shaders/kanzi/common/lights.glsl が作成されます。
クローンは、#include <kanzi/common/lights.glsl> のようにシェーダーがシステムシェーダーをインクルードしているすべての箇所で、そのシステムシェーダーをオーバーライドします。このオーバーライドは他のシステムシェーダーや Kanzi Studio が提供するマテリアルタイプにも適用されるため、クローンへの変更はそのシステムシェーダーを使用するすべてのマテリアルに反映されます。
コピーでは、例えばその前後にコードを追加するために、オーバーライド対象のシステムシェーダーを同じパスでインクルードできます。その場合は、コピー内のインクルードガードマクロ (lights.glsl の KANZI_LIGHTS など) の名前を変更してください。そうしないと、コピーのインクルードガードによってシステムシェーダーの内容が隠されます。
注釈
Kanzi Studio の以前のバージョンで作成したシステムシェーダーのクローンは、Shaders ディレクトリの直下にあります (例: Shaders/lights.glsl)。このようなクローンでシステムシェーダーをオーバーライドするには、システムシェーダーと同じパス (例: Shaders/kanzi/common/lights.glsl) に移動します。
システムシェーダーをプロジェクトにクローンするには、次の手順に従います。
Library > Resource Files > System Shaders で、カスタマイズしたいシステムシェーダーファイルを右クリックします。
Clone To Project を選択します。
Kanzi Studio はファイルをプロジェクトの
Shadersディレクトリにコピーします。Shader Source Editor で、必要に応じてクローンしたファイルを編集します。
これで、そのシステムシェーダーをインクルードしているシェーダーは、コピーを使用するようになります。