NiagaraDataInterface内のGetMaterialParametersVM(FVectorVMExternalFunctionContext& Context)をoverrideしてModule側で入力された値InstanceDataに保持しているのですが、GPU使用時も同様にInstanceDataにModuleで入力した値を入れることが出来ますでしょうか。
↓----部分でInstanceDataに入力値を入れていますが、GPU設定時だとInputBase.GetAndAdvance()に当たる部分がushファイルの-----部分で返ってくるためInstanceDataに値を入れることが出来ません…
void UNDI_UVRotation::GetParametersVM(FVectorVMExternalFunctionContext& Context)
{
VectorVM::FUserPtrHandlerpInstanceData(Context);
FNDIInputParamInputBase(Context);
FNDIInputParamInputBlend(Context);
FNDIInputParamInputAlpha(Context);
FNDIInputParamInputBlendAlpha(Context);
FNDIInputParamInputBaseDistortion(Context);
FNDIInputParamInputBlendDistortion(Context);
FNDIOutputParamOutputValue(Context);
for (int32 i = 0; i < Context.GetNumInstances(); ++i)
{
pInstanceData->Base = InputBase.GetAndAdvance();
pInstanceData->Blend = InputBlend.GetAndAdvance();
pInstanceData->Alpha = InputAlpha.GetAndAdvance();
pInstanceData->BlendAlpha = InputBlendAlpha.GetAndAdvance();
pInstanceData->BaseDistortion = InputBaseDistortion.GetAndAdvance();
pInstanceData->BlendDistortion = InputBlendDistortion.GetAndAdvance();
OutputValue.SetAndAdvance(true);
}
}
↓ushファイル
bool bSuccess_{ParameterName};
void UVRotationParams_{ParameterName}(
in float In_Base,
in float In_Blend,
in float In_Alpha,
in float In_BlendAlpha,
in float In_BaseDistortion,
in float In_BlendDistortion,
//-----------------------------------
out bool Out_bSuccess)
{
Out_bSuccess = true;
}
ushファイルの----の設定部分から情報を抽出することが出来ればCPU同様にInstanceDataに値を保持することが出来るかと考えています。
ただ抽出方法や使用方法が合っているかも分かっていませんので、こちらの用途として合っているのか・可能なのかご教授いただけないでしょうか。
また、NiagaraからMaterialParameterへ直接、値を渡す方法としてDynamicparameter(Parameter1 ~ Parameter4)の計16個使用出来るかと思いますが、16より大きい値を渡せるようにするにはEngineの拡張で出来るものなのでしょうか。