github bluescan/tacentview v1.0.43
Pixel Formats and PowerVR

4 months ago

Overview

This release features experimental support for PowerVR (PVR) files, output filename formatting using the CLI, support for more pixel formats including some exotic ones, UI improvements like better control over visibility of on-screen buttons, consistent display of long filenames, and tweaks to the preferences and levels dialog windows.

PVR support uses a custom parser similar to the current DDS and KTX parsers. It is capable of opening and reading PVR V1 V2 and the latest V3 files. All BC, ETC, EAC, and ASTC pixel formats are supported. PVRTC1 at 4 BPP and 2 BPP is supported. Most packed formats (adjacent RGBA bits in some defined order) are supported including HDR floating point formats, shared-exponent E5R9G9B9uf, and B10G11R11uf. The screenshot below shows Tacent View with a R8G8B8M8 PVR3 file. The max-range was saved as 8 so the value set in the UI is causing under-exposure.

Screenshot_2024-01-01-17-29-10_R8G8B8M8

Cubemap, mipmap, and PVR files with orientation meta-data are supported. The PVR feature overall is still considered experimental because PVRTC2 (not to be confused with PVRTC1 at 2bpp), the YUV formats, and volume textures are not supported yet.

The newly added pixel-formats include RGBM, RGBD, ERGB999, RGB111110, PVR4BPP, PVR2BPP, and any previously missing 16 and 32-bit-per-component integral R, RG, RGB, and RGBA formats. DDS and KTX containers leverage the new pixel-formats if possible.

In addition to PVR support, improvements to the UI have been made including Cyrillic glyphs, better display of filenames in the thumbnail view (by using ellipsis for long names), and fixes to popup windows at various UI sizes. The details panel displays channel-type information (UNORM, SNORM, UINT, SINT, SFLOAT, UFLOAT) and, if present, the alpha-channel mode. The levels modal updates the mid-point value live when in auto-mid-point mode.

Most of the upgrades in this release (PVR support, additional pixel-formats, detection of channel-type/alpha-mode, etc) are inherited from the Tacent base libraries -- for this reason relevant changes made to Tacent are listed in addition to the summary for Tacent View.

Summary of Changes

  • Support for PVR V1,V2, and V3 files. PVR properties popup supports gamma-correction, exposure for HDR images, and spread-luminance.
  • PVR3 meta-data orientation loading. The new preferences option is enabled by default. Updated test suite images for PVR3 to include BC test images and images with orientation meta-data set (horizontal and vertical).
  • Combined meta-data re-orient loading option for jpg (EXIF) and pvr files into a single option. No need for them to be separate. The latest Tacent libs support EAC, ETC1/2, ASTC, BC, PVR1BPP4, PVR1BPP2, shared-exponent, short float, RGBM, and RGBD pixel formats. Added relevant pvr test images.
  • PVR properties now allow alternate mipmap and cubemap display (T-layout).
  • Details panel now shows both alpha-mode and channel-type if the current image supplies this information. Added tooltip text for both new fields. Moved tooltip for colour-profile to the Colour Profile field instead of the title field.
  • Refresh whole directory with Shift-F5 or Ctrl-F5. Remappable.
  • Better names for tabs in the preferences window. Added hide-on-screen-controls to interface tab. By default Basic and Kiosk profiles hide the on-screen controls. On-screen controls may be set to always, never, or auto.
  • CLI now supports simple filename manipulation including prefix, suffix, and string replace. The relevant command is --outname and examples have been added to the website along with help text (-h) to describe the syntax for the option.
  • Cleaned up more of the UI modals and made their title-bar style/sizing consistent.
  • Font glyph range now includes Cyrillic and the ellipsis Unicode code-point. Added a crop-string function to reduce a string to a specified render width based on the current font and scale.
  • Fixed the delete-file and delete-file-permanently modals to support wider paths and printing of ellipsis when they are too long. In these cases hovering over the path will display the whole thing.
  • Thumbnail view now uses the string-crop render-width function to produce consistently sized filenames. If too long to fit the whole thing, an ellipsis is used.
  • Tacent pixel-format names now match the in-memory footprint.
  • Include modification time in the hash computation that determines if something changed when focus is regained.
  • Fix overwrite-file and overwrite-multiple-files dialogs so that paths and filenames do not over-extend the dialog window beyond the right button. Uses the text-cropping functionality that may add an ellipsis if necessary.
  • Levels Window. PowerMidGamma, AutoMidPoint, and LogarithmicHisto are now saved to config and persist between runs. When AutoMidPoint is on: a) the mid-point slider now remains visible, b) the mid-point slider can continue to be used for manual adjustments and is only 'auto-set' when the black or white points are adjusted, and c) will 'push' the extents of the black and white points when adjusted. In non-auto mode, the midpoint is constrained to the black/white points and will not affect them.
  • If ellipsis displayed for overwrite files you can now hover to see the full file name or directory path.

