Ejemplo n.º 1
0
        public GSIndividual Permutate(int iNum)
        {
            GSIndividual newInd = new GSIndividual(timeStamp, generation, iNum);

            newInd.red = GSTree.DeepClone(red);
            newInd.red.PermutateRandomNode();
            newInd.green = GSTree.DeepClone(green);
            newInd.green.PermutateRandomNode();
            newInd.blue = GSTree.DeepClone(blue);
            newInd.blue.PermutateRandomNode();
            newInd.alpha = GSTree.DeepClone(alpha);
            newInd.alpha.PermutateRandomNode();

            newInd.xpos = GSTree.DeepClone(xpos);
            newInd.xpos.PermutateRandomNode();
            newInd.ypos = GSTree.DeepClone(ypos);
            newInd.ypos.PermutateRandomNode();
            newInd.zpos = GSTree.DeepClone(zpos);
            newInd.zpos.PermutateRandomNode();

            return(newInd);
        }
Ejemplo n.º 2
0
        public static string WriteShader(GSIndividual ind)
        {
            string templatePath = "Assets/Resources/GSTemplate.shader";
            string copyPath     = "Assets/Resources/GeneratedShaders/" + ind.timeStamp + "/" + ind.generation + "/" + ind.shaderName + ".shader";

            Directory.CreateDirectory("Assets/Resources/GeneratedShaders/" + ind.timeStamp + "/" + ind.generation + "/");
            File.Copy(templatePath, copyPath, true);

            WriteToLine("Shader \"GeneticShader/" + ind.shaderName + "\"", copyPath, 1);

            WriteToLine("        v.vertex.x += " + ind.xpos.WriteTree() + ";", copyPath, 37);
            WriteToLine("        v.vertex.y += " + ind.ypos.WriteTree() + ";", copyPath, 38);
            WriteToLine("        v.vertex.z += " + ind.zpos.WriteTree() + ";", copyPath, 39);

            WriteToLine("        col.r = " + ind.red.WriteTree() + ";", copyPath, 49);
            WriteToLine("        col.g = " + ind.green.WriteTree() + ";", copyPath, 50);
            WriteToLine("        col.b = " + ind.blue.WriteTree() + ";", copyPath, 51);

            GSWriteShader.WriteToLine("        col.a = " + ind.alpha.WriteTree() + ";", copyPath, 52);
            AssetDatabase.Refresh();
            return("GeneticShader/" + ind.shaderName);
        }
Ejemplo n.º 3
0
        public GSIndividual Crossover(GSIndividual ind, int iNum)
        {
            GSIndividual newInd = new GSIndividual(timeStamp, generation, iNum);

            newInd.red = GSTree.DeepClone(red);
            newInd.red.CrossoverRandom(ind.red);
            newInd.green = GSTree.DeepClone(green);
            newInd.green.CrossoverRandom(ind.green);
            newInd.blue = GSTree.DeepClone(blue);
            newInd.blue.CrossoverRandom(ind.blue);
            newInd.alpha = GSTree.DeepClone(alpha);
            newInd.alpha.CrossoverRandom(ind.alpha);

            newInd.xpos = GSTree.DeepClone(xpos);
            newInd.xpos.CrossoverRandom(ind.xpos);
            newInd.ypos = GSTree.DeepClone(ypos);
            newInd.ypos.CrossoverRandom(ind.ypos);
            newInd.zpos = GSTree.DeepClone(zpos);
            newInd.zpos.CrossoverRandom(ind.zpos);

            return(newInd);
        }