Commit Graph

198 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks b06ec71fa3 examples: Improve 'crt-scanlines.effect' 2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks 8fa1ffc95a examples: Improve 'crt-curvature.effect'
The code of this effect was quite dated and no longer up to my standards of coding, and lacking pretty much all comments that explain what things do. This meant that it was not a great example by default, and couldn't be used by new Effect creators as a reference.

Also the following settings were adjusted:
- 'Strength' now ranges from 0 to 200 %.
- 'Border Color' defaults to Opaque Black.
- 'Feathering' now ranges from 0 to 100 %.
2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks d2df0fa24f examples: Add base effect for common functionality
Many shader examples share quite a bit of code, and the OBS Studio parser and GPU driver shader compiler actually get rid of unused code quite well. So we can simply share the code between many examples, which drastically improves the quality of the code.
2023-03-28 13:11:22 +02:00
Xaymar 84cff8235f locale: New Crowdin updates (#531)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (German)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (French)
2023-03-28 13:11:22 +02:00
Michael Fabian 'Xaymar' Dirks d1747ff403 ui/about: Remove outdated entry roles 2023-03-28 13:11:21 +02:00
Michael Fabian 'Xaymar' Dirks 7e1c2ca80d filters/color-grading: Use explicit matrix initializer for GLSL support
Fixes #510
2023-03-28 13:11:21 +02:00
Xaymar cbb8b9bae3 locale: New Crowdin updates (#521)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (German)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (French)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Serbo-Croatian)
2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks 5a65cf3525 plugin: Replace long descriptions with "Open Manual" button
While the long descriptions were useful, keeping the updated and translated is pretty much impossible. Technology moves fast and not everyone that translates the project knows a lot about technology.

Therefore the long descriptions have now been replaced with a button that opens the wiki page for the feature instead. This should drastically reduce the number of help cases, and improve the translation coverage at the same time.
2023-03-28 13:11:20 +02:00
Michael Fabian 'Xaymar' Dirks 083ba935bc filters/color-grading: Fix incorrect Lift logic (#515)
Fixes #515
2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks 27c3420f31 filters/color-grading: Fix Gamma function and improve code readability
Fixes #510
2023-03-28 13:11:19 +02:00
Michael Fabian 'Xaymar' Dirks fd3d514a20 filters/color-grading: Replace log10 command for GLSL (#510)
Fixes #510
2023-03-28 13:11:18 +02:00
Xaymar 622ae17161 locale: New Crowdin updates (#500) 2023-03-28 13:11:17 +02:00
Xaymar d7d34028a0 locale: New Crowdin updates (#482) 2023-03-28 13:11:16 +02:00
Xaymar 1036d274f6 locale: New Crowdin updates (#464)
* New translations en-US.ini (Japanese)
2023-03-28 13:11:14 +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
Xaymar 2d878fcb59 locale: New Crowdin updates (#449)
* New translations en-US.ini (French)
2023-03-28 13:11:11 +02:00
kilin a7eac490d5 examples: Add Pixelation filter shader (#418) 2023-03-28 13:11:10 +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
Xaymar 781b254d47 locale: New Crowdin updates (#397) 2023-03-28 13:11:07 +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 efc048adcd examples: Fix typo "_Random" -> "Random"
Fixes: #356
2023-03-28 13:11:02 +02:00
Daniel Hodgson 02bdd85ed4 examples: Added adjustable luminance to hexagon size (#364) 2023-03-28 13:11:02 +02:00
Daniel Hodgson ab2b632fb4 examples: Fix incorrect angles for "hexagonize" effect
The value for "deg30" was incorrectly calculated as (pi / 15.0) instead of (tau / 12.0).
2023-03-28 13:11:01 +02:00
Xaymar 2e8bc6210e locale: New Crowdin updates (#342) 2023-03-28 13:11:01 +02:00
Michael Fabian Dirks e95a20f658 locale: New Crowdin updates (#335) 2023-03-28 13:10:59 +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 Dirks a3b526145c locale: New Crowdin updates (#308) 2023-03-28 12:52:26 +02:00
Charles Fettinger 56d041e1b7 examples: Add colored and inverted luma burn varitions (#283)
Adds colored and inverted colored variations for Luma Burn, enabling some more fancy transitions with it. All variations with color support smooth fading, and allow choosing any possible color for the transition.
2023-03-28 12:52:26 +02:00
Michael Fabian Dirks c51b76a6cb locale: Update with latest Crowdin changes 2023-03-28 12:52:17 +02:00
Michael Fabian 'Xaymar' Dirks b112d6d06e encoders/handlers/nvenc: Update locale text
The new text should make it easier to understand for end-users.
2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks 75663f73a4 encoders/handlers/nvenc: Don't list 'each' mode for H.264 2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks c9e8b889b0 encoders/handlers/nvenc: Improve UI/UX for NVENC
* "Quality" Minimum/Maximum is actually QP Minimum/Maximum
* Bitrate Limits is now just Limits
* Buffer Size and Quality Target have been moved into "Limits".
2023-03-28 12:52:16 +02:00
Michael Fabian 'Xaymar' Dirks 0c2d56a81a examples/shaders: Add new per-activation random to sliding bars transition 2023-03-28 12:52:13 +02:00
Michael Fabian 'Xaymar' Dirks d9198211f7 gfx/shader: Add Per-Instance/Activation/Frame Random values 2023-03-28 12:52:13 +02:00
Michael Fabian 'Xaymar' Dirks ce93f96a69 encoders/ffmpeg: Rebase onto obs::encoder_factory 2023-03-28 12:52:11 +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 Dirks dfb9400199 locale: New Crowdin translations (#195) 2023-03-28 12:40:43 +02:00
Michael Fabian 'Xaymar' Dirks 5fc95b48d8 filters/nv-face-tracking: Improve tracking and remove high priority CUDA stream
The high priority CUDA stream causes libOBS to be at a lower priority than the tracking, which is not what we want. Instead we want tracking to be incomplete in those cases, rather than slowing down encoding and other things.

Geometry updates are also now done once per frame instead of one per tracking update, which should improve the smoothness without affecting performance too much. Additionally all tracking info is now in the 0..1 range, which drastically simplifies some math - especially with texture coordinates.

To deal with tracking and updates being asynchronous, a very simple approximation of movement velocity has been added. This is mostly wrong, but it can bridge the gap where tracking updates are slower, as the values are all filtered anyway.
2023-03-28 12:40:43 +02:00
Michael Fabian 'Xaymar' Dirks 7ac5670d54 ui/about: Add version information 2023-03-28 12:40:43 +02:00
Michael Fabian 'Xaymar' Dirks 624570b862 examples: Remove broken effects 2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks 4947d46aa1 gs-mipmapper: Update API usage, remove broken options and optimize
The new libOBS API allows us to directly access the underlying API instead of having to mess around in memory. By using it we can avoid crashing in case the compiler for it is different, or in case the actual back end structure changes.

Additionally the mostly unimplemented and unused options have also been removed, which streamlines the use of this class even further and reduces both shader and code complexity.

Finally by optimizing the use of the internal render target we can achieve a speed up of up to 3000% over the old way, allowing for many more mipmapped filters.
2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks c2c5afd763 gfx-shader: Actually write alpha channel to render target 2023-03-28 12:40:39 +02:00
Michael Fabian Dirks 0d9b627c1d locale: New Crowdin translations (#178) 2023-03-28 12:40:39 +02:00
Michael Fabian 'Xaymar' Dirks 6c603795db locale: Fix missing '[Alpha]' 2023-03-28 12:40:37 +02:00
Michael Fabian 'Xaymar' Dirks d42d26db3d filter-shader: Add 'semiline' effect
The 'semiline' effect blanks out horizontal lines of increasing size, with some configuration options. Example: https://cdn.xaymar.com/private/2020-04-23/2020-04-23T08-00-37_obs64_HeartyNavyblueAtlanticridleyturtle.png
2020-04-24 01:13:34 +02:00
Michael Fabian 'Xaymar' Dirks 7a929d6af4 locale: Add missing and remove unused strings 2020-04-23 09:14:31 +02:00