Half-precision Deformation Data
Skinned vertex stored internally on GPU in the following structure:
struct DeformedVertex
{
float3 deformedVertexPosition;
float3 deformedNormal;
float3 deformedTangent;
}
Memory required to store this structure is: (3 + 3 + 3) * sizeof(float) = 36 bytes
of memory for each deformed vertex.
Rukhanka can be switched to use half-precision floating point numbers for deformation data instead of default single-precision ones. In this mode, a deformed vertex will be presented in the form of:
struct DeformedVertex
{
half3 deformedVertexPosition;
half3 deformedNormal;
half3 deformedTangent;
}
This structure requires only (3 + 3 + 3) * sizeof(half) = 18 bytes
of memory.
This mode has the following characteristics:
- The memory bandwidth required to transfer deformation data during skinned mesh computation and application is reduced by half. Because this factor greatly influences skinning performance, reducing bandwidth can help to increase of efficiency of mesh skinning.
- Memory storage requirements for deformed vertex storage are reduced by half.
- Deformation data precision is reduced, and, potentially, could introduce animation artifacts. Make sure to carefully test your animation set for potential visual discrepancies after enabling this mode.
Rukhanka Animation can be switched to this mode by using Settings Dialog.