Commit graph

114 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
53568d445b gs-vertex: Hint VS2013/2015 at proper alignment
The previous fix unfortunately didn't actually fix it and instead made the crash invisible at first and then corrupt the heap at a later point. With this, VS2013 and VS2015 create code identical to what VS2017 creates, and no longer seem to crash.

Related: #9
2018-01-18 03:12:52 +01:00
Michael Fabian 'Xaymar' Dirks
e9fc9e89f2 plugin: Use self-registration code everywhere 2018-01-16 11:47:24 +01:00
Michael Fabian 'Xaymar' Dirks
cb1ae28b07 gs-vertexbuffer: Use aligned memory and fix null pointer
This fixes the crash on creation issues, but a crash on exit still happens with the plugin installed. Unsure what exactly is causing it but it looks like something is writing into heap memory.

Related: #9
2018-01-08 19:08:49 +01:00
Michael Fabian 'Xaymar' Dirks
1e2cff48c9 util-memory: Implement aligned std::allocator 2018-01-08 19:01:26 +01:00
Michael Fabian 'Xaymar' Dirks
8a595501b3 gs-vertex, util-math: Use _aligned_malloc instead of util::malloc_aligned 2018-01-08 17:41:26 +01:00
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