Skip to content

v2023.2

Compare
Choose a tag to compare
@github-actions github-actions released this 01 Sep 21:27
· 649 commits to main since this release

Changelog

[2023.3] [libnopegl 0.9.0] - 2023-09-01

Added

  • Much more detailed typing annotations in pynopegl
  • RenderDisplace node for texture displacement
  • Visual scopes support through the ColorStats, RenderHistogram and
    RenderWaveform nodes (see scopes example in the demos)
  • Multiple modulo functions for the Eval* nodes: mod_e (euclidean), mod_f
    (floored) and mod_t (truncated)
  • Support for rendering to 3D textures
  • Support for 3D textures image load/store
  • Support for cube maps image load/store
  • Support for array of 2D textures
  • External font rendering in the Text node
  • Fixed scaling in the Text node
  • Text effects (color, opacity, transform, glow, outline, blur), applicable per
    character/word/lines
  • PathKeyClose node to close the current sub-path
  • RenderPath node to render paths visually
  • Optional compat_specs in the @scene decorator to add a version requirement
    constraint
  • ngl-viewer tool to select, customize and export scenes with a simple and
    intuitive interface

Changed

  • CSV export in the HUD now always prints floats in C locale instead of quoted
  • pynopegl.Context.configure() now takes a Config as argument
  • pynopegl log levels are now controled using the pynopegl.Log enum
  • max_texture_dimensions_* capabilities are renamed to max_texture_dimension_*
  • Backend probing in pynopegl now returns a more Pythonic output
  • GraphicConfig.scissor is now an ivec4 parameter instead of vec4
  • TimeRangeMode* nodes are removed and TimeRangeFilter is simplified to
    handle their role; if multiple ranges are needed simulteanously, a Group can
    be used. TimeRangeFilter.max_idle_time is removed since its use was limited
    to inter range times (now only a single time segment is handled).
  • The API now mandates that node scenes have to be wrapped into a dedicated
    scene object that holds extra metadata (duration, aspect ratio and framerate)
  • All counters and size-based arguments in the public API are now using size_t
    instead of int
  • The Text.valign and Text.halign parameters now also align the text per line
  • Text rendering has been completely reworked to support more advanced effects
    and smooth rendering at high resolution
  • The @scene decorator now relies on an explicity controls dictionary
    instead of **kwargs
  • The Texture* nodes now use linear filtering by default instead of
    nearest

Removed

  • ResourceProps.variadic bool flag as it was never a functional interface
  • NGL_CAP_NPOT_TEXTURE as we mandate full support for textures with
    non-power-of-two dimensions
  • Support for OpenGL < 3.3 and OpenGL ES < 3.0 and the associated capabilities:
    NGL_CAP_BLOCK, NGL_CAP_INSTANCED_DRAW, NGL_CAP_SHADER_TEXTURE_LOD,
    NGL_CAP_TEXTURE_2D_ARRAY, NGL_CAP_TEXTURE_3D, NGL_CAP_TEXTURE_CUBE,
    NGL_CAP_UINT_UNIFORMS
  • GLSL ngl_tex{2d,3d,cube,2dlod,3dlod,cubelod}() declarations (users must now
    use texture() and textureLod() directly). ngl_texvideo() is still there
    and is still the prefered picking method