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