v1.0.0b18
Pre-release
Pre-release
Fairly big release this time.
This release contains the following user-visible changes:
!electrostaticand!gravityforces now become constant when particles overlap to avoid unstable massive forces- The
!materialocclusion=attribute has been renamed toao=to make it clear that this is ambient occlusion !adjustnow supports acolor_matrix=attribute for supplying a 3x3 matrix to apply to the RGB channels- Unused
!noisechannels are now filled with1 !physicssimulations can now use a new!groupnode to control more precisely which forces apply to which particles. This is useful for reducing the computational complexity of large simulations.!dragsupports a newflow=attribute for giving a flow velocity of the pretend medium- A new
!fieldforce 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
pyobjcandpyobjc-framework-Cocoapackages are installed (these are now optional dependencies that can be installed withpip install flitter[macos] - New
infandnanconstants were added to the language - The
gammaattribute has been removed from all window nodes except!adjustand the--gammacommand-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:reinhardand:acesfunctions implemented !adjustalso 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
!flarefilter 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!adjustfor doing exposure adjustments on the dark or light parts of images - Window
!transformfilter nodes now apply attributes in order like in!canvas3d
It also contains the following, less visible, improvements:
- The physics simulation of
!barrierreflections has been improved significantly !randomforces 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.modelsmodule 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
!differencewith 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