Shader graph: Rigid body animation using vertex animation textures

Using Unity 2019.2.1f1, LWRP 6.9.1 and Shader Graph 6.9.1. You can get the article’s code and shaders here.

I saw two Youtube talks (The Illusion of Motion: Making Magic with Textures in the Vertex Shader, Unleashing Houdini for AAA Mobile Games Production – MIGS) about using specially encoded textures in the vertex shader to animate mesh. Both talks use Houdini to generate animations and because I don’t have Houdini, I decided to do everything in Unity.

The whole castle is the single mesh, in which recorded physics simulation.

Overview of example

Creating vertex animation consists of the following steps:

  1. Selecting the target
  2. Recording positions and rotations
  3. Combining meshes into single saving pivots and mesh ids
  4. Encoding position and rotation textures
  5. Using special shader that decodes these textures
Read More »

Double-sided mesh generator

I wanted to create the simple double-sided force field shader but stumbled upon a problem with the double-sided rendering of transparent objects.

You can see that the Cull Off shader has some artifacts. On the other hand, the double-sided mesh with the Cull Back shader doesn’t have these artifacts.

I’ve decided to do some research about the ways to render objects from both sides. I want to look into how they work with transparent objects and what approaches can be used in LWRP.

There are several ways to render meshes from both sides:

  1. A single-pass Cull Off shader with normals flip on VFACE, if lighting is needed
  2. Two-pass shader, the first pass with Cull Front, the second with Cull Back
  3. Two Materials Basic material and material with Cull Front and flipped normals
  4. Double-sided mesh

All variants except the fourth require shader modifications. The second and the third variants are not supported by LWRP at all, because it doesn’t support the two pass shaders, at least not without some or another magic.

Read More »