Skip to content

Releases: AcademySoftwareFoundation/OpenImageIO

OpenImageIO 2.3.7.2

01 Sep 06:28
Compare
Choose a tag to compare

Release 2.3 (1 Sept 2021) -- compared to 2.2

New minimum dependencies and compatibility changes:

  • C++ standard: C++14 is now the minimum (gcc 6.1 - 11.2, clang 3.4 - 12,
    MSVS 2017 - 2019, icc 17+).
    The default C++ standard mode, if none is
    explicitly specified, is now C++14. #2918 (2.3.4) #2955 #2977 (2.3.5)
  • FFMmpeg (optional) dependency minimum is now 3.0 (raised from 2.6). #2994
  • OpenCV (optional) dependency minimum is now 3.0 (raised from 2.0). #3015

New major features and public API changes:

  • Changes and clarifications to geterror() in all classes that have one:
    • geterror() now takes an optional clear parameter controls if the
      pending error is cleared as well as retrieved (default true).
    • All classes with geterror() are ensured to have has_error().
    • geterror() appends to the pending error message, if one is already
      present but not retrieved. Appending errors will be automatically
      separated by newlines, also any newline at the end of a geterror
      call will be stripped. #2740 (2.3.0.1)
  • ImageInput error messages are now thread-specific. This prevents multiple
    threads simultaneously reading from the same ImageInput from getting the
    other thread's error messages. But it means you must always retrieve an
    error with getmessage() from the same thread that made the read call
    that generated the error. #2752 (2.3.0.1)
  • ImageInput and ImageOutput have removed several fields (like the m_mutex)
    and instead now use a PIMPL idiom that hides internals better from the
    ABI. If you had a custom ImageInput/Output class that directly accessed
    the m_mutex, replace it instead with calls to ImageInput::lock() and
    unlock() (and ImageOutput). #2752 (2.3.1.0)
  • Clarify that ImageBuf methods subimage(), nsubimages(), miplevel(),
    nmipevels(), and file_format_name() refer to the file that an ImageBuf
    was read from, and are thus only meaningful for ImageBuf's that directly
    read from files. "Computed" or copied ImageBuf's are solo images in memory
    that no longer correspond to a file even if the input to the computation
    was from a file. #2759 (2.3.0.1/2.2.9)
  • New get_extension_map() returns a map that list all image file formats
    and their presumed file extensions. #2904 (2.3.4)
  • Overhaul of how we handle "thumbnails" (small preview images embedded in
    the headers of some image file formats) #3021 (2.3.7):
    • Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
      metadata of a big character array blob.
    • ImageInput, ImageBuf, and ImageCache have varieties of get_thumbnail()
      method that returns the thumbnail as an ImageBuf. If this is not
      called, ideally the reader will not undergo the expense of reading and
      storing thumbnail data.
    • ImageOutput and ImageBuf have set_thumbnail() to communicate a
      thumbnail image as an ImageBuf.
    • The net effect is that reading files and retrieving ImageSpec's should
      be more efficient for apps that don't have a use for thumbnails.
  • Significant improvements to UDIM handling in ImageCache/TextureSystem:
    • New UDIM texture name patterns recognized: %(UDIM)d is the Houdini
      convention, and _u##v## is for Animal Logic's internal renderer.
      #3006 (2.2.16/2.3.6)
    • It is now permissible for get_texture_info()/get_image_info() to
      retrieve metadata for UDIM patterns -- previously it failed, but now
      it will succeed in retrieving any metadata as long as it is present
      and has the same value in all the matching "UDIM tile" panels. #3049
      (2.3.7)
    • TextureSystem now exposes methods is_udim(), resolve_udim(),
      inventory_udim() that should be helpful for apps dealing with UDIM
      textures. See the documentation for details. #3054 (2.3.7)
    • Performance improvements when using UDIM textures. #3049 (2.3.7)
  • ImageBuf, when "wrapping" an app-owned buffer, now allows explicit
    specification of stride lengths. This allows you to wrap a buffer that
    has internal padding or other non-contiguous spacing of pixels, scanlines,
    or image planes. #3022 (2.3.6)
  • oiiotool new commands and options:
    • --pastemeta takes two images as arguments, and appends all the
      metadata (only) from the first image onto the second image's pixels
      and metadata, producing a combined image. #2708 (2.3.0.0)
    • --chappend and --siappend both allow an optional modifier :n=
      to specify the number of images from the stack to be combined
      (default n=2). #2709 (2.3.0.0)
    • --fit now takes an additional optional modifier: fillmode= with
      choices of letterbox (default), width, and height. #2784 (2.3.2.0)
    • --autocc now has an optional modifier :unpremult=1 that causes
      any color transformations related to autocc to unpremultiply by alpha
      before the transformation and then re-premultiply afterwards, exactly
      the same control that exists for individual --colorconvert but never
      existed for autocc. #2890 (2.3.3)
    • --list-formats lists all the image file formats that OIIO knows
      about, and for each, the associated file extensions. #2904 (2.3.4)
    • --skip-bad-frames causes an error (such as an input file not being
      found) to simply skip to the next frame in the frame range loop, rather
      that immediately exiting. #2905 (2.3.4)
    • When doing expression substitution, {getattribute(name)} will be
      replaced by the value that OIIO::getattribute(name, ...) would
      retrieve. #2932 (2.3.4)
    • --missingfile (which takes a subsequent argument of error, black,
      or checker) determines the behavior when an input image file is
      missing (the file does not exist at all, does not include cases where
      the file exists but there are read errors). The default value of
      error matches the old behavior: report an error and terminate all
      command processing. Other choices of black or checker will continue
      processing but substitute either a black or checkerboard image for the
      missing file. #2949 (2.3.4)
    • --printinfo prints verbose metadata info about the current top
      image on the stack. #3056 (2.3.7)
    • --printstats prints statistics about the current top image on the
      stack, and optionally can limit the statistics to a rectangular
      subregion of the image. #3056 (2.3.7)
    • Expanded expression now support the following new metadata notations:
      META, METABRIEF, and STATS. #3025 (2.3.6)
    • --mosaic now takes optional fit=WxH modifier that lets you set the
      "cell" size, with all constituent images resized as needed (similarly
      to if you used --fit on each individually). This is helpful for
      creating contact sheets without having to resize separately or to know
      the resolution of the original images. #3026 (2.3.6)
    • REMOVED --histogram which had been deprecated and undocumented since
      before OIIO 2.0. #3029 (2.3.6)
  • Python bindings:
    • When transferring blocks of pixels (e.g., ImageInput.read_image()
      or ImageOutput.write_scanline()), "half" pixels ended up mangled
      into uint16, but now they use the correct numpy.float16 type. #2694
      (2.3.0.0)
    • The value passed to attribute(name, typedesc, value) can now be a
      tuple, list, numpy array, or scalar value. #2695 (2.3.0.0)
    • Added Python bindings for the TextureSystem. #2842
    • Add the previously (inadvertently) omitted enum value for
      ImageBufAlgo.MakeTxBumpWithSlopes. #2951 (2.3.4)
  • Environment variables:
    • CUE_THREADS env variable, if set, is now honored to set the default
      size of the OIIO thread pool. This helps to make OIIO-based apps be
      good citizens when run as OpenCue jobs. #3038 (2.3.7)
  • Library organization:
    • All the utility classes are now in libOpenImageIO_Util only and
      libOpenImageIO depends on and links to libOpenImageIO_Util, rather
      than the utility classes being defined separately in both libraries.
      #2906 (2.3.4)
    • Include file change: imagebuf.h no longer includes imagecache.h.
      It should never have needed to, since it didn't need any of its
      declarations. Other code that should always have included both headers,
      but inadvertently only included imagebuf.h, may now need to add an
      explicit #include <OpenImageIO/imagecache.h>. #3036 (2.3.7)
  • Important change to Makefile wrapper: We have a 'Makefile' that just wraps
    cmake for ease of use. This has changed its practice of putting builds in
    build/ARCH to just build (and local installs from dist/ARCH to dist)
    to better match common cmake practice. So where your local builds end up may
    shift a bit. #3057 (2.3.7)
  • Deprecations: A number of long-deprecated functions and methods have been
    given deprecation attributes that will cause warnings if you use them. They
    will eventually be removed entirely at the next "breaking" release (3.0,
    whenever that is). #3032 (2.3.7)

