✅ The website and software are under active development.
Docs may lag behind as my focus is on code - contributions welcome!
Changelog
✏️ Staging Unreleased
📦 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