graphene

A thin layer of graphic data types

OTHER License

Downloads
4.8K
Stars
369
Committers
46
graphene - Graphene 1.10.8 (stable) Latest Release

Published by ebassi over 2 years ago

Changes since 1.10.6

  • ray: simplify NaN checking [Érico Nogueira]
  • Build fixes [Dor Askayo, q66, Chun-wei Fan, Marc-André Lureau]
  • SIMD: Make reciprocal operations 0-safe [Dor Askayo]
  • SIMD: Add simplified scalar reciprocal [Dor Askayo]
  • ray: Improve intersection [Dor Askayo]
  • tests: Fix installed introspection test [Matthias Devlamynck]
  • Fix detection of AArch64 [Dor Askayo]
  • tests: Add ray intersection unit [Sebastian Keller]
  • Fix ARM64 build on Windows [Chun-wei Fan]
  • Documentation fixes
graphene - Graphene 1.10.6 (stable)

Published by ebassi over 3 years ago

Issues fixed since 1.10.4

  • Hide GRAPHENE_SIMD_S from the introspection data [#211, Simon McVittie]
  • Nudge ray axis when intersecting a box [#214, Jonas Ådahl]
graphene - Graphene 1.10.4 (stable)

Published by ebassi over 3 years ago

Changes since 1.10.2:

  • Add ARM NEON support when building with Visual Studio [Chun-wei Fan]
  • Build fix on ARM64 Windows [Chun-wei Fan]
  • Drop deprecated "python3" Meson module
  • Fix detection of non-intersecting boxes [Daniel van Vugt, #201]
  • Only enable SSE2 on x86_64 [Xi Ruoyao]
  • Use the compiler-appropriate alignment attributes
  • Change introspection option to a yielding feature [Xavier Claessens]
graphene - Graphene 1.10.2 (stable)

Published by ebassi over 4 years ago

List of changes since 1.10.0

  • Disable SSE on 32bit builds on Windows with MSVC
  • Add more documentation on the conventions used by matrix operations
  • Fix Euler angles/matrix conversion

List of bugs fixed since 1.10.0

  • #173 - meson: Don't error with MSVC C4819 warning [Seungha Yang]
  • #175 - Few fixes for Visual Studio builds
  • #176 - Normalize input rectangles just once
  • #177 - meson: pick up gobject from a subproject fallback as well [Tim-Philipp Müller]
  • #179 - meson: expose graphene_gobject_dep variable for graphene-gobject [Tim-Philipp Müller]
  • #180 - GIR file contains true/false
  • #182 - tests: installed tests should use TAP [Ross Burton]
  • #183 - meson: Fix check for builtype arguments [Nirbheek Chauhan]
  • #185 - _isnanf on Windows instead of isnanf
  • #186 - matrix_init_look_at: Handle corner cases better [Alexander Larsson]
  • #191 - Issue with euler conversions
  • #192 - matrix: Clarify API docs of graphene_matrix_init_look_at() [Alexander Larsson]
  • #193 - Euler: Fix matrix orientation in euler matrix (de)composition [Alexander Larsson]
graphene - Graphene 1.10.0 (stable)

Published by ebassi about 5 years ago

New stable release, in time for GNOME 3.34!

A few last minute API additions, mostly driven by Gthree.

Changes since 1.9.6:

  • Add graphene_matrix_decompose() [#170]
  • Add intersection methods to graphene_ray_t [#171]
  • Add graphene_triangle_init_from_float() [#171]
  • Add graphene_triangle_get_uv() [#171]
  • Fix graphene_ray_transform() [#169, Alexander Larsson]
  • Documentation fixes
graphene - Graphene 1.9.6 (snapshot)

Published by ebassi about 5 years ago

A new snapshot, probably the last towards the 1.10 stable release.

New API and fixes needed by GThree, documentation fixes, and a substantial reorganisation of the repository.

Changes since 1.9.4

  • Add radians based initialisers for graphene_euler_t
  • Use pragma once for the header inclusion guard
  • Remove unused function (#159)
  • Add multiply(), scale(), and add() operators to graphene_quaternion_t
  • Add lerp() operator to all vector types
  • Add graphene_plane_transform()
  • Documentation updates for graphene_ray_t
  • Fix graphene_box_get_center() and graphene_box_get_bounding_sphere() (#165)
  • Ensure that we detect empty or infinite boxes in the graphene_box_t API
graphene - Graphene 1.2.10 (stable)

Published by ebassi over 5 years ago

Changes since 1.2.8

  • Avoid false positives in the affine/2D matrix detection, due to excessive rounding
graphene - Graphene 1.9.4 (snapshot)

Published by ebassi over 5 years ago

Three big pieces landed in this snapshot:

  • Graphene now uses an ancillary library called µTest for its test suite; this means it's possible to build and run the test suite without necessarily depending on GLib
  • the conversion of the Euler angles type to and from matrices and quaternions has been rewritten from scratch, and should not only be finally correct, but it should also cover more use cases—namely the "proper" Euler angles as well as the Tait–Bryan angles
  • the ARM NEON implementation of the SIMD types has been improved, fixed, and tested, so it's not marked as experimental any more

Changes since 1.9.2

  • Require Meson ≥ 0.50.1
  • Fix graphene_quaternion_equal() to consider the orientation, not just the component equality
  • Fix graphene_quaternion_slerp() to always interpolate along the shortest path [Alex Larsson]
  • Re-implement the conversion of graphene_euler_t to and from graphene_matrix_t and graphene_quaternion_t
  • Add graphene_rectangle_get_area() [Marco Trevisan]
  • Document restrictions of graphene_rect_round(), and deprecate the function [Marco Trevisan]
  • Add graphene_rect_round_extents() [Marco Trevisan]
  • Port the test suite from GLib's testing utilities to µTest
  • Remove internal floating point comparisons
  • Improve the NEON extensions detection code
  • Fix comparison operators for graphene_simd4f_t on ARM using the NEON extensions
  • Remove the "experimental" compiler warning from the ARM NEON implementation of graphene_simd4f_t

Many thanks to

Alex Larsson, Marco Trevisan, Christoph Reiter

graphene - Graphene 1.9.2 (snapshot)

Published by ebassi over 5 years ago

New development cycle, with new API added for GTK 4 and for the in progress work of porting Mutter to use Graphene.

Changes since 1.8

  • Add graphene_rect_scale() method [Georges Basile Stavracas Neto]
  • Fix warning from Meson by dropping unnecessary argument to configure_file()
  • Clean up arguments of pkgconfig.generate()
  • Add equality operators to graphene_matrix_t
  • Add getters for translation components of a graphene_matrix_t
  • Use darwin_versions argument instead of rolling our own [Tom Schoonjans]
  • Add GRAPHENE_RECT_INIT_ZERO [Georges Basile Stavracas Neto]
graphene - Graphene 1.8.6 (stable)

Published by ebassi over 5 years ago

Bug fixes, bug fixes everywhere!

Also: documentation changes to clarify what we do behind the veil of the various matrix multiplication functions. Hopefully, this should help people using Graphene especially when it comes to integration with other libraries.

Changes since 1.8.4

  • Fix matrix multiplication when the result matrix is also one of the operands [#135, Benjamin Otte]
  • Fix check when converting a 4x4 matrix into an affine transformation matrix [#136, Benjamin Otte]
  • Fix interpolation between matrices with a perspective component [#138, Benjamin Otte]
  • Documentation fixes for matrix/matrix and matrix/vector multiplication operators [#137, Emmanuele Bassi, Matthias Clasen, Pekka Paalanen]
graphene - Graphene 1.8.4 (stable)

Published by ebassi over 5 years ago

Mostly a bug fixing release, with an especially glaring bug fix in the point transformation function of graphene_matrix_t that was found thanks to GTK 4. Now the function is covered by the test suite, so it should not regress.

Another major fix is the ensuring that we have a description of the SIMD types through introspection, which means that language bindings can finally know how big every other structure using them is. The SIMD API is still not available through introspection, as it's a pure C convenience.

List of changes since 1.8.2

  • Require Meson ≥ 0.48.0
  • Fix matrix/point transformation [#125]
  • Build fixes for MSVC [#130, Nirbheek Chauhan]
  • Introspection fixes for bool [#131, Christoph Reiter]
  • Fix the InitOnce checks on Windows [#127, #133]
  • Correctly parse SIMD types for introspection [#129]
  • Build fixes for the pkg-config file [#132]
  • Documentation fixes:
    • Clarify matrix/vector/point multiplication
    • Clarify plane description [#55]
    • Clarify the units for the matrix skew factors
    • Document use of graphene-gobject with Meson
graphene - Graphene 1.8.2 (stable)

Published by ebassi over 6 years ago

New stable release.

The main change is that we've now disabled SIMD optimisations on 32 bit Intel architectures; there aren't many of those left, and in general compilers have been less than stellar when supporting SIMD types on them. This is especially problematic when it comes to using Graphene types inside other allocated structures, where SIMD alignment rules break system allocators on platforms like Windows. To avoid introducing weird bugs, if you're on 32 bit IA, you're only going to have access to the scalar SIMD implementation.

List of changes since 1.8.0:

  • Fix include header reference in the GIR [Rico Tzschichholz]
  • #114: Check if C pre-processor symbols are available before using them
  • #121: Remove unused GObject hiearchy chapter from the API reference
  • Fix the include header declaration in the API reference
  • Various fixes for building with MSYS2 [Christoph Reiter]
  • Fix various double to float conversion warnings
  • Disable SSE2 and GCC vector SIMD implementations on 32bit IA
  • Ensure that different SIMD implementations do not break ABI
  • Require MSVC 2017 for 32bit builds on Windows/Visual Studio
graphene - Graphene 1.6.2 (stable)

Published by ebassi over 6 years ago

Mostly fixes for the Meson build, to ensure it's a bit more idiomatic and conforms to what newer versions of Meson expect from a project.

graphene - Graphene 1.8.0 (stable)

Published by ebassi over 6 years ago

No new API, this cycle, but it's time to spin a new stable release.

The major news for this release is that we dropped the Autotools build from the repository; Graphene is now built exclusively with Meson.

We've added various fixes to the build on macOS, in order to maintain compatibility with the old Autotools build.

The variables in the pkg-config file that expose the SIMD functionality built inside Graphene have been updated, to ensure that they can be easily consumed by other projects; instead of a single string that needs to be split, we now expose boolean variables for all SIMD implementations.

We've also improved the ability to use Graphene as a Meson sub-project; this allows Meson to check out, build, and depend on Graphene when building complex projects, like GTK. This is really useful inside CI pipelines, as it minimises the amount of separate steps needed when setting up the build.

graphene - Graphene 1.6.0 (stable)

Published by ebassi over 7 years ago

Graphene 1.6.0 is the first stable release of the 1.6 cycle.

Notable changes

  • The Meson dependency has been bumped to 0.37.0.
  • Added graphene_frustum_equal() method.
  • Dropped the -Denable-debug option for the Meson build; debugging levels are handled through the --buildtype Meson option; you can use release to disable all debugging code paths when building Graphene.
  • Graphene now automatically builds binaries for Windows (i686 and x86_64) using Appveyor; you can find the builds attached to the release notes.
graphene - Graphene 1.5.4 (snapshot)

Published by ebassi almost 8 years ago

Graphene 1.5.4 is a development snapshot towards the next stable release, 1.6.

Notable changes

  • For the time being and after requests from distributors, the autotools build environment has been reinstated in Git, though Meson is still the preferred build environment; I still expect to drop the autotools build in the near future.
  • Various improvements in the Meson build environment for the MSYS2 distribution
    • Graphene now correctly identifies whether the platform has an aligned memory allocator
    • Compatibility fixes for printing int64_t to terminal
    • Updated documentation on how to build Graphene on Windows and MSYS2
    • Ensure that introspection data is correctly generated on Windows

Issues fixed

  • Andrew Chadwick worked on the MSYS2 and Windows builds of Graphene
  • Patrick Griffis fixed the cross-references to GLib types in the API reference build
  • Nirbheek Chauhan worked on improving the builtin detection in the Meson build and the build of Graphene under MingW
graphene - Graphene 1.4.0 (stable)

Published by ebassi almost 8 years ago

Changes in 1.4.0 (2016-04-08)

  • Build fix for on MSVC 2013 and newer (#58)
  • Fix decomposition and interpolation between matrices
  • Fix build when debugging is disabled (#57)
  • Add radians-based API to graphene_quaternion_t (#32)
  • Fix bug in the union() operator of graphene_rect_t (#49)
  • Documentation improvements (#44, #47, #48, #50, #52, #53, #53, #56; thanks to Sébastien Wilmet)
  • Ensure that all SIMD implementations return similar results in edge cases
  • Detect and use SSE 4.1 intrinsics for the SSE SIMD implementation
  • Improve ARM NEON SIMD implementation
  • Small micro-optimizations for all SIMD implementations
  • Add non-mutating methods to graphene_rect_t
  • Add graphene_ray_t, a simple type used for ray casting
graphene -

Published by ebassi almost 8 years ago

Graphene 1.5.2 is a development snapshot towards the next stable release, 1.6.

Notable changes

  • While support for the Meson build system was added during the 1.4 stable series in parallel with the existing autotools build, Graphene has now fully switched to Meson. This means that Graphene should now build faster and portably on different platforms.
  • The initialization macros for graphene_point_t, graphene_point3d_t, graphene_size_t, and graphene_rect_t have been changed to use C99 designated initializers, and to allow their use as compound literals.

Issues fixed

  • Matthias Clasen fixed the bounds transformation of matrices, especially for the 2D case
  • Frederik Heger fixed the build of Graphene on ARM
  • Chun-wei Fan improved the build under Windows
  • Thibault Saunier improved the build in order to use Graphene as a Meson sub-project
Package Rankings
Top 16.96% on Formulae.brew.sh
Top 3.06% on Pkg.adelielinux.org
Top 5.19% on Alpine-v3.14
Top 5.67% on Alpine-v3.11
Top 6.58% on Alpine-v3.17
Top 25.63% on Conda-forge.org
Top 4.71% on Alpine-v3.12
Top 6.86% on Alpine-v3.18
Top 5.23% on Alpine-v3.15
Top 9.22% on Alpine-v3.13
Top 8.86% on Alpine-edge
Top 5.67% on Alpine-v3.16
Badges
Extracted from project README
License: MIT