dariomanesku/cmft
FreeCross-platform open-source command-line cubemap filtering tool.
FreeFree tier
About dariomanesku/cmft
cmft is a cross-platform open-source command-line tool for filtering cubemaps. It achieves fast processing by utilizing both multi-core CPU and OpenCL GPU simultaneously. It supports a variety of input/output formats (DDS, KTX, HDR, TGA) and map projections including cubemap, cube cross, latlong, face list, and strips. cmft can be built from source on Windows, Linux, and OS X. The tool is useful for pre-filtering environment maps for real-time rendering applications such as image-based lighting.
Key Features
Utilizes multi-core CPU and OpenCL GPU for fast processing
Supports input/output formats: DDS, KTX, HDR, TGA
Supports multiple map projection types: cubemap, cube cross, latlong, face list, horizontal/vertical strip, octant
Cross-platform: Windows, Linux, OS X
Open-source with source code available on GitHub
Provides command-line interface for batch processing
Pros & Cons
Pros
- Very fast processing due to combined CPU and GPU usage
- Cross-platform support (Windows, Linux, OS X)
- Supports multiple industry-standard file formats and map projections
- Open-source and free to use
Cons
- OpenCL processing may cause display driver timeouts on large cubemaps with low glossScale when using the display GPU
- Binaries may be outdated (last updated 2015); compilation from source may be required
- Command-line interface only; no GUI (though cmftStudio exists separately)
- Requires OpenCL compatible GPU for GPU acceleration
Best For
Pre-filtering cubemaps for image-based lighting in game enginesConverting between different cubemap projections (e.g., latlong to cubemap)Generating mipmaps for environment maps in real-time renderingBatch processing of HDR environment maps for 3D applications
FAQ
What file formats does cmft support?
cmft supports DDS, KTX, HDR, and TGA formats for both input and output.
What map projection types does cmft handle?
It supports cubemap, cube cross, latlong, face list, horizontal/vertical strip, and octant.
How can I build cmft from source?
Clone the repository from GitHub, run 'make' from the root directory, and project files will be generated in the _projects folder. Detailed build instructions for Windows, Linux, and OS X are provided in the README.
Is there a GUI for cmft?
There is a separate tool called cmftStudio which provides a graphical interface, but cmft itself is command-line only.
What should I do if I encounter OpenCL timeout issues?
Reduce input size, increase glossScale parameter, modify TdrDelay/TdrLevel on Windows, or use a faster GPU not connected to the monitor.