Commit graph

184 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
d72f6a3991 project: Improve performance profiling support
Adds a new CMake option "ENABLE_PROFILING" which enables all CPU and GPU performance profiling available in StreamFX for tracking what's actually causing things to be slow.
2020-05-01 11:37:24 +02:00
Michael Fabian 'Xaymar' Dirks
c5cd855c11 project: Version 0.8.0b2hf2 2020-04-24 09:02:12 +02:00
Michael Fabian 'Xaymar' Dirks
73edb7682b project: Version 0.8.0b2hf1
* #186 Write alpha channel to render target in shaders.
2020-04-24 07:16:17 +02:00
Michael Fabian 'Xaymar' Dirks
c4b4cbdafd project: Version 0.8.0b2
* #153 #167 #178 Update localization.
* #157 Fix a few example shaders and add some new ones.
* #160 Fix Look Ahead setting
* #162 Increase Direct3D11 texture eviction priority.
* #163 Asynchronous Nvidia Face Tracking.
* #164 Add clang-tidy support to CMake.
* #165 Fix some clang-10 errors.
* #168 Updated StreamFX logo.
* #169 Redesigned version string generation.
* #170 Fix compiler error with C++17 when using libobs.
* #171 Add global configuration handler.
* #172 Move Windows exclusive library handler into its own file.
* #174 Refactor everything into the streamfx:: namespace.
* #176 Implement a new UI/UX experience for StreamFX users.
* #177 Link to stdc++fs on GNU and Clang.
* #179 Fix incorrect render sizes and performance with gfx::shader.
* #181 #183 Fix locale strings missing info or no longer being used.
* #182 Add a default path for gfx::shader based on the selected file or the examples directory.
2020-04-24 05:39:40 +02:00
Michael Fabian 'Xaymar' Dirks
e17e7f7350 cmake: Link to stdc++fs on GNU compatible and Clang 2020-04-24 01:34:54 +02:00
Michael Fabian 'Xaymar' Dirks
f58ce9f421 project: Implement a brand new UI with fancy windows
Implements support for various new UI features that weren't possible up until now, such as an 'About StreamFX' window with a thank you to everyone that supported the project up until now.
2020-04-23 01:09:02 +02:00
Michael Fabian 'Xaymar' Dirks
2ab8949ba5 cmake: Place Windows exclusive functionality into own file 2020-04-22 23:32:22 +02:00
Michael Fabian 'Xaymar' Dirks
9ddc9051c7 configuration: Add global configuration handler 2020-04-22 23:15:32 +02:00
Michael Fabian 'Xaymar' Dirks
c93789f6dc cmake: Slightly redesign version string generation 2020-04-22 23:11:01 +02:00
Michael Fabian 'Xaymar' Dirks
92fc2b3ccb cmake: Add support for running clang-tidy
Adds supports for running clang-tidy from within CMake, if the Clang toolset was found. This feature is experimental, but should work on many compilers, as it relies on generated compile_commands.json which are fully generated by the clang subproject. Using clang-tidy we can find hidden bugs that other static analyzers do not detect, or compilers don't even bother throwing an error for.
2020-04-18 19:11:53 +02:00
Michael Fabian 'Xaymar' Dirks
771f41381e project: Version 0.8.0b1
* Updated translations from CrowdIn.
* Fixed FFmpeg Encoder not using the Color Format option.
* Fixed ProRes not overriding the Color Format with the correct one.
* Fixed CMake adding a lib prefix to Linux builds.
* Fixed some sources not tagging the settings object with the plugin version, resulting in impossible to migrate settings.
* Massively improved GCC and Clang support, fixing almost all warnings and errors.
2020-04-09 00:29:18 +02:00
Michael Fabian 'Xaymar' Dirks
c49bbfc1d0 cmake: Fix broken CMake code in 57dcdcd393 2020-04-05 11:25:03 +02:00
Michael Fabian 'Xaymar' Dirks
57dcdcd393 cmake: Add support for OBS Frontend API and Qt UI 2020-04-05 10:58:48 +02:00
Michael Fabian 'Xaymar' Dirks
a138f95126 cmake: Fix clang support in native OBS Studio build 2020-04-05 06:50:21 +02:00
Michael Fabian 'Xaymar' Dirks
d54630a197 cmake: Don't add lib prefix to binary files 2020-04-05 04:14:21 +02:00
Michael Fabian 'Xaymar' Dirks
994215a65f plugin: Version 0.8.0a4
* Updated libOBS to 25.0.3.
* Improved support for Ubuntu 16.04 and 18.04, for both GCC 8 and GCC 9.
* Fixed #116: Regression from 0.7.1 to 0.8.0.
* Fixed transitions not showing up.
* Added Shader Transitions, Shader Sources and Shader Filters.
* Added new example files for the new Shaders integration.
* Added Nvidia Face Tracking filter (requires compatible Nvidia RTX GPU and Nvidia AR SDK Runtime).
2020-04-03 01:49:06 +02:00
Michael Fabian 'Xaymar' Dirks
c13b9c3641 cmake: Add support for local Unix installs 2020-04-03 01:16:33 +02:00
Michael Fabian 'Xaymar' Dirks
34e3601eda cmake: Add support for Linux standalone builds 2020-04-02 20:37:45 +02:00
Michael Fabian 'Xaymar' Dirks
59fa1d36d7 common: Common header include for improved platform support
This header includes all common data between headers used in the plugin. This should improve cross-platform compiling support whenever possible, as all platform-dependent common includes and defines can be done here.
2020-04-02 17:02:01 +02:00
Michael Fabian 'Xaymar' Dirks
43f1dcf205 filter-nv-face-tracking: Nvidia exclusive Face Tracking filter
Ever wished you had a professional camera operator to highlight and follow the action, ensuring the audience never misses a beat? Thanks to NVIDIA, you can now do this at home for free! The new NVIDIA AR SDK unlocks augmented reality features, including motion tracking for faces.

