1. A method of performing discrete element texture synthesis comprising: receiving an input texture comprising a set of multiple discrete elements; receiving a set of boundary conditions defining a shape of an output texture; initializing the output texture by copying one or more of the multiple discrete elements of the input texture to the output texture; determining one or more output neighborhoods representing one or more of the multiple output discrete elements spatially surrounding a center output element of the output texture; minimizing an energy function to generate a similarity set, the energy function measuring a similarity between a plurality of the one or more output neighborhoods and a corresponding best matching input neighborhood of the input texture; assigning properties to one or more multiple output discrete elements based at least in part on an analysis of one or more input discrete elements of the similarity set, wherein the assigning properties includes editing one or more attributes of the one or more multiple output discrete elements; propagating the edited one or more attributes to change the one or more multiple output discrete elements based at least in part on the analysis of one or more input discrete elements of the similarity set; and storing the output texture in a computer readable storage medium.