Skip to content

NVIDIA Texture Tools samples for compression, image processing, and decompression.

License

Notifications You must be signed in to change notification settings

nvpro-samples/nvtt_samples

Repository files navigation

NVTT 3 Samples

This repository contains a number of samples showing how to use NVTT 3, a GPU-accelerated texture compression and image processing library.

This includes several small samples intended as tutorials:

  • mini_bc7 shows how to load an image and turn it into a one-mipmap DDS file using BC7 block compression. It's small enough that it can be rewritten in 250 characters (without error checking):
#include<nvtt/nvtt.h>
int main(int n,char**v){if(n==3){nvtt::Surface i;i.load(v[1]);nvtt::Context c(1);nvtt::CompressionOptions o;o.setFormat(nvtt::Format_BC7);nvtt::OutputOptions p;p.setFileName(v[2]);c.outputHeader(i,1,o,p);c.compress(i,0,0,o,p);}}
  • mipmap shows how to generate mipmaps from an image, and describes linear-space filtering and premultiplied alpha.
  • cuda_input shows how to use NVTT 3's low-level GPUInputBuffer API to compress a texture directly from a GPU buffer. This API accelerates compression by avoiding CPU-GPU data transfers.
  • c_wrapper_demo shows how to use NVTT 3's C wrapper, which allows other compilers and programming languages to use NVTT 3. It covers the high-level and low-level APIs.
  • to_slope_space shows how to use nvtt::Surface::channel(). It converts a normal map to a slope-space BC5 normal map.

This also includes the source code for several tools from NVTT 3 ported to use the nvpro-samples framework, which show how to use almost all of the functionality in NVTT 3:

  • compress is a general command-line tool for compressing images to DDS files, and uses similar flags as the Texture Tools Exporter's command-line interface. It supports many types of images, including normal maps. It can also compress multiple files at once (the batchCompress tool was merged into it in June 2023)
  • decompress decompresses DDS files to other formats.
  • imgdiff reports error metrics between image files.

For comprehensive API documentation, please see the docs/ folder in the NVTT 3 distribution.

Build Instructions

To build these samples, you'll need the NVTT 3 SDK. For cuda_input, you'll also need the CUDA Toolkit. Then do one of the following:

You can then use CMake to generate and subsequently build the project.

About

NVIDIA Texture Tools samples for compression, image processing, and decompression.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published