Full Changelog: v1.0.42...v1.0.43

Relevant Tacent Library Changes

This release introduces experimental support for loading and decoding PowerVR images, extends pixel-format support for image container formats (DDS, KTX, and PVR), adds new packed floating-point classes, improves the drive-information API (especially for removeable media), updates the PNG loading library, and allows saving/loading of image meta-data to disk. Any bugs and improvements listed below have been automatically inherited by Tacent View.

Features

  • Saving and loading of image tMetaData to/from tChunk binary format.
  • Meta-data focal length is in mm.
  • Updated libpng from 1.6.37 to 1.6.40.
  • Detection of JPG/JFIF content inside a PNG file. Some phone software generates these 'invalid' images and now they will load.
  • Better handling of corrupt tga files that used to cause a buffer overrun. We now check that we're in bounds.
  • PVR supprt for V1, V2, and V3 files.
  • Consistent naming of all pixel-formats.
  • Introduced satellite information for channel-type (UNORM, SNORM, UINT, UFLOAT, etc).
  • Packed small-float classes. F11F11F10 and F10F11F11 are 32-bit packed formats supporting 2xE5M6 and 1xE5M5 floats (no sign bit). M9M9M9E5 and E5M9M9M9 are 32-bit packed formats supporting 3xE5M9 (3xF14) but with a shared 5-bit exponent and no sign bit. Because of the shared exponent this format does not used normalized mantissa (always denorm).
  • Support for exotic pixel-formats including PVRBPP2, PVRBPP4, R11G11B10uf, E5R9G9B9uf, R8G8B8M8, R8G8B8D8 plus integral types R16, R16G16, R16G16B16, R16G16B16A16 and their 32-bit-per-component counterparts. Where supported these formats may be contained by DDS, KTX, KTX2, and PVR (V1, V2, V3) files.

Improvements and Fixes

  • Unit test for saving and loading meta-data to a tChunk file. Added operator== and != for both tMetaDatum and tMetaData.
  • Deborder picture function now returns false if there is no change.
  • Consistent use of load params across all image loaders that need them. JPG and PNG now have params instead if just a set of flags.
  • The naming for the PVRTC pixel formats is finalized so they are unambiguous. For version 1: "PVRBPP4", "PVRBPP2", "PVRHDRBPP8", and "PVRHDRBPP6". For version 2: "PVR2BPP4", "PVR2BPP2", "PVR2HDRBPP8", and "PVR2HDRBPP6". Updated the remaining pixel-format query functions and added a tIsLDRFormat in addition to tIsHRDFormat. Note that for the ".pvr" container format (as opposed to the pixel format) it comes in 3 versions (V1 V2 V3) but all use the same "pvr" extension.
  • Fixed issue where tGetDriveInfo was not filling out the drive letter correctly.
  • The state of tImageDDS and specifically the IsValid call could give bad results if a file load wasn't attempted. The Results bitfield is now a more general current State and the IsValid works for all cases. The fix has been propagated to tImageKTX and tImagePVR.
  • If possible, the DDS loader will now set the channel-type - modern dds pixel formats allow it to be determined in some cases.
  • Channel-type determined for VK packed formats in KTX2 files.
  • ICO files always considered to be in sRGB colour profile.
  • Now handle both unsigned and signed versions for BC4 and BC5. These new ATI1 and ATI2 variants are supported in dds, ktx, ktx2, and pvr files. All BC formats exportable by PVRTexTool are now loadable.

Full Tacent Changelog: bluescan/tacent@v0.8.16...v0.8.17

Don't miss a new tacentview release

NewReleases is sending notifications on new releases.