StreamFX (for OBS Studio)

StreamFX (for OBS Studio) 0.8.0

It's finally time for the long awaited full and final release of StreamFX 0.8.0! As the new baseline version for future updates and improvements, 0.8.0 brings with it a lot of fixes, performance improvements, and even some new additions!

Support the StreamFX project!
If you rely on StreamFX for your streaming and recording needs and want StreamFX to continue existing, consider supporting me on Patreon or on Github Sponsors! Even a support as low as one dollar per month means a lot and helps keep the project afloat, and if every single user of the plugin was supporting me with just one dollar per month I could spend a lot more time working on the project than I do now. So what are you waiting for?

Help & Support
Before installing this plugin, please make sure to read the Installation Guide which includes the necessary prerequisites for succesfully getting StreamFX to run. If it still does not work, consider joining the official Discord.

Notable Changes (since 0.7)
Support for 32-bit has been stopped!
With 0.8.0a1 I stopped officially supporting the use of the 32-bit plugin and OBS Studio, and with this release it is now set in stone. If you are still stuck on 32-bit, you will have to stick with older versions of the plugin, but the majority of you should already have a 64-bit capable system and should be using the 64-bit version of OBS Studio.

FFmpeg Encoders are now part of StreamFX
Yes, that's right: my old ffmpeg-encoders plugin is now fully merged into StreamFX. This is to reduce my effective work load in supporting two code bases with the same fixes, instead of just applying them to one. This also has the additional benefit that I can use any of the helper classes of StreamFX in the FFmpeg Encoders to improve their quality and UI/UX.

Custom Shaders are here!
With 0.8.0a3 custom shaders were introduced, and they are now here to stay. This release marks the first stable release of the Shaders, which can be added as a Source, Filter or Transition! They are incredibly powerful, and will recieve many new abilities later on into development. Just take a look at the page on the wiki to see what they can do.

Keep your face in the frame with the NVIDIA Face Tracking filter!
Thanks to NVIDIA you now have a way to bypass all the annoying work of manually cropping your camera to fit in the frame. Just add the filter, and it will take care of tracking the region that should be kept in the frame, so that you can focus on your content! (Requires an NVIDIA RTX GPU to be present and in use by OBS Studio.)

Added a new UI integration for StreamFX!
You can now find a new StreamFX menu in OBS Studio if you've installed it correctly. It contains many useful links, including links to the community and direct links to reporting issues, as well as the new 'About StreamFX' window. The 'About StreamFX' window shows all the people that have contributed towards the development, and contains information about the version of the plugin you are currently using.

Performance Improvements
There has been work to increase the effective performance of StreamFX through the use of more modern coding ways, including some compiler optimizations. These improvements should lead to a 10% reduction in CPU and GPU usage, more if you're using a Laptop or mobile APU.

Changelog
0.8.0
  • Fixed a crash on closing OBS Studio caused by an Audio-enabled Source Mirror.
  • Fixed a possible scheduler collision between NVENC and NVIDIA Face Tracking causing sub-par performance.
  • Fixed Transition Shaders not getting their parameters in the correct order, causing some parameters to have no data.
  • Fixed a crash caused by FFmpeg encoders with no supported pixel formats.
  • Fixed incorrect colors when OBS is set to record sRGB content.
  • Fixed cases in which the configuration file for StreamFX would not save and reset every time.
  • Fixed a flickering bug causing the 'About StreamFX' window to appear all the time or not appear at all.
  • Fixed support for the AppleClang compiler.
  • Fixed an uncommon out-of-order-lock freeze triggered by Source Mirror.
  • Fixed support for Boolean values in Shaders.
  • Improved performance of Shaders drastically by reusing existing memory and some additional compiler optimizations.
  • Improved tracking quality in NVIDIA Face Tracking by moving part of the update logic into the per-frame update instead of the per-track update.
  • Improved overall performance slightly by reusing existing memory.
  • Moved the StreamFX menu out of the 'Tools' menu into the main menu.
  • Added the new 'Thank You' images to the 'About StreamFX' window.
  • Added support for enumerations (int, float) to Shaders.
  • Added support for value suffixes to Shaders.
  • Added the currently used StreamFX version to the 'About StreamFX' window.
