RSSAmplifier

Blog

The ryg blog

When I grow up I'll be an inventor.

fgiesen.wordpress.comRSS feed ↗10 posts

Latest posts

ryg_rans is not a library

I wrote ryg_rans in 2014. I still regularly get questions and patch submissions from people who want to use it as a library. That is not what it s for! ryg_rans is not a library, never was. It s a toy implementation of an algorithm whose core fits in something like 20 lines of code. It s the [ ]

PivCo-Huffman “merge” operations

There s a new paper out called PivCo-Huffman (HTML version with annotations here) and it s very interesting. Normal Huffman decoding (and, to a lesser extent, encoding) is inherently quite serial. We can get explicit parallelism by using multiple streams, which scales just fine to moderate numbers of streams something like 4-8 is usually not an [ ]

Simple batch decoding of unary codes

Unary codes are a form of universal variable-length code (UVLC) that are sometimes used on their own but more commonly used as a building block for more general families of UVLCs like Golomb, Rice or Gamma/Exp-Golomb codes. There are multiple conventions in use, the one I ll use in the following has codewords terminated with a [ ]

Why does ASTC use ISE when almost nothing else does?

The ASTC texture compression format has its integer sequence encoding to send small integers with a uniform probability distribution within their range. When that value range is [0,2k-1] for some integer k, this is straightforward: just send the values with k bits each. But ISE ups the ante by supporting not just power-of-2 sizes ranges, [ ]

Content creator

Nobody should voluntarily call themselves that. Content is the language of people on the distribution side of things. If you look at something like a 19th century newspaper it s mostly a logistics exercise. Sure you may think of just back issues on microfilm in national archives or something like that, but the actual business was [ ]

Oodle 2.9.14 and Intel 13th/14th gen CPUs

There s a hardware problem affecting Intel 13th/14th gen CPUs, mostly desktop ones. This made the rounds through the press last year and has been on forums etc. for much longer than that. For months, we thought this was a rare bug in the decoder, but from stats in Epic s crash reports for Fortnite (as well [ ]

UNORM and SNORM to float, hardware edition

I mentioned in a previous post that doing exact UNORM or SNORM conversions to float in hardware was not particularly expensive, but didn t go into detail how. Let s rectify that! (If you haven t read that post yet, please start there if you need an explanation of what the UNORM and SNORM formats are, as well [ ]

MRSSE

For BC6H encoding in Oodle Texture, we needed a sensible error metric to use in the encoder core. BC6H is HDR which is more challenging than LDR data since we need to handle vast differences in magnitude. BC6H internally essentially treats the float16 bits as 16-bit integers (which is a semi-logarithmic mapping) and works with [ ]

Exact UNORM8 to float

GPUs support UNORM formats that represent a number inside [0,1] as an 8-bit unsigned integer. In exact arithmetic, the conversion to a floating-point number is straightforward: take the integer and divide it by 255. 8-bit integers are for sure machine numbers (exactly represented) in float32 and so is 255, so if you re willing to do [ ]

BC7 optimal solid-color blocks

That s right, it s another texture compression blog post! I ll keep it short. By solid-color block , I mean a 4 4 block of pixels that all have the same color. ASTC has a dedicated encoding for these ( void-extent blocks ), BC7 does not. Therefore we have an 8-bit RGBA input color and want to figure out how to [ ]