Performance improvements:

  • Speed up BMP reading by eliminating wasteful allocation and copying
    done on each scanline read. #2934 (2.3.4)
  • For IBA::to_OpenCV(), improve efficiency for certain image copies. #2944
    (2.3.4)
  • Fix runaway parsing time for pathological XMP metadata. #2968 (2.3.5/2.2.15)
  • TextureSystem reduction in overhead when using UDIM textures. #3049 (2.3.7)

Fixes and feature enhancements:

  • Fix a situation where if an ImageBuf backed by an ImageCache reads an
    image, then the image changes on disk, then another ImageBuf or ImageCache
    tries to read it, it could end up with the old version. This involved some
    strategic cache invalidation when ImageB...
Read more

OpenImageIO 2.2.18.0

01 Sep 05:41
Compare
Choose a tag to compare

Release 2.2.18 (1 Sep 2021) -- compared to 2.2.17

  • Honor env variable CUE_THREADS (used by OpenCue) to set the default size
    of OIIO's thread pool. #3038
  • Compatibility with OpenColorIO 2.1. #3050
  • Dev: Extend Sysutil::getenv() to take a default if the environment variable
    is not found. #3047 #3048

OpenImageIO 2.3.7.0-beta (First beta of 2.3)

18 Aug 06:08
Compare
Choose a tag to compare

