シェーダーバリアント

ドキュメント:

シェーダーキーワードの宣言と使用 | Unity マニュアル [公式]

使い方

参考:

Shader Variant について調べてみた – Qiita

shader_feature や multi_compile でシェーダのバリアントを作る | LIGHT11

Shader Variant とは? | 黒河優介

Asset Bundle と Shader Variant の関係 | 黒河優介

Shader Variant と最適化周り | 黒河優介

Shader Variant について調べてみた | しゅみぷろ

プラグマ

シェーダーバリアントを作成するには、「プラグマ」 (#pragma) あるいは「コンパイラーディレクティブ」と呼ばれる構文を用いてシェーダーキーワードを指定する。

  • multi_compileシェーダーバリアントを生成する
  • multi_compile_localシェーダーバリアントを生成する/キーワードはローカルに作用する
  • shader_feature未使用のバリアントはビルドに含まれない
  • shader_feature_local未使用のバリアントはビルドに含まれない/キーワードはローカルに作用する

定義できるグローバルキーワードは 256 個に制限される。Unity は内部的に 60 個のグローバルキーワードを使用する。ユーザーが定義できるグローバルキーワードの上限は実質的に 190 個程度に制限される。ローカルキーワードはシェーダー毎に 64 個に制限される。

参考:

シェーダーキーワードの宣言と使用 | Unity マニュアル [公式]

シェーダーキーワードを使う

ドキュメント:

マテリアルパラメーターへのスクリプトを使ったアクセスと変更 | Unity 2020.3 マニュアル [公式]

シェーダーキーワードの宣言と使用 | Unity マニュアル [公式]

Shader.EnableKeyword | Unity スクリプトリファレンス [公式]

Shader.DisableKeyword | Unity スクリプトリファレンス [公式]

参考:

Shader の定義済みキーワードを動的に有効/無効化する | KAZUPON 研究室

How do I set a shader setting/property at runtime using MonoBehaviour? – Stack Overflow

ビルトインショートカット

  • multi_compile_fwdbase
  • multi_compile_fwdadd
  • multi_compile_fwdadd_fullshadows
  • multi_compile_fog

ドキュメント:

シェーダーキーワードの宣言と使用 | Unity マニュアル [公式]

マルチコンパイル

参考:

Multi-Compile Shaders | Martin Palko

パフォーマンス/最適化

ドキュメント:

シェーダーのロード時間の最適化 | Unity 2018.4 マニュアル [公式]

シェーダーバリアントコレクション

ドキュメント:

シェーダーバリアントコレクション | Unity マニュアル [公式]

事例

リンク:

50個のエフェクトシェーダを統一した話 & シェーダ共通化テクニックまとめ | CyberAgent Developers Blog

Tips

エフェクト統一シェーダーがあると捗るよね | SEGA TECH Blog

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA