R54 – Mask clips are special

Turns out floating point masks are hard. Or at least not completely intuitive so you have to make up clear rules for them. The problem solved in this version is that some filters output masks either in the 0 to 1 or -0.5 to 0.5 range for UV planes. And in turn filters that consume masks made expected one or the other. Mismatched assumptions would obviously yield garbage output or a lot of pointless offsetting using Expr.

To solve this the concept of “mask clips” have been introduced. No matter the color space they are always supposed to have a 0-1 range in floating point formats and all filters that output and consume this style of masks have been documented. MaskedMerge is probably the best example of this. Since the Invert and Binarize filters conceptually work in images and not masks (despite often being used for this) new versions called InvertMask and BinarizeMask have been introduced that will have the expected behavior in all cases.

R47 – Fixing small issues

Since R46 was a release with some big changes in regards to the installer this one simply cleans up all the minor issues that were found. And one annoying zimg bug that could cause a crash on some invalid conversions.

Breaking changes:

  • All assembler was removed in favor of intrinsics, this means that x86inc.asm will no longer be installed as a public header
  • NASM obviously isn’t required anymore