Commit Graph

324 Commits

Author SHA1 Message Date
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
Michael Fabian Dirks 27744f8b2a gs: Fix commit eb1612c6ee 2017-09-18 00:15:57 +02:00
Michael Fabian Dirks 90563e6b31 filter-transform: Add shearing support 2017-09-18 00:05:55 +02:00
Michael Fabian Dirks b07b5b1a0a filter-transform: Update code and fix camera and scaling 2017-09-18 00:05:54 +02:00
Michael Fabian Dirks 4de0a0ca16 filter-transform: Move translation strings to code 2017-09-18 00:05:54 +02:00
Michael Fabian Dirks 88cc142afb gs, effects: Anisotropic Mipmapper Class
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.
2017-09-18 00:05:54 +02:00
Michael Fabian Dirks 22bf3845c0 locale: Update to current code 2017-09-18 00:05:53 +02:00
Michael Fabian Dirks fce3fb8977 filter-shape: Use new GS classes 2017-09-18 00:05:53 +02:00
Michael Fabian Dirks e619f03217 filter-blur: Remove unused and duplicate functions 2017-09-18 00:05:40 +02:00
Michael Fabian Dirks fbc1887bee project: Provide EditorConfig for Tab Spacing 2017-09-18 00:05:34 +02:00
Michael Fabian Dirks eb1612c6ee gs: Wrap OBS Graphics Subsystem in proper C++ classes 2017-09-18 00:05:28 +02:00
Michael Fabian Dirks 52b70ff6de locale: Update to new code 2017-08-20 00:31:39 +02:00
Michael Fabian Dirks 607c8bf170 filter-transform: Formatting, Camera improvements and general fixes 2017-08-20 00:31:19 +02:00
Michael Fabian Dirks 6cc1be1b0d effect: Minor formatting changes 2017-08-20 00:25:20 +02:00
Michael Fabian Dirks 4dbf414214 effects, filter-blur: Precalculated Kernel, Formatting, Rendering and more
Filter:
* Massively improved Rendering loop to reduce overhead and provide cleaner code.

Gaussian Blur:
* Added precalculated Kernels using Textures. Slightly reduced GPU load.
* Added basic attempt at a Nvidia o(n/2+1) gaussian blur implementation.
* Fix up LOD for texture sampling.

Box Blur:
* Halved loop count.
2017-08-20 00:25:05 +02:00
Michael Fabian Dirks 374d1183ea filter-shape: Formatting improvements 2017-08-19 23:56:53 +02:00
Michael Fabian Dirks 9c8778b6f6 filter-displacement: Formatting improvements 2017-08-19 23:56:05 +02:00
Michael Fabian Dirks 1b58632a3f plugin: Formatting 2017-08-19 23:47:54 +02:00
Michael Fabian Dirks 986d788d25 cmake: Fix building and improve generated projects 2017-08-19 23:47:30 +02:00
Michael Fabian Dirks 90138ef636 project: Update Copyright Notice 2017-08-19 23:41:53 +02:00
Michael Fabian Dirks 94b9b73042 project: Remove AMD text from gitignore 2017-08-19 23:32:18 +02:00
Michael Fabian Dirks 52c3a0171e filter-blur: Initial work on optimization 2017-07-18 16:50:30 +02:00
Michael Fabian Dirks 0570904c5b effects: Reduce loop count with Gaussian Blur 2017-07-18 16:47:04 +02:00
Michael Fabian Dirks 9c56898842 plugin: Formatting 2017-07-18 16:45:30 +02:00
Michael Fabian Dirks 58deaa9408 filter-displacement: Move effects to 'data/effects' 2017-07-06 06:23:06 +02:00
Michael Fabian Dirks 9967a6ebf0 filter-blur: Add Color Format option
This option allows applying the blur to other color formats such as YUV. Bilateral Blur benefits the most from this, resulting in smoother images at lower kernel sizes.
2017-07-06 06:02:41 +02:00
Michael Fabian Dirks dceb2e533d effects: Add RGB -> YUV, YUV -> RGB color converter
This should help for filters requiring other color formats.
2017-07-06 06:01:37 +02:00
Michael Fabian Dirks 9c97d90cc2 filter-blur: Split off blur rendering into method 2017-07-06 05:57:57 +02:00
Michael Fabian Dirks 191b1ea23f filter-blur: Move effects to 'data/effects'
This should help reusing the same effect instead of having an effect per filter.
2017-07-06 05:52:46 +02:00
Michael Fabian Dirks 1f5c9f881a cmake: Fix integration with obs-studio
This will make it properly detect if it is part of obs-studio or standalone.
2017-07-06 05:26:42 +02:00
Michael Fabian Dirks d4778a56f4 gs-helper: Fix formatting of License header 2017-07-06 05:03:32 +02:00
Michael Fabian Dirks 2621d4961f filter-blur: Multiple changes, see description
* Added a 'Bilateral' de-noising blur, currently very resource hungry. It also has two extra sliders called 'Smoothing' and 'Sharpness', the former controls how smooth the output is
* Updated effect loading to be global instead of per instance.
* Changed default blur size to 5px.
* Simplified render loop (see previous effect commit).
2017-07-03 07:20:15 +02:00
Michael Fabian Dirks 8f05b348dd filter-blur: Split into individual files
An unknown issue with the OBS effect parser causes it to generate nothing when more than two techniques are in the same file. This works around the issue, but doesn't actually fix it.
2017-07-03 07:01:23 +02:00
Michael Fabian Dirks bd38d1caf6 cmake: Version 0.2.0
* Added Box and Gaussian Blur Filter.
* Fixed a few warnings flooding the log file.
* Fixed 'Field Of View' string.
2017-07-03 02:48:39 +02:00
Michael Fabian Dirks 5cdbb127c7 filter-blur: Add Box and Gaussian Blur Filter
This is not very optimized at the moment and will take quite a bit of GPU time. Will have to spend some time later to optimize it and perhaps add directional blur ("Motion Blur" to it).
2017-07-03 02:46:45 +02:00
Michael Fabian Dirks ccdc5b750c gs-helper: Fix warnings 2017-07-03 02:44:39 +02:00