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); }
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); }
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); }