I am trying to rebuild the fur effect in Viva Pinata.

Here each square becomes a pattern of fur

I imagine the process to be like this...

U lift one end of the triangles.

Now I need to achieve "lifting one end of square". I can do either vertex, fragment, geometry shader. However I am clueless when it comes to determining which vertex is "end of square", so that I know which vertex to lift up.

This is actually an illusion. The vertices are not lifted: There aren't enough vertices in the model to create the pinata effect.

Here are the tricks:

• The normal map has squares in it to create the illusion of bumps
• The diffuse map as ambient occlusion baked-in to create the illusion of high-detail self-shadows or an ambient occlusion map is used.
• The shadow calculation gets distorted by either the normal map or a displacement/height map to create more illusion of pinata-like bumps so the shadows aren't straight-edged.
• "Fins" are added to the model to create the fluffy paper look you see on the sides where opacity is controlled by the fin's normal relative to the view (camera).

• The diffuse texture can be displaced (parallax mapping) according to the view direction and a height map to create a higher sense of depth.

Shells are not needed for the pinata effect but look up "3d Fur effect" and/or "shell and fins" for example of generating fins

A very minimalistic example (fins and baked ambient occlusion only):

-->

Take your 3D model (A simple cube in this example so we can see how its done) and extrude the edges. These are the "fins".

Create a texture for those fins that reproduces how the pinata paper looks sideways:

Apply this texture to the fins

Voila.

Left to do: Add normal map and parallax mapping or an extra shell.

Shells are extra copies of your original geometry extruded along the vertex normal that are rendered with a mostly transparent layer to create the illusion of depth.

Usually a shader is created that takes a height map and the diffuse texture to make every texel below the height threshold of each shells transparent.

-->

By creating an extra layer above the original mesh a slight illusion of depth is created:

The more shells are created, the better the effect.