5.8のエンジン更新に伴うシェーディングモデルIDの拡張について

お世話になっております。

<br/>

現在弊社で開発中のゲームプロジェクトにおいて、エンジンのバージョンアップ作業を行っております。

自社で改造していたエンジン本体の差分を5.6から5.8に移植するにあたり、ShadingModelID周辺の事について質問がございます。

5.6での「GBuffer の ShadingModelID」「EMaterialShadingModel(MSM)の枠」「FMaterialRelevance::ShadingModelMask」のそれぞれの空いてる2枠を使用して独自のシェーディングモデルIDを拡張して使用してきましたが、

5.8ではそれぞれGBufferが2枠、MSMが3枠、ShadingModelMaskがMSM13の1枠だけの空きになってるようで、改造差分を移植する際の方針を迷っており、方針として

A.「既存の枠を潰さない」方向で行く(Substrate用のビットを削るか構造体を64bitより大きくする)か、

B.「MSM_Subsurface(2)を流用する(※拡張の1つがプロジェクト専用のカスタムしたSubsurfaceシェーディングなので)」

の2パターンで考えてます。

そこで質問なのですが、以下の2点について伺いたいです。ちなみにプロジェクトではSubstrateは不使用という条件です。

<br/>

1. MSM_Subsurface は非推奨や削除の予定がありますか。

2. Substrate が無効な場合に SHADINGMODELID_SUBSTRATE_TOON を別の ID へ移しても問題ありませんか。

3. FMaterialRelevance::ShadingModelMask が 14bit になった理由と、拡張するならどの方法が推奨されますか。

<br/>

また、「MSM_Subsurface」とは別に、プロジェクトでは「MSM_PreintegratedSkin」についても使用しておらず、こちらも置き換えの候補としては有望かなと考えてますが、こちらの「MSM_PreintegratedSkin」 を流用・廃止する対応をしても問題はなさそうでしょうか。

よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

本件に関して確認させて頂きましたので、以下それぞれ回答させて頂きます。

1. MSM_Subsurface は非推奨や削除の予定がありますか。

MSM_Subsurface を個別に削除する予定は現時点では確認しておりません。

UE5.8ではSubstrateがデフォルトとなり従来のシェーディングモデル全般は非推奨扱いとなっておりますが、引き続きご利用頂ける状態です。

※Substrateと従来のパスの扱いに関しては以下ページも参考にして頂ければと思います。

[Content removed]

2. Substrate が無効な場合に SHADINGMODELID_SUBSTRATE_TOON を別の ID へ移しても問題ありませんか。

Substrateを利用しないのであれば、SHADINGMODELID_SUBSTRATE_TOONを別のIDにしてしまうのは良い方法かと思います。

ID 13をGBufferに書くのはSubstrateからのみとなっておりますが、

SHADINGMODELID_SUBSTRATE_TOONの分岐自体は多くあるので、Substrate無効化時に分岐が成立しないようにすることで安全になるかと思います。

※Toon自体がまだExperimental状態となっているため、アップデート時には注意が必要かと思います。

3. FMaterialRelevance::ShadingModelMask が 14bit になった理由と、拡張するならどの方法が推奨されますか。

該当の変更に関してはCL45139413にて行われており、状況としてはFMaterialRelevanceを64bitに収めるために行われたようです。

※新しくSubstrateTileTypeMask:4が追加され詰め直している形となります。

独自Shading Modelの追加に関して整備ができておらず申し訳ありませんが、

IDを増やすとなると色々な箇所で対応が必要となってしまう可能性があり、また特に今回カスタムしたSubsurfaceシェーディングとのことですので、

追加で必要とされる数が置き換え+1で収まるのであればSubsurfaceを置き換え、追加で空き枠1個を利用するといった方法が良さそうです。

もし更にShading Modelが必要となる場合はIDの拡張などを行って各種パイプライン上のIDやMask処理も対応していく形になるかと思います。

また、MSM_PreintegratedSkinについても、個別に削除する予定は現時点では確認しておりません。

Subsurfaceと同様、従来のシェーディングモデルとして非推奨扱いですが引き続きご利用頂ける形となっており、

プロジェクトで未使用であれば、置き換え候補として問題ないかと思います。

実装の際に気になる点などございましたら別途ご相談いただければと思います。

お手数おかけしますが、上記情報を元に対応を検討頂けますと幸いです。

よろしくお願いいたします。

[Attachment Removed]

お世話様です。

返答ありがとうございます。

頂いた情報を踏まえ、現在のプロジェクトの各MSMの使用状況の調査やヒアリングを行ったところ、「MSM_PreintegratedSkinの枠を置き換えてCharaSubsurfaceに流用する」のが一旦はよさそうに思いましたので、一旦この方向で試しに移植作業を行ってテストをしてみます。作業をしてみて、何か新たな問題など見えましたら、すみませんがまたご相談させていただきます。

よろしくお願いいたします。

[Attachment Removed]

検討頂きありがとうございます。

管理上本件はクローズとさせて頂きますが、実際に対応を行う上で問題等がありましたら再度ご相談いただければと思います。

よろしくお願いいたします。

[Attachment Removed]