Commit Graph

409 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks 1993c42ea6 filter-transform: Use 16-byte aligned vec3 & vec4 2018-01-08 17:31:50 +01:00
Michael Fabian 'Xaymar' Dirks 3e97906b32 gs-vertex: Always align to 16-byte 2018-01-08 17:30:33 +01:00
Michael Fabian 'Xaymar' Dirks f721ad0f19 util-math: Fix standalone compilation issues
All libobs files must be loaded with libobs/... instead of directly.
2018-01-08 16:47:39 +01:00
Michael Fabian 'Xaymar' Dirks 08c088ce5a util-math, util-memory: Formatting 2018-01-08 16:14:54 +01:00
Michael Fabian 'Xaymar' Dirks a3d859fb4f util-math: Implement aligned vec3 and vec4 versions
A bug in Visual C++ 2013 32-bit & 2015 32-bit causes the C++ compiler to incorrectly align the vec3 and vec4 structs to 8-byte instead of 16-byte, resulting in a crash if the target PC supports SSE. Visual Studio 2017 and 64-bit builds are not affected.

Related: #9
2018-01-08 15:29:42 +01:00
Michael Fabian 'Xaymar' Dirks cf17cdab19 util-memory: Rename aligned_malloc 2018-01-08 11:35:05 +01:00
Michael Fabian 'Xaymar' Dirks 32ed7b645a util-memory: Memory utility functions 2018-01-08 10:52:53 +01:00
Michael Fabian 'Xaymar' Dirks 8ae69cbe2c cmake: Version 0.4.0
- 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.
2017-12-14 08:54:52 +01:00
Michael Fabian 'Xaymar' Dirks add8012549 source-mirror: Add a Source Mirror source
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.
2017-12-14 08:46:36 +01:00
Michael Fabian 'Xaymar' Dirks 78ccd94639 filter-blur: Ensure that the initializer is unique 2017-12-14 08:05:06 +01:00
Michael Fabian 'Xaymar' Dirks f5fca108d7 gs-rendertarget: Fix missing initialization 2017-12-14 08:04:54 +01:00
Michael Fabian 'Xaymar' Dirks e7bbb213a4 filter-blur: Fix Blur filter occasionally not rendering
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
2017-12-14 03:52:29 +01:00
Michael Fabian 'Xaymar' Dirks 85bc910e6a cmake: MSVC should always show all warnings 2017-12-14 03:27:49 +01:00
Michael Fabian 'Xaymar' Dirks afdf18b33b ci: Fix typo causing default generator to be used
There is a difference between -g and -G, and it's the difference between actual 64 bit builds and only 32 bit builds with a 64 bit cross compiler.
2017-12-14 03:22:23 +01:00
Michael Fabian 'Xaymar' Dirks 9ab06e7368 gs-mipmapper: Fix type conversion warnings 2017-12-14 03:12:24 +01:00
Michael Fabian 'Xaymar' Dirks 762c961ed3 gs-vertexbuffer: Fix incorrect vertex buffer size on GPU crash 2017-12-14 03:09:02 +01:00
Michael Fabian 'Xaymar' Dirks 0d794254be util-math: Fix MSVC 2013 errors 2017-12-14 03:00:31 +01:00
Michael Fabian 'Xaymar' Dirks 6c4b8bbf12 filter-blur: Fix up some MSVC warnings 2017-12-14 03:00:08 +01:00
Michael Fabian 'Xaymar' Dirks 09d5ac4635 gs-vertexbuffer: Fix support for 20.x graphics API
Reverts an earlier change that made the plugin rely on 21.x features.
2017-12-14 02:59:50 +01:00
Michael Fabian 'Xaymar' Dirks 911f7696bb filter-blur: Reduce log spam on error 2017-12-14 02:35:47 +01:00
Michael Fabian 'Xaymar' Dirks 9d4314141a gs-texture: Remove unused function 2017-12-14 01:39:43 +01:00
Michael Fabian 'Xaymar' Dirks 578c963a02 filter-blur: Code cleanup, fixes and more
- 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.
2017-12-14 01:39:33 +01:00
Michael Fabian 'Xaymar' Dirks 408481c22d util-math: Functions to calculate nearest power of two values 2017-12-14 01:36:07 +01:00
Michael Fabian 'Xaymar' Dirks d78d3024cc util-math: Add commonly used mathematical functions 2017-12-14 00:28:35 +01:00
Michael Fabian 'Xaymar' Dirks 61f20a83ad filter-blur: Use self-registration feature 2017-12-14 00:24:37 +01:00
Michael Fabian 'Xaymar' Dirks 9e813d98f1 gs-vertexbuffer: Update to new API adding flush_direct functionality
This fixes the crashes on deleting a filter without requiring painful memory editing.
2017-12-14 00:22:27 +01:00
Michael Fabian 'Xaymar' Dirks 9a56c0c8ef tools: Add batch file to automatically generate projects
This will automatically generate projects for any obs-studio supported Visual Studio version using the native tools available.
2017-12-04 15:06:08 +01:00
Michael Fabian 'Xaymar' Dirks c5e0703747 ci: Use native tools for x64 compiling
The default in cmake is to use cross compiling, which performs worse and may produce slower or outright broken binaries.
2017-12-04 15:06:08 +01:00
Michael Fabian Dirks 0d3b9bb863
cmake: Fix compiling on Linux 2017-11-11 21:12:07 +01:00
Michael Fabian 'Xaymar' Dirks 71900e6752 gs-effect: Allow retrieving effect parameter name 2017-11-05 21:50:38 +01:00
Michael Fabian 'Xaymar' Dirks 4b364865a1 gs-effect: Allow empty effect and check errorMessage validity 2017-11-05 21:31:05 +01:00
Michael Fabian 'Xaymar' Dirks fc02f3fdad plugin: Allow new filters and transitions to self-register 2017-11-05 20:05:48 +01:00
Michael Fabian 'Xaymar' Dirks 3baecb4f2f project: Fix build status image and link in readme 2017-11-05 18:00:29 +01:00
Michael Fabian 'Xaymar' Dirks a8e1c7c207 ci: Add Discord webhook support 2017-11-05 17:24:41 +01:00
Michael Fabian 'Xaymar' Dirks 4f34067485 project: Add build status to readme file 2017-11-05 17:23:03 +01:00
Michael Fabian 'Xaymar' Dirks a9b13787be gs-effect: Provide parameter count and index access 2017-11-05 16:47:36 +01:00
Michael Fabian 'Xaymar' Dirks f766a23019 project: Add readme for new contributors 2017-11-05 16:24:53 +01:00
Michael Fabian 'Xaymar' Dirks 407f39271e ci: Integrate AppVeyor building
Remember to update the version with each release!
2017-11-05 14:34:53 +01:00
Michael Fabian 'Xaymar' Dirks a3a72089f7 cmake: Allow customized prefix and suffix for packaging 2017-11-05 14:34:28 +01:00
Michael Fabian 'Xaymar' Dirks b1f1942179 project: Disable the use of LFS and remove LFS files
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.
2017-11-05 14:33:55 +01:00
Michael Fabian 'Xaymar' Dirks f38e8d1412 git: Remove unnecessary files from LFS 2017-11-03 11:03:31 +01:00
Michael Fabian 'Xaymar' Dirks 13fd771ab9 cmake: Fix PACKAGE and INSTALL targets
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.
2017-11-03 10:48:06 +01:00
Michael Fabian 'Xaymar' Dirks a0eb5444cd cmake: Version 0.3.0
- 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:
2017-11-03 00:30:53 +01:00
Michael Fabian 'Xaymar' Dirks c7cfbff7dd gs-vertexbuffer: Workaround for a foreign deallocation bug in libobs
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
2017-11-03 00:13:07 +01:00
Michael Fabian 'Xaymar' Dirks 3450c149aa filter-displacement: Fix loading displacement filter 2017-11-02 17:57:52 +01:00
Xaymar 2f55841f88 effect: Code update, clean up and optimization 2017-10-22 19:05:29 +02:00
Xaymar c0aa79abbe filter-blur: Faster initialization for Gaussian Blur 2017-10-22 19:04:41 +02:00
Xaymar b266af1044 gs: Fix some type conversion warnings 2017-10-22 18:58:38 +02:00
Xaymar 6a208ed215 gs: Leave GS context and then return texture
This fixes a hang when calling GetTextureObject() on a GS::RenderTarget.
2017-10-22 18:57:28 +02:00
Michael Fabian Dirks 3899476a7f filter-transform: Actually include new C++ class header 2017-09-18 00:16:46 +02:00