private static string VectorCtor(string typeName, string methodName, InvocationParameterInfo[] parameters) { GetVectorTypeInfo(typeName, out string shaderType, out int elementCount); string paramList; if (parameters.Length == 0) { paramList = string.Join(", ", Enumerable.Repeat("0", elementCount)); } else if (parameters.Length == 1) { paramList = string.Join(", ", Enumerable.Repeat(parameters[0].Identifier, elementCount)); } else { StringBuilder sb = new StringBuilder(); for (int i = 0; i < parameters.Length; i++) { InvocationParameterInfo ipi = parameters[i]; sb.Append(ipi.Identifier); if (i != parameters.Length - 1) { sb.Append(", "); } } paramList = sb.ToString(); } return($"{shaderType}({paramList})"); }
private static InvocationTranslator SimpleNameTranslator(string nameTarget) { return((type, method, parameters) => { return $"{nameTarget}({InvocationParameterInfo.GetInvocationParameterList(parameters)})"; }); }
private static string Atanh(string typeName, string methodName, InvocationParameterInfo[] parameters) { InvocationParameterInfo firstParameter = parameters[0]; string target = firstParameter.Identifier; // Note this is pretty inaccurate on the GPU! return ($"log(({Cvc(firstParameter.FullTypeName, 1f)}+{target})/({Cvc(firstParameter.FullTypeName, 1f)}-{target}))/{Cvc(firstParameter.FullTypeName, 2f)}"); }
protected override string FormatInvocationParameter(ParameterDefinition def, InvocationParameterInfo ipi) { if (def.Type.Name == "System.Single" && IsIntegerType(ipi.FullTypeName)) { return($"float({ipi.Identifier})"); } else { return(ipi.Identifier); } }
private static string Pow(string typeName, string methodName, InvocationParameterInfo[] parameters) { if (parameters.Length < 2) { return($"pow({InvocationParameterInfo.GetInvocationParameterList(parameters)})"); } return(parameters[0].FullTypeName.Contains("Vector") ? $"pow({InvocationParameterInfo.GetInvocationParameterList(parameters)})" : $"pow({parameters[0].Identifier}, (float){parameters[1].Identifier})"); }
private static string Atan(string typeName, string methodName, InvocationParameterInfo[] parameters) { return ($"{(parameters.Length < 2 ? "atan" : "atan2")}({InvocationParameterInfo.GetInvocationParameterList(parameters)})"); }