For some artist Vertex is the minor component of a mesh. Well, while this still be true, on computer graphics, a vertex is a huge data structure with tons of data as:

  • Position

  • Color

  • Texture Coordinates (we can have several texture coordinates)

  • Fog Coord

  • Reflectance

  • Normal Vectors

  • Tangent Vectors

  • Blend Weights

  • Bone Weights

  • Blend Shapes

So, not only the shape can be changed by vertex manipulation but color, texture coordinates and others.

For sure, the most common use of Vertex Data is to change Positioning. A simple example is to use a grayscale image to change the height of each vertex, this is usually called Heightmap and is the technique used behind Unity`s terrain.

Maybe the Heightmap example can be perceived as a useless case since you could also repositioned your vertex without a grayscale image, but, if Vertex Shaders have a friend, this friend is called Time. Using Time we can animate data and by animate data I really mean change positions overtime, scroll UVs, blend Colors or Textures overtime and a lot of awesome  effects. In time, take a look on a simple flag...

On this new example, I`ve just changed a little bit the behavior and we have some bush smoothly bending by an imaginary wind.

Now, let`s add some cool stuff on top of that, and viola, a simple water effect

Even more interesting is the use of vertex to input new data. For instancing, there`s a very common usage of Vertex Color as a multiplier to combine different Textures, we call it a  splatmap.