Commit graph

1036 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
d72f6a3991 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.
2020-05-01 11:37:24 +02:00
Michael Fabian 'Xaymar' Dirks
c2c31d1d70 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
2020-04-26 00:35:03 +02:00
Michael Fabian 'Xaymar' Dirks
363bae9c78 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
2020-04-26 00:35:03 +02:00
Michael Fabian 'Xaymar' Dirks
ca54fb4d6a 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.
2020-04-25 14:57:17 +02:00
Michael Fabian 'Xaymar' Dirks
fd799b458f filter-blur: Add debug markers for performance tracking 2020-04-25 11:57:22 +02:00
Michael Fabian 'Xaymar' Dirks
bc6a0c5281 gfx-blur-*: Add debug markers for performance tracking 2020-04-25 11:57:22 +02:00
Michael Fabian 'Xaymar' Dirks
28aca9ff15 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.
2020-04-25 08:40:06 +02:00
Michael Fabian 'Xaymar' Dirks
c88301cee2 gs-vertexbuffer: Initialize memory to 0 2020-04-25 08:40:06 +02:00
Michael Fabian 'Xaymar' Dirks
f8972f5667 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
2020-04-25 01:24:15 +02:00
Michael Fabian 'Xaymar' Dirks
c5cd855c11 project: Version 0.8.0b2hf2 2020-04-24 09:02:12 +02:00
Michael Fabian 'Xaymar' Dirks
f5b12aa269 ci: Ensure that tags are also built 2020-04-24 08:53:25 +02:00
Michael Fabian 'Xaymar' Dirks
62a42de7e7 ci: Fix names for 19.10 packages 2020-04-24 08:53:25 +02:00
Michael Fabian 'Xaymar' Dirks
d5eadbc148 gfx-shader: Actually fix the thing 93207d was supposed to fix 2020-04-24 08:53:25 +02:00
Michael Fabian 'Xaymar' Dirks
73edb7682b project: Version 0.8.0b2hf1
* #186 Write alpha channel to render target in shaders.
2020-04-24 07:16:17 +02:00
Michael Fabian 'Xaymar' Dirks
234d7500c2 ci: Also trigger on tag creation 2020-04-24 07:04:20 +02:00
Michael Fabian 'Xaymar' Dirks
93207d4655 gfx-shader: Actually write alpha channel to render target 2020-04-24 06:18:12 +02:00
Michael Fabian 'Xaymar' Dirks
c4b4cbdafd 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.
2020-04-24 05:39:40 +02:00
Michael Fabian Dirks
69a39e7708
locale: New Crowdin translations (#178) 2020-04-24 05:35:56 +02:00
Michael Fabian 'Xaymar' Dirks
9f96c82e87 project: Fix virtual overrides not using the correct type 2020-04-24 05:13:58 +02:00
Michael Fabian 'Xaymar' Dirks
a0e5b6c080 util-profiler: Specify type for template 2020-04-24 05:13:58 +02:00
Michael Fabian 'Xaymar' Dirks
662df4f037 ci: Add clang-10 to Ubuntu builds
Disables caching as it didn't work and fixes the weird new jpeg issue.
2020-04-24 05:13:58 +02:00
Michael Fabian 'Xaymar' Dirks
9c59276ec3 ci: Add caching of dependencies 2020-04-24 02:46:36 +02:00
Michael Fabian 'Xaymar' Dirks
8bab873a1e 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.
2020-04-24 02:46:36 +02:00
Michael Fabian 'Xaymar' Dirks
ad4196ff79 ci: Automatically try to build with clang-9 on 19.10 2020-04-24 02:46:36 +02:00
Michael Fabian 'Xaymar' Dirks
bd0d3e5baa util-profiler: Fix typo with in reparent() 2020-04-24 02:46:36 +02:00
Michael Fabian 'Xaymar' Dirks
fb46ae228d util-event: Fix unknown type 2020-04-24 02:46:36 +02:00
Michael Fabian 'Xaymar' Dirks
e17e7f7350 cmake: Link to stdc++fs on GNU compatible and Clang 2020-04-24 01:34:54 +02:00
Michael Fabian 'Xaymar' Dirks
c6c8a66b6c gfx-shader: Add default path for file selection 2020-04-24 01:34:31 +02:00
Michael Fabian 'Xaymar' Dirks
ead6f28ca9 locale: Fix missing '[Alpha]' 2020-04-24 01:34:18 +02:00
Michael Fabian 'Xaymar' Dirks
cb215881a9 source-shader: Add ShaderToy MslfRn
Adds 'https://www.shadertoy.com/view/MslfRn' as a usable shader.
2020-04-24 01:13:34 +02:00
Michael Fabian 'Xaymar' Dirks
b765d6e745 source-shader: Add ShaderToy MslGRn
Converts 'https://www.shadertoy.com/view/MslGRn' into a usable StreamFX shader.
2020-04-24 01:13:34 +02:00
Michael Fabian 'Xaymar' Dirks
98ea37b2e2 source-shader: Add ShaderToy 3tlXWS
Converts 'https://www.shadertoy.com/view/3tlXWS' into a usable StreamFX Shader.
2020-04-24 01:13:34 +02:00
Michael Fabian 'Xaymar' Dirks
fdcecf25c9 source-shader: Add ShaderToy 3l23Rh
Converts 'https://www.shadertoy.com/view/3l23Rh' into a Shader usable by StreamFX's Shader Source.
2020-04-24 01:13:34 +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
Michael Fabian 'Xaymar' Dirks
f58ce9f421 project: Implement a brand new UI with fancy windows
Implements support for various new UI features that weren't possible up until now, such as an 'About StreamFX' window with a thank you to everyone that supported the project up until now.
2020-04-23 01:09:02 +02:00
Michael Fabian 'Xaymar' Dirks
d0941895ad project: Refactor into namespace streamfx 2020-04-23 00:50:39 +02:00
Michael Fabian 'Xaymar' Dirks
0feaeb1afc project: Remove the usage of Visual Studio 2017
Visual Studio 2017 is now 3 years out of date, and newer options are available - and also produce better and faster binaries.
2020-04-23 00:43:16 +02:00
Michael Fabian 'Xaymar' Dirks
2ab8949ba5 cmake: Place Windows exclusive functionality into own file 2020-04-22 23:32:22 +02:00
Michael Fabian 'Xaymar' Dirks
9ddc9051c7 configuration: Add global configuration handler 2020-04-22 23:15:32 +02:00
Michael Fabian 'Xaymar' Dirks
6cbfee4579 obs-tools: Add OBS data deleter 2020-04-22 23:15:32 +02:00
Michael Fabian Dirks
fec55909ef
locale: New Crowdin translations (#167) 2020-04-22 23:15:16 +02:00
Michael Fabian 'Xaymar' Dirks
ce74d2f7cd common: Undefine the unsafe 'strtoll' define from libobs 2020-04-22 23:11:30 +02:00
Michael Fabian 'Xaymar' Dirks
c93789f6dc cmake: Slightly redesign version string generation 2020-04-22 23:11:01 +02:00
Michael Fabian 'Xaymar' Dirks
4f789a0214 project: Add new logo 2020-04-19 23:00:47 +02:00
Michael Fabian 'Xaymar' Dirks
92fc2b3ccb cmake: Add support for running clang-tidy
Adds supports for running clang-tidy from within CMake, if the Clang toolset was found. This feature is experimental, but should work on many compilers, as it relies on generated compile_commands.json which are fully generated by the clang subproject. Using clang-tidy we can find hidden bugs that other static analyzers do not detect, or compilers don't even bother throwing an error for.
2020-04-18 19:11:53 +02:00
Michael Fabian 'Xaymar' Dirks
04ac0a640f filter-nv-face-tracking: Improve performance with asynchronous tracking
Through converting the code to a threaded asynchronous approach, the libOBS video renderer no longer has to wait on our tracking code to run, and we can enjoy a little bit of extra calculation time before we actually have to do anything.

However due to the remaining synchronization with the Direct3D11/OpenGL context, it is not entirely safe to spend a full frame tracking as libOBS will then start skipped/dropping frames. Even though the priority of the stream is now increased, this still means that we can't just sit around and have to quickly finish all work.

Related #150
2020-04-17 11:44:37 +02:00
Michael Fabian 'Xaymar' Dirks
4d8ff417e7 nvidia-cuda: Improve usage of CUDA resources and functions
Load additional functions from CUDA and add new enumerations to support them:
* cuDevicePrimaryCtxSetFlags allows us to sched scheduling mode for the GPU.
* cuCtxgetStreamPriorityRange allows us to check which priority levels are supported.
* cuStreamCreateWithPriority allows us to create streams with non-default priority.

The scheduler mode is now set to yield so that other threads can do work when we hit an eventual stalling problem. Streams can also now be created with higher priority and different flags, if necessary. In most cases this should allow CUDA resources to execute even while the GPU is under heavy load.
2020-04-17 11:44:37 +02:00
Michael Fabian 'Xaymar' Dirks
97e1846156 obs-tools: Add deleter for obs_weak_source_t 2020-04-17 11:44:37 +02:00