Screenshot from BlendShapes with TBO. Screenshot from BlendShapes with TBO. Screenshot from BlendShapes with TBO. Screenshot from BlendShapes with TBO.

Blendshapes With TBO(Texture Buffer Objects)

Blendshapes also know as morph targets, are mostly used to acheive rich animation by blending between many different similar meshes of different shapes.

They are exteremly flexible and provides us with many different possibilities. At any given time, many different blendshapes can be combined (with respect to weights associated to it, which correspong to different shapes being blended) to produce a new expression.

Morphing meshes using shaders. based on the paper here – a GPU gem articles which describes how they acheived it in DirectX, The following implementation is based on OpenGL and GLSL.

Texture Buffer Object :

Texture buffers were also became core OpenGL in version 3.1 of the specification, Buffer textures are one-dimensional arrays of texels whose storage comes from an attached buffer object.

They provide the largest memory footprint for raw data access, much higher than equivalent 1D textures. However, they don’t provide texture filtering and other facilities that are usually available for other texture types. They represent formatted 1D data arrays rather than texture images.

Although, they are still textures that are resided in global memory so the access method is totally different than that of uniform buffers

Global texture memory access means texture fetching which involves the usage of a texture unit .Texture memory access provides a huge benefit compared to uniform buffers.

  • Textures are more prone to scattered accesses and thus are more capable of dealing with random memory access. If a certain set of data is accessed in a very random fashion it may be even faster to use texture fetches than indexed uniform access.

Performance of either depends much more on the actual shader implementation rather than on the hardware implementation of the features. Although with the newer generation GPUs and API's the line between the two on terms of performance and usage is mostly. blurring. [Refer 2]

Features :

  • Blending animation based on the Texture Buffer Objects.
  • Blending done on the shaders accessign the data from the TBO
  • Much faster than accesssing data from uniform buffer.

External Links :

  1. 2010 - Uniform Buffers versus Texture Buffers
  2. 2015 - Updated Article - Uniform Buffers versus Texture Buffers

Video :

Source On GitHub (Coming Soon)

Download Binaries(Windows)