Commit graph

185 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
03a8168beb project: Version 0.10.0a2
* 3D Transform should now appear again.
* Automatic disabling of unsupported features should now work in CMake.
* Fixed a compilation error on some versions of GCC.
2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
01f16e6d1f cmake: Fix features being enabled on unsupported platforms 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
be699c643c cmake: Fix TRANSFORM typo 2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
c95afab9d4 project: Version 0.10.0a1
- #437 Use 'git describe --tags' for versioning.
- #439 Add support for overriding the automatically detected version.
- #454 Fixed new versioning code breaking when the tag is on the current commit.
- #427, #428 Fix Qt interaction before OBS Studio is actually ready.
- #452 Fixed building without updater but with UI.
- #447 Redesigned Color Grading to support two rendering modes:
    - Direct Rendering applies the entire color grading function to every single pixel, and is thus more accurate, but much slower.
    - #-Bit LUT Rendering first applies the color grading function to a LUT that varies in accuracy, and then uses that LUT to render the actual output instead, which is much faster but less accurate.
- #447 Optimized Direct Rendering in Color Grading to be up to 25% faster, while using 50% less VRAM.
- #440 Removed support for Ubuntu 18.04 as it ships seriously outdated versions of libraries we use.
2023-03-28 13:11:12 +02:00
Michael Fabian 'Xaymar' Dirks
e59a33423e cmake: Always use long git describe 2023-03-28 13:11:11 +02:00
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
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
851e1e8939 cmake: Add proper version override support 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
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
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
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
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
e866bc97d2 cmake: Update to libOBS 26.0.x 2023-03-28 13:11:02 +02:00
Michael Fabian 'Xaymar' Dirks
85a88902de cmake: Check for "Darwin" instead of "Mac" to support MacOS 2023-03-28 13:11:01 +02:00
Xaymar
3d70814b93 cmake: Set correct flags when building with obs-studio
The commit 8163e3e917 introduced a complete refactor of the CMake script in order to improve future updates, but accidentally broke building with OBS Studio due to only testing the standalone model. By correctly adjusting the option name again, this should work again with this change.

Fixed: #351
2023-03-28 13:11:01 +02:00
Michael Fabian 'Xaymar' Dirks
3097a4f552 cmake: Refactor to modernize and improve readability
Refactors the entire file to be more readable while also improving the possibility of future improvements. Components are now resolved in one go instead of being all over the place, and shared dependencies are now only resolved once instead of multiple times.

For future compatibility sake, all features now default to enabled and will instead show a warning if they can't be enabled, or if their dependencies can't be found. Pay attention to the build log if you encounter this, as it should hint you towards what is missing. Some features are also now optional, instead of being required.

Furthermore the "Reference" and "Package" mode for building have been removed as supporting them has been a problematic thing from the start. While their structure technically matches the one that is downloaded, effectively they can result in unpredictable issues.

