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)})";
     });
 }
Example #3
0
        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)}");
        }
Example #4
0
 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);
     }
 }
Example #5
0
        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})");
        }
Example #6
0
 private static string Atan(string typeName, string methodName, InvocationParameterInfo[] parameters)
 {
     return
         ($"{(parameters.Length < 2 ? "atan" : "atan2")}({InvocationParameterInfo.GetInvocationParameterList(parameters)})");
 }