シェーダーバリアント
参考:
複数のシェーダープログラムのバリアントを作る | Unity 2018.4 マニュアル [公式]
目次
使い方
参考:
Unity の Shader Variant について調べてみた – Qiita
shader_feature や multi_compile でシェーダのバリアントを作る | LIGHT11
Asset Bundle と Shader Variant の関係 | 黒河優介
Shader Variant について調べてみた | しゅみぷろ
複数のシェーダープログラムのバリアントを作る | Unity 2018.4 マニュアル [公式]
プラグマ (#pragma キーワード/コンパイラーディレクティブ)
multi_compile
:シェーダーバリアントを生成するmulti_compile_local
:シェーダーバリアントを生成する/キーワードはローカルに作用するshader_feature
:未使用のバリアントはビルドに含まれないshader_feature_local
:未使用のバリアントはビルドに含まれない/キーワードはローカルに作用する
定義できるグローバルキーワードは 256
個に制限される。Unity は内部的に 60
個のグローバルキーワードを使用する。ユーザーが定義できるグローバルキーワードの上限は実質的に 190
個程度に制限される。ローカルキーワードはシェーダー毎に 64
個に制限される。
参考:
複数のシェーダープログラムのバリアントを作る | Unity 2018.4 マニュアル [公式]
シェーダーキーワードを使う
参考:
Shader の定義済みキーワードを動的に有効/無効化する | KAZUPON 研究室
マテリアルパラメーターへのスクリプトを使ったアクセスと変更 | Unity マニュアル [公式]
Shader.EnableKeyword | Unity スクリプトリファレンス [公式]
Shader.DisableKeyword | Unity スクリプトリファレンス [公式]
Declaring and Using Shader Keywords in HLSL | Unity Manual [Official]
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 2018.4 マニュアル [公式]
マルチコンパイル (multi_compile)
参考:
Multi-Compile Shaders | Martin Palko
パフォーマンス/最適化
参考:
シェーダーのロード時間の最適化 | Unity 2018.4 マニュアル [公式]
Shader Variant Collections
参考: