KhronosGroup / KhronosGroup/KTX-Software
Provide mip-mapping capabilities in libKTX
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 1.4k
- Forks
- 317
- Avg merge
- 20h 12m
- Merged PRs (30d)
- 3
Description
Currently, there doesn't seem to be a way to let the BasisU encoder generate mip maps. There is a host of options one can pass to the latest BasisU CLI:
"Mipmap generation options:\n" " -mipmap: Generate mipmaps for each source image\n" " -mip_srgb: Convert image to linear before filtering, then back to sRGB\n" " -mip_linear: Keep image in linear light during mipmap filtering (i.e. do not convert to/from sRGB for filtering purposes)\n" " -mip_scale X: Set mipmap filter kernel's scale, lower=sharper, higher=more blurry, default is 1.0\n" " -mip_filter X: Set mipmap filter kernel, default is kaiser, filters: box, tent, bell, blackman, catmullrom, mitchell, etc.\n" " -mip_renorm: Renormalize normal map to unit length vectors after filtering\n" " -mip_clamp: Use clamp addressing on borders, instead of wrapping\n" " -mip_fast: Use faster mipmap generation (resample from previous mip, not always first/largest mip level). The default (as of 1/2021)\n" " -mip_slow: Always resample each mipmap level starting from the largest mipmap. Higher quality, but slower. Opposite of -mip_fast. Was the prior default before 1/2021.\n" " -mip_smallest X: Set smallest pixel dimension for generated mipmaps, default is 1 pixel\n"
Currently, while using libKTX works well for most other encoding-related tasks, all of the above has to be implemented separately (in our case using STBI resize, which sadly lacks Kaiser window filtering, IIRC).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the mipmap generation options listed in basisu_tool.cpp with the current libKTX encoding path. Review how the existing STBI resize-based workflow is used, then determine the scope needed to expose equivalent BasisU mip-mapping capabilities. Done means libKTX can provide the requested mipmap generation behavior without separate preprocessing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100