v1.0.0b18
Pre-release
Pre-release
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 toao=
to make it clear that this is ambient occlusion !adjust
now supports acolor_matrix=
attribute for supplying a 3x3 matrix to apply to the RGB channels- Unused
!noise
channels are now filled with1
!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 newflow=
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()
andoklch()
functions (both of which produce linear-sRGB colours) - We can now ask macOS to use the sRGB colourspace for windows iff the
pyobjc
andpyobjc-framework-Cocoa
packages are installed (these are now optional dependencies that can be installed withpip install flitter[macos]
- New
inf
andnan
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 newshadows=
andhighlights=
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=
andhighlights=
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