At long last, I have branched for this year's big release, OpenImageIO 2.3. The new branch is "dev-2.3" (a change from the old convention of RB-x.y; I think it's clearer since many people didn't know what RB stood for), and the first beta is tagged "v2.3.7.0-beta". Why 2.3.7.0? Because we had 6 "developer preview" snapshots along the way.

I'm aiming for September 1, 2021 to tag a release. It might get delayed if serious problems are discovered. But considering that SPI and probably lots of other places use master branch or developer preview snapshots for real production, for anything other changes made in the last couple weeks, I'm pretty confident that everything is solid and has already been through the heat of battle in production. In general, the only difference between our release branches and master is that release branches make a strict promise about not breaking compatibility; there is little practical difference in stability or production worthiness.

We will strive to make no breaking changes to the API or ABI between now and the release. After final release, when the beta designation disappears, we will be 100% strict about this promise.

We will keep releasing 2.2.x patches as needed, but they will slow down and be restricted to only critical bug fixes, as we transition to 2.3 being the current supported release. Meanwhile, master -- which is now the staging area for what will become 2.4 next year -- is where big new, and possibly compatibility-breaking, changes will be made.

Release 2.3 (1 Sept 2021?) -- compared to 2.2

New minimum dependencies and compatibility changes:

  • C++ standard: C++14 is now the minimum (gcc 6.1 - 11.2, clang 3.4 - 12,
    MSVS 2017 - 2019, icc 17+).
    The default C++ standard mode, if none is
    explicitly specified, is now C++14. #2918 (2.3.4) #2955 #2977 (2.3.5)
  • FFMmpeg (optional) dependency minimum is now 3.0 (raised from 2.6). #2994
  • OpenCV (optional) dependency minimum is now 3.0 (raised from 2.0). #3015

