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