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.
- Added a
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
onCubicInterpolate
. - :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, seeMakeVertex
. - 👍 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
- 👌 Improved the Python source package creation, to allow a
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
andhg::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