Commonly Used Libraries in 3D Graphics Rendering

1 minute read

Published:

(work in progress…)

3D Model Loader

Some of the commonly used 3D model loading libries are tinyobjloader (limited to the .obj format), tinygltf, ASSIMP (supports wider range of formats). Here is a brief comparison between different .obj parser libraries.

ASSIMP is on of the most popular choice for 3D model handling. It is cross-platform and supports over 40 types of 3D model formats including some of the popular production formats, Collada, 3DS, ASE, DXF. However, the limitation could the the point cloud data formats. It loads a 3D model data structure and presents it on the graphics API readable format. There are two type of data structures Assimp presents (i) Array of Structures (AOS) and (ii) Structure of Arrays (SOA).

Texture and HDR Lighting Loader

The 3D model loading libraries often limited to the mesh loading. Therefore, additional library is required to handle the textures. For instance, stb_image is often a good match for tinyobjloader. As and advantage, stb_image is a header only library which is easier to integrate on a running project. However, some other libraries, e.g., soil and soil2 is more advance version than stb_image.

Some of the other choices could be FreeImage (cross platform, supports PNG, BMP, JPEG, TIFF), OpenImageIO (supports PNG, TIFF, TARGA, JPEG), SDL_ttf, DevIL Library (load 2D images with DevIL and create textures), SFML.

Other than the general formats for the textures, the EXR is a common format for image-based lighting. The OpenEXR is an excellent library to handle the image-based lighting (IBR).

Input-Output

  • Inputs and Window handling libraries: GLFW, SDL2
  • GUI: imgui, AntTweakBar (limited to OpenGL, DX (9, 10, 11)), Qt