Skip to content

v1.0.0b18

Pre-release
Pre-release
Compare
Choose a tag to compare
@jonathanhogg jonathanhogg released this 07 Sep 19:43
· 70 commits to main since this release
v1.0.0b18
8ea58ac

Fairly big release this time.

This release contains the following user-visible changes:

  • !electrostatic and !gravity forces now become constant when particles overlap to avoid unstable massive forces
  • The !material occlusion= attribute has been renamed to ao= to make it clear that this is ambient occlusion
  • !adjust now supports a color_matrix= attribute for supplying a 3x3 matrix to apply to the RGB channels
  • Unused !noise channels are now filled with 1
  • !physics simulations can now use a new !group node to control more precisely which forces apply to which particles. This is useful for reducing the computational complexity of large simulations.
  • !drag supports a new flow= attribute for giving a flow velocity of the pretend medium
  • A new !field force was added to simulate uniform electric fields.
  • A qbetween() function was added for calculating the Quaternion to rotate one vector to another
  • The Oklab colourspace is now supported via new oklab() and oklch() functions (both of which produce linear-sRGB colours)
  • We can now ask macOS to use the sRGB colourspace for windows iff the pyobjc and pyobjc-framework-Cocoa packages are installed (these are now optional dependencies that can be installed with pip install flitter[macos]
  • New inf and nan constants were added to the language
  • The gamma attribute has been removed from all window nodes except !adjust and the --gamma command-line option has been ditched (this special pleading is no longer needed now that sRGB is more consistent across platforms)
  • Tone-mapping support has been added with the new tonemap= attribute to !adjust, with the :reinhard and :aces functions implemented
  • !adjust also has new shadows= and highlights= attributes for applying exposure adjustments to only the darkest/lightest parts of the image
  • Emissive lighting has a new algorithm that is partially dependent on the surface normal – this is an attempt to make emissive lighting less flat
  • A new lens !flare filter has been added and, with it, new support for downsampled shader passes and a completely new texture/framebuffer pool-based architecture
  • New shadows= and highlights= attributes for !adjust for doing exposure adjustments on the dark or light parts of images
  • Window !transform filter nodes now apply attributes in order like in !canvas3d

It also contains the following, less visible, improvements:

  • The physics simulation of !barrier reflections has been improved significantly
  • !random forces are now seeded with a stable, reproducible seed (this caused problems previously when running tests)
  • Translucent objects are now rendered at the same time as transparent objects to ensure that the transparency ordering is maintained
  • The structure of the internal PBR lighting shader was reworked so that the big stuff is now done in reusable functions in an include file – this is useful if you want to write a custom lighting shader that would like to use these standard functions (like my example SDF sphere shader)
  • The plug-in API has been extended to 3D models; the flitter.render.window.models module was made usable from Python to support this
  • VM instruction optimisations were moved into the compiler instead of being done in a post-compilation pass. This works better as the compiler has access to more semantic information and can make better optimisation decisions.
  • The lighting calculations for translucency were tweaked a bit
  • The 3x3 matrix inverse calculation was broken and has now been fixed
  • !difference with multiple non-overlapping subtraction models now actually works

Also a bunch of documentation improvements, though still no documentation for !canvas.

Full Changelog: v1.0.0b17...v1.0.0b18