cd /news/machine-learning/notes-on-nntc-vs-neural-texturing · home topics machine-learning article
[ARTICLE · art-129385] src=richg42.blogspot.com ↗ pub= topic=machine-learning verified=true sentiment=↑ positive

Notes on NNTC vs. neural texturing

A developer behind NNTC, an open-source texture compression project on GitHub, reports that a bilinear/degree-2 polynomial decoder fitted to each PBR material can match or beat MLP-based neural texturing on raw PSNR after CUDA encoder optimizations and BC4/BC5 awareness. The developer argues MLP training is more expensive and harder to solve, and that NNTC's use of high-resolution weight planes with GPU texture filtering hardware makes it far faster, encoding in seconds. NNTC currently supports up to 4 channels per latent plane, with possible expansion to 6-8 channels.

by read1 min views1 publishedSep 13, 2026

NNTC (here on GitHub) uses a bilinear/degree-2 polynomial decoder fitted to each PBR material (i.e. a degree-2 polynomial whose only quadratic terms are the products between the two latents). Other solutions use full non-linear neural networks (MLP's).

In my testing, MLP's are usually but not always stronger, but not by much (low PSNR difference, like ~1-3 dB). MLP's also make it harder to get filtered samples - NNTC easily leverages existing GPU texture filtering hardware.

However, eventually as I optimized the NNTC-specific CUDA encoder, and made it BC4/BC5 aware, it started to beat my neural network based solution on raw PSNR.

Training MLP's is a lot more expensive, and a harder problem to solve - and IMHO unnecessary for PBR textures if you configure the latent textures correctly. Encoding high frequency details into low-res feature channels and training MLP's to decode them is going to be quite expensive. The alternative is to do what GPU texture formats like BC1-7/PVRTC1/ASTC/etc. have been using for ages: use high resolution weight planes, and optionally (for more efficient distribution) supercompress the data in some way using RDO+LZ, DCT etc.

One of NNTC's current limits: it only supports up to 4 channels on each of the two latent planes. I may expand this to up to ~6-8 channels in the future. If I hadn't implemented a neural net prototype first, I couldn't have found a way to NNTC.

NNTC also encodes in seconds with CUDA. Even with backprop, I'm skeptical a neural solution can be competitive there.

── more in #machine-learning 4 stories · sorted by recency
── more on @nntc 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/notes-on-nntc-vs-neu…] indexed:0 read:1min 2026-09-13 ·