A number of other issues have also been fixed, like Qt being invoked for non-Qt source files.
2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
808da4894b cmake: Upgrade C/C++ compiler adjustments to modern CMake 2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
f3a57513ad cmake: Set proper CMake policies by version 2023-03-28 13:11:00 +02:00
Michael Fabian 'Xaymar' Dirks
67227f2c03 cmake: Improve readability 2023-03-28 13:10:59 +02:00
Michael Fabian 'Xaymar' Dirks
f3c10c5044 project: Version 0.9.0 2023-03-28 12:52:28 +02:00
Michael Fabian 'Xaymar' Dirks
f907fc80b0 updater: Add functionality to check for updates
Implements a manual and automatic update checker with support for both release and testing update channels, allowing users to stay as up to date as possible. It is fully compliant with privacy regulations around the world, as it stays completely silent and inactive until the user gives the Ok to connect to GitHub for the latest releases.
2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
6d3b0f1266 cmake: Add optional dependency nlohmann::json 2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
1107c1e390 util/curl: Add C++ wrapper for CURL 2023-03-28 12:52:27 +02:00
Michael Fabian 'Xaymar' Dirks
bec062a7bd project: Version 0.9.0a3
* #307 Fix MSVC exclusive strcmp crash in FFmpeg Encoders.
* #310 Add shadertoy effect.
* #311 Move template files to custom directory.
* #312 Hide encoders that the current system does not support.
* #313 Enable FFmpeg Encoders on Linux.
2023-03-28 12:52:26 +02:00
Michael Fabian 'Xaymar' Dirks
a39fd89ba7 util/library: Cross-platform handler for library loading
Adds a utility class and functions to load libraries and symbols from libraries somewhat safely. Libraries are immediately unloaded when the last reference to them is lost, so the shared_ptr should be stored if the library is actually needed.
2023-03-28 12:52:23 +02:00
Michael Fabian 'Xaymar' Dirks
4947ae9a13 cmake: Enable FFmpeg Encoders on Linux 2023-03-28 12:52:22 +02:00
Michael Fabian 'Xaymar' Dirks
c20ac4a413 templates: Add generated configuration file 2023-03-28 12:52:21 +02:00
Michael Fabian 'Xaymar' Dirks
0ecf971446 templates: Move template files to better directory 2023-03-28 12:52:21 +02:00
Michael Fabian Dirks
d2f81d8956 project: Version 0.9.0a2
* #270 Add additional shadertoy effects (by Oncorporation/Surn).
* #275 Improve installer user experience.
* #277 Add CI caching to improve build speeds.
* #286 Rename LOG_ to DLOG_ to avoid macro confusion.
* #287 Add new 'Thank You' entries.
* #288 Fix memory leaks caused by obs::source_tracker.
* #289 Fix memory leaks caused by configuration and UI.
* #290 Don't use namespaces that don't exist.
* #292 Fix/Work around a memory leak in gs::vertex_buffer.
* #293 Fix missing include in plugin.hpp.
* #294 Fix Clang toolset integration.
* #296 Fix FFmpeg encoder fallback support.
* #298 Fix NVENC logging incorrect values.
* #300 Remove level 5.2 from NVENC H.264.
* #301 Show warnings for exceptions thrown from tasks in a threadpool.
* #302 Clean up code to fix all warnings and reapply formatting.
* #304 Update Ubuntu 19.10 to 20.04 and revert to system-installed clang.
2023-03-28 12:52:21 +02:00
Michael Fabian 'Xaymar' Dirks
09c151a9d2 cmake: Don't enable useless warnings on GCC
Using '-Wpedantic' on any GCC warnings enables a lot of annoying warnings that don't actually warn about anything. Some of the warnings seem to exist purely for maintaining a certain code style, and have no actual effect on the program itself. Since there is no way to selectively disable warnings like on MSVC, removing it is the easiest choice.
2023-03-28 12:52:20 +02:00
Michael Fabian 'Xaymar' Dirks
dbb71cf801 project: Code cleanup and reapply formatting
Changes applied:

* Moved utility files to /util/.
* Removed unused #includes.
* Removed unused ::ffmpeg::tools function.
* Removed unused variables.
* Fixed missing parentheses in the version macro.
* Fixed missing override on virtual function overrides and removed unnecessary virtual keyword from them.
* Disabled additional warning for ATL headers on MSVC only.
* Replaced direct printf parameters with their macro equivalent.
* Replaced C-style casts with C++-style casts.
* Applied clang-format again after an earlier change to the CMake file broke the integration for it.
2023-03-28 12:52:20 +02:00
Michael Fabian 'Xaymar' Dirks
12a6a76341 cmake: Fix Clang toolset support 2023-03-28 12:52:18 +02:00
Michael Fabian 'Xaymar' Dirks
731dbd26a7 cmake, ci: Add caching support to speed up builds 2023-03-28 12:52:17 +02:00
Michael Fabian 'Xaymar' Dirks
16489c4180 project: Improve user experience in the Installer
Adds a BeforeInstall step to the InnoSetup installer which uses the msvc-redist-helper tool to automatically check for the necessary DLLs and install the required redistributable if some are found to be missing.

Additionally slightly modernized the installer with a design that isn't from the 90s, and paves the way for preventing updating StreamFX while OBS Studio is still running.
2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks
df97f71655 project: Version 0.9.0a1 2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks
161f10a921 encoders/ffmpeg: Rename files to match naming scheme 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks
d3c2f288b4 obs/encoder-factory: Factory to create encoder instances 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks
5cccedc2e4 cmake: Add support for code signing 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks
96d270ba73 cmake: Fix generated version resource file 2023-03-28 12:52:11 +02:00
Michael Fabian 'Xaymar' Dirks
917a74e75e project: Version 0.8.0 2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks
2fb2b07990 cmake: Don't set version for Mac dynamic libraries 2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks
4fb3228c04 cmake: Add an option to turn off clang integration
This allows building the plugin with compilers that pretend to be clang but aren't actually clang, like Googles 'Depot Tools' and some Clang-like compiler tools.
2023-03-28 12:40:47 +02:00
Michael Fabian 'Xaymar' Dirks
a2fd4dd2f6 gfx/shader: Inlining, std::string_view and optimizations 2023-03-28 12:40:45 +02:00
Michael Fabian 'Xaymar' Dirks
51b58ee9f3 project: Version 0.8.0b3
* Fixed Linux distros not being able to load the plugin.
* Fixed vertex buffers not being zero initialized.
* Removed all unused mipmapping options and drastically optimized it.
* Added lots and lots of optional performance profiling.
* Optimize Dual Filtering Blur by re-using rendertargets.
* Optimized everything to use single fullscreen tri instead of quads.
* Removed broken effects.
2023-03-28 12:40:42 +02:00