Commit graph

213 commits

Author SHA1 Message Date
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
Michael Fabian 'Xaymar' Dirks
d0941895ad project: Refactor into namespace streamfx 2020-04-23 00:50:39 +02:00
Michael Fabian Dirks
fec55909ef
locale: New Crowdin translations (#167) 2020-04-22 23:15:16 +02:00
Michael Fabian Dirks
6794edb223
locale: New Crowdin translations (#153) 2020-04-17 11:13:57 +02:00
Michael Fabian 'Xaymar' Dirks
a989709b6f examples: Fix some example shaders and add new ones
* Fixed 'Pixelator's color transition point being off-center and uncontrollable.
* Fixed 'Drunk' filter not working at all.
* Added an inverted mode to 'Luma Burn'.
* Added exponential Luma to 'Luma Burn'.
* Fixed odd color behavior in the 'Color Shift' transition by switching out HSL with HSV.
* Added a new 'Sliding Bars' transition shader, for an example of it see this clip: https://clips.twitch.tv/RacyEndearingHorseradishAMPTropPunch .
2020-04-17 11:13:36 +02:00
Michael Fabian Dirks
e16b4f0004
locale: New Crowdin translations (#133) 2020-04-08 23:10:19 +02:00
Michael Fabian 'Xaymar' Dirks
4b5754679e ffmpeg-encoder/prores: Fix typo in english locale 2020-04-05 06:50:54 +02:00
Michael Fabian 'Xaymar' Dirks
9e9e9cbcd5 ffmpeg-encoder/prores: Improve pixel format override logic 2020-04-04 19:34:58 +02:00
Michael Fabian 'Xaymar' Dirks
9ca190c96a gfx-shader: Don't use modified_properties to reload shaders
As OBS Studio locks some mutexes in a different order depending on what actions are being done, using modified_properties for GPU work causes things to freeze in place. Instead have users manually click the refresh button when they changed files in order to prevent this freeze from happening.

Fixes: #118
2020-04-03 18:54:56 +02:00
Michael Fabian Dirks
a8b79aa7f8
locale: New Crowdin translations (#128) 2020-04-03 18:44:16 +02:00
Michael Fabian Dirks
0242514184 locale: New Crowdin translations (#121) 2020-04-03 01:25:24 +02:00
Michael Fabian Dirks
f87e7859c4
locale: New Crowdin translations (#120) 2020-04-02 06:58:28 +02:00
Michael Fabian 'Xaymar' Dirks
516d48a5a0 locale: Add missing translation for Shader Transitions 2020-04-01 20:33:00 +02:00
Michael Fabian Dirks
29b8c4cd20 locale: New Crowdin translations (#113) 2020-03-31 21:50:40 +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
4fda7de573 filter-shader: New filter examples
CRT Curvature: Emulate an old CRT TVs curvature ...
CRT Scanlines: ... and emulate an old CRT TVs scanlines, rollbar and bleeding!
Hexagonize: Turn things into hexagons. You know, like the thing you see in my streams.
2020-03-28 22:19:14 +01:00
Michael Fabian 'Xaymar' Dirks
7d5c4361e3 transition-shader: New transition examples
Color Shift: Uses HSL and some math to smoothly shift Hue Saturation and Lightness between A and B.
Luma Burn: "Burns" away the Luminosity of A to reveal the B side.
Pixelator: Classic/Retro pixelation effect often seen in older games to transition between settings.
2020-03-28 20:22:42 +01:00
Michael Fabian 'Xaymar' Dirks
ba97ea06b0 filter-color-grade: Fix effect 2020-03-28 20:20:33 +01:00
Michael Fabian 'Xaymar' Dirks
6f2b50b0ad cmake: Redesign for future features 2020-03-20 23:09:46 +01:00
Michael Fabian Dirks
aa3c5557a9
locale: New Crowdin translations (#105) 2020-03-17 18:46:49 +01:00
Michael Fabian Dirks
569e39fe3b
locale: New Crowdin translations (#97) 2020-02-13 09:36:31 +01:00
Michael Fabian 'Xaymar' Dirks
403aae4eb9 locale: Fix incorrect string 2020-02-13 05:09:14 +01:00
Michael Fabian 'Xaymar' Dirks
5956a6f7a9 ffmpeg-encoder/nvenc: Add AUD and DPB Size options 2020-01-15 13:43:33 +01:00
Michael Fabian 'Xaymar' Dirks
34b2859dac ffmpeg-encoder/nvenc: Add minimum bitrate, fix target quality and more
Adds support for specifying Minimum Bitrate directly in the UI instead of requiring custom settings to do so. Additionally Adaptive I/B-Frames are now only shown if Look-Ahead is a value greater than 0 frames.

Quality Minimum can also now be left at a default value of -1, the Quality group is no longer toggleable and Quality Target moved into the group. Settings options on the context is now searching children too (if there are any).

Finally, some C++17 formatting was done.

Fixes #101
2020-01-15 05:50:31 +01:00
Michael Fabian 'Xaymar' Dirks
5d5a104819 ffmpeg-encoder: Improve UI, fix acceleration encode, etc 2020-01-15 03:59:03 +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
3432ab4c1d examples: 3D Raytracing Shader Example
Very very basic 3D raytracing, nowhere close to what people manage to do in combo productions. But it does work to some degree.
2020-01-01 16:02:45 +01:00
Michael Fabian 'Xaymar' Dirks
3cd88abeae examples: Add explanation for basic StreamFX shader files 2019-12-25 20:09:37 +01:00
Michael Fabian 'Xaymar' Dirks
133d8cf599 examples: Fix plasma UV and support for float4 2019-12-22 06:14:56 +01:00
Michael Fabian 'Xaymar' Dirks
0bf4a3ff01 examples: Improve plasma effect settings 2019-12-21 19:09:42 +01:00
Michael Fabian Dirks
68d3146cb8
locale: New Crowdin translations (#93) 2019-12-21 05:02:46 +01:00
Michael Fabian 'Xaymar' Dirks
3f5adab815 examples: New example source shaders 2019-12-18 07:50:49 +01:00
Michael Fabian Dirks
43f0aad930
locale: New Crowdin translations (#91) 2019-12-18 06:49:13 +01:00
Michael Fabian 'Xaymar' Dirks
b7f76f5e01 locale: New translatable strings 2019-12-18 06:39:08 +01:00
Michael Fabian Dirks
aec057981f New translations en-US.ini (Italian) 2019-12-13 04:04:19 +01:00
Michael Fabian Dirks
7cc87b4997 New translations en-US.ini (Italian) 2019-12-13 03:05:50 +01:00
Michael Fabian Dirks
34389c1899 New translations en-US.ini (Italian) 2019-12-12 04:23:42 +01:00
Michael Fabian Dirks
f89887a415 New translations en-US.ini (Italian) 2019-12-12 03:28:11 +01:00
Michael Fabian Dirks
fc1abd9d4e
locale: New Crowdin translations (#88) 2019-12-10 03:45:19 +01:00
Michael Fabian Dirks
b42ee2e348
locale: New Crowdin translations (#87) 2019-12-06 00:25:18 +01:00
Michael Fabian Dirks
a56968f67d
locale: New Crowdin translations (#86) 2019-12-05 22:58:14 +01:00
Michael Fabian Dirks
f44fc1b671
locale: Update from Crowdin (#79) 2019-12-04 20:38:18 +01:00
Michael Fabian 'Xaymar' Dirks
4e1dcb533c filter-dynamic-mask: Rebase onto obs::source_factory 2019-12-03 20:11:27 +01:00
Michael Fabian 'Xaymar' Dirks
efb6b0b9be filter-transform: Further refactoring 2019-12-03 18:28:42 +01:00
Michael Fabian 'Xaymar' Dirks
df8ebd94ea filter-displacement: Refactor onto obs::source_factory
This drastically improves stability and prevents all exceptions from leaking into libobs C code, which prevents crashes and unexpected freezes from exception handlers further down the stack.

Additionally minor work was done to further improve the quality and user experience for the filter.
2019-11-18 03:03:11 +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
bacf52f9b6 source-mirror: Refactor to improve performance
Caching the output of a source is only necessary for really expensive to render sources, so it is disabled by default now. Thanks to that, most Source Mirrors are now "free" instead of requiring two context switches and a texture, while those really expensive can be manually set to cache.

The scaling mode is also set to disabled instead of point when rescaling is off to further improve performance. The previous method would incorrectly cause an extra texture to be used.

Additionally we now have support for debug markers for graphics debugging, allowing us to exactly tell apart improvements in rendering cost for this source.
2019-10-18 22:32:54 +02:00
Michael Fabian 'Xaymar' Dirks
03c704de1a project: Correct usage of exceptions and include stdexcept 2019-09-04 02:59:04 +02:00
Michael Fabian 'Xaymar' Dirks
2e98c2e754 color-grade: Fix and improve advanced options
These new options allow further control over the Tint tool in Color grading.
2019-09-04 02:18:40 +02:00
Michael Fabian 'Xaymar' Dirks
781307fbe6 color-grade: Add further Tint options 2019-09-04 01:41:15 +02:00
Michael Fabian Dirks
6857859252
locale: New translations 2019-09-03 21:20:31 +02:00
Michael Fabian Dirks
b83b6fa5a5
locale: New Crowdin translations (#74) 2019-08-16 15:44:41 +02:00
Michael Fabian 'Xaymar' Dirks
458eca143a data/shaders: Displacement filter example 2019-08-07 20:40:14 +02:00
Michael Fabian 'Xaymar' Dirks
747079b8c6 locale: Add texture type translation 2019-08-07 20:22:44 +02:00
Michael Fabian 'Xaymar' Dirks
e953932913 data/shaders: Update examples 2019-08-07 20:22:34 +02:00
Michael Fabian 'Xaymar' Dirks
aff4b221ba data/shaders: Change fixed to draw 2019-08-07 18:10:54 +02:00
Michael Fabian 'Xaymar' Dirks
76335745b1 data/shaders: New example shaders 2019-08-07 18:07:05 +02:00
Michael Fabian 'Xaymar' Dirks
8cb2ddaa82 source-shader, cmake: 'Shader' source 2019-08-07 18:06:48 +02:00
Michael Fabian 'Xaymar' Dirks
5b9e6f0f1b locale: Add strings for custom shaders 2019-08-07 17:45:22 +02:00
Michael Fabian 'Xaymar' Dirks
2ca15bb28c source-mirror: Allow overriding audio layout 2019-08-04 12:34:42 +02:00
Michael Fabian 'Xaymar' Dirks
93ba39545f filter-color-grade: Implement Tool selection for OBS Studio 24.x 2019-08-03 12:29:47 +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 Dirks
69f9134749
locale: New Crowdin translations (#69)
* New translations en-US.ini (German)

* New translations en-US.ini (Russian)

* New translations en-US.ini (French)

* New translations en-US.ini (Chinese Simplified)
2019-07-22 11:00:59 +02:00
Michael Fabian 'Xaymar' Dirks
2c94852ba8 source-mirror: Allow changing source alignment
Adds a new property to control the alignment of the source within the calculated boundary when rescaling the source. Also fixes the permanently left aligned mirror at the same time.
2019-05-28 20:04:26 +02:00
Michael Fabian Dirks
3e62416af2
locale: New Crowdin translations (#65) 2019-05-28 18:40:20 +02:00
Michael Fabian 'Xaymar' Dirks
ccc4c6ea22 filter-sdf-effects: Fix and improve effect rendering
Fixes the bug that rendering an outline would remove all other effects not directly under the outline, while also improving the rendering speed drastically by only initializing and clearing the rendertarget once instead of for each effect.
2019-05-28 02:51:27 +02:00
Vainock
0e39490284 locale: Delete unused language files (#67) 2019-04-28 18:20:56 +02:00
Vainock
438ce1abf9 locale: Fix mistake in locale (#66) 2019-04-28 17:56:31 +02:00
Michael Fabian Dirks
956df8762c locale: New Crowdin translations (#63) 2019-04-27 17:59:31 +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
Vainock
b4341e41b3 locale: Add missing dot at the end of a line (#62) 2019-04-23 12:42:27 +02:00
Michael Fabian Dirks
61d5a0341a
locale: New Crowdin translations (#59) 2019-04-21 20:30:59 +02:00
Michael Fabian 'Xaymar' Dirks
3aa663908a locale: Further improve original translations 2019-04-19 08:20:33 +02:00
Michael Fabian Dirks
870625e8e5
locale: Update translations from CrowdIn (#58) 2019-04-15 12:56:21 +02:00
Michael Fabian 'Xaymar' Dirks
e24b9a61fa filter-blur: Update long description of Type and Subtype fields
Automatically updates the long description (hover text) if the Type or Subtype field is changed, allowing for more contextual information about what the selected information does.
2019-04-15 12:54:19 +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 Dirks
982dbc655b
locale: Update translations from CrowdIn (#55) 2019-04-14 13:59:02 +02:00
Michael Fabian Dirks
74f9bc0dbf
locale: Update translations from CrowdIn (#53) 2019-04-02 22:43:37 +02:00
Michael Fabian 'Xaymar' Dirks
8e9e39a88e project: Remove unused content 2019-04-02 04:37:37 +02:00
Michael Fabian 'Xaymar' Dirks
21eef998ec filter-blur: Refactor to use new Blur code
This removes the ridiculous amount of hardcoded values and functions and moves everything to the more modular blur approach.

Fixes #45
Fixes #6
2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
7c4d46c1fe gfx/blur/dual-filtering: Implement Dual Filtering Blur
Dual Filtering (or Dual Kawase) is an approximation of Gaussian Blur that can reach much higher Blur sizes at a much lower cost. However it is locked to a 2^n size, which means that currently it isn't possible to use it for blur sizes like 19, 24 and 31.

The Blur works by using the linear sampling of a GPU, combined with down- and upsampling and carefully placed sampling points. This means that there is no need for a linear optimized version of this Blur.

Related: #45, #6
2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
b6d45ce73c gfx/blur/gaussian-linear: Refactor Linear Gaussian Blur
While Gaussian Blur is not a Blur type that really benefits much from linear sampling, it can be used for a slight quality and gpu usage reduction. However for Area and Directional Blur there is a better alternative: Dual Filtering Blur. And as with all other currently implement Linear versions of Blur, only Area and Directional Blur are supported.

This type of Gaussian Blur also has the loading hitch that exists in normal Gaussian Blur.

Related: #45, #6
2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
fedc8e075c gfx/blur/gaussian: Refactor Gaussian Blur
Gaussian Blur is another Blur that now supports the new system, increasing the maxium Blur size to 128 and adding support for Rotational and Zoom blur. Various optimizations were done to the actual shader code which further reduced the GPU usage.

Currently the Gaussian curve is recalculated when the blur is first created, which can lead to a short hitch due to it having to search for the correct kernels. This is currently unavoidable and expected behavior until a better solution is found.

Related: #45, #6
2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
68a8fb9224 gfx/blur/box-linear: Refactor Linear Box Blur
Box Blur is a prime candidate for Linear optimizations, and as such reducing the total necessary samples by about half. However due to the reduction in samples, only Area and Directional Blur are supported.

Related: #45, #6
2019-04-02 03:50:01 +02:00
Michael Fabian 'Xaymar' Dirks
8c5dc3c630 gfx/blur/box: Refactor Box Blur
Box Blur is the first to be on the new system and has received all the new features and optimizations available. The maximum Blur size has been increased to 128, Rotational and Zoom Blur are supported and a small optimization has been done to the shader.

Related: #45, #6
2019-04-02 03:50:01 +02:00
Michael Fabian Dirks
1bcca6cb33
locale: Update translations from CrowdIn (#50) 2019-04-02 03:49:42 +02:00