New major features and public API changes:

  • Changes and clarifications to geterror() in all classes that have one:
    • geterror() now takes an optional clear parameter controls if the
      pending error is cleared as well as retrieved (default true).
    • All classes with geterror() are ensured to have has_error().
    • geterror() appends to the pending error message, if one is already
      present but not retrieved. Appending errors will be automatically
      separated by newlines, also any newline at the end of a geterror
      call will be stripped. #2740 (2.3.0.1)
  • ImageInput error messages are now thread-specific. This prevents multiple
    threads simultaneously reading from the same ImageInput from getting the
    other thread's error messages. But it means you must always retrieve an
    error with getmessage() from the same thread that made the read call
    that generated the error. #2752 (2.3.0.1)
  • ImageInput and ImageOutput have removed several fields (like the m_mutex)
    and instead now use a PIMPL idiom that hides internals better from the
    ABI. If you had a custom ImageInput/Output class that directly accessed
    the m_mutex, replace it instead with calls to ImageInput::lock() and
    unlock() (and ImageOutput). #2752 (2.3.1.0)
  • Clarify that ImageBuf methods subimage(), nsubimages(), miplevel(),
    nmipevels(), and file_format_name() refer to the file that an ImageBuf
    was read from, and are thus only meaningful for ImageBuf's that directly
    read from files. "Computed" or copied ImageBuf's are solo images in memory
    that no longer correspond to a file even if the input to the computation
    was from a file. #2759 (2.3.0.1/2.2.9)
  • New get_extension_map() returns a map that list all image file formats
    and their presumed file extensions. #2904 (2.3.4)
  • Overhaul of how we handle "thumbnails" (small preview images embedded in
    the headers of some image file formats) #3021 (2.3.7):
    • Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
      metadata of a big character array blob.
    • ImageInput, ImageBuf, and ImageCache have varieties of get_thumbnail()
      method that returns the thumbnail as an ImageBuf. If this is not
      called, ideally the reader will not undergo the expense of reading and
      storing thumbnail data.
    • ImageOutput and ImageBuf have set_thumbnail() to communicate a
      thumbnail image as an ImageBuf.
    • The net effect is that reading files and retrieving ImageSpec's should
      be more efficient for apps that don't have a use for thumbnails.
  • Significant improvements to UDIM handling in ImageCache/TextureSystem:
    • New UDIM texture name patterns recognized: %(UDIM)d is the Houdini
      convention, and _u##v## is for Animal Logic's internal renderer.
      #3006 (2.2.16/2.3.6)
    • It is now permissible for get_texture_info()/get_image_info() to
      retrieve metadata for UDIM patterns -- previously it failed, but now
      it will succeed in retrieving any metadata as long as it is present
      and has the same value in all the matching "UDIM tile" panels. #3049
      (2.3.7)
    • TextureSystem now exposes methods is_udim(), resolve_udim(),
      inventory_udim() that should be helpful for apps dealing with UDIM
      textures. See the documentation for details. #3054 (2.3.7)
    • Performance improvements when using UDIM textures. #3049 (2.3.7)
  • ImageBuf, when "wrapping" an app-owned buffer, now allows explicit
    specification of stride lengths. This allows you to wrap a buffer that
    has internal padding or other non-contiguous spacing of pixels, scanlines,
    or image planes. #3022 (2.3.6)
  • oiiotool new commands and options:
    • --pastemeta takes two images as arguments, and appends all the
      metadata (only) from the first image onto the second image's pixels
      and metadata, producing a combined image. #2708 (2.3.0.0)
    • --chappend and --siappend both allow an optional modifier :n=
      to specify the number of images from the stack to be combined
      (default n=2). #2709 (2.3.0.0)
    • --fit now takes an additional optional modifier: fillmode= with
      choices of letterbox (default), width, and height. #2784 (2.3.2.0)
    • --autocc now has an optional modifier :unpremult=1 that causes
      any color transformations related to autocc to unpremultiply by alpha
      before the transformation and then re-premultiply afterwards, exactly
      the same control that exists for individual --colorconvert but never
      existed for autocc. #2890 (2.3.3)
    • --list-formats lists all the image file formats that OIIO knows
      about, and for each, the associated file extensions. #2904 (2.3.4)
    • --skip-bad-frames causes an error (such as an input file not being
      found) to simply skip to the next frame in the frame range loop, rather
      that immediately exiting. #2905 (2.3.4)
    • When doing expression substitution, {getattribute(name)} will be
      replaced by the value that OIIO::getattribute(name, ...) would
      retrieve. #2932 (2.3.4)
    • --missingfile (which takes a subsequent argument of error, black,
      or checker) determines the behavior when an input image file is
      missing (the file does not exist at all, does not include cases where
      the file exists but there are read errors). The default value of
      error matches the old behavior: report an error and terminate all
      command processing. Other choices of black or checker will continue
      processing but substitute either a black or checkerboard image for the
      missing file. #2949 (2.3.4)
    • --printinfo prints verbose metadata info about the current top
      image on the stack. #3056 (2.3.7)
    • --printstats prints statistics about the current top image on the
      stack, and optionally can limit the statistics to a rectangular
      subregion of the image. #3056 (2.3.7)
    • Expanded expression now support the following new metadata notations:
      META, METABRIEF, and STATS. #3025 (2.3.6)
    • --mosaic now takes optional fit=WxH modifier that lets you set the
      "cell" size, with all constituent images resized as needed (similarly
      to if you used --fit on each individually). This is helpful for
      creating contact sheets without having to resize separately or to know
      the resolution of the original images. #3026 (2.3.6)
    • REMOVED --histogram which had been deprecated and undocumented since
      before OIIO 2.0. #3029 (2.3.6)
  • Python bindings:
    • When transferring blocks of pixels (e.g., ImageInput.read_image()
      or ImageOutput.write_scanline()), "half" pixels ended up mangled
      into uint16, but now they use the correct numpy.float16 type. #2694
      (2.3.0.0)
    • The value passed to attribute(name, typedesc, value) can now be a
      tuple, list, numpy array, or scalar value. #2695 (2.3.0.0)
    • Added Python bindings for the TextureSystem. #2842
    • Add the previously (inadvertently) omitted enum value for
      ImageBufAlgo.MakeTxBumpWithSlopes. #2951 (2.3.4)
  • Environment variables:
    • CUE_THREADS env variable, if set, is now honored to set the default
      size of the OIIO thread pool. This helps to make OIIO-based apps be
      good citizens when run as OpenCue jobs. #3038 (2.3.7)
  • Library organization:
    • All the utility classes are now in libOpenImageIO_Util only and
      libOpenImageIO depends on and links to libOpenImageIO_Util, rather
      than the utility classes being defined separately in both libraries.
      #2906 (2.3.4)
    • Include file change: imagebuf.h no longer includes imagecache.h.
      It should never have needed to, since it didn't need any of its
      declar...
