UE4のマテリアル内で使用されるif表現式が個人的には少し直感的では無く、初見で少し迷った覚えがあるので備忘録として把握している内容をメモ。
挙動としては、予め比較結果に応じて渡す値を「(A > B)」「(A == B)」「(A < B)」の3つの入力ピンより指定しておき、AとBが比較される際に、その結果に応じて各ピンに入力している値が出力ピンより渡されるイメージ。
例えば下記の様にA = 5, B = 3で比較した場合は、A > Bが成立するので(A > B)ピンに入れている値「1,0,0」が出力ピンより渡される。
また、別の例を挙げるとA = 0, B = 2で比較した場合には、A < Bが成立するので(A < B)ピンに入れている値「0,1,0」が出力ピンより渡される。
プログラミング言語っぽく書くと下記の様なイメージになるかと思われる。
→return で返される値が出力ピンより渡される値
if(A > B)
{
return /* (A > B)の入力ピンに入れた値 */
}
else if(A == B)
{
return /* (A == B)の入力ピンに入れた値 */
}
else if(A < B)
{
return /* (A < B)の入力ピンに入れた値 */
}
なお、(A == B)が未指定の場合は(A > B)が(A >= B)の扱いになる模様
if(A >= B)
{
return /* (A > B)の入力ピンのに入れた値 */
}
else if(A < B)
{
return /* (A < B)の入力ピンに入れた値 */
}