Harfang3D v3.2.2 Release Notes

Release Date: 2022-06-03 // almost 2 years ago
  • ๐Ÿš€ This minor release brings several fixes, a better implementation of the AAA rendering pipeline including probe reprojection and a more stable screen space raytracer. ๐Ÿ‘Œ Improvements were made in the usability area, for Python development, as HARFANG will now output warnings as much as possible when users are calling for invalid API operations. ๐Ÿง The Python build script was worked out to make the wheel available on Pypi for Linux OSes.

    ๐Ÿšง Framework integration and source code maintenance

    • ๐Ÿ‘Œ Improved the Python source package creation, to allow a pip install from the source package and address this issue.
      • The following development packages are necessary to rebuild Harfang:
      • ubuntu: uuid-dev, libreadline-dev, libxml2-dev, libgtk-3-dev
      • centos/fedora: uuid-devel, readline-devel, libxml2-devel, gtk3-devel
      • See languages/hg_python/pip/setup.py.
    • ๐Ÿ‘ Allowed the tools to be called from a Python script.
    • ๐Ÿ‘ Allowed the tools to be called from a Lua script.
    • โšก๏ธ External libraries update.
    • Moved mikktspace and stb_image to extern.
    • ๐Ÿ›  Fixed the License URL, removed a useless URL indirection.
    • โœ‚ Removed the external libraries samples and tests from source package.
    • ๐Ÿฑ Removed AssetsSource from assets.h.

    Toolchain

    • Fixed Assetc to prevent it from processing invalid geometries.
    • GLTF importer:
      • Better management of geometry instances
      • Improved material translation.
    • Sanitized the filenames when outputting files from the FBX and GLTF converters.
    • FBX converter now exports materials as PBR by default.
    • Assimp converter now exports materials as PBR by default.
    • GLTF exporter:
      • Added a filter_disabled_node options to avoid exporting node.
      • Fixed several bugs.

    Engine

    • โš  :warning: Multiplication and maths API fixes:
      • Removed vec * mat multiplications.
      • Swapped row/column in the API to match the correct mathematical order.
      • Removed mixed Vec4/Vec3 operations as the result was ambiguous.
    • โž• Added a binding for Vec3 on CubicInterpolate.
    • :beginner: Introduced a defensive programming approach in HARFANG Python, assuming the programmer is learning the API by trial and error:
      • This is done using the debug log method so it can be completely deactivated when working on C++ projects.
      • Demote most errors to warning. Errors are now strictly reserved for conditions from which a program written using HG cannot recover by itself/is not aware of.
    • ๐Ÿ›  Fixed the AddQuad method in the model builder. Added an helper method to quickly build common vertex configurations, see MakeVertex.
    • ๐Ÿ‘ Animations support:
      • Code cleanup to support the animation editor cleanup.
      • Remove duplicate keys from animation track when calling SortAnimTrackKeys.
      • Added a function to quantize scene animation.
      • Additional scene animation APIs.
      • Added the support of camera fov animations.
    • ๐Ÿšฆ Text input callback is now a signal, see TextInputSignal.
    • โž• Added a size field to ListDir output.

    Rendering

    • โž• Added a sharpen post-process.
    • โž• Added functions for orthographic projection to clip and screen space. See ProjectOrthoToClipSpace, ProjectOrthoToScreenSpace.
    • โž• Added functions for orthographic unprojection. See UnprojectOrthoFromClipSpace, UnprojectOrthoFromScreenSpace.
    • Implemented a light probe reprojection in the Forward and AAA pipelines.
    • ๐Ÿ›  Fixed the orientation of the cubemap in the probe generation.

    Physics

    • Load/save scene collision components.
    • โž• Added a missing cone collision component creation.
    • Setup physics for instantiated nodes.
    • ๐Ÿ›  Fixed a bug with local transformation for single collision shape nodes.

    ๐Ÿ“š Documentation

    • Documented the coordinates system.
    • ๐Ÿ“š Doxygen documentation update

Previous changes from v3.2.1

  • ๐Ÿš€ This minor release brings both code and submodules maintenance, several fixes in the toolchain, in the scenegraph and physics interchange and in the rendering pipeline.

    ๐Ÿšง Source code maintenance

    • โšก๏ธ Updated GLFW (3.3.6).
    • โšก๏ธ Updated BGFX to the latest version.
    • โšก๏ธ Updated OpenAL (v.1.6.10b).
    • โšก๏ธ Updated OpenVR (v1.16.8).
    • ๐Ÿ›  Fixed the debug build with Visual Studio Build Tools 2022.
    • ๐Ÿ›  Fixed the installation of PDB files.
    • โšก๏ธ CMake misc. fixes and updates.

    Toolchain

    • ๐Ÿ›  FBX Importer: changed the unit of command line argument max smoothing angle to degrees and fixed the internal vertex/tangent computation.
    • ๐Ÿ GLTF Importer: improved the way non-Windows-compliant filenames are handled.

    Engine

    • ๐Ÿ›  Fixed an issue in the Wavefront OBJ export that flipped the model on the X axis.
    • ๐Ÿ‘Œ Improve the error message issued by OpenAssets in case of missing file.
    • ๐Ÿ›  Fixed a crash when parsing a corrupted .HPS file.
    • โž• Added hg::Picture::SaveBC7 and hg::Picture::SaveBC6H functions.
    • Switched to a time limit based resource queue processing
    • Return the size on disk of a folder
    • Implemented a ComputeNodeWorldMatrix to compute a node world matrix on the fly (ComputeWorld, GetWorld, SetWorld). :warning: This function is slow but useful when scene matrices are not yet up-to-date
    • ๐Ÿ‘Œ Improved the way unicode paths are handled on Windows
    • ๐Ÿ‘ Preliminary support for scene properties animation (AmbientColor, FogNear, FogFar, FogColor) while preserving the legacy file format.
    • โž• Add an LSSF_Silent scene flag, add many boolean flags to silence errors in the rendering IO.
    • ๐Ÿ‘ฎ Allow 32 bit indices in geometries (In the future we might introduce a force 16 bit indice flag if required).
    • Validate index and vertex buffer handles when creating geometries.
    • Flag instantiated nodes as NF_InstanceDisabled if the host node is disabled.
    • โž• Added file filter descriptions to the file selector dialogs (OpenFileDialog, SaveFileDialog).

    Rendering

    • Added a depth only pass to render shadow maps (DEPTH_ONLY=1).
    • Set a higher probe resolution by default (from 64 to 512, using the --glossScale 20 --glossBias 0 parameters sent to CMFT).
    • Load/save AAA config (LoadForwardPipelineAAAConfigFromFile, LoadForwardPipelineAAAConfigFromAssets, SaveForwardPipelineAAAConfigToFile)
    • Tweaked the default light values (default_shadow_bias set to 0.0001, pssm_split of a the linear light set to 200m).
    • Switched the jitter sequence to Halton (2,3).
    • Added a function to retrieve the size of the OpenVR framebuffers
    • Added a RGBA32 pixel format to improve the performance when playing a video stream.

    Physics

    • ๐Ÿ›  Fixed an issue in synchronizing state from scene to kinematic body

    ๐Ÿ“š Documentation

    • โž• Added an explanation of why using integer representation for time is important.
    • Documented the profiler API.
    • โž• Added a HARFANG logo in the Doxygen documentation