Read more

OpenImageIO 2.2.17.0

02 Aug 00:25
Compare
Choose a tag to compare

Release 2.2.17 (1 Aug 2021) -- compared to 2.2.16

  • Output to DPX files now supports IOProxy. (Input already did.) #3013
  • typedesc.h: TypeDesc can now describe 2D and 3D bounding boxes, as arrays
    of 2 VEC2 aggregates (for 2D) or VEC3 aggregates (for 3D) with "BOX"
    semantic. The shorthand for these are TypeBox2, TypeBox3 (for float),
    and TypeBox2i and TypeBox3i for integer or pixel coordinte
    boxes. #3008
  • Build: Fixes for building against fmt 8.0.0. #3007
  • Build: Finding boost is more flexible when desiring static libraries. #3031

OpenImageIO 2.2.16.0

01 Jul 19:22
Compare
Choose a tag to compare

Release 2.2.16 (1 Jul 2021) -- compared to 2.2.15

  • New UDIM texture name patterns recognized: %(UDIM)d is the Houdini
    convention, and _u##v## is for Animal Logic's internal renderer. #3006
    (2.2.16)
  • When doing color space transforms on images with > 4 channels -- the
    additional channels are now copied unaltered, rather than leaving them
    black. #2987 (2.2.16)
  • FFMpeg: fix some encodings that didn't correctly recognize that they were
    more than 8 bits, or had alpha. #2989 (2.2.16)
  • farmhash.h: Clean up all non-namespaced preprocessor symbols that are set
    by this header and may pollute the caller's symbols. #3002 (2.2.16)
  • Fix crashes on M1 (ARM) based Mac. #2990 (2.2.16)
  • Bug fix: avoid divide-by-0 error computing chunk size for invalid image
    sizes. #2983 (2.2.16)
  • make_texture (and maketx and oiiotool -otex) no longer crash if you
    try to make a texture out of a "deep" image; instead it will return an
    error message. #2991 (2.2.16)
  • filesystem.h: Improve exception safety in Filesystem directory iteration.
    #2998 (2.2.16)
  • Build: Improve finding of OpenJPEG. #2979 (2.2.16)
  • Build: Support for building OIIO with gcc 11. #2995 (2.2.16)
  • Build: Fixes to accommodate Imath 3.1 upcoming changes. #2996 (2.2.16)
  • Build: Finding FFMpeg now correctly detects the version. #2994 (2.2.16)
  • Build: clang + C++17 + LibRaw < 0.20 are mutually incompatible. Detect
    this combination and warn / disable libraw under those conditions. #3003
    (2.2.16)
  • Build: Fix CMake behavior for REQUIRED_DEPS due to a typo. #3011 (2.2.16)
  • Build: Fixes for detecting and using Ptex, among other things got the
    version wrong. #3001 (2.2.16)
  • Testing: If a feature is disabled, skip its tests rather than reporting
    them as broken. #2988 (2.2.16)
  • CI: Test the combination of clang and C++17. #3003 (2.2.16)

OpenImageIO 2.2.15.1

03 Jun 23:45
Compare
Choose a tag to compare

