Changelog of @hackage/geomancy 0.3.0.0

Changelog for geomancy

0.3.0.0

[0] releases without row/col-major, handedness, and counter/clockwise confusion.

This release brings sanity and consistency around the transform stack.

  • Transforms have proper col-major definitions.
  • Operation ordering follows the GLSL convention.
    • The composition order is (p <> v <> m <> ...) (from global to local). Reverse your transforms to adjust.
    • The application order is m !* v (with the operators becoming infixr 5, just under the <>). It will do Mᵀ * v inside for SIMD reasons and to match what GLSL does for its M * v ops.
  • Geomancy.Vulkan.Projection is right-handed, BUT produces reverse-depth range ([1; 0], In 3D infinite-Z converges to 0).
    • Replace your depth tests with OP_GREATER and clear to 0.0 - get better precision for your migration troubles.
  • Geomancy.Vulkan.View is right-handed, with +Z being forward.
    • The intended up vector is still vec3 0 (-1) 0 -- +Y down. Silly as it sounds, this matches the XY plane of the window with XY plane in front of a "first person" camera.
  • Axis rotations (using rotateQ) will appear clockwise when looking along the axis.
  • Angle rotations follow Tait-Bryan angles (heading/elevation/bank or yaw/pitch/roll) in the y-x-z frame.
    • rotateZ (time * rate) will follow the clock hands in 2D scenes and roll in 3D.
    • rotateX will follow the sun from sunrise to sunset, pitching UP / increasing elevation.
    • rotateY will turn you right, increasing yaw / heading eastwards.
  • You're of course free to define your own transforms, just copy the modules and tune to your liking. Just make sure that you use matching row/column constructors and the math layer will do the rest, fast.
  • Added webcolor-labels instances for UVec3/Vec3/Vec4.

0.2.6.0

  • Geomancy.Gl.Block extract to gl-block package as Graphics.Gl.Block.
  • Added convert function to vector modules to facilitate type-changing operations like rounding.
  • Added Ix instances for integral vectors.
  • Added dot for integral vectors.

0.2.5.0

  • Added Geomancy.Gl.Block to derive packed/std140/std430 layouts generically. Originally a part of the unpublished glow package in the codex project by Edward Kmett. Add ptrdiff-0 to your stack resolvers.

0.2.4.2

  • Support ARM/aarch64 SIMD.

0.2.4.1

  • Support simple-affine-space-0.2

0.2.4.0

A bunch of experimental code to see what sticks.

  • Added simple-affine-space instances.
    • The classes are re-exported from Geomancy, bringing stuff like dot and normalize.
  • Added mono-traversable instances and Geomancy.Elementwise wrapper.
  • Added Point wrapper and PointN aliases.
  • Added Geomancy.Interpolate with generic linear, quadratic and cubic functions.
    • ⚠️ VecN.lerp has wrong (flipped) order of vector arguments. This is fixed in linear.
  • Added Geomancy.Swizzle overloaded labels.
  • Added Geomancy.Gl.Funs with kinda-GLSL math functions, appropriately overloaded.

0.2.3.0

  • Vec4 moved to ByteArray#.
  • Mat4 !* Vec4 is now SIMD too.

0.2.2.4

  • Add Transform trees.

0.2.2.3

  • Add IVec and UVec 32-bit integer vectors.

0.2.2.2

  • Fixed using Transform.apply with projection inverses.

0.2.2.1

  • Add Vec2.
  • Add pattern synonyms to Geomancy re-exports.
  • Add Fractional instances.
  • Add conversions from tuples and lower-dimension vecs.

0.2.2.0

  • Add pattern synonym alternatives to withVecN.
  • Add Mat4 converstion from Linear.M44.
  • Hide toList and toListTrans.
  • Add toList2d and publish its element-order wrappers.

0.2.1.0

Transform rewrite

  • Change perspective FoV to radians.
  • Add infinitePerspective.
  • Add Transform.inverse.
  • Hide mat4, withMat4.

0.2.0.0

Mat4 rewrite

  • Add rowMajor, withRowMajor, toListRowMajor.
  • Add colMajor, withColMajor, toListColMajor.
  • Add Mat4.inverse.
  • Expose matrixProduct.
  • Add scalarMultiply.
  • Add Mat4.(!*) to use with Vec4.
  • Extract transformations to Geomancy.Transform and use column notation.
  • Add Transform.(!.) and apply to use with Vec3.
  • Rename scale to scale3.
  • Add uniform scale.
  • Add scaleXY for flat meshes.
  • Rename mkTransformation to dirPos.
  • Add rotateQ via dirPos with empty translation.
  • Add Vec3.Packed newtype without extra padding.

0.1.3.0

  • Update tests
  • Add zipWith
  • Rename elementwise to pointwise
  • Rename colMajor to toList
  • Rename rowMajor to toListTrans

0.1.2.1

  • Add Mat4 multiplication test via linear
  • Add elementwise, colMajor, rowMajor

0.1.2.0

  • Move projections and views to Vulkan namespace.

0.1.1.2

  • Fix bug in quaternion rotationBetween.

0.1.1.1

  • Add lookAtUp and rotationBetween.