Skip to content

Changelog

✏️ Staging Unreleased

  • Cooking!

📦 v0.9.0 June 2, 2025

  • Add an heuristic to use the headless context when exporting videos
  • Fix progress bar creation before ffmpeg command log causing a bad line
  • Fix frametimer first frame being dt=0 instead of 1/fps
  • Rename ShaderObject to ShaderProgram to better reflect ModernGL
  • Initial ground work on better metaprogramming and include system
  • Partial overhaul and simplify the ShaderTexture class
  • ShaderTexture.track is now a float ratio of the scene's resolution
  • Drastically improve import times and consequently CLI startup times
  • Speed improvements with float64 on dynamic number and optional aux vars
  • (#61) Fix many (skill issue) memory leaks:
    • Use weakref.proxy() on every module's .scene to allow for deeper gc.collect() to find circular references and clean up resources properly
    • Release proxy render buffers that are piped to ffmpeg when done
    • Release texture objects when ShaderTexture is garbage collected
    • Do not recreate imgui context on every scene init
  • Base duration of the scenes are now configurable (10 seconds default)
  • Throw an exception when FFmpeg process stops unexpectedly
  • Fix sharing a global watchdog causing errors on many initializations
  • Cleanup scheduler before module setup, fixes scene reutilization bug
  • Add a new 'subsample' parameter for better downsampling of SSAA>2
  • Use macros for initializing structs with fixed specification from uniforms
  • Bundle the Examples directory into Resources for wheel releases
  • Support for rendering videos "in-memory" without a named file on disk
  • Refactor ExportingHelper out of ShaderScene.main
  • Properly catch FFmpeg's stderr and stdout (allows in-memory render)
  • Convert the project into snake case, still have my differences

📦 v0.8.0 October 27, 2024

  • (#6) Move away from pyimgui to imgui-bundle
  • Fix Scene.tau overlooked calculation, it was half right!
  • Add optional frameskipping disabling on Scene.main
  • Add optional progress callback on Scene.main
  • The Camera.zoom is now the distance from the center to the top
  • Add Camera.fov bound to Camera.zoom, a simple tan atan relation
  • Use numpy.dtype instead of spaghetti methods on Texture
  • Add many Scene.log_* methods for DRY 'who module's logging
  • Do not fit rendering resolutions every frame (slow)
  • Add a Uniform class for convenience than the whole Variable
  • Fix bug ensure the parent directory exists when exporting
  • Revert vflip's duty to FFmpeg than on the final sampling shader
  • Renamed Scene.main(benchmark=) to freewheel (exporting mode)
  • Internal code simplification and bug fixes