Ejemplo n.º 1
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string a = GetConnectorByStringID("A").TryEvaluate();
            string b = GetConnectorByStringID("B").TryEvaluate();

            return($"lerp( {a}, {b}, {property.EvalProperty()} )");
        }
Ejemplo n.º 2
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            //             string evalStr = "";
            //
            //             evalStr += GetConnectorByStringID("A").TryEvaluate() + "*" + GetConnectorByStringID("B").TryEvaluate();
            //
            //             ChainAppendIfConnected(ref evalStr, "*", "C", "D", "E");
            //
            //             return "(" + evalStr + ")";

            string MetallicVal = GetConnectorByStringID("Metallic").TryEvaluate();
            string Metallic_a  = GetConnectorByStringID("Metallic_alpha").TryEvaluate();
            string Metallic_r  = GetConnectorByStringID("Metallic_red").TryEvaluate();
            string MainTex     = GetConnectorByStringID("MainTex").TryEvaluate();
            string Diffcubemap = GetConnectorByStringID("DiffCubemap").TryEvaluate();
            string SpecCubemap = GetConnectorByStringID("SpecCubemap").TryEvaluate();

            return(string.Format(@"PBRSpecularLow(normalDirection, 
                    viewDirection,{0},{1},{2},{3},{4},{5})",
                                 GetDefaultString(MetallicVal, "float3(0,0,0)"),
                                 GetDefaultString(Metallic_a, "0"),
                                 GetDefaultString(Metallic_r, "0"),
                                 GetDefaultString(MainTex, "float3(0,0,0)"),
                                 GetDefaultString(Diffcubemap, "float3(0,0,0)"),
                                 GetDefaultString(SpecCubemap, "float3(0,0,0)")));
        }
Ejemplo n.º 3
0
        // TODO: MIP selection
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            //if( varDefined )
            return(GetVariableName());
            //else
            //DefineVariable(); // This lags for some reason

            /*
             * bool useLOD = GetInputIsConnected( 1 ) || (SF_Evaluator.inVert || SF_Evaluator.inTess);
             * string uvStr = GetInputIsConnected( 0 ) ? GetInputCon( 0 ).Evaluate() : SF_Evaluator.WithProgramPrefix( "uv0.xy" );
             * string func = useLOD ? "tex2Dlod" : "tex2D";
             * string mip = GetInputIsConnected( 1 ) ? GetInputCon( 1 ).Evaluate() : "0";
             *
             * if( useLOD ) {
             *      uvStr = "float4(" + uvStr + ",0.0," + mip + ")";
             * }
             *
             *
             * string s = func + "(" + property.GetVariable() + "," + uvStr + ")";
             * if( IsNormalMap() ) {
             *      s = "UnpackNormal(" + s + ")";
             * }
             */
            //Debug.LogError( "Invalid evaluation of " + property.name );
//			return "";
        }
Ejemplo n.º 4
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string varName   = "float";
            int    compCount = GetEvaluatedComponentCount();

            if (compCount > 1)
            {
                varName += compCount;
            }

            bool a = GetInputIsConnected("A");
            bool b = GetInputIsConnected("B");
            bool c = GetInputIsConnected("C");
            bool d = GetInputIsConnected("D");

            string line = varName + "(";

            if (a && b && c && d)
            {
                line += GetConnectorByStringID("A").TryEvaluate() + "," + GetConnectorByStringID("B").TryEvaluate() + "," + GetConnectorByStringID("C").TryEvaluate() + "," + GetConnectorByStringID("D").TryEvaluate();
            }
            else if (a && b && c)
            {
                line += GetConnectorByStringID("A").TryEvaluate() + "," + GetConnectorByStringID("B").TryEvaluate() + "," + GetConnectorByStringID("C").TryEvaluate();
            }
            else
            {
                line += GetConnectorByStringID("A").TryEvaluate() + "," + GetConnectorByStringID("B").TryEvaluate();
            }

            return(line + ")");
        }
Ejemplo n.º 5
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string r = Rnd();
            string s = Skew();

            return("frac(" + r + ".x*" + r + ".y*(1+" + s + ".x))");
        }
Ejemplo n.º 6
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string evalStr = "";

            evalStr += "mul(" + GetConnectorByStringID("A").TryEvaluate() + "," + GetConnectorByStringID("B").TryEvaluate() + ")";
            return(evalStr);
        }
Ejemplo n.º 7
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            if (spaceSelFrom == spaceSelTo)
            { // TODO: Add warning about tunneling variable
                return(GetConnectorByStringID("IN").TryEvaluate());
            }


            if (tranMod == TranMod.Direction)
            {
                return(Direction());
            }
            else
            {
                return(Position());
            }


            // TODO TODO TODO:



            /*
             *          if( selection != tangentID )
             *                  return "mul( " + matrixVars[selection] + ", float4( " + GetConnectorByStringID( "IN" ).TryEvaluate() + ", 0 )).xyz";
             *          else
             *                  return "mul( " + matrixVars[selection] + ", " + GetConnectorByStringID( "IN" ).TryEvaluate() + " )";
             */
        }
