Commit graph

297 commits

Author SHA1 Message Date
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
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
Michael Fabian Dirks
e5cfc2c70d
locale: New Crowdin translations (#49)
Updated translations for german and french.
2019-03-06 03:09:22 +01:00
Michael Fabian Dirks
516d324187
locale: Update translations from CrowdIn (#43) 2019-02-22 20:38:15 +01:00
Michael Fabian Dirks
48b76d2ba6
locale: Update translations from CrowdIn 2019-01-31 05:23:32 +01:00
Michael Fabian 'Xaymar' Dirks
50f05e72ae filter-displacement: Improve displacement quality
Earlier versions tried using Trilinear as the Filter, but the correct name is Linear. With this the sampling is now set to be Linear instead of undetermined.

Additionally the logic for the displacement was adjusted and now no longer renders incorrectly when going from texel to texel. This was due to the unstable math being performed to retrieve the sign of the number, but the sign() command can do it without this math being required.
2019-01-31 04:47:38 +01:00
Michael Fabian 'Xaymar' Dirks
9b4edc8fb0 filter-sdf-effects: Improve shadow rendering
This works around the incorrect shadow on the edge of the Signed Distance Field, but it does not get rid of it completely. Due to linear sampling it will still show at some point so a different solution has to be found in the future.
2019-01-31 02:25:09 +01:00
Michael Fabian 'Xaymar' Dirks
ecd17cff6c filter-sdf-effects: Fix colored shadows changing image
Colored shadows previously had an effect on the image color, but this is incorrect if the image is fully opaque. This fixes it by using premultiplied alpha mixing instead.
2019-01-30 03:37:46 +01:00
Michael Fabian 'Xaymar' Dirks
75009c617a filter-sdf-effects: Support for scaling SDF Texture Size
This allows increasing or decreasing the accuracy of the Signed Distance Field at runtime without requiring the initial source to be resized. Use case for this would be small text where the higher quality would only be noticable on the shadow and not the text itself.
2019-01-30 03:12:12 +01:00
Michael Fabian 'Xaymar' Dirks
7cf3e17b9b filter-sdf-effects: Fix black border and add inverse gradient shadow
Sources were rendering with a black border around them if they had a soft fade, which is due to how the shadow calculated the image sample. With the new shader code this is now fixed and the source looks like it should be. Additionally this removes the bug where enabling any shadow would cause only the texels to draw that were above the threshold.

Additionally this adds support for inverse gradients (min > max) and negative gradients for outer shadows instead of only positive gradients. This technically allows for cleaner shadows.
2019-01-30 02:38:34 +01:00
Michael Fabian 'Xaymar' Dirks
a699016c61 locale: Update Translated name for SDFEffects 2019-01-29 07:39:01 +01:00
Michael Fabian 'Xaymar' Dirks
3ebbc84ee2 filter-sdf-effects: Rename Shadow (SDF) Filter (Part 2)
This finalizes the rename started in the previous commit by changing the class name and also updating the locale strings
2019-01-29 07:35:14 +01:00
Michael Fabian 'Xaymar' Dirks
160ad3b5a9 locale: Replace file filters with file types
The filters are always the same for every language and should not be translated, instead only the file type should be translated. This way bad translations will not affect the options that the user can select.
2019-01-24 20:34:28 +01:00
Michael Fabian Dirks
fc21e9698e
locale: Update translations from CrowdIn
Closes #38
2019-01-24 17:41:18 +01:00
Michael Fabian 'Xaymar' Dirks
cc99916d18 locale: Replace Strength with Intensity for MipGenerator 2019-01-24 14:26:31 +01:00
Michael Fabian 'Xaymar' Dirks
9d55013ec2 source-mirror: Improve rendering and add new rescaling options
Rendering will now use a cached version of the mirrored source in order to reduce rendering cost drastically for heavy sources or scenes. Additionally rescaling now uses the internal scene instead of being a custom implementation, allowing for some new things.

Rescaling now has a new option: Bounds Type! This option allows control over just how a source is scaled, by default it is set to Stretch, but there are other options that can keep the aspect ratio of the mirrored source in tact.

Additionally the ScalingMethod struct has been replaced with obs_scale_type, which means that Bilinear Low Resolution is now no longer an option.

Implements #35
2019-01-24 04:28:11 +01:00
wwj402
5492f76fd0 locale: Update chinese simplified language (#26) 2019-01-14 22:40:55 +01:00
Michael Fabian 'Xaymar' Dirks
3952c33c60 filter-blur: Add Directional Blur (Motion Blur) and Step Scaling
Directional Blur (also known as Motion Blur in some art software) enables full control over the direction the passes are applied in, which can further be combined with the scaling option. With this very simple blur effects can have a massively bigger influence.

Step Scaling allows for improved control over individual Blur passes and can be combined with Directional Blur to imitate certain effects. It also allows smaller Blur sizes to cover a larger area, although with a drastic loss in final quality. For example, if someone is streaming at 720p and wants to have their dynamic 2160p background blurry to a very high degree, this option would allow that at next to no quality loss in the final stream. The actual values that need to be used vary for each source and encoder however, so they will have to be chosen carefully.
2018-12-23 19:54:57 +01:00