関連ブログ
- [UE5] 元の位置に戻るカメラの実装 2024.12.18UE
- [UE5]難易度変更に対応したシューティングゲームを作ってみよう 2024.12.11UE
- [UE5] インタラクト可能なモノの量産に役立つBPを作ってみよう 2024.12.04UE
CATEGORY
2023.07.26UE5UE/ Material
執筆バージョン: Unreal Engine 5.2
|
はじめに
マテリアルで複数のテクスチャやパラメータを切り替える手段は主に「If」「Lerp」「Switch」「StaticSwitch」があります。
できることは似たような機能ですが、これらを適切に使い分けるために今回は特徴と処理負荷に注目して比較していこうと思います。
「If」「Lerp」「Switch」に関してはこちらのブログで紹介してますので、使い方等はこちらを参考にするとよいです。
https://historia.co.jp/archives/34433/
特徴
まずはそれぞれの特徴の説明から。
「If」ノード
「Lerp」ノード
「Switch」ノード
「StaticSwitch」ノード
負荷検証
まずは各ノードを使って、ほぼ同じ動作をするマテリアルを組んでいきます。
また、参照するテクスチャやパラメーターの数を変更して、それぞれの負荷の増加具合も比べていきます。
※Ifに関しては今回はA==Bを使用していません。
※StaticSwitchに関しては今回はStaticSwitchParameterノードを使用しています。
※StaticSwitchノード+StaticBoolParameterノードの組み合わせで同じ動作ができますが、負荷が変わらないので見やすさを優先しています。
参考用にTextureが5つの時のMaterialGraphはこのようになっています。
一通り作成したので、それぞれのmaterial’s statsを見て、Base pass shader(PixelShader命令数)を見ていきます。
TextureSample数やVertexShaderの値は、使用するノードで特に変化はないので割愛します。
If | Lerp | Switch | StaticSwitch | |
Const4float 1個 | 175 | 175 | 182 | 175 |
Const4float 2個 | 177 | 176 | 183 | 175 |
Const4float 3個 | 178 | 178 | 187 | 175 |
Const4float 5個 | 179 | 182 | 192 | 175 |
Const4float 10個 | 191 | 192 | 202 | 175 |
Texture 1個 | 177 | 177 | 184 | 177 |
Texture 2個 | 179 | 179 | 185 | 177 |
Texture 3個 | 181 | 182 | 188 | 177 |
Texture 5個 | 185 | 188 | 197 | 177 |
それぞれのマテリアルをStaticMeshに張り付け、並べた際のMaterialComplexityはこのようになりました。
結論
結論としてはアバウトになりますが、それぞれ特徴があるので、使用用途に応じて使い分けましょう!
使い分けとしては以下の基準で決めれたらいいと思います!