Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Establishing the Transformation Library

This weekend’s development on the helios engine centered on finalizing transformation logic within helios.math.

The transformation functions translate, rotate, scale were implemented within helios.math.transform. A key decision was to standardize on post-multiplication (M’ = M * T) for all transformations, to provide parity with glm: This convention ensures that new transformations are applied in the local space of a model matrix M.

Implementation Notes: constexpr and Performance

To maximize performance and enable compile-time computation, all transformation functions were designed as constexpr operations. The notable exception is rotate(), which depends on trigonometric functions (sin, cos) and vector normalization (sqrt), none of which are constexpr in the standard library. Future work may include implementing constexpr variants of these mathematical primitives, depending on how benchmarks fare in specific rendering scenarios.

The translate and scale functions were implemented as direct, element-wise modifications of the input matrix, avoiding the creation of temporary matrices. This optimized approach is mathematically equivalent to the full matrix multiplication but results in more efficient code.

On to the rendering pipeline!

Support this post

Did you like this post? Tell us

Leave a comment

Log in with your itch.io account to leave a comment.