Commit graph

1613 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
26a76e0451 filters/color-grade: Redesign for use with LUTs
There is hardly any reason for us to recalculate everything all the time. LUTs can cache the work once, and then re-use it every time necessary, drastically reducing the impact of Color Grading by almost 60% (on some GPUs even more). Additionally this fixes the negative gamma issue, which plagued the filter for a while.

In the future, once PR 4199 (https://github.com/obsproject/obs-studio/pull/4199) has been merged, we can cut away one intermediate rendering step currently required to make the effect work. Hopefully this will be with the 27.x release of OBS Studio.
2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks
eba0a467d5 gfx/lut: Add a simple but efficient LUT producer and consumer
For simple image and video editing, LUTs (Look-Up Tables) are vastly superior to running the entire editing operation on each pixel - especially if all the processing can be done inside a single shader.

Due to the post-processing requirements for our LUTs, we are limited to 8 bits per channel - though clever use of the unused Alpha channel may result in additional space. For our purposes however, this is definitely enough.
2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks
73f9257633 effects: Add RGB, HSV, and YUV conversion functions 2023-03-28 13:11:11 +02:00
Michael Fabian 'Xaymar' Dirks
a027a57d09 effects: Add generic shared header with common code 2023-03-28 13:11:11 +02:00
Xaymar
2d878fcb59 locale: New Crowdin updates (#449)
* New translations en-US.ini (French)
2023-03-28 13:11:11 +02:00
tytan652
6ccac3331a ui: Don't reference Updater if it's been disabled
Merges #446
2023-03-28 13:11:10 +02:00
kilin
a7eac490d5 examples: Add Pixelation filter shader (#418) 2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
662a858ab6 ci: Update scripts for refactor and adjust OBS to v26.1.x 2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
b1b6fa2cf9 cmake: Add packaging support for Windows, Linux and Mac
Also adds packaging for the proposed unified plugin format.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
5ac894c59c cmake: Refactor component and dependency system
A complete redesign of the component and dependency system is necessary in order to support additional platforms, such as MacOS and other Linux platforms. Additionally it results in a much cleaner code base, which is less confusing overall.

Eventually it might be necessary to push components of StreamFX into their own CMake projects, as it is getting kind of complex now. Especially with the push for a proper plugin manager, things get dicey for big plugins like StreamFX.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
b8ff72d6c8 sources/mirror: Clamp minimum size to 1x1
This works around an issue in our code with asynchronous or delayed sources.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
188e58bbda ci: Remove automatic build support for Ubuntu 18.04
The majority of users should have already switched or upgraded to Ubuntu 20.04 at this point, so there is no point in building further Ubuntu 18.04 versions. This saves us some CI slots, and also reduces the number of target systems to actually support.
2023-03-28 13:11:10 +02:00
Michael Fabian 'Xaymar' Dirks
851e1e8939 cmake: Add proper version override support 2023-03-28 13:11:09 +02:00
Xaymar
49eff4a1cf locale: New Crowdin updates (#401)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Serbo-Croatian)
2023-03-28 13:11:09 +02:00
Michael Fabian 'Xaymar' Dirks
90a9bd56a7 cmake: Fix DownloadProject version warning 2023-03-28 13:11:09 +02:00
Michael Fabian 'Xaymar' Dirks
2d522f3c50 cmake: Improve versioning system 2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
675186a737 ui: Fix additional Qt issues 2023-03-28 13:11:07 +02:00
Xaymar
2c37e19266 ui/updater: Don't require Qt interaction before OBS is ready (#427)
Fixes one of the launch freezes caused by StreamFX due to interaction with the Qt message loop.
2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
2f8a0935c5 project: Version 0.10.0a
* encoders/ffmpeg: Implement AMF H.264 and H.265 handlers
* locale: New Crowdin updates (Turkish) (#373)
* examples: Added adjustable luminance to hexagon size (#364)
* cmake: Add option to override download versions and hashes
2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
c29e3c435e media: Update Icon 2023-03-28 13:11:07 +02:00
Xaymar
781b254d47 locale: New Crowdin updates (#397) 2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
e7992cd776 source/mirror: Don't ignore data in initializer 2023-03-28 13:11:07 +02:00
Michael Fabian 'Xaymar' Dirks
3c2fbf2dc4 filter/shader: Initialize with given data
Ignoring the data parameter during initialization results in duplication and some third party plugins not working as expected, so it's better to not ignore it.

Fixes #315
2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
17ffbdc55e gfx/shader: Correctly cache shader rendering result
Fixes #392
2023-03-28 13:11:06 +02:00
Xaymar
64a2018295 locale: New Crowdin updates (Turkish) (#373) 2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
ff3f8cff03 encoders/ffmpeg: Implement AMF H.264 and H.265 handlers
Adds support for the AMD Advanced Media Framework H.264 and H.265 encoders via FFmpeg. The majority of settings are supported, and the UI/UX experience mimics that of the NVENC implementation. Various settings are left out due to their complexity and should be controlled via the custom parameters field.
2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
569fa56b1d templates/installer: Refactor installer code for easier changes 2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
e7ed40a69d third-party/msvc-redist-helper: Add submodule for msvc-redist-helper 2023-03-28 13:11:06 +02:00
Michael Fabian 'Xaymar' Dirks
79ef573f5b filter/dynamic-mask: Explicitly increase showing/active references
Fixes #384
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
716da4f6cc obs/tools: Add active_source and visible_source helpers
These classes help us manage active and showing references to a source, which seem to be necessary for filters.
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
ad33066cd3 filter/blur: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
e2d342818a filter/color-grade: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
576606c712 filter/displacement: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
3da4526795 filter/dynamic-mask: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
785ffa0b7d filter/sdf-effects: Fix unicode support
Related: #359
2023-03-28 13:11:05 +02:00
Michael Fabian 'Xaymar' Dirks
54127f6ced gfx/shader: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
aacb1d41bc obs/gs/effect: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
cc1b9c1559 obs/gs/mipmapper: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
0a71af9d6a util/library: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
55ad82aac0 gfx/blur: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
71a969c30f configuration: Fix unicode support
Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
4de094511a plugin: Implement proper functions to get config and data files
Using the obs_module_file and obs_module_config_path macros works okay, but it comes with a slight overhead as well as additional requirements when passing it to C++ functions that expect certain rules to be fulfilled. By instead wrapping the actual functionality into our own functions and using those we can avoid most of the issues that come with the old approach.

Related: #359
2023-03-28 13:11:04 +02:00
Michael Fabian 'Xaymar' Dirks
7be1929985 ci: Fail fast on error 2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
98a146c108 ci: Use newly added override options 2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
2eb59a58f8 cmake: Add option to override download versions and hashes
Allows users to override the built-in download values with custom ones, in order to build with different versions of OBS or the depencencies used.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
f796c85527 util/bitmask: Move bitmask functionality its own file 2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
7e7ed80a9a util/library: Use string_view instead of string
Slightly improves performance and reduces memory impact, as string data is not duplicated.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
032a3c6deb obs/source-factory: Skip broken filter rendering by default
Fixes a black screen issue if a filter happens to run into an unexpected issue which it considers unrecoverable.
2023-03-28 13:11:03 +02:00
Xaymar
5185c720ea cmake: Restore default visibility
The MODULE_EXPORT and EXPORT macros in libOBS do not correctly mark a function or type as visible on GCC, which results in the newly added flag hiding everything from view, instead of just what should be hidden.
2023-03-28 13:11:03 +02:00
Michael Fabian 'Xaymar' Dirks
d36e735bb1 util/curl: Add missing include for vector 2023-03-28 13:11:02 +02:00