Commit graph

1000 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
c1b3972550 gfx/shader/param/basic: Fix bool and suffixes, add enums and optimize
Adds support for enumerations, a different way of selecting how something should behave in a shader. Enumerations rely on a continuous list of values, and will automatically detect how many values there are in the enumeration. Only non-vector types are supported as enumeration entries, and array/vector parameters can have each member set to a different enumeration value.

Furthermore suffixes now are properly assigned, and 'bool' no longer causes shaders to stop rendering. Additionally by inlining some functions and using std::string_view we can achieve a slightly better performance than before.
2023-03-28 12:40:45 +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
3a40a63832 obs/gs/effect-parameter: Use string_view over std::string
Using std::string_view over std::string (and const std::string&) has the advantage that we skip potential temporary std::string objects that are immediately thrown away, thus slowing down the code. It can also be implicitly cast to std::string, which makes it compatible with existing code that uses std::string.
2023-03-28 12:40:45 +02:00
Michael Fabian 'Xaymar' Dirks
9db3dfd874 ui/about: Add 'Thank You' images to the About dialog
Images were created by the talented Inga (https://twitter.com/IngaPotejto).
2023-03-28 12:40:45 +02:00
Michael Fabian 'Xaymar' Dirks
1b26d0e477 media: New 'Thank You' images 2023-03-28 12:40:44 +02:00
Michael Fabian 'Xaymar' Dirks
ab64eeb5ec media: First version of the official icon 2023-03-28 12:40:44 +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
b91df3e11a nvicia/cuda-context: Don't modify the primary context
Doing so could potentially cause other CUDA implementations to suddenly fail.
2023-03-28 12:40:43 +02:00
Michael Fabian 'Xaymar' Dirks
a40db1258a nvidia/cuda: Add cuCtxCreate, cuCtxSynchronize 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
1951fb62ee obs/gs-helper: Optimize performance with inline 2023-03-28 12:40:43 +02:00
Michael Fabian 'Xaymar' Dirks
0eddfd75ae util/threadpool: Formatting and allow cancelling of tasks 2023-03-28 12:40:42 +02:00
Michael Fabian Dirks
9dacdae66f Update FUNDING.yml 2023-03-28 12:40:42 +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
Michael Fabian 'Xaymar' Dirks
624570b862 examples: Remove broken effects 2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks
a9bb56c5ee project: Optimize to use single fullscreen tri instead 2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks
775e27caff gs-helper: Only include debug markers if profiling is enabled 2023-03-28 12:40:42 +02:00
Michael Fabian 'Xaymar' Dirks
49f1cbc15e project: Improve performance profiling support
Adds a new CMake option "ENABLE_PROFILING" which enables all CPU and GPU performance profiling available in StreamFX for tracking what's actually causing things to be slow.
2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks
071760b867 ffmpeg-encoder/nvenc: Invert "no-scenecut" option for "Adaptive I-Frames"
Our "Adaptive I-Frames" is the inverse of the expected parameter to "no-scenecut" in FFmpegs NVENC.

Related #191
2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks
0966b61f76 ffmpeg-encoder/nvenc: Test for "h264_nvenc" in for "Adaptive B-Frames"
Fixes the bug where "Adaptive B-Frames" would not be applied in the way it was expected to be applied.

Related: #191
2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks
fb024cad73 gfx-blur-dual-filtering: Implement asynchronous rendering
Asynchronous rendering allows the GPU to perform work while the CPU performs other work, and is significantly faster than lockstep immediate rendering. By reusing existing render targets we can see a performance improvement of up to 500%, while still doing the same things.
2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks
9b13d64551 filter-blur: Add debug markers for performance tracking 2023-03-28 12:40:41 +02:00
Michael Fabian 'Xaymar' Dirks
6e8135dc98 gfx-blur-*: Add debug markers for performance tracking 2023-03-28 12:40:41 +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
47a22ce462 gs-vertexbuffer: Initialize memory to 0 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
8b0cc92d10 ui: Fix incorrect namespace for Qt symbol
Q_INIT_RESOURCE and Q_CLEANUP_RESOURCE can't be called from within a namespace and instead have to be in outside of the namespace, so by moving them into small inline functions we can fulfill this restriction.

Related: #192 #155
2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
50671c7f69 project: Version 0.8.0b2hf2 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
4cfa0ed4d4 ci: Ensure that tags are also built 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
23db0de84c ci: Fix names for 19.10 packages 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
a553b39a6d gfx-shader: Actually fix the thing 93207d was supposed to fix 2023-03-28 12:40:40 +02:00
Michael Fabian 'Xaymar' Dirks
7e192f3f17 project: Version 0.8.0b2hf1
* #186 Write alpha channel to render target in shaders.
2023-03-28 12:40:39 +02:00
Michael Fabian 'Xaymar' Dirks
16463ac41b ci: Also trigger on tag creation 2023-03-28 12:40:39 +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 'Xaymar' Dirks
685ed27efc project: Version 0.8.0b2
* #153 #167 #178 Update localization.
* #157 Fix a few example shaders and add some new ones.
* #160 Fix Look Ahead setting
* #162 Increase Direct3D11 texture eviction priority.
* #163 Asynchronous Nvidia Face Tracking.
* #164 Add clang-tidy support to CMake.
* #165 Fix some clang-10 errors.
* #168 Updated StreamFX logo.
* #169 Redesigned version string generation.
* #170 Fix compiler error with C++17 when using libobs.
* #171 Add global configuration handler.
* #172 Move Windows exclusive library handler into its own file.
* #174 Refactor everything into the streamfx:: namespace.
* #176 Implement a new UI/UX experience for StreamFX users.
* #177 Link to stdc++fs on GNU and Clang.
* #179 Fix incorrect render sizes and performance with gfx::shader.
* #181 #183 Fix locale strings missing info or no longer being used.
* #182 Add a default path for gfx::shader based on the selected file or the examples directory.
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
bb21d940bf project: Fix virtual overrides not using the correct type 2023-03-28 12:40:39 +02:00
Michael Fabian 'Xaymar' Dirks
a5518388ec util-profiler: Specify type for template 2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
d0569a2b4d ci: Add clang-10 to Ubuntu builds
Disables caching as it didn't work and fixes the weird new jpeg issue.
2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
3aa467f93a ci: Add caching of dependencies 2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
3a3cfd4776 ci: Ignore l10n_master from Crowdin
Crowding commits each language in its own commit, instead of merging multiple into one commit. This results in very spammy builds, to the point of several hundred being spawned in the same second.
2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
1e10bd3839 ci: Automatically try to build with clang-9 on 19.10 2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
544b67d55e util-profiler: Fix typo with in reparent() 2023-03-28 12:40:38 +02:00
Michael Fabian 'Xaymar' Dirks
ad4d00e0ea util-event: Fix unknown type 2023-03-28 12:40:37 +02:00
Michael Fabian 'Xaymar' Dirks
910ebd91cc cmake: Link to stdc++fs on GNU compatible and Clang 2023-03-28 12:40:37 +02:00
Michael Fabian 'Xaymar' Dirks
a19e8d1e00 gfx-shader: Add default path for file selection 2023-03-28 12:40:37 +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
5291b193e2 gfx-shader: Fix rendering at unexpected sizes and fix performance
Fixes rendering at unexpected sizes by first rendering to a render target and then rendering the contents of that render target to the frame buffer instead. This also prevent rendering twice or more, which might cause severe FPS impact.
2020-04-23 08:10:01 +02:00