Reducing the Geometry Bandwidth

Generally speaking, if we use more memory to store some geometrical attributes, we can expect a longer rendering time than if we were using less memory. This is true if:

  • We do enforce a 4 bytes alignment of the stored geometry channels, for each channel,

  • We do use equally fast data formats (in a word: don’t use RED::MFT_DOUBLE).

A practical example of this is detailed in the doc Memory Usage within the Reducing Data Memory on the GPU section. Using RED::MFT_UBYTE normals instead of RED::MFT_FLOAT normals can significantly improve the rendering speed on large assemblies. First this will improve the scalability of the system (we can load more data); second a given set of data requires less memory to be fetched by the GPU.

Note

Depending on the GPU and on the actual performance bottleneck, this may be noticeable or not… A GPU that has no shader processing power may be bound by the size of the programs to process, so the bandwidth saving may remain unseen. Situations may vary a lot depending on the used platform. But generally speaking, reducing the number of geometry channels and the size of these channels set into RED::IMeshShape objects can be beneficial to performances, assuming we enforce proper memory alignment.