Release 2.2.15.1 (3 Jun 2021) -- compared to 2.2.15.0

  • Fix crash / misbehavior in ustring internals on Apple M1 ARM. #2990

OpenImageIO 2.2.15.0

01 Jun 17:30
Compare
Choose a tag to compare

Release 2.2.15 (1 Jun 2021) -- compared to 2.2.14

  • BMP improvements: now support reading rle-compressed BMP files; writing
    single channel grayscale images now save as 8bpp palette images intead of
    24bpp; and reading 8bpp where all palette entries have R==G==B looks like
    a 1-channel grayscale instead of 3-channel RGB. #2976
  • Bug: IBA::render_text did not properly account for alpha of the draw
    color. #2981
  • Bug: Fix runaway parsing time for pathological XMP metadata. #2968
  • Bug: Fixed a crash is ImageCacheFile::read_unmipped when sampling
  • Fix exported cmake config files, which could fail if Imath and OpenEXR
    weren't the at the same version number. #2975
  • Build: Modernize cmake to use targets for PNG and ZLIB. #2957
  • Build: Fix to accommodate upcoming OpenColorIO 2.1 deprecation of
    parseColorSpaceFromString. #2961
  • Build: Changes to make it build against TBB 2021. #2985
  • Dev: Add Strutil functions: find, rfind, ifind, irfind. #2960
    non-zero-base channels. (#2962)

OpenImageIO 2.2.14.0

01 May 16:59
Compare
Choose a tag to compare

Release 2.2.14 (1 May 2021) -- compared to 2.2.13

  • JPEG: Improve reading of files with mildly corrupted headers. #2927
  • TIFF: Support IOProxy for input. #2921
  • BMP: Improve performance by eliminating wasteful per-scanline allocation
    and needless data copying. #2934
  • Build/CI: Fix all the build_*.bash scripts to not use cmake --config flag,
    which was harmlessly ignored but is flagged as an error for CMake 3.20.
    #2931
  • Build: More fixes related to supporting a wide range of OpenEXR versions,
    and making our exported cmake configs correctly transmit dependencies on
    OpenEXR include paths. #2935 #2941 #2942 #2947
  • ImageBufAlgo::fillholes_pushpull: added logic to correctly set the spec's
    alpha_channel field when generating sub-images. #2939
  • Python: MakeTxBumpWithSlopes enum value had been inadvertently omitted
    from the Python bindings. #2951

OpenImageIO 2.2.13.1

07 Apr 21:58
Compare
Choose a tag to compare

Release 2.2.13.1 (7 Apr 2021) -- compared to 2.2.13.0

(Build related fixes only)

  • Fix build break when using gcc 10 (and some other modern gcc versions)
    but using C++11 compilation mode. #2930
  • CMake: don't use --config inappropriately (CMake 3.20 was broken for
    several of our helper build scripts for building dependencies). #2931
  • Be robust to OpenEXR 2.x installations where IlmBase and OpenEXR had
    separate sets of config files in different subdirectories. #2935

OpenImageIO 2.2.13.0

01 Apr 18:40
Compare
Choose a tag to compare

Release 2.2.13 (1 Apr 2021) -- compared to 2.2.12

  • Get ready for upcoming Imath/OpenEXR 3.0 release. #2883 #2894 #2897
  • GIF: Fix error checking for non-existant GIF files. #2886
  • Fix crash related to ImageBuf:set_write_format() when used in conjunction
    with a file format that doesn't support per-channel data types. #2885
  • Make RAW files handle Unicode filenames on Windows. #2888
  • Make sure OIIO builds cleanly with C++20. #2891
  • BMP: Several bug fixes when reading an older (V1) variety of BMP files.
    #2899
  • Targa: fix reading tga files with 0-sized thumbnails. #2903
  • TIFF: fix reading of certain tiled TIFF files with the vertical image size
    is not a whole multiple of the tile size. #2895
  • Avoid OpenColorIO v2 exception when color-conversion of single points (we
    didn't pass a correct stride, thinking that stride isn't used for a single
    point). #2911
  • make_texture: When outputting to a 'half' data format file, clamp filtered
    values to the half range so large values don't inadvertently get converted
    to half 'infinite' values. #2892
  • Improvements to ustring internals to ensure that no two ustrings ever end
    up with the same hash() value. #2870
  • Fixes for compiler errors when compiling farmhash.h using C++11 mode with
    newer gcc (6+). #2914