This allows me to provide you with an automated zoom and cropping solution for your video camera to transform your streams into a slick, polished broadcast, where you’ll always be the star of the show. Don’t forget - everything is customizable so the possibilities are endless. You can even recreate that Futurama squinting meme if you wanted to (with some scripting)!

The filter requires compatible Nvidia RTX hardware and the Nvidia AR SDK Runtime to be installed ahead of time. This filter is considered "stable" and shouldn't change much from version to version.
2020-03-31 21:46:47 +02:00
Michael Fabian 'Xaymar' Dirks
43b5d309eb transition: Add initial version of Shader filter
These allow you to apply any kind of filtering to a any source, using just standard HLSL. Just like transitions, one extra parameter is set called 'InputA'.

Fixes #95
2020-03-28 18:54:56 +01:00
Michael Fabian 'Xaymar' Dirks
ead355beea transition-shader: Add initial version of Shader transitions
With this, the first proper shader effect is now possible. By using the four new automated shader parameters 'InputA', 'InputB', 'TransitionTime' and 'TransitionSize' you can write your own transition in HLSL.

Fixes #96
2020-03-28 18:38:45 +01:00
Michael Fabian 'Xaymar' Dirks
10fee7f048 util-profiler: Easy to use profiling helper 2020-03-27 20:10:09 +01:00
Michael Fabian 'Xaymar' Dirks
6776f2111c cmake: Disable some frequent unhelpful warnings
These warnings usually come from the standard code in MSVC or system headers, over which we have absolutely no control. Keeping them enabled does not improve our code at all.
2020-03-27 20:10:09 +01:00
Michael Fabian 'Xaymar' Dirks
67016ccd95 plugin: Version 0.8.0a3
* Updated libOBS to v25.0.1
* Fixed a freeze exclusive to v25.x with Source Mirror.
* Fixed audio mirroring only working on every 2nd configuration update with Source Mirror.
* Fixed audio being mirrored out of order on highly parallel systems (>4 Threads).
* Fixed discoloration of sources in 3D Transform.
* Fixed ffmpeg encoder not falling back to software if scaling is detected.
2020-03-21 09:23:54 +01:00
Michael Fabian 'Xaymar' Dirks
8f4313d8e8 cmake: Actually support delay loading on Windows 2020-03-20 23:39:21 +01:00
Michael Fabian 'Xaymar' Dirks
6d3c540349 cmake: Upgrade to OBS v25.0.1 2020-03-20 23:24:25 +01:00
Michael Fabian 'Xaymar' Dirks
6f2b50b0ad cmake: Redesign for future features 2020-03-20 23:09:46 +01:00
Brandon Edens
2dbed865bd
cmake: Fix file name for case-sensitive filesystem (#112)
Fixes #107 

Co-authored-by: Brandon Edens <bedens@fitbit.com>
2020-03-17 18:45:38 +01:00
Michael Fabian 'Xaymar' Dirks
f79846aa3b plugin: Version 0.8.0a2 2020-03-07 02:03:25 +01:00
Michael Fabian 'Xaymar' Dirks
08024049c2 util-threadpool: Implement global thread pool
This thread pool can take large or small tasks and as such alleviates the burden of having a thread per source. Particularly for large setups, this drastically reduces the number of threads running in the background waiting for work.
2020-03-03 01:52:54 +01:00
Michael Fabian 'Xaymar' Dirks
326fa68d9f obs-signal-handler: Helper classes for signals and audio 2020-02-14 07:30:46 +01:00
Michael Fabian 'Xaymar' Dirks
03930b6b42 cmake: Don't add custom target for in-obs builds 2020-02-13 10:33:46 +01:00
Michael Fabian 'Xaymar' Dirks
20d5eef32e cmake: Replace modified RelWithDebInfo with Speed 2020-02-13 10:11:33 +01:00
Michael Fabian 'Xaymar' Dirks
13316c4810 ci, cmake: Fix build failure and optimize for speed 2020-02-13 09:34:34 +01:00
Michael Fabian 'Xaymar' Dirks
7821bc1ab3 cmake: Don't enforce Clang submodule requirement 2020-02-13 05:21:06 +01:00
Michael Fabian 'Xaymar' Dirks
45a117c1d0 cmake: Fix clang integration 2020-02-13 05:13:45 +01:00
Michael Fabian 'Xaymar' Dirks
c6a1edf46f util-event: Fix and cleanup 2020-02-13 05:09:14 +01:00
Michael Fabian 'Xaymar' Dirks
cbb6c4f785 cmake: Use shared submodule for Clang integration 2020-01-22 11:12:34 +01:00
Michael Fabian 'Xaymar' Dirks
a627054e2f cmake: Fix windows support 2020-01-14 09:13:27 +01:00
Michael Fabian 'Xaymar' Dirks
844379f761 cmake: Additional optimization options 2020-01-14 01:39:04 +01:00
Michael Fabian 'Xaymar' Dirks
ebc50dcefe utility: Merge util-math and util-memory 2020-01-14 01:11:08 +01:00
Michael Fabian 'Xaymar' Dirks
52f789436d cmake: Fix native obs-studio builds 2020-01-14 00:41:09 +01:00
Michael Fabian 'Xaymar' Dirks
0a16ce07dc project: Merged FFmpeg Encoders Step 2 2020-01-13 22:40:15 +01:00
Michael Fabian 'Xaymar' Dirks
3eea289679 project: Merged FFmpeg Encoders Step 1 2020-01-13 01:52:30 +01:00
Michael Fabian 'Xaymar' Dirks
3018c9b9ea project: Version 0.8.0a1 2019-12-22 08:31:00 +01:00
Michael Fabian 'Xaymar' Dirks
8c3979a3c2 cmake: Add support for version suffixes 2019-12-22 08:28:32 +01:00
Michael Fabian 'Xaymar' Dirks
a99030f5c0 ci: Build Installers and rename to StreamFX 2019-12-22 07:55:13 +01:00
Michael Fabian 'Xaymar' Dirks
1482cb1d11 cmake: Add clang-format support
This does not rely on the "integrated" clang-format, but instead uses a custom target to achieve the goal. Supports file filtering (to ensure that clang-format only affects supported files), automatic dependency by the project (always run before build), multiple targets and a global target.

Options are:
- TARGETS <target> ...: Targets to add clang-format support to.
- DEPENDENCY: Add a dependency to the given targets so that clang-format runs before building.
- REGEX: Filter out files of the given targets, defaults to '\.(h|hpp|c|cpp)'.
- GLOBAL: Add a global CLANG_FORMAT target.
2019-12-21 17:05:53 +01:00
Michael Fabian 'Xaymar' Dirks
e6220b18f6 project: Temporarily disable Custom Shader filters 2019-12-18 06:39:07 +01:00
Michael Fabian 'Xaymar' Dirks
50ac6893bf gs-effect-parameter: Refactor effect_parameter onto std::shared_ptr
Prevents problems further down the line and supports multiple types of parents to ensure that lifetime is guaranteed.
2019-12-15 10:35:29 +01:00
Michael Fabian 'Xaymar' Dirks
0ad896e905 gfx-shader: Rename from gfx-effect-source 2019-12-15 09:09:11 +01:00
Michael Fabian 'Xaymar' Dirks
738b08de36 gs-effect-pass/technique: Implement wrapper code based on std::shared_ptr
These two wrap the underlying gs_epass and gs_effect_technique objects, to allow direct and improved access to them without relying on the libobs API to provide this access for us. Additionally these make it safe for us to use them instead of relying on C-like code to deal with it.
2019-12-15 09:05:23 +01:00
Michael Fabian 'Xaymar' Dirks
0b14b65ba8 cmake: Add deprecation warning to 32-bit builds 2019-12-03 17:45:37 +01:00
Michael Fabian 'Xaymar' Dirks
aa170c7c54 data: Move example data into examples/ 2019-11-18 03:03:11 +01:00
Michael Fabian 'Xaymar' Dirks
d47ab0570f obs-source-factory: Barebone Source Factory and Instance
This class and template should be used to reduce the code clutter from repeatedly doing the same thing. It requires OBS v24.0 or newer since the get_properties2 and get_defaults2 API were fully implemented with it.
2019-10-18 22:31:52 +02:00
Michael Fabian 'Xaymar' Dirks
5e50d64b8f cmake: Disable Spectre warnings 2019-10-13 06:16:46 +02:00
Michael Fabian 'Xaymar' Dirks
2ba8e9a994 cmake: Reformat 2019-10-13 05:42:54 +02:00
Michael Fabian 'Xaymar' Dirks
66cc3c9926 cmake: Don't warn about not explicitly handled cases in MSVC 2019-09-05 18:10:22 +02:00
Michael Fabian 'Xaymar' Dirks
4ab609015c cmake: Ignore more noise warnings in MSVC 2019-09-04 20:31:18 +02:00
Michael Fabian 'Xaymar' Dirks
5b5a2cd409 cmake: Don't override diagnostics mode in MSVC
This breaks MSVC somehow.
2019-09-04 04:02:58 +02:00
Michael Fabian 'Xaymar' Dirks
c6f75930af cmake: Disable even more MSVC warnings 2019-09-04 03:55:15 +02:00
Michael Fabian 'Xaymar' Dirks
56ee81e2a4 cmake: Disable additional MSVC warnings 2019-09-04 03:47:53 +02:00
Michael Fabian 'Xaymar' Dirks
b3eaa6c43e cmake: Disable warning 4201 and 4514 in MSVC 2019-09-04 03:43:43 +02:00
Michael Fabian 'Xaymar' Dirks
b63796d3ae cmake: Revert previous commit 2019-09-04 03:32:18 +02:00
Michael Fabian 'Xaymar' Dirks
d9e2fbe5c1 cmake: Set Warnings and standard before project call 2019-09-04 03:23:00 +02:00
Michael Fabian 'Xaymar' Dirks
2b35328fcb project: Support for OBS v24.0.0-rc2 2019-09-03 21:26:10 +02:00
Michael Fabian 'Xaymar' Dirks
8beaf49d10 cmake: Update libobs to 24.0.0-rc1 2019-08-24 06:47:03 +02:00
Michael Fabian 'Xaymar' Dirks
8cb2ddaa82 source-shader, cmake: 'Shader' source 2019-08-07 18:06:48 +02:00
Michael Fabian 'Xaymar' Dirks
6bf99ed52b cmake: Enable extended aligned storage to fix SSE/AVX compatibility 2019-08-07 12:42:01 +02:00
Michael Fabian 'Xaymar' Dirks
d0b39186ea cmake: Fix upgraded URL 2019-08-02 23:58:00 +02:00
Michael Fabian 'Xaymar' Dirks
3f4a07ebb2 cmake: Upgrade default libobs version 2019-08-02 23:55:03 +02:00
Michael Fabian 'Xaymar' Dirks
721f2bdf8f filter-color-grade: Fully feature Color Grading filter
Allows controlling Lift, Gamma, Gain, Offset, Tint and various Correction factors directly from within OBS without having to create a new LUT.
2019-08-02 23:49:18 +02:00
Michael Fabian 'Xaymar' Dirks
013861694a project: Version 0.7.0 2019-04-27 17:56:11 +02:00
Michael Fabian 'Xaymar' Dirks
9e7894c9c3 filter-dynamic-mask: Implement Dynamic Mask filter
This filter allows the use of another source as a mask, allowing complex filter graphs and trippy effects, such as creating a text source with three animated videos, each using a different color channel as the mask.

Fixes #18.
2019-04-27 17:56:10 +02:00
Michael Fabian 'Xaymar' Dirks
088edf1045 cmake: Update copyright years 2019-04-23 17:58:36 +02:00
Michael Fabian 'Xaymar' Dirks
aac52f736d project: Clang support
Lots and lots of errors and warnings fixed with this single commit, in the name of clang support.

Related #60, #47.
2019-04-19 09:42:15 +02:00
Michael Fabian 'Xaymar' Dirks
411f5ee900 cmake: Remove CppCheck support
The current way was a hack at best, and there is a much better way using CMAKE_EXPORT_COMPILE_COMMANDS=ON. For more, read the CppCheck manual.
2019-04-19 08:20:33 +02:00
Michael Fabian 'Xaymar' Dirks
3800584c2d cmake: Set expected C++ standard to C++17 2019-04-19 08:20:33 +02:00
Michael Fabian 'Xaymar' Dirks
c59ec2511b filter-sdf-effects: Refactor to include Glow and Stroke (#2, #4)
This refactors the SDF Effects to use a normal blend function instead of doing the blend in the effect itself, improving quality and reducing problematic sampling issues. In addition to this, the effect files have been cleaned up slightly and renamed to their proper names. Glow and Stroke are now supported, which solves both #2 and #4 in one go.

The caching optimization has also now been implemented, reducing the number of renders for this filter to 1 for each tick.
2019-04-14 14:19:59 +02:00
Michael Fabian 'Xaymar' Dirks
da66947e10 project: Version 0.6.1 2019-04-03 06:45:10 +02:00
Michael Fabian 'Xaymar' Dirks
af023f9132 project: Version 0.6.0 2019-04-03 02:59:48 +02:00
Michael Fabian 'Xaymar' Dirks
ddf75d3e9f obs-audio-capture: Remove unused code 2019-04-02 19:45:10 +02:00
Michael Fabian 'Xaymar' Dirks
8e9e39a88e project: Remove unused content 2019-04-02 04:37:37 +02:00
Michael Fabian 'Xaymar' Dirks
8a1579f702 cmake: Add refactored and new blur code 2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
850318dc6e project: Version 0.5.0 2019-03-01 20:46:13 +01:00
Michael Fabian 'Xaymar' Dirks
cbe3555223 cmake: Add template files to project 2019-02-11 06:27:36 +01:00
Michael Fabian 'Xaymar' Dirks
da5d30c43b cmake: Fix OBS Studio typo 2019-02-11 04:03:57 +01:00
Michael Fabian 'Xaymar' Dirks
3bf1333c84 project: Restructure of the file system
The number of files in the source directory was a little bit much and just made file naming more complex than it had to be. Therefore all files were moved into subdirectories where it matters.

Filters now reside in source/filters/, Sources in source/sources/, OBS Wrappers in obs/, OBS GS Wrappers in obs/gs/, Transitions will reside in source/transitions, Graphics Helpers will be in gfx/.
2019-02-11 04:03:57 +01:00
Michael Fabian 'Xaymar' Dirks
a49e8c6f9d cmake: Don't generate InnoSetup files for non-Windows platforms 2019-02-02 06:33:49 +01:00
Michael Fabian 'Xaymar' Dirks
a7161b51e0 filter-sdf-effects: Rename Shadow (SDF) Filter (Part 1)
The nature of this Signed Distance Field based Filter is not to only draw shadows, but to also draw an outline or even glow around a source. Therefore the name "Inner/Outer Shadow (SDF)" does not fit well with the intent of the actual Filter.
2019-01-29 04:35:12 +01:00
Michael Fabian 'Xaymar' Dirks
551cbb83b1 obs-source-tracker: Source Tracking Compatibility Layer
Allows for enumerating any kind of source, as long as it has a name and is not private. As obs_enum_scenes is a 23.x and above function, this class should be used instead to remain backwards compatible.
2019-01-27 22:43:49 +01:00
Michael Fabian 'Xaymar' Dirks
e0e2d9fe80 project: Improve Linux support (#27 and #13)
While Linux was not an original goal of the project, it should still be supported out of the box. Therefore a number of changes are contained in this changeset:

- All C++ .h files were renamed to .hpp.
- All C includes (<....h>) were replaced with C++ includes (<c...>) and missing includes were added.
- std::memset and std::memcpy was replaced with memset and memcpy.
- All anonymous structs were removed where necessary.
- `extern "C"` was removed where it wasn't needed.
- #pragma warning was placed behind an #ifdef _MSC_VER
- The macros for `min`, `max` and `clamp` were removed as they were not used.
- `-fpedantic` was added to the GCC flags for bitmask support.
- `gs::rendertarget_op` is now declared before use.
- std::exception(const char*) was replaced with std::runtime_error(const char*).
- Added aligned_alloc and aligned_free macros for GCC and MSVC support.
- Replaced use of `sprintf_s` with `snprintf`.
- Placed additional guards around windows only code.

Additonally some changes were made that do not affect Linux:
- `NOMINMAX` and `NOINOUT` were removed.

Fixes: #27
Fixes: #13
2019-01-14 22:31:35 +01:00
Cat Stevens
3b1551b8ef cmake: Fix "FindLibobs.cmake" capitalisation
Fix "FindLibobs.cmake" filename case for case-sensitive filesystems
2019-01-14 22:20:56 +01:00
Michael Fabian 'Xaymar' Dirks
95fdcff3a9 cmake: Reworked build system for Installers and Archives 2018-12-23 21:15:05 +01:00
Michael Fabian 'Xaymar' Dirks
93df9b50b8 filter-blur: Add Linear Box Blur and combine all effects
Linear Box Blur abuses the fact that with Linear Sampling we can sample up to four adjacent texels at the same time and get a correct result for Box Blur back. Using this the total number of sample for Box Blur is reduced by n, making the total either n+1 (Even Radius) or n (Odd Radius).

Additionally all blur effect files have been merged into a single blur.effect file to reduce the time required to change a single parameter name. New blur effects should be added as a new technique instead of as a new effect file.

See Also: #21 Blur Quality
2018-12-22 22:08:55 +01:00
Michael Fabian 'Xaymar' Dirks
0c92f3dbf5 filter-shadow-sdf: Inner/Outer shadow based on signed distance fields
Adds Inner/Outer Shadows for dynamic sources based on signed distance field generation. This is fast, but does add a bit of latency when it comes to updates - which means that moving objects will leave a trail before the generator has a chance to update.

Fixes #3
2018-11-08 13:52:43 +01:00
Michael Fabian 'Xaymar' Dirks
79daeb5a75 util-event: Template event handler class 2018-11-08 08:07:49 +01:00
Michael Fabian 'Xaymar' Dirks
58661bf3ac cmake: Add obs-source and obs-tools source 2018-11-07 14:44:06 +01:00
Michael Fabian 'Xaymar' Dirks
a2a30b5fe1 effects: Add masking lerp effect
* Supports region, feathered region, inverted region, inverted feathered region and image input.
* Interpolates between image_blur and image_orig depending on the result of the mask function.
2018-09-30 22:47:37 +02:00