Tacent View

A fast image and texture viewer written in C++. Leverages the GPU for quick draw times. Built on DearImGui and the Tacent Library, Tacent View has solid support for common texture formats like tga, dds, ktx2, exr as well as more traditional formats like jpg and png. Editing functionality includes batch resizing, rotations/flips, and the ability to generate contact sheets for VFX.

View the Project on GitHub bluescan/tacentview

Build latest tacentview

Introduction

Tacent View is both fast and correct. Most of the image loading code is either custom or based on official reference implementations. Once decoded, images are marshalled to GPU memory for fast switching/rendering. The thumbnail viewer caches images/meta-data and can handle thousands of files in a single directory at interactive speeds.

Tacent View Levels


Download

Tacent View is distributed as:

  1. Source Code
  2. Portable Windows Zip
  3. Linux Deb File
  4. Snapcraft Snap

The source code, portable Windows zip, and deb files are available from the releases GitHub page. If running Linux you may also consider installing the snap. If you want to build it yourself, instructions are available at the Tacent View GitHub page. The CMake build-system is used and can create projects (VS2022, make, nmake, ninja) for your desired compiler (MSVC, Clang, GCC). Build yourself if you have any security concerns. The buttons below link to pre-compiled versions of the latest stable release.


Operation

There are two main modes in which Tacent View may be used: GUI and CLI.

GUI mode is what you would expect – Open an image file with tacentview.exe and a window will open displaying the image. If you install the snap or deb file, it will register with the OS to be able to open supported image formats (but will not change your defaults). On Windows you may optionally associate Tacent View to a particular image type by selecting Open with and then Choose another app.

CLI mode (Command-Line Interface) allows you to perform all operations that can be done in the GUI from the command-line. The same executable file is used for command-line operations, whether compiled for Linux or Windows. CLI mode is intended to allow batch processing and conversions of images from one format to another. It allows Tacent View to be used in game pipelines and image processing workflows.


Image Formats

Loads: TGA PNG/APNG JPG GIF WEBP QOI DDS PVR KTX/KTX2 ASTC/ASC PKM EXR HDR/RGB BMP ICO TIF/TIFF

Saves: TGA PNG/APNG JPG GIF WEBP QOI BMP TIF/TIFF

Animates: GIF WEBP APNG TIF/TIFF


Features


Texture Pixel Formats

Some image formats are often used to store texture data that is easily decompressable by a GPU – DDS, PVR, KTX, KTX2, ASTC, and PKM files are examples. Tacent View supports the following texture formats for these types of files:

Packed      
R8 R8G8 R8G8B8 R8G8B8A8
B8G8R8 B8G8R8A8 G3B5R5G3* G4B4A4R4*
B4A4R4G4 G3B5A1R5G2* G2B5A1R5G3* A8L8
A8 L8    
R16 R16G16 R16G16B16 R16G16B16A16
R32 R32G32 R32G32B32 R32G32B32A32
R16f R16G16f R16G16B16f R16G16B16A16f
R32f R32G32f R32G32B32f R32G32B32A32f
R11G11B10uf B10G11R11uf R9G9B9E5uf E5B9G9R9uf
R8G8B8M8 R8G8B8D8    
       
Block (BC)      
BC1DXT1 BC1DXT1A BC2DXT2DXT3 BC3DXT4DXT5
BC4ATI1U BC4ATI1S BC5ATI2U BC5ATI2S
BC6U BC6S BC7  
       
Block (ETC)      
ETC1 ETC2RGB ETC2RGBA ETC2RGBA1
EACR11U EACR11S EACRG11U EACRG11S
       
PVR      
PVRBPP4 PVRBPP2    
       
ASTC      
ASTC4X4 ASTC5X4 ASTC5X5 ASTC6X5
ASTC6X6 ASTC8X5 ASTC8X6 ASTC8X8
ASTC10X5 ASTC10X6 ASTC10X8 ASTC10X10
ASTC12X10 ASTC12X12    

* These formats are named like every other format in the table – based on how the bits appear on disk and in memory. Some APIs call these B5G6R5 (BGR565), B4G4R4A4 (BGRA4444), and B5G5R5A1 (BGRA5551) but this is inconsistent with their other format names like B8G8R8 which are correct. Even taking little-endianness into account the adjusted names would be G3R5B5G3, R4A4B4G4, and G2R5A1B5G3 which does not match the in-memory representation. On the bright side, the LE-adjusted names for the PVR spec do make sense: G3B5R5G3 -> RGB565, G4B4A4R4 -> ARGB4444, and G3B5A1R5G2 -> ARGB1555.