A lot of time has passed since the 0.8 release of StreamFX, and since then a lot of code has been submitted and tested. A ton of issues have been fixed internally, making everything work better, and a lot of new features are being worked on. Let's take a quick look at the already confirmed additions!
The FFmpeg Encoders are now available on Linux!
You can now use the fancy NVENC UI/UX from StreamFX on your Linux machine! While zero-copy is not supported due to a limitation in OBS Studio itself, all the encoders should be available to you as long as you have the necessary system drivers. This limitation is not something I can work around, so if you need zero-copy you will have to stick with Windows, or find an alternative solution - or just learn coding and write the necessary code in OBS Studio.
Cleaner UI and code improvements for NVENC!
NVENC has received a number of changes, mainly for UI/UX, but also in terms of bug fixes. All the rate limitation options are now under the same group, which slightly cleans up the UI and makes it easier to understand. Furthermore the "Each" mode that was listed for "B-Frame Reference Mode" has been removed, as well as Level 5.2 which wasn't actually supported by the FFmpeg version that OBS Studio uses. Lastly the log file now shows the actual configuration, instead of making one up out of thin air.
Support for AMD AMF H.264 and H.265!
Even though I personally no longer own any AMD GPUs, and having no plans to get one in the near future, StreamFX will support encoding via AMD AMF in the upcoming release. Note that this uses FFmpeg to do the work, so any bugs with the encoding result are the result of work done by AMD and should be reported as a bug to AMD. I can't fix the things AMD broke in their own driver, so your contact for bugs there is AMD.
New Shader Parameters: Random and RandomSeed
Custom shaders now have access to 16 randomly generated values, of which 4 are generated at creation, another 4 are generated for each activation, and the remaining 8 are generated each frame. These are all based on the user specified seed (accessible as RandomSeed), and as such won't differ from run to run unless the seed is changed. Shader developers can make use of these to implement transitions that look different each time they are used, for example the "Sliding Bars" shader has already been improved with this - it now has slightly different speeds and rotations each time the transition is invoked.
- If an encoder is not supported on the system, it is now hidden from the user.
- Fixed various memory leaks that happened with more complex setups, causing sources to outlive their scene collection temporarily.
- Added a workaround for a certain memory leak caused by OBS Studio nulling the OBS object before deallocating plugins.
- Added proxy encoders to support older configurations, and added configuration migrating for forward compatibility.
- Shaders can now increase their resolution all the way to 16384² if the GPU supports it.
- Possibly fixed various "invisible source/filter" issues happening with Shaders.
- Shader filters now capture the input at the correct resolution.
- New example shaders to choose from, thanks to Charles 'Surn'/'Oncorporation' Fettinger. (1, 2, 3)
- New example source shader thanks to Robert Moggach.
While there is still a lot to do and improve, the current changes already make a huge difference to before. I want to get features into a good state before teaming up with companies and integrating StreamFX officially into other software such as Streamlabs OBS, but it is slowly getting there.