- Improved initialization code to ease future development.
- Fixed several possible crashes in the GS subsystem wrappers.
- Fixed 'Blur' filter color being wrong due to non-power-of-two textures.
- Improved 'Blur' filter error reporting for better debugging and support.
- Fixed 'Blur' filter crashing OBS on GPU reset, better support for this is added in a future version of OBS.
- Fixed 'Blur' filter occasionally just not working.
- Added 'Source Mirror' source which allows you to add filters to a source without modifying it as well as rescaling it.
The source allows you to apply effects to the same source without requiring a new instance of the source. Any changes done to the original source also apply to the mirror, so there is less total work that needs to be done.
It can also rescale the source, allowing you to use the same source as a cheap instant backdrop with Blur for example. What you do in the end is completely unwritten and up to you to decide.
An earlier commit changed how Blur filter rendered and thus m_technique was no longer being initialized, resulting in the check randomly failing if the memory was just right.
This also adds some more extra logging to the instance creation in case things fail and fixed one MSVC warning.
Fixes#1
- Fixed Gaussian Blur having color issues with radii that aren't a power of 2.
- Improved error reporting to better debug problems where Blur doesn't render.
- Switched from manual object management to managed classes.
- Lots of code cleanup for maintainability.
As a server hoster and administrator I can say this: Github LFS is way too overpriced for the little gain it has. A single data pack costs $5/month and it gives 50GB space and 50GB traffic for one month, which isn't a lot because any amount of that bandwidth is used up by people that aren't actually you - you just get charged for it.
To put it into perspective, I currently host a cluster of 8 servers and pay a total of about $160 for it, which gives me access to a total of 100 TB disk space and a monthly traffic soft limit of 400 Tebibyte - after I hit that soft limit the servers just work with slightly less bandwidth. For the $5 that Github charges I could self-host the LFS files and still have 3 TB more disk space plus an extra of 12.5 Tebibyte traffic.
It's just purely made for Github to get more revenue than the effort put into it.
INSTALL would incorrectly copy /data instead of the content of /data, resulting in the plugin not being able to load effects and default images.
PACKAGE was running from the wrong directory, resulting in an extra ".." directory being added, which was invisible for some decompression software.
- Improved cmake script to allow packaging from within the IDE.
- Fixed a crash/freeze caused by not closing the rendering context.
Blur Filter:
- Reduced blur CPU usage and GPU usage.
- Fixed LOD being calculated causing slower rendering.
- Fixed an issue where the effect would randomly not load depending on the actions before starting obs.
- Improved rendering speed via pre-calculated Blur Kernel for those filters supporting it.
- Added 'Color Format' option to improve de-noise type blur for cameras.
- Added 'Bilateral Blur', a de-noise type blur which can be used to reduce low frequency noise.
- Changed default blur size to 5 pixels.
- Improved effect loading to only compile the shader once instead of every time.
Transform Filter:
- Added shearing support allowing for more weird shapes to be rendered.
- Fixed camera aspect ratio when source width is smaller than source height.
- Fixed scaling being affected by rotation.
- Fixed an issue with the mesh reconstruction logic causing invisible sources.
Displace Filter:
The graphics subsystem in OBS is freeing memory it didn't allocate, resulting in stack/heap corruption and other kinds of messy situations. The official "fix" for this is to use bmalloc, but then you lose any kind of ability to re-use the same buffer for multiple vertex buffers or update on the fly without adjusting code that is possibly outside of your control (such as in libraries).
This works around the issues by "patching" the gs_vertexbuffer object to no longer hold a reference to the gs_vb_data object. Currently only D3D11 is supported for this kind of hack and it might break in a future obs-studio release.
PR fixing this Issue: https://github.com/jp9000/obs-studio/pull/993
End goal of this is to be an anisotropic filtering purely on the GPU without any actual mipmaps in the graphics subsystem. The basic idea behind it is that we can create all possible mipmaps in a twice as big texture as the original and then can efficiently render it no matter the GPU features as it will only consume one sampler.
The texture that it outputs will have both horizontal, vertical and full mipmaps in it. Horizontal mipmaps reduce Width, Vertical mipmaps reduce Height and full mipmaps reduce both. This means that LoD levels are both possible in the X and Y direction, allowing for much greater precision mipmapping on all GPUs.
This is a temporary solution until we can directly copy updated textures to a mipmap level.