SubstrateのコードでのMSM_Strataの使用に疑問があります

MaterialInterface.cppの以下のコードについてですが

<br/>

if ((uint16(MaterialResource->MaterialGetSubstrateMaterialBsdfFeatures_GameThread()) & uint16(ESubstrateBsdfFeature::Toon)) > 0)

{

// Add the Substrate shading model to the ShadingModelMask so that we detect on mobile that is it not only DefaultLit material in the scene.

// So that the base pass write the correct stencil values for the toon shading model to be schedule during the “all shading models” pass.

MaterialRelevance.ShadingModelMask |= EMaterialShadingModel::MSM_Strata;

}

<br/>

Maskとして定義されている変数にenum値を|しているのが奇異に感じます。

その直前の

MaterialRelevance.ShadingModelMask = GetShadingModels().GetShadingModelField();

を破壊する可能性があるのでは。

現状なにか実害が出ているかはわかりませんが、将来の不具合に繋がる可能性もあるかもしれないので、報告だけさせてください。

ToonはExperimentalなので単に作業中ということかもしれませんが、bitmaskを想定したShadingModelMaskの用法としては適切では無いように思えます。

[Attachment Removed]

確かにビットフィールドに対してenum値が割り当てられており不適切なコードになっているようです。

担当者に本件を連絡させていただきました。ご指摘感謝いたします。

[Attachment Removed]