Пример #1
0
        private void WriteLayer(List <Vertex> list)
        {
            foreach (Vertex v in list)
            {
                IModule  module       = v.Data.ParentModule as IModule;
                object[] compiledData = module.GetCompiledData(v.Data);
                ShaderNodeDataTypes.ShaderNode inputData
                    = compiledData[0] as ShaderNodeDataTypes.ShaderNode;
                for (int i = 1; i < compiledData.Count(); i++)
                {
                    if (compiledData[i] is KeyValuePair <object, string> )
                    {
                        KeyValuePair <object, string> KVP = (KeyValuePair <object, string>)compiledData[i];
                        if (!InputDict.ContainsKey(KVP.Key))
                        {
                            InputDict.Add(KVP.Key, KVP.Value);
                        }
                    }
                }

                if (inputData.FunctionBodyString != null)
                {
                    string BodyString = inputData.FunctionBodyString;
                    ParseVariables(v, ref BodyString);
                    ParseOutputs(v, ref BodyString);
                    WriteLine(BodyString);
                }
            }
        }
Пример #2
0
        public object[] GetCompiledData(Node node)
        {
            ShaderNodeDataTypes.ShaderNode shaderNode = new ShaderNodeDataTypes.ShaderNode();
            //ShaderTypes.float3 f3 = (ShaderTypes.float3)node.Items.FirstOrDefault(item => item.Tag.Equals(3)).OutputData;
            NodeItem item1 = node.Items.FirstOrDefault(item => item.Tag.Equals(1));
            NodeItem item2 = node.Items.FirstOrDefault(item => item.Tag.Equals(2));
            object   f1 = node.Connections.FirstOrDefault(conn => conn.To == item1.Input).From.Item.OutputData;
            object   f2 = node.Connections.FirstOrDefault(conn => conn.To == item2.Input).From.Item.OutputData;
            string   variable1 = "{VARIABLE1_NAME}", variable2 = "{VARIABLE2_NAME}";

            if (f1 is ShaderTypes.float3)
            {
                variable1 = "float4({VARIABLE1_NAME}, 1)";
            }
            if (f2 is ShaderTypes.float3)
            {
                variable2 = "float4({VARIABLE2_NAME}, 1)";
            }
            shaderNode.FunctionBodyString = "float4 {OUTPUT1_NAME} = lerp(" + variable1 + "," + variable2 + ",0.5);";
            return(new[] { shaderNode });
        }
Пример #3
0
 public object[] GetCompiledData(Node node)
 {
     ShaderNodeDataTypes.ShaderNode shaderNode = new ShaderNodeDataTypes.ShaderNode();
     shaderNode.FunctionBodyString = "return {VARIABLE1_NAME};";
     return(new[] { shaderNode });
 }
Пример #4
0
 public object[] GetCompiledData(Node node)
 {
     ShaderNodeDataTypes.ShaderNode shaderNode = new ShaderNodeDataTypes.ShaderNode();
     shaderNode.FunctionBodyString = "float4 {OUTPUT1_NAME} = lerp({VARIABLE1_NAME},{VARIABLE2_NAME},{0.5}});";
     return(new[] { shaderNode });
 }