public AstNodeStm vsocp()
{
int VectorSize = ONE_TWO;
//Console.WriteLine("VECTOR_SIZE: {0}", VectorSize);
var VVD = VEC(VD, VType.VFloat, VectorSize * 2);
var VVS = VEC(VS, VType.VFloat, VectorSize);
return VVD.SetVector((Index) => {
switch (Index)
{
case 0: return ast.CallStatic((Func<float, float, float, float>)MathFloat.Clamp, 1f - VVS[0], 0f, 1f);
case 1: return ast.CallStatic((Func<float, float, float, float>)MathFloat.Clamp, VVS[0], 0f, 1f);
case 2: return ast.CallStatic((Func<float, float, float, float>)MathFloat.Clamp, 1f - VVS[1], 0f, 1f);
case 3: return ast.CallStatic((Func<float, float, float, float>)MathFloat.Clamp, VVS[1], 0f, 1f);
default: throw (new NotImplementedException("vsocp: " + Index));
}
}, PC);
}