Nvidia Flexを使用して液体を作りたいです。
公式のライブトレーニングにCustomNodeでメタボールを組むものがあったので動画内のものを自分のプロジェクトに組んだのですがエラーがでます。Flexを使用するのもHLSLシェーディングを使用するのも初めてなので、Flexが影響しているのかどうかもわかりません。スペルミスなども探しましたが進展がなく悩んでいます。
出ているエラーは"[SM5] /Engine/Generated/Material.ush(1322,13-99): error X3013: ‘CustomExpression0’: no matching 6 parameter function"です。
どなたか同じ問題にぶち当たった方はいないでしょうか?
試してみてみるべきことなどありましたら些細なことでも構いませんので回答頂けましたら幸いです。
Custom
/////// metaball simple
float3 CamVec = normalize(WorldPos-View.WorldViewOrigin);
float3 curpos = WorldPos;
float3 normal = 0;
int maxSteps = 16;
float curdist, accum = 0.01;
int minStepSize = 0.02;
int i = 0;
while(i < maxSteps)
{
curdist = CustomExpression0(Parameters, curpos, k, Sphere1, Sphere2, Sphere3, t);
if(curdist < thresh)
{
return float4(1, 1, 1, 1);
}
curpos += CamVec * max(minStepSize, curdist);
minStepSize+=0.02;
i++;
}
return 0;
///// Add Normal
curpos += CamVec * curdist;
normal.x = CustomExpression0(Parameters, curpos + float3(1, 0, 0)*o, k, Sphere1, Sphere2, Sphere3);
normal.y = CustomExpression0(Parameters, curpos + float3(0, 1, 0)*o, k, Sphere1, Sphere2, Sphere3);
normal.z = CustomExpression0(Parameters, curpos + float3(0, 0, 1)*o, k, Sphere1, Sphere2, Sphere3);
normal = normalize(normal);
CamVec = lerp(CamVec, -normal, Refraction);
///// Add Density
int j = 0;
while(j < 16){
curdist = CustomExpression0(Parameters, curpos, k, Sphere1, Sphere2, Sphere3, t);
if(curdist < shadowMult){
curdist = max(0, curdist);
accum += shadowMult - curdist;
/////return float4(1, 1, 1, 1);
}
curpos += CamVec * 10;
j++;
}
return float4(normal, accum);
Evaluate Distance Field
///// evaluate the distance;
float s1 = distance(Sphere1.xyz, curpos)-Sphere1.w;
float s2 = distance(Sphere2.xyz, curpos)-Sphere2.w;
float s3 = distance(Sphere3.xyz, curpos)-Sphere3.w;
float dot1 = dot(normalize(curpos-Sphere1.xyz), float3(0.707, 0.707, 0))-1;
float dot2 = sin(dot1*2+(t*2))*1.5;
dot2 += sin(dot1*24+(t*8))*0.07;
s1 -= dot2;
float h = saturate(0.5+0.5*(s2-s1)/k);
s2 = lerp(s2, s1, h) - k*h*(1.0-h);
h = saturate(0.5+0.5*(s3-s2)/k);
float curdf = lerp(s3, s2, h)-k*h*(1.0-h);
return curdf;