Ejemplo n.º 8
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string h = GetConnectorByStringID("H").TryEvaluate();
            string s = GetConnectorByStringID("S").TryEvaluate();
            string v = GetConnectorByStringID("V").TryEvaluate();

            return("(lerp(float3(1,1,1),saturate(3.0*abs(1.0-2.0*frac(" + h + "+float3(0.0,-1.0/3.0,1.0/3.0)))-1)," + s + ")*" + v + ")");
        }
Ejemplo n.º 9
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string a = GetConnectorByStringID("A").TryEvaluateAs(GetEvaluatedComponentCount());
            string b = GetConnectorByStringID("B").TryEvaluateAs(GetEvaluatedComponentCount());
            string v = GetConnectorByStringID("V").TryEvaluateAs(GetEvaluatedComponentCount());

            return("((" + v + " - " + a + ") / (" + b + " - " + a + "))");
        }
Ejemplo n.º 10
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string mainInput = GetConnectorByStringID("IN").TryEvaluate();
            string steps     = GetConnectorByStringID("STPS").TryEvaluate();


            return("floor(" + mainInput + " * " + steps + ") / (" + steps + " - 1)");
        }
Ejemplo n.º 11
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string q = Q();
            string d = D();
            string e = E();

            return("float3(abs(" + q + ".z + (" + q + ".w - " + q + ".y) / (6.0 * " + d + " + " + e + ")), " + d + " / (" + q + ".x + " + e + "), " + q + ".x);");
        }
Ejemplo n.º 12
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string a = GetConnectorByStringID("A").TryEvaluateAs(GetEvaluatedComponentCount());
            string b = GetConnectorByStringID("B").TryEvaluateAs(GetEvaluatedComponentCount());
            string v = GetConnectorByStringID("V").TryEvaluateAs(GetEvaluatedComponentCount());

            return(string.Format("smoothstep( {0}, {1}, {2} )", a, b, v));
        }
Ejemplo n.º 13
0
 public override string Evaluate(OutChannel channel = OutChannel.All)
 {
     if (SF_Evaluator.inVert || SF_Evaluator.inTess)
     {
         return("v.normal");
     }
     return(perturbed ? "normalDirection" : "i.normalDir");
 }
Ejemplo n.º 14
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string str = texture.dataUniform[0].ToString("0.0###########"); // At least one decimal

//             if (texture.dataUniform[0] < 0f)
//                 return "(" + str + ")";
            return(string.Format("GetSpec(DirectionLightDir0.xyz, viewDirection, normalDirection, {0}) * DirectionLightColor0 * DirectionLightIntensity0", str));
        }
Ejemplo n.º 15
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string evalString = @"(max(0.0, dot(normalDirection, DirectionLightDir0)) * DirectionLightColor0.xyz * DirectionLightIntensity0
                                  + max(0.0, dot(normalDirection, DirectionLightDir1)) * DirectionLightColor1.xyz * DirectionLightIntensity1
                                  + max(0.0, dot(normalDirection, DirectionLightDir2)) * DirectionLightColor2.xyz * DirectionLightIntensity2)";

            return(evalString);
        }
Ejemplo n.º 16
0
        public int GetCompCount()
        {
            if (conType == ConType.cInput)
            {
                if (IsConnected())
                {
                    return(inputCon.GetCompCount());
                }
                else
                {
                    int cc = 0;
                    if (SF_Tools.CompCountOf(valueType, out cc))
                    {
                        return(cc);
                    }
                    else
                    {
                        Debug.LogWarning("[Shader Forge] - invalid component count in [" + label + "] of " + node.name + "");
                        return(node.texture.CompCount);                        // This is super weird, shouldn't read from the max comp count, read from the connection type instead
                    }
                }
            }



            OutChannel oc = outputChannel;

            if (oc == OutChannel.All)
            {
                int cc = 0;
                if (SF_Tools.CompCountOf(valueType, out cc))
                {
                    return(cc);
                }
                else
                {
                    Debug.LogWarning("[Shader Forge] - invalid component count in [" + label + "] of " + node.name + "");
                    return(node.texture.CompCount);                    // This is super weird, shouldn't read from the max comp count, read from the connection type instead
                }
            }
            else if (oc == OutChannel.RGB)
            {
                return(3);
            }
            if (oc == OutChannel.RG)
            {
                return(2);
            }

            int custCount = SF_Tools.ComponentCountOf(customValueType);

            if (custCount != 0)
            {
                return(custCount);
            }

            return(1);
        }
Ejemplo n.º 17
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            if (!ShouldDefineVariable())            // TODO: Isn't this already handled on the node level?
            {
                this.PreDefine();
            }

            return(GetVariableName());
        }
Ejemplo n.º 18
0
    public override string Evaluate(OutChannel channel = OutChannel.All)
    {
        var    normal_dir = "float4(" + GetConnectorByStringID("A").TryEvaluate() + ",1)";
        var    inputB     = "float4(" + GetConnectorByStringID("B").TryEvaluate() + ",0)";
        string s          = GetFunctionName();

        s += "(" + inputB + ")";
        return($"mul({s}, {normal_dir})");
    }