0.8.0b3
  • Fixed Linux being unable to load the plugin due to a missing Qt symbol.
  • Fixed vertex buffers not being initialized to 0, causing some effects to not render.
  • Fixed mip-mapping causing Browser Sources to render corrupted.
  • Fixed Dual-Filtering Blur causing excessive GPU usage due to miscalculated render target sizes, which also fixes Dual-Filtering looking weird.
  • Fixed the "Adaptive I-Frames" option being inverted in the NVENC FFmpeg Encoders.
  • Fixed that "Adaptive B-Frames" is not actually being applied in the NVENC FFmpeg Encoders.
  • Improved the performance of various rendering steps by using a single fullscreen tri instead of a quad (See #199). The effects should be immediately noticable with mip-mapping and some of the Blur effects.
  • Added optional performance profiling which by default is not compiled in. Developers can choose to build StreamFX with it if they wish to check for possible optimizations.
  • Removed any currently broken shader examples.
0.8.0b2
  • (Hotfix 2) Actually fixed Shaders losing the ability to render transparency.
  • (Hotfix 1) Fixed Shaders losing the ability to render transparency.
  • Updated the StreamFX logo.
  • Updated translations from Crowdin again.
  • Updated help strings for Dynamic Mask and Blur.
  • Fixed the 'drunk.effect' example shader and added even worse options to it.
  • Fixed Shaders rendering larger or smaller than the specified size.
  • Fixed Shaders rendering once for each time they are drawn per tick instead of only once per tick.
  • Fixed Direct3D11 evicting important textures before encoders had a chance to work with them in high GPU usage situations.
  • Fixed "Look Ahead", "Adaptive I-Frames" and "Adaptive B-Frames" not being applied as expected.
  • Improved the performance of the Nvidia Face Tracking filter massively by moving almost all of it into worker threads.
  • Added a default path to the Shader file selection dialog.
  • Added various ShaderToy shaders (shadertoy-#####.effect) and a new semiline.effect which was used for the StreamFX logo.
  • Added an entry into the OBS Studio tools menu which links to important things such as where to get help and where to report bugs.
  • Added an "About StreamFX" window to thank all supporters, translators and contributors. This window opens once automatically when a new version of the plugin is installed, and otherwise is accessible via Tools -> StreamFX -> About StreamFX.
0.8.0b1
  • Updated translations from Crowdin, huge thanks to everyone submitting translations!
  • Fixed FFmpeg Encoders not respecting user selected color formats and instead always using YUV 4:2:0. (#136)
  • Fixed FFmpeg ProRes not correctly overriding color formats with the ones supported by the selected profile. (#136, 140)
  • Fixed a lot of code issues by actually jumping ship to modern C++.
  • Fixed some sources not tagging the settings object with the current version, making migrating settings problematic.
  • Removed the lib prefix from the StreamFX.so files on Linux. Make sure you delete the old version of the plugin first if you're using Linux!
0.8.0a4
  • Updated support for libOBS v25.0.3 and newer.
  • Added support for Ubuntu 18.04 and 19.10, take a look at the platform parity wiki page to see what is missing.
  • Fixed potential memory corruption caused by FFmpeg Encoders.
  • Fixed a regression introduced in 0.7.2 which causes 3D Transforms to suddenly invert. (#116)
  • Added Custom Shader Filters, Sources and Transitions - and also added extra examples for them.
  • Added Nvidia Face Tracking filter which will be available at a later point in time.
  • Updated translations from Crowdin, many thanks to all the volunteer translators!
0.8.0a3
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
0.8.0a2
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
0.8.0a1
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
  • Like
Reactions: Monsteer
Another week, another beta release! This weeks update brings much needed optimizations to StreamFX, and some additional fixes as always. Let's delve into the details:

Performance Improvements
All filters and sources have received massive performance optimizations, which should help you reach your higher resolution or framerate goal - or maybe even both! Dual-Filtering Blur also now works as expected and outperforms Gaussian and Box blur in almost all cases. In testing with every single filter applied to a 2560x1440 source and all sources, rendering time dropped from 34.1815ms to 31.1205ms - almost 10% lower! This should allow anyone to enjoy using StreamFX, and have a drastic performance impact in integrated GPUs or weaker GPUs.

Fixes for FFmpeg NVENC
The "Adaptive I-Frames" and "Adaptive B-Frames" options should now actually work again, thanks to cs9kc for reporting this. The behavior before now was that these options weren't even applied properly, resulting in streams and recordings looking worse than they should. Expect to see a slight quality improvement if you have both enabled after installing the new Beta!

Mip-mapping Rework
The mip-mapping option in 3D Transform has been reworked and should now be much more efficient at the task, but has lost some of its features - of which many weren't even implemented. This should allow you to check the mip-mapping option on every 3D Transform filter without noticing a dent in render times - but realisticly you only need it for sources where there is a lot of pixel-to-pixel variation.

Fixed Linux
And as a final fix, Linux users should now be able to use the plugin again! The missing symbols should now be properly linked into the binary and there should be no issues loading the plugin. Functionality is a different thing and if you find any crashes or bugs, please report them via the new entry in the Tools menu! Just click on "Tools", then "StreamFX", then "Report a Bug or Crash".

Changelog
0.8.0b3
  • Fixed Linux being unable to load the plugin due to a missing Qt symbol.
  • Fixed vertex buffers not being initialized to 0, causing some effects to not render.
  • Fixed mip-mapping causing Browser Sources to render corrupted.
  • Fixed Dual-Filtering Blur causing excessive GPU usage due to miscalculated render target sizes, which also fixes Dual-Filtering looking weird.
  • Fixed the "Adaptive I-Frames" option being inverted in the NVENC FFmpeg Encoders.
  • Fixed that "Adaptive B-Frames" is not actually being applied in the NVENC FFmpeg Encoders.
  • Improved the performance of various rendering steps by using a single fullscreen tri instead of a quad (See #199). The effects should be immediately noticable with mip-mapping and some of the Blur effects.
  • Added optional performance profiling which by default is not compiled in. Developers can choose to build StreamFX with it if they wish to check for possible optimizations.
  • Removed any currently broken shader examples.
0.8.0b2
  • (Hotfix 2) Actually fixed Shaders losing the ability to render transparency.
  • (Hotfix 1) Fixed Shaders losing the ability to render transparency.
  • Updated the StreamFX logo.
  • Updated translations from Crowdin again.
  • Updated help strings for Dynamic Mask and Blur.
  • Fixed the 'drunk.effect' example shader and added even worse options to it.
  • Fixed Shaders rendering larger or smaller than the specified size.
  • Fixed Shaders rendering once for each time they are drawn per tick instead of only once per tick.
  • Fixed Direct3D11 evicting important textures before encoders had a chance to work with them in high GPU usage situations.
  • Fixed "Look Ahead", "Adaptive I-Frames" and "Adaptive B-Frames" not being applied as expected.
  • Improved the performance of the Nvidia Face Tracking filter massively by moving almost all of it into worker threads.
  • Added a default path to the Shader file selection dialog.
  • Added various ShaderToy shaders (shadertoy-#####.effect) and a new semiline.effect which was used for the StreamFX logo.
  • Added an entry into the OBS Studio tools menu which links to important things such as where to get help and where to report bugs.
  • Added an "About StreamFX" window to thank all supporters, translators and contributors. This window opens once automatically when a new version of the plugin is installed, and otherwise is accessible via Tools -> StreamFX -> About StreamFX.
0.8.0b1
  • Updated translations from Crowdin, huge thanks to everyone submitting translations!
  • Fixed FFmpeg Encoders not respecting user selected color formats and instead always using YUV 4:2:0. (#136)
  • Fixed FFmpeg ProRes not correctly overriding color formats with the ones supported by the selected profile. (#136, 140)
  • Fixed a lot of code issues by actually jumping ship to modern C++.
  • Fixed some sources not tagging the settings object with the current version, making migrating settings problematic.
  • Removed the lib prefix from the StreamFX.so files on Linux. Make sure you delete the old version of the plugin first if you're using Linux!
0.8.0a4
  • Updated support for libOBS v25.0.3 and newer.
  • Added support for Ubuntu 18.04 and 19.10, take a look at the platform parity wiki page to see what is missing.
  • Fixed potential memory corruption caused by FFmpeg Encoders.
  • Fixed a regression introduced in 0.7.2 which causes 3D Transforms to suddenly invert. (#116)
  • Added Custom Shader Filters, Sources and Transitions - and also added extra examples for them.
  • Added Nvidia Face Tracking filter which will be available at a later point in time.
  • Updated translations from Crowdin, many thanks to all the volunteer translators!
0.8.0a3
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
0.8.0a2
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
0.8.0a1
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
Two weeks have passed since Beta 1, and the list of remaining bugs shrunk to almost nothing, which means that it's time for another Beta release! This beta is full of fixes and improvements, and even has some fancy new Shaders for you to use without needing any Shader coding skills! Let's dig into the changes.

Immediately at the start of the changelog, there's the fancy new logo which is inspired by the vaporwave retro look. I think this was long overdue as the original logo just did not fit what StreamFX could do anymore, especially since this one can now be rendered in StreamFX itself:
StreamFX Logo

And it doesn't end with just that, because StreamFX now has a full User Interface to look at! At the current time StreamFX adds its own menu with certain important links as well as a "About StreamFX" window. The "About StreamFX" window contains thanks to all supporters, contributors and translators, as well as clickable links to their social media profiles. This window will also automatically open once on major updates.
New UI Implementation

Moving on from UI, the Shaders have received a little bit of love. Four new Source Shader examples are available (converted from ShaderToy) and one new Filter Shader is also available. Some performance issues where Shaders would render more than once per tick and the actual render resolution did not match the expected one have also been fixed. Also one of the ... more interesting ... filter examples has been repaired - you can now use the Drunk effect, and it comes with two more levels of making things worse!
I regret nothing!

Next up is FFmpeg Encoders. There was a bug introduced in a recent version which caused "Look Ahead" and "Adaptive I/B-Frames" to stop working as expected. This has now been fixed, and in addition to that a small fix was applied which should prevent some encoding issues in situations where poorly coded Games cause massive GPU usage due to rapid reallocation of buffers.

And finally we reach the prime spot: the Nvidia Face Tracking filter. It has been undergoing a lot of optimizations which should drastically improve performance in every day usage without affecting the output of it too much. While not all optimizations have made it into this beta, more optimizations are coming to further improve the performance (though some are waiting on a reply from Nvidia).

Support the StreamFX project!
If you rely on StreamFX for your streaming and recording needs and want StreamFX to continue existing, consider supporting me on Patreon or on Github Sponsors! Even a support as low as one dollar per month means a lot and helps keep the project afloat, and if every single user of the plugin was supporting me with just one dollar per month I could spend a lot more time working on the project than I do now. So what are you waiting for?

Help & Support
Before installing this plugin, please make sure to read the Installation Guide which includes the necessary prerequisites for succesfully getting StreamFX to run. If it still does not work, consider joining the official Discord.

Changelog
0.8.0b2 Hotfix 2
  • Actually fixed Shaders losing the ability to render transparency.
0.8.0b2 Hotfix 1
  • Fixed Shaders losing the ability to render transparency.
0.8.0b2
  • Updated the StreamFX logo.
  • Updated translations from Crowdin again.
  • Updated help strings for Dynamic Mask and Blur.
  • Fixed the 'drunk.effect' example shader and added even worse options to it.
  • Fixed Shaders rendering larger or smaller than the specified size.
  • Fixed Shaders rendering once for each time they are drawn per tick instead of only once per tick.
  • Fixed Direct3D11 evicting important textures before encoders had a chance to work with them in high GPU usage situations.
  • Fixed "Look Ahead", "Adaptive I-Frames" and "Adaptive B-Frames" not being applied as expected.
  • Improved the performance of the Nvidia Face Tracking filter massively by moving almost all of it into worker threads.
  • Added a default path to the Shader file selection dialog.
  • Added various ShaderToy shaders (shadertoy-#####.effect) and a new semiline.effect which was used for the StreamFX logo.
  • Added an entry into the OBS Studio tools menu which links to important things such as where to get help and where to report bugs.
  • Added an "About StreamFX" window to thank all supporters, translators and contributors. This window opens once automatically when a new version of the plugin is installed, and otherwise is accessible via Tools -> StreamFX -> About StreamFX.
0.8.0b1
  • Updated translations from Crowdin, huge thanks to everyone submitting translations!
  • Fixed FFmpeg Encoders not respecting user selected color formats and instead always using YUV 4:2:0. (#136)
  • Fixed FFmpeg ProRes not correctly overriding color formats with the ones supported by the selected profile. (#136, 140)
  • Fixed a lot of code issues by actually jumping ship to modern C++.
  • Fixed some sources not tagging the settings object with the current version, making migrating settings problematic.
  • Removed the lib prefix from the StreamFX.so files on Linux. Make sure you delete the old version of the plugin first if you're using Linux!
0.8.0a4
  • Updated support for libOBS v25.0.3 and newer.
  • Added support for Ubuntu 18.04 and 19.10, take a look at the platform parity wiki page to see what is missing.
  • Fixed potential memory corruption caused by FFmpeg Encoders.
  • Fixed a regression introduced in 0.7.2 which causes 3D Transforms to suddenly invert. (#116)
  • Added Custom Shader Filters, Sources and Transitions - and also added extra examples for them.
  • Added Nvidia Face Tracking filter which will be available at a later point in time.
  • Updated translations from Crowdin, many thanks to all the volunteer translators!
0.8.0a3
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
0.8.0a2
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
0.8.0a1
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
We're inching closer and closer to the full release of 0.8.0, and let's celebrate that with the first production ready beta release! This release fixes some major issues that were introduced in a refactor, further improves Linux support, and updated the translation files from Crowdin again. And that's not all, though the next part is not my own doing:

The Nvidia Face Tracking filter is finally available thanks to Nvidia releasing the AR SDK publicly. This means that you can now have a "smart camera" always follow your face, keeping the action in the frame, allowing you to engage with your viewers without having to manually crop and zoom the camera source. A more in-depth view on it is available on my blog.

That is pretty much it for this release. Lots of things were fixed or added over the past Alpha releases, and now we're slowly but surely moving towards a full release again. And best of all, we've finally hit stable again.

Support the StreamFX project!
If you rely on StreamFX for your streaming and recording needs and want StreamFX to continue existing, consider supporting me on Patreon or on Github Sponsors! Even a support as low as one dollar per month means a lot and helps keep the project afloat, and if every single user of the plugin was supporting me with just one dollar per month I could spend a lot more time working on the project than I do now. So what are you waiting for?

Help & Support
Before installing this plugin, please make sure to read the Installation Guide which includes the necessary prerequisites for succesfully getting StreamFX to run. If it still does not work, consider joining the official Discord.

Changelog
0.8.0b1
  • Updated translations from Crowdin, huge thanks to everyone submitting translations!
  • Fixed FFmpeg Encoders not respecting user selected color formats and instead always using YUV 4:2:0.
  • Fixed FFmpeg ProRes not correctly overriding color formats with the ones supported by the selected profile.
  • Fixed a lot of code issues by actually jumping ship to modern C++.
  • Removed the lib prefix from the StreamFX.so files on Linux. Make sure you delete the old version of the plugin first if you're using Linux!
0.8.0a4
  • Updated support for libOBS v25.0.3 and newer.
  • Added support for Ubuntu 18.04 and 19.10, take a look at the platform parity wiki page to see what is missing.
  • Fixed potential memory corruption caused by FFmpeg Encoders.
  • Fixed a regression introduced in 0.7.2 which causes 3D Transforms to suddenly invert. (#116)
  • Added Custom Shader Filters, Sources and Transitions - and also added extra examples for them.
  • Added Nvidia Face Tracking filter which will be available at a later point in time.
  • Updated translations from Crowdin, many thanks to all the volunteer translators!
0.8.0a3
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
0.8.0a2
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
0.8.0a1
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
With Alpha 3 being barely two weeks old now, and there being so many new things to finally release to the public, it is time for Alpha 4. Alpha 4 brings the much requested Custom Shaders back - but this time as Filters, Sources and Transitions - adds support for Ubuntu 18.04 and 19.10, and fixes various issues. Let's delve a bit more into the release itself.

Starting with Custom Shaders which allow you to load a HLSL file and use it directly in OBS Studio without having to delve into just how libOBS works. Just load a shader, customize some parameters, and you're done. At the current time it supports the basic parameter types, and more advanced parameter types will be added in a future update - such as textures. The implementation is currently considered experimental, so bugs and crashes should be expected when using these.

Next up is Ubuntu support. The plugin should now be installable to ~/.config/obs-studio using one of the archives released below, which allows Ubuntu users to also now enjoy the benefits of StreamFX. Some features have not yet been ported and require additional work - if you have coding knowledge in C and OpenGL you can help out with this by contributing code to the project.

And that's it. There is an additional new filter which is not yet publicly available, and a lot of fixes that resulted from the work to make Ubuntu support a reality, but aside from that, there's nothing else. Enjoy!

Support the StreamFX project!
If you rely on StreamFX for your streaming and recording needs, and want StreamFX to continue existing, consider supporting me on Patreon or on Github Sponsors! Even a support as low as one dollar per month means a lot and helps keep the project afloat, and if every single user of the plugin was supporting me with just one dollar per month I could spend a lot more time working on the project than I do now. So what are you waiting for?

Changelog
0.8.0a4
  • Updated support for libOBS v25.0.3 and newer.
  • Added support for Ubuntu 18.04 and 19.10, take a look at the platform parity wiki page to see what is missing.
  • Fixed potential memory corruption caused by FFmpeg Encoders.
  • Fixed a regression introduced in 0.7.2 which causes 3D Transforms to suddenly invert. (#116)
  • Added Custom Shader Filters, Sources and Transitions - and also added extra examples for them.
  • Added Nvidia Face Tracking filter which will be available at a later point in time.
  • Updated translations from Crowdin, many thanks to all the volunteer translators!
0.8.0a3
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
0.8.0a2
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
0.8.0a1
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
OBS Studio Version 25 is out and with it comes the need for an updated StreamFX plugin that is compatible with it. Not only that but some outstanding and new bugs have been fixed, which should help with stability compared to 0.8.0a2. Let's go into detail on some of the fixes.

First is 3D Transform which had a discoloration bug that caused transparent source to look vastly different from their actual look. This was likely introduced somewhere after 0.7.1 and has now been fixed, which should be immediately visible upon starting OBS Studio with the new plugin version installed.

And second is Source Mirror, which has received three fixes. Audio Mirroring should now work instantly instead of every second configuration update and audio should now be mirrored in the order that it was captured. Lastly a new freeze that happens with OBS Studio v25 was also fixed.

Changelog
  • Updated support for libOBS v25.0.1 and newer.
  • Fixed 3D Transform causing discoloration in transparent sources. (#104)
  • Fixed audio jitters caused by audio mirroring in Source Mirror happening out of order. (#111)
  • Fixed a common freeze new to libOBS v25 caused by Source Mirror.
  • Fixed audio mirroring only working every second configuration update in Source Mirror.
StreamFX is back, and this time it's less crash-happy with even more features! FFmpeg Encoder has finally been fully merged, although in a slightly more advanced state than the last plugin release, and many sources and filters have received a much needed stability improvement. Let's go through each change.

First is Source Mirror which has lost the ability to rescale internally, but in exchange gained severely improved Audio handling. It can now detect audio channels almost perfectly without requiring manual override, should be much less laggy and have much lower CPU impact.

Next up is Dynamic Mask and Blur, which both should no longer crash on various occasions. Time will tell if that is the truth, but for now I could no longer repro any of the crashes that have been detected before. This should also fix any left-over sources being added to scene collections which would cause crash-loops due to duplicate names or even invalid content.

Finally there is the FFmpeg Encoder merge, which was announced a while ago and has finally been completed. For hardware encoders there is no longer a separate entry for software encoding, instead all of it is in a single entry and it is automatically determined if you want software or hardware encoding. Furthermore additional options and default values have been made available to you, so you should take a look at them if you have used the encoders before. Even if you did not use it before, the new encoders might still end up useful for you.

As for Custom Shader, while it has been improved, it is still very experimental. There is currently no guarantee that it won't just rip your face off and eat it as it is in a very broken state at the moment. Use with caution, or rather avoid it unless you want to test it. It is absolutely not production ready and in a constant state of change.
Changelog
This is a Pre-Release and not ready for production use.
  • Added FFmpeg Encoders which expose various encoders available in FFmpeg to you with a neat, easy to use UI (if you can read tooltips). You will find them available under either Streaming or Recording, depending on the codec you want to encode. This integration is slightly different from the one in obs-ffmpeg-encoder, so the two plugins will clash and you should remove obs-ffmpeg-encoder ahead of time using its uninstaller entry.
  • Improved Custom Shaders further, however these are still very experimental. Expect these to crash, corrupt or otherwise eat your setup in unexpected ways, and also expect these to change wildly.
  • Improved Audio Mirroring in Source Mirror by relying on a global thread pool instead of a thread per source, drastically reducing the total CPU load in massive setups.
  • Removed scaling from Source Mirror which was mostly broken anyway, so please use any of the available filters instead.
  • Fixed a possible crash in multi-core systems caused by event callbacks.
  • Fixed various crashes and corruptions caused by Source Mirror, Dynamic Mask and Blur.
Happy Holidays everyone! To celebrate the next week, a new StreamFX (renamed from Stream Effects) pre-release is in order.

First and most important is the rename from Stream Effects to StreamFX. Due to name collisions with Stream Elements and people unfortunately sending me support request for Stream Elements, I've decided to rename the plugin to StreamFX. Read more about it here. Additionally 32-Bit releases are deprecated and are no longer supported.

Next up is Color Grade, which has received a lot of love since 0.7.1. The UI was improved massively, and you can now control what Color Grade considers Shadow, Midtone and Highlights. Not only that, but it has also been moved from Experimental to Stable, which means it won't change drastically anymore and is now production ready.

Then we have lots of fixes and performance improvements. Large parts of it are just to gracefully fail instead of crashing, but that's still better than crashing. Some freezes were also fixes, while others are pending investigation to figure out a fix. The performance improvements should be immediately visible and result in around 10-15% less CPU and 2-5% less GPU usage.

And finally there is the one and only Custom Shaders integration. These have gone through many refactors, redesigns and at times even being marked for death and removal. But now they are back, and they are faster and have more features than ever before! The new implementation allows for a much more versatile shader system, including dynamic property updates when changing the technique in a shader, watching a shader file for changes, and more.

At the moment only Custom Shader sources are supported, but this will change once the underlying implementation is complete, upon which the work on filters will begin. Check out the roadmap to see upcoming planned changes and around when they will be done.

Changelog
This is a Pre-Release and not ready for production use.
  • Important: The plugin was renamed to StreamFX, users that manually installed this plugin (or manually built it) must ensure that the old obs-stream-effects files are removed before installing the new version.
  • Deprecated 32-Bit versions of the plugin. You don't have an excuse to be on 32-bit anymore, hardware has gotten dirt cheap thanks to AMD Ryzen. You can get a barebone modern PC for around 260 €, or upgrade your existing one for around 140 €.
  • Added additional options for Tint control to Color Grade, allowing fine tuning of what is Shadow, Midtone and Highlight.
  • Added GPU debug markers to most of the code which allow GPU debuggers like NVIDIA Nsight to show the exact time taken for each effect step.
  • Added a new example shader: Plasma. This effect simulates old school plasma effects and showcases some of the features of Custom Shaders.
  • Added a temporary workaround for a bug in OBS Studio to ensure that StreamFX does not crash or corrupt OBS Studio's memory. A fix to OBS Studio has already been submitted and is waiting on Review.
  • Updated translations from Crowdin: de-DE, es-Es, fr-FR, it-IT, ja-JP, nl-NL, pl-PL, ru-RU, sv-SE, zh-CN. Much thanks to all the contributors on Crowdin!
  • Improved Custom Shader Sources by adding support for automated file reloading, dynamic parameter updates, and various UI improvements.
  • Improved stability drastically by gracefully handling all unexpected exceptions and refactoring a lot of code.
  • Improved performance drastically by no longer always caching sources and ensuring that some code hotspots don't duplicate heap data on call.
  • Moved all examples from data/ to data/examples/.
  • Fixed a few crashes caused by the Graphics Subsystem Wrapper (GSW).
  • Fixed a freeze with Source Mirror when retrieving the size of a mirrored Source.
  • Fixed rescaling size in Source Mirror when "Use Original Size for Transform" is active.
  • Fixed filters messing with source sizes when they shouldn't be.
  • Fixed a freeze caused by Directional Gaussian Blur (#83, #85).
  • Removed Custom Shader Filters temporarily, they will return later.
  • Removed AppVeyor Continuous Integration in favor of GitHub Actions. You can now download bleeding edge builds from here by clicking on the commit, then clicking on Artifacts, and then selecting either windows-2016 (Windows 7) or windows-2019 (Windows 10 or up to date Windows 7).
  • Like
Reactions: Monsteer
This is a beta release. Bugs, Crashes, and incomplete changes should be expected. Don't complain if it's not up to your imaginary standards.
Changelog

  • Reduced the rate at which 3D Transform, Blur, Dynamic Mask, SDF Effects and Source Mirror crash OBS Studio.
  • Improved the UI/UX for some sources and filters.
  • Deprecated 32-bit builds, let's be honest if you still need 32-bit you're not in the targeted user group for this plugin.
  • Improved the performance drastically for various sources and filters.
  • The Color Grading filter now allows you to pick the Luma detection method and parameters, which allows further customization.
Tired of always using the same filters and sources? Why not just write your own using the brand new Custom Shaders! While still experimental, they will be fully working in a future update - if at all possible, that remains to be seen.

Or how about getting some professional Color Grading in your stream or recording? The new filter allows you to adjust Lift, Gain, Gamma, Offset, Tint, Hue Shift, Saturation, Lightness and Contrast live on air, and get some really cool new stuff working. Just take a look at this before and after to see what is possible with this!

As OBS Studio v24.0.0-rc2 seems to have finalized the dependency changes, this version only supports v24.0.0-rc2 and up now. It also fixes a lot of crashes that have been reported in the past few weeks, thanks to everyone that actually stayed and helped debug the crash and then test the fix. Wouldn't have been possible without you!

Changelog
  • Fixed a crash due to Dynamic Mask being unable to render one or more textures.
  • Fixed a crash due to Signed Distance Fields failing to update or render.
  • Fixed a crash when Displacment Map has no displacement texture path.
  • Fixed a crash when Shaders fail to load.
  • Updated libobs to v24.0.0-rc2.
  • Updated translations from CrowdIn.
  • Added the ability to change Source Mirrors alignment when rescaling.
Unstable, possibly broken changes
  • Added a new Color Grading filter which can be used to essentially gain access to a professional color grading tool.
  • Added Custom Shaders as Filters and Sources, though partially broken at this moment.
Top