Exploring texture formats
Animation textures are currently stored in the 32-bit floating-point texture format. This is an easy format to store animation textures in because it's the same format as the source data. This method won't work well on mobile hardware. The memory bandwidth from main memory to tiler memory is a scarce resource.
To target mobile platforms, consider changing from GL_RGBA32F
to GL_RGBA
with a GL_UNSIGNED_BYTE
storage type. Switching to a standard texture format does mean losing some data. With a GL_UNSIGNED_BYTE
storage type, each component of a color is limited to 256 unique values. These values are normalized when sampling and will be returned in a 0 to 1 range.
If any of the animation information stores values are not in the 0 to 1 range, the data will need to be normalized. The normalization scale factor will need to be passed to the shader as a uniform. If you are targeting mobile hardware, you probably only want to store rotation information...