Ejemplo n.º 19
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string str = texture.dataUniform[0].ToString("0.0###########", CultureInfo.InvariantCulture);               // At least one decimal

            if (texture.dataUniform[0] < 0f)
            {
                return("(" + str + ")");
            }
            return(str);
        }
Ejemplo n.º 20
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string evalStr = "";

            evalStr += GetConnectorByStringID("A").TryEvaluate() + "+" + GetConnectorByStringID("B").TryEvaluate();

            ChainAppendIfConnected(ref evalStr, "+", "C", "D", "E");

            return("(" + evalStr + ")");
        }
Ejemplo n.º 21
0
		public override string Evaluate( OutChannel channel = OutChannel.All ) {

			string uv = GetInputIsConnected( "UVIN" ) ? GetInputCon( "UVIN" ).Evaluate() : "i.uv0.xy";
			string hei = GetInputCon( "HEI" ).Evaluate();
			string dep = GetInputIsConnected( "DEP" ) ? GetInputCon( "DEP" ).Evaluate() : "0.05";
			string href = GetInputIsConnected( "REF" ) ? GetInputCon( "REF" ).Evaluate() : "0.5";
			string vDir = "mul(tangentTransform, viewDirection).xy";

			return "(" + dep + "*(" + hei + " - " + href + ")*" + vDir + " + " + uv + ")";
		}
Ejemplo n.º 22
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string dot = "1.0-max(0,dot(" + this["NRM"].TryEvaluate() + ", viewDirection))";

            if (GetInputIsConnected("EXP"))
            {
                return("pow(" + dot + "," + this["EXP"].TryEvaluate() + ")");
            }
            return("(" + dot + ")");
        }
Ejemplo n.º 23
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string evalString = string.Format(@"TexUVSplit({0}, {1}, {2}, {3})",
                                              GetConnectorByStringID("HorCount").TryEvaluate(),
                                              GetConnectorByStringID("VerCount").TryEvaluate(),
                                              GetConnectorByStringID("UV").TryEvaluate(),
                                              GetConnectorByStringID("Index").TryEvaluate());

            return(evalString);
        }
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string val  = GetInputCon("IN").Evaluate();
            string iMin = GetInputCon("IMIN").Evaluate();
            string iMax = GetInputCon("IMAX").Evaluate();
            string oMin = GetInputCon("OMIN").Evaluate();
            string oMax = GetInputCon("OMAX").Evaluate();

            return("(" + oMin + " + ( (" + val + " - " + iMin + ") * (" + oMax + " - " + oMin + ") ) / (" + iMax + " - " + iMin + "))");
        }
Ejemplo n.º 25
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string dist = "";

            if (GetConnectorByStringID("DIST").IsConnected())
            {
                dist = "/" + GetInputCon("DIST").TryEvaluate();
            }


            return("saturate((sceneZ-partZ)" + dist + ")");
        }
Ejemplo n.º 26
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string a = GetConnectorByStringID("A").TryEvaluate();
            string b = GetConnectorByStringID("B").TryEvaluate();

            string dotLeft  = b + " * dot(" + a + ", " + b + ")";
            string dotRight = "dot(" + b + ", " + b + ")";

            string retStr = "(" + a + " - (" + dotLeft + " / " + dotRight + "))";

            return(retStr);
        }
Ejemplo n.º 27
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            if (!ShouldDefineVariable())            // TODO: Isn't this already handled on the node level?
            {
                this.PreDefine();
            }

            string less   = "(" + StA() + "*" + GetInputCon("LT").Evaluate() + ")";
            string larger = "(" + StB() + "*" + GetInputCon("GT").Evaluate() + ")";
            string lela   = less + "+" + larger;

            return("lerp(" + lela + "," + GetInputCon("EQ").Evaluate() + "," + StA() + "*" + StB() + ")");
        }
Ejemplo n.º 28
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            // NeedSceneUVs()
            switch (currentType)
            {
            case FaceSignType.ZeroAndOne:
                return("isFrontFace");

            case FaceSignType.PlusMinusOne:
                return("faceSign");
            }
            Debug.LogError("Invalid face sign category");
            return("");
        }
Ejemplo n.º 29
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string infix = "";

            if (GetConnectorByStringID("UV").IsConnectedAndEnabled())
            {
                infix = GetConnectorByStringID("UV").TryEvaluate();
            }
            else
            {
                infix = "sceneUVs";
            }
            return("max(0, LinearEyeDepth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, " + infix + ")) - _ProjectionParams.g)");
        }
Ejemplo n.º 30
0
        public override string Evaluate(OutChannel channel = OutChannel.All)
        {
            string UV = "";

            if (AutoUV())
            {
                return("sceneColor");
            }
            else
            {
                UV = GetInputCon("UVIN").Evaluate();
                return("tex2D( " + editor.ps.catBlending.GetGrabTextureName() + ", " + UV + ")");
            }
        }