Skip to content

Releases: NopeForge/nope.gl

v2024.0

02 Feb 18:33
Compare
Choose a tag to compare

Changelog

[2024.0] [libnopegl 0.11.0] - 2024-02-02

Added

  • ngl.SceneCfg now includes the backend capabilities
  • %s_coord_matrix uniform is now exposed for 2D array and 3D textures
  • ngl_get_backend() function to retrieve the backend information associated
    with a configured nope.gl context
  • ngl-diff can now set and change the input files from the GUI. While still
    supported, passing them through the command line is not mandatory anymore
  • ngl_scene_ref and ngl_scene_unrefp functions to respectively increment and
    decrement the reference counter of a scene
  • GaussianBlur node to apply a post processing gaussian blur effect to a
    scene with a resolution dependent bluriness parameter. The bluriness
    parameter can provide a gaussian blur effect with a radius up to 126 pixels
  • FastGaussianBlur node to apply a post processing gaussian blur effect to a
    scene that is suitable for real time rendering on mobile devices as well as
    providing a resolution independent blurriness parameter
  • forward_transforms parameter to the Texture and RenderToTexture nodes
    to enable forwarding of the camera/model transformations
  • Selector filter to select colors according to their lightness, chroma or hue
  • AnimKeyFrame* nodes can now be reused at a different time using the
    Animated*.time_offset parameter
  • TextEffect.end_time now automatically uses the scene duration when
    unspecified

Fixed

  • Moving the split position in ngl-diff
  • Crash in the hwconv module when direct rendering is not possible/enabled
  • Export to output files containing spaces in their path on Windows
  • Crash when decoding videos on Android with the OpenGLES backend

Changed

  • ngl.get_backends() and ngl.probe_backends() were mistakenly inverted in
    v2023.2, this is changed back in this release
  • SceneCfg and SceneInfo now use the Backend enum instead of a string
  • ngl_configure() does not update the backend field from the user
    configuration anymore and the config argument is now const. Users must now
    use ngl_get_backend() to get the underlying backend information
  • ngl_scene_init_from_node() has been replaced with
    ngl_scene_init() with the associated ngl_scene_params structure
  • the ngl_scene structure is now private; its parameters can now be obtained
    using ngl_scene_get_params()
  • the Texture and RenderToTexture nodes no longer forward the camera/model
    transformations by default

Removed

  • %s_dimensions uniform for 2D array and 3D images/textures, users must use
    textureSize()/imageSize() instead (%s_dimensions is still available for 2D
    textures)

Removed

  • ngl_scene_freep function; use ngl_scene_unrefp instead

v2023.4

28 Sep 21:52
Compare
Choose a tag to compare

Changelog

[2023.4] [libnopegl 0.10.0] - 2023-09-28

Added

  • Eval* nodes now accept multi-dimensional input resources
  • luma(r,g,b) and srgbmix(a,b,x) functions in eval
  • GridLayout node to make a grid out of a number of scenes
  • FilterColorMap node to remap colors using a gradient of color points
  • Animated GIF export in the viewer
  • RenderNoise node to generate fractal noise on the GPU
  • Texture2D node now accepts a scene as data_src and acts as an implicit
    render target (which simplifies the graph when all the features of the
    RenderToTexture node are not needed)
  • RenderToTexture and Texture2D nodes can now be automatically resized to
    match screen size if their initial dimensions are left to (0, 0)
  • Ability to drag'n drop Python scripts in the Viewer

Fixed

  • Viewer path management on Windows
  • Name filters in the export dialog of the viewer
  • Viewer export on Windows

Changed

  • The installed nodes.specs specifications have been extended to include more
    information (types, choices, etc)
  • The documentation has been reworked, notably to include code examples with
    associated rendering and graph
  • Transform node now accepts a node as input parameter and can be animated
    this way
  • scene, SceneInfo and SceneCfg are now part of pynopegl instead of
    pynopegl-utils, where they are deprecated

Removed

  • RenderToTexture.features as the RTT node is now able to detect
    automatically if the underlying graph requires a depth/stencil buffer

v2023.3

01 Sep 21:51
Compare
Choose a tag to compare

Changelog

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

Fixed

  • Linux and macOS release jobs

v2023.2

01 Sep 21:27
Compare
Choose a tag to compare

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