with the finished AMD Advanced Media Framework Plugin for Open Broadcaster Software Studio, I have begun working on a new project which i currently dubbed "OBS Stream Effects". The goal for this project is to add more modern filters and transitions to OBS Studio, especially filters and transitions that have been requested for a while now.
+
-with the finished AMD Advanced Media Framework Plugin for Open Broadcaster Software Studio, I have begun working on a new project which i currently dubbed "OBS Stream Effects". The goal for this project is to add more modern filters and transitions to OBS Studio, especially filters and transitions that have been requested for a while now.
+
Here are a few previews of what the current version can do for you:
-Last Friday I released OBS Stream Effects to the public and today I want to show you what cool things you can do to your recordings or streams with it. Let's begin.
+
Last Friday I released OBS Stream Effects to the public and today I want to show you what cool things you can do to your recordings or streams with it. Let's begin.
-
3D Transform
+
3D Transform
-We'll start off with the most basic Filter '3D Transform' which gives you the ability to turn your normally 2D-ish scene into almost full 3D at very little cost. It's settings are very similar to those you would find in a 3D editor which means that you can position, rotate, shear and scale sources in addition to selecting how the source should be transformed, as both Perspective and Orthographic transform is supported.
+
We'll start off with the most basic Filter '3D Transform' which gives you the ability to turn your normally 2D-ish scene into almost full 3D at very little cost. It's settings are very similar to those you would find in a 3D editor which means that you can position, rotate, shear and scale sources in addition to selecting how the source should be transformed, as both Perspective and Orthographic transform is supported.
-The second filter of the current set allows you to blur out possibly bad content, create blurred dynamic backgrounds and more. Just be careful to not use this on sensitive information as it is a non-destructive process, which means that "dedicated" viewers will be able to recreate the original information.
+The second filter of the current set allows you to blur out possibly bad content, create blurred dynamic backgrounds and more. Just be careful to not use this on sensitive information as it is a non-destructive process, which means that "dedicated" viewers will be able to recreate the original information.
-The final filter currently in the plugin allows you to create effects that rely on displacing the pixel to be rendered to another location. It takes a simple normal map as input and will produce results based on that.
+
The final filter currently in the plugin allows you to create effects that rely on displacing the pixel to be rendered to another location. It takes a simple normal map as input and will produce results based on that.
-Of course the plugin is far from done. It has just the bare minimum of effects currently in it and there's much more planned, such as:
+Of course the plugin is far from done. It has just the bare minimum of effects currently in it and there's much more planned, such as:
-
+
Custom Shader Filter - Make your own Filter in seconds instead of spending hours writing an OBS plugin.
Custom Shader Transition - The above but for Transitions!
3D Transitions - Our lovely Windows Movie Maker transitions now also for OBS Studio!
@@ -40,11 +39,10 @@ Of course the plugin is far from done. It has just the bare minimum of effects c
And more - send me your ideas and I might implement them in a future version!
As with previous projects, the downloads and source are available on GitHub for everyone. Early builds generated by the CI server are also available on AppVeyor here. Finally for those not trusting direct links to GitHub or AppVeyor, there is the OBS Forum Resource submission here.
-And with that said it's time for me to go back to my projects. I hope that you'll find these useful and I look forward to what you all come up with!
+
And with that said it's time for me to go back to my projects. I hope that you'll find these useful and I look forward to what you all come up with!
-OBS Stream Effects Version 0.4.1 is now available and it fixes the 32-Bit crash as well as�improving overall performance and stability. If you're currently on 0.4.0 or earlier, it's time to update!
+
OBS Stream Effects Version 0.4.1 is now available and it fixes the 32-Bit crash as well as�improving overall performance and stability. If you're currently on 0.4.0 or earlier, it's time to update!
Switched all filters and sources over to new initialization code.
Fixed a 32-bit crash on machines with CPUs capable of SSE caused by Vertex Buffers.
Reduced memory requirements of Vertex Buffers by ~60%.
Removed a superfluous reallocation, loop and copy from Vertex Buffers.
-
0.4.0
+
0.4.0
-
+
Improved initialization code to ease future development.
Fixed several possible crashes in the GS subsystem wrappers.
Fixed 'Blur' filter color being wrong due to non-power-of-two textures.
@@ -31,4 +31,3 @@ OBS Stream Effects Version 0.4.1 is now available and it fixes the 32-Bit crash
Fixed 'Blur' filter occasionally just not working.
Added 'Source Mirror' source which allows you to add filters to a source without modifying it as well as rescaling it.
-
\ No newline at end of file
diff --git a/_posts/2019/2019-01-31-a-look-back-at-obs-stream-effects-0-4-2-and-the-path-to-0-5-0.html b/_posts/2019/2019-01-31-a-look-back-at-obs-stream-effects-0-4-2-and-the-path-to-0-5-0.html
index cbbbe28..1a3ea0d 100644
--- a/_posts/2019/2019-01-31-a-look-back-at-obs-stream-effects-0-4-2-and-the-path-to-0-5-0.html
+++ b/_posts/2019/2019-01-31-a-look-back-at-obs-stream-effects-0-4-2-and-the-path-to-0-5-0.html
@@ -1,59 +1,32 @@
---
title: 'A look back at OBS Stream Effects 0.4.2 and the path to 0.5.0'
category: Blog
-tags: [StreamFX, OBS]
+tags: [StreamFX, OBS, OBS Studio, 'WordPress Archive']
---
-
-
-
It's been over a year for the next update to OBS Stream Effects, and most of that has to do with burning out, bad planning, bad code, and just overall refusal to accept that things aren't going the way they should have been. But what exactly went wrong?
-
-
+
It's been over a year for the next update to OBS Stream Effects, and most of that has to do with burning out, bad planning, bad code, and just overall refusal to accept that things aren't going the way they should have been. But what exactly went wrong?
+
-
-
-
The last version has over 24000 downloads total, excluding any downloads from AppVeyor. As this is just a Plugin for OBS Studio, seeing these kind of download numbers is kind of insane - it's basically rivalling OBS AMD Encoder in downloads
-
+
The last version has over 24000 downloads total, excluding any downloads from AppVeyor. As this is just a Plugin for OBS Studio, seeing these kind of download numbers is kind of insane - it's basically rivalling OBS AMD Encoder in downloads
-
-
But Then Things Went Wrong (TM)
-
+
But Then Things Went Wrong (TM)
-
-
It started really simple, just some "Ah I don't want to do that right now..." that turned into something much worse: burnout. It was the worst time of my life, I got nothing done in that time without needing an extra alarm to remind me to do the thing. And ultimately it ended up also causing difficulties with my day-to-day job at the time.
I still wrote code on the side, but there was another problem: too many projects.
-
+
It started really simple, just some "Ah I don't want to do that right now..." that turned into something much worse: burnout. It was the worst time of my life, I got nothing done in that time without needing an extra alarm to remind me to do the thing. And ultimately it ended up also causing difficulties with my day-to-day job at the time.
I still wrote code on the side, but there was another problem: too many projects.
-
-
throw new TooManyProjectsEx();
-
+
throw new TooManyProjectsEx();
-
-
I was flooded with work from other projects that I enjoyed more than working on OBS Stream Effects. So I paused work on OBS Stream Effects, to continue on those Projects, only to make next to no progress on those and move back to being burned out.
-
+
I was flooded with work from other projects that I enjoyed more than working on OBS Stream Effects. So I paused work on OBS Stream Effects, to continue on those Projects, only to make next to no progress on those and move back to being burned out.
-
-
Back to square 1, and now it was worse than before. I had left a mess in all the project I touched before I burned out a second time. I just... took a break at that point - couldn't really do anything else, and went back to slow coding, only on days where I actually felt like it. And it's stayed like that since then.
-
+
Back to square 1, and now it was worse than before. I had left a mess in all the project I touched before I burned out a second time. I just... took a break at that point - couldn't really do anything else, and went back to slow coding, only on days where I actually felt like it. And it's stayed like that since then.
-
-
I think I've learned my lesson from this: Don't force yourself to do things if you aren't doing well mentally.
-
+
I think I've learned my lesson from this: Don't force yourself to do things if you aren't doing well mentally.
-
-
Code Quality and Stability
-
+
Code Quality and Stability
-
-
During my burn out period I wrote a lot of crappy code. And not just bad crappy code, but outright terrible crappy code. Code that caused heap corruptions, memory leaks in the hundreds of megabytes per minute, or worse, just crashed the software for no reason.
-
+
During my burn out period I wrote a lot of crappy code. And not just bad crappy code, but outright terrible crappy code. Code that caused heap corruptions, memory leaks in the hundreds of megabytes per minute, or worse, just crashed the software for no reason.
-
-
Even after fixing all the known and reproducible problems, I still think that about 60% of the Plugin needs a proper rewrite, but I don't think I'll be able to ever do that. I can only reduce the number of bugs over time and fix things, and hope that I don't do that again in the future.
-
+
Even after fixing all the known and reproducible problems, I still think that about 60% of the Plugin needs a proper rewrite, but I don't think I'll be able to ever do that. I can only reduce the number of bugs over time and fix things, and hope that I don't do that again in the future.
3D Factorio, or more commonly known as Satisfactory, has been my go-to game for this weekend and likely will be for all future weekends once the Early Access is open. Here's some more things I've discovered throughout the game.
-
+
3D Factorio, or more commonly known as Satisfactory, has been my go-to game for this weekend and likely will be for all future weekends once the Early Access is open. Here's some more things I've discovered throughout the game.
-
-
-
-
Power Slugs have different Tiers
-
+
Power Slugs have different Tiers
-
-
There are currently three accessible Power Slub tiers: Green (Tier 1), Yellow (Tier 2) and Purple (Tier 3). Each Tier gives a different amount of Power Shards, and each increase in the Tiers is also much more difficult to find. Tier 1 Slugs give 1 Power Shard, Tier 2 Slugs give 2 Power Shards and Tier 3 Slugs give 5 Power Shards.
-
+
There are currently three accessible Power Slub tiers: Green (Tier 1), Yellow (Tier 2) and Purple (Tier 3). Each Tier gives a different amount of Power Shards, and each increase in the Tiers is also much more difficult to find. Tier 1 Slugs give 1 Power Shard, Tier 2 Slugs give 2 Power Shards and Tier 3 Slugs give 5 Power Shards.
-
-
In my entire play time, I've found a total of three Purple Power Slugs, and only two of them are within an Area that I can actually reach.
-
+
In my entire play time, I've found a total of three Purple Power Slugs, and only two of them are within an Area that I can actually reach.
-
-
Green Power Slug
Purple Power Slug
-
+
Green Power Slug
Purple Power Slug
-
-
Host and Client have different Mechanics
-
+
Host and Client have different Mechanics
-
-
This is likely to be fixed in the future, but this means that clients (players) can interact with things in a different way than the host (main player) does. Things that crash the host don't crash if a client does it, and the client can open crafting benches and storage boxes that the host has open.
-
+
This is likely to be fixed in the future, but this means that clients (players) can interact with things in a different way than the host (main player) does. Things that crash the host don't crash if a client does it, and the client can open crafting benches and storage boxes that the host has open.
-
-
That means that the Hard Drive Discovery crash does not happen if a client selects the recipe, allowing you to progress just a little bit further. Clients may also be able to select Tier 4 through 6, but that is a rare bug, and finishing these seems to corrupt the save file permanently.
-
+
That means that the Hard Drive Discovery crash does not happen if a client selects the recipe, allowing you to progress just a little bit further. Clients may also be able to select Tier 4 through 6, but that is a rare bug, and finishing these seems to corrupt the save file permanently.
-
-
Verticality
-
+
Verticality
-
-
You may not initially want to do it, but once you reach Stackable Poles, vertical building becomes your friend. You can stuff a lot of things into a vertical block that wouldn't fit as a flat plane anywhere, and it makes things a ton easier if you actually do move things into a vertical layout. Just make sure you give yourself enough room to work.
-
+
You may not initially want to do it, but once you reach Stackable Poles, vertical building becomes your friend. You can stuff a lot of things into a vertical block that wouldn't fit as a flat plane anywhere, and it makes things a ton easier if you actually do move things into a vertical layout. Just make sure you give yourself enough room to work.
-
-One of the layers of my Iron production line
-
+
One of the layers of my Iron production line
-
-
Dropped Items can be a Temporary Platform
-
+
Dropped Items can be a Temporary Platform
-
-
If you just need to get there quickly, Leaves and other Items can be dropped in small stacks to create a platform that you can collide with and stand on. Use this to quickly get up somewhere without wasting a ton of cement in the process. This only works if there is no ground in range vertically.
-
+
If you just need to get there quickly, Leaves and other Items can be dropped in small stacks to create a platform that you can collide with and stand on. Use this to quickly get up somewhere without wasting a ton of cement in the process. This only works if there is no ground in range vertically.
-
-Leaves used as a temporary wasteless bridge.
-
+
Leaves used as a temporary wasteless bridge.
-
-
Work-In-Progress Mercer Spheres
-
+
Work-In-Progress Mercer Spheres
-
-
These Spheres have dialog that is spoken to players in the area, which seems to change depending on the distance to the sphere. If you're within range, they'll say one of the following lines:
-
+
These Spheres have dialog that is spoken to players in the area, which seems to change depending on the distance to the sphere. If you're within range, they'll say one of the following lines:
-
-
Harvest.
Harvest. It!
Comply!
I strongly advice you to harvest this specimen.
Your contract legally compels you to harvest this artifact.
You are so lucky that you found this most valuable artifact.
Picking up multiple FICSIT personell in the area. Proceed with harvest before it's too late.
Breaking news form Earth: Widespread chaos and mayhem. World president urges all citizens to do their part and harvest alien artifacts.
Relaying message: Hello this is patrol figure. I have taken ill and need your help to find a cure. Doctors say that the only remedy is alien artifacts.
-
-
\ No newline at end of file
+
Harvest.
Harvest. It!
Comply!
I strongly advice you to harvest this specimen.
Your contract legally compels you to harvest this artifact.
You are so lucky that you found this most valuable artifact.
Picking up multiple FICSIT personell in the area. Proceed with harvest before it's too late.
Breaking news form Earth: Widespread chaos and mayhem. World president urges all citizens to do their part and harvest alien artifacts.
Relaying message: Hello this is patrol figure. I have taken ill and need your help to find a cure. Doctors say that the only remedy is alien artifacts.
I've been playing Satisfactory for about the entire time that it's been in Open Alpha now (and also have it preordered), and found some vaguely interesting things - from unexpected game mechanics, to really cool discoveries. Let's take a look at what we might also see in Early Access of the game!
-
+
I've been playing Satisfactory for about the entire time that it's been in Open Alpha now (and also have it preordered), and found some vaguely interesting things - from unexpected game mechanics, to really cool discoveries. Let's take a look at what we might also see in Early Access of the game!
-
-
-
-
Ground Ore Nodes have different Purity
-
+
Ground Ore Nodes have different Purity
-
-
Purity of a Node affects the speed at which something is gathered. The worst level is Inpure/Impure, which gathers 1 ore every 2 seconds. Next is Normal purity at 1 ore every 1 second, and finally Pure purity at 1 ore every 0.5 seconds. You ideally want Normal or Higher, but to start out Inpure/Impure Nodes will work fine.
-
+
Purity of a Node affects the speed at which something is gathered. The worst level is Inpure/Impure, which gathers 1 ore every 2 seconds. Next is Normal purity at 1 ore every 1 second, and finally Pure purity at 1 ore every 0.5 seconds. You ideally want Normal or Higher, but to start out Inpure/Impure Nodes will work fine.
-
-
Some really good nodes (Pure) are protected by groups of dangerous enemies that you should either defeat with Walls and Foundations, or with a Rebar Gun.
-
+
Some really good nodes (Pure) are protected by groups of dangerous enemies that you should either defeat with Walls and Foundations, or with a Rebar Gun.
-
-
Miners can be built on top of Foundations
-
+
Miners can be built on top of Foundations
-
-
Not exactly as groundbreaking as most things, but this allows lining up things to the actual resource node better.
-
+
Not exactly as groundbreaking as most things, but this allows lining up things to the actual resource node better.
-
-Just mining my Foundation.
-
+
Just mining my Foundation.
-
-
Balance your Conveyor Lines
-
+
Balance your Conveyor Lines
-
-
If you have more than a single input conveyor, such as when you're mining ore and there's two, three or even four miners required, you should consider building a balancer. Balancers help distribute the input lines evenly to all output lines, such as balancing 3 inputs to feed all three outputs equally.
-
+
If you have more than a single input conveyor, such as when you're mining ore and there's two, three or even four miners required, you should consider building a balancer. Balancers help distribute the input lines evenly to all output lines, such as balancing 3 inputs to feed all three outputs equally.
-
-3 Input, 3 Output Ore Balancer
-
+
3 Input, 3 Output Ore Balancer
-
-
Balancers can be built in any shape, size or configuration. I've personally only needed 3-In-3-Out balancers so far, but configurations like 2-In-6-Out, 6-In, 2-Out, 6-In-6-Out, 5-In-5-Out and so on should all be possible as the Splitters and Mergers are much more intelligent than the ones in Factorio.
-
+
Balancers can be built in any shape, size or configuration. I've personally only needed 3-In-3-Out balancers so far, but configurations like 2-In-6-Out, 6-In, 2-Out, 6-In-6-Out, 5-In-5-Out and so on should all be possible as the Splitters and Mergers are much more intelligent than the ones in Factorio.
-
-
Conveyor Poles can be stacked on Foundations
-
+
Conveyor Poles can be stacked on Foundations
-
-
If you haven't reached the Stackable Poles yet, you can still stack your conveyors using normal Poles, just not as good as with the Stackable Pole. Simply aim close to the same position on the Foundation that your previous pole was in, and try to make the hologram match the original pole. Tada, you've stacked unstackable Poles.
-
+
If you haven't reached the Stackable Poles yet, you can still stack your conveyors using normal Poles, just not as good as with the Stackable Pole. Simply aim close to the same position on the Foundation that your previous pole was in, and try to make the hologram match the original pole. Tada, you've stacked unstackable Poles.
-
-
Optimize Early, Optimize Often
-
+
Optimize Early, Optimize Often
-
-
It's never too early to optimize your production lines, and it only gets easier the more materials you've saved up. Build Balancers, build huge production facilities for even more inputs, just really go all out and build for 10 times what you actually need right now.
-
+
It's never too early to optimize your production lines, and it only gets easier the more materials you've saved up. Build Balancers, build huge production facilities for even more inputs, just really go all out and build for 10 times what you actually need right now.
-
-
3x3 Ore Balancer goes into Iron Production
3x6 Iron Production with Buffering
-
-
-
-
-
-
\ No newline at end of file
+
3x3 Ore Balancer goes into Iron Production
3x6 Iron Production with Buffering
diff --git a/_posts/2019/2019-04-22-i-have-a-garden-and-a-camera.html b/_posts/2019/2019-04-22-i-have-a-garden-and-a-camera.html
index 5a03650..764bdfc 100644
--- a/_posts/2019/2019-04-22-i-have-a-garden-and-a-camera.html
+++ b/_posts/2019/2019-04-22-i-have-a-garden-and-a-camera.html
@@ -1,15 +1,9 @@
---
title: 'I have a Garden. And a Camera.'
category: Blog
-tags:
+tags: ['WordPress Archive']
---
-
-
-
-
+
Started cleaning up my garden again as the ground isn't frozen anymore and I can actually do work on everything again. So I took my Camera with me, and made some close (really still 80cm away) shots of things. I'm looking forward to owning an actual Macro lens for this purpose.
-
-
Started cleaning up my garden again as the ground isn't frozen anymore and I can actually do work on everything again. So I took my Camera with me, and made some close (really still 80cm away) shots of things. I'm looking forward to owning an actual Macro lens for this purpose.
As the game had no modding API that was visible, the only thing I could do is to figure out what tools I need for injecting new code. And as the game is made with Unity, the same engine that Risk of Rain 2 runs on, I figured I could reuse the toolset from there.
-
+
As the game had no modding API that was visible, the only thing I could do is to figure out what tools I need for injecting new code. And as the game is made with Unity, the same engine that Risk of Rain 2 runs on, I figured I could reuse the toolset from there.
Knowing which .Net SDK to use is half the battle.
-
-
-
All I needed to figure out was which .Net version the game was compiled against, and there was a handy tool for it: Detect It Easy. Loading the Assembly-CSharp.dll into it revealed that the game was built against .Net 4.0, which means that I needed a BepInEx compatible with Unity 2017 and newer.
-
+
All I needed to figure out was which .Net version the game was compiled against, and there was a handy tool for it: Detect It Easy. Loading the Assembly-CSharp.dll into it revealed that the game was built against .Net 4.0, which means that I needed a BepInEx compatible with Unity 2017 and newer.
-
-
Thankfully there was a release candidate which actually ended up working: BepInEx 5.0 RC1. After extracting the Unity 2017+ version into the game directory (directory that holds ReLegend.exe) and configuring BepInEx to show a console, I had confirmation that I could load mods. Now it's time to actually get into modding!
-
+
Thankfully there was a release candidate which actually ended up working: BepInEx 5.0 RC1. After extracting the Unity 2017+ version into the game directory (directory that holds ReLegend.exe) and configuring BepInEx to show a console, I had confirmation that I could load mods. Now it's time to actually get into modding!
-
-
Disassembling Assembly-CSharp.dll
-
+
Disassembling Assembly-CSharp.dll
-
-
If you aren't familiar with Unity, the binary Assembly-CSharp.dll holds compiled and usually optimized compiled game code written in C#, and also usually contains most dependendencies that don't have their own .dll file. So what we need is a disassembly tool that can deal with optimized compiled code and give back a reasonable representation of the actual code.
-
+
If you aren't familiar with Unity, the binary Assembly-CSharp.dll holds compiled and usually optimized compiled game code written in C#, and also usually contains most dependendencies that don't have their own .dll file. So what we need is a disassembly tool that can deal with optimized compiled code and give back a reasonable representation of the actual code.
ILSpy in action.
-
-
-
After a bit of searching for a C# disassembler I decided to use ILSpy, which performed the task better than most other tools and did not crash no matter what I threw at it. Loading Assembly-CSharp.dll into it gave me a near instant disassembled version of the game code, although mostly lacking comments since those get removed.
-
+
After a bit of searching for a C# disassembler I decided to use ILSpy, which performed the task better than most other tools and did not crash no matter what I threw at it. Loading Assembly-CSharp.dll into it gave me a near instant disassembled version of the game code, although mostly lacking comments since those get removed.
-
-
All that was left was to figure out what to remove first, and how to do it. After some time, I figured that my first mod should be to remove the Tutorial popups and instantly unlock tutorials in the menu due to them often opening up in bad situations in Multiplayer.
-
+
All that was left was to figure out what to remove first, and how to do it. After some time, I figured that my first mod should be to remove the Tutorial popups and instantly unlock tutorials in the menu due to them often opening up in bad situations in Multiplayer.
-
-
Coding the Mod
-
+
Coding the Mod
-
-
With the information from Detect It Easy and ILSpy, and some knowledge of BepInEx and 0Harmony, getting a mod to load was pretty easy. The problem was getting it to do the actual right thing, without breaking the game. And the Tutorials were already known for literally freezing players in place if you skip them too fast.
-
+
With the information from Detect It Easy and ILSpy, and some knowledge of BepInEx and 0Harmony, getting a mod to load was pretty easy. The problem was getting it to do the actual right thing, without breaking the game. And the Tutorials were already known for literally freezing players in place if you skip them too fast.
-
-
A little while later after delving into the disassembled code, I found the place that I needed to modify: global::TutorialManager::StartDisplayTutorial. The functionality that it currently had was to enable the tutorial panel, disable quitting the game, stop all player interaction, search and initialize the tutorial, unlock the tutorial and then finally set up the UI and display it. We don't want it to do anything but unlock the tutorial.
-
+
A little while later after delving into the disassembled code, I found the place that I needed to modify: global::TutorialManager::StartDisplayTutorial. The functionality that it currently had was to enable the tutorial panel, disable quitting the game, stop all player interaction, search and initialize the tutorial, unlock the tutorial and then finally set up the UI and display it. We don't want it to do anything but unlock the tutorial.
Skipping Tutorials made easy - they don't even show up now!
-
-
-
As TutorialManagers UnlockTutorial was private, but the unlockTutorials List was not, the override was a simple as just calling SearchTutorial, then adding the tutorial to the unlockTutorials List, and finally just calling EndTutorial().
-
+
As TutorialManagers UnlockTutorial was private, but the unlockTutorials List was not, the override was a simple as just calling SearchTutorial, then adding the tutorial to the unlockTutorials List, and finally just calling EndTutorial().
-
-
The Aftermath
-
+
The Aftermath
-
-
With one of the most annoying ways to show tutorials out of the way, the game was much nicer to play, and I had my first experience in modding Re:Legend. I got a bit modding-crazy and made additional mods, like disabling the crafting failure with cooking which seemed to be arbitrary, and attempting to allow players to move while attacking. Unfortunately the latter one failed, but the former one did also work which made the cooking mechanic less dumb.
-
+
With one of the most annoying ways to show tutorials out of the way, the game was much nicer to play, and I had my first experience in modding Re:Legend. I got a bit modding-crazy and made additional mods, like disabling the crafting failure with cooking which seemed to be arbitrary, and attempting to allow players to move while attacking. Unfortunately the latter one failed, but the former one did also work which made the cooking mechanic less dumb.
-
-
I've released all the code and mods I've made on GitHub for you to try out. Installing them is easy, there's even a guide on the wiki for it. Building them yourself is a bit different, you will need CMake, Visual Studio 2017 or 2019, .Net SDK 4.0 and the game. But it's not rocket science so it should be pretty easy to build them yourself.
-
+
I've released all the code and mods I've made on GitHub for you to try out. Installing them is easy, there's even a guide on the wiki for it. Building them yourself is a bit different, you will need CMake, Visual Studio 2017 or 2019, .Net SDK 4.0 and the game. But it's not rocket science so it should be pretty easy to build them yourself.
-
-
I had a lot of fun writing mods for this game, even if the game itself had no official modding API, and I hope that my delve into Re:Legend modding helps future modders do more amazing stuff than I did. I'd love to hear about what you've done, so feel free to hit me up on Twitter, in the Comments here, or on Discord.
-
+
I had a lot of fun writing mods for this game, even if the game itself had no official modding API, and I hope that my delve into Re:Legend modding helps future modders do more amazing stuff than I did. I'd love to hear about what you've done, so feel free to hit me up on Twitter, in the Comments here, or on Discord.
-
-
Until next time
-
+
Until next time
-
-
- Xaymar
-
-
\ No newline at end of file
+
- Xaymar
diff --git a/_posts/2019/2019-10-30-the-end-of-32bit-releases.html b/_posts/2019/2019-10-30-the-end-of-32bit-releases.html
new file mode 100644
index 0000000..ab8fa74
--- /dev/null
+++ b/_posts/2019/2019-10-30-the-end-of-32bit-releases.html
@@ -0,0 +1,13 @@
+---
+title: 'The End of 32-Bit Releases'
+category: Blog
+tags: ['WordPress Archive']
+---
+
+
The 64-Bit architecture has been dominating the market for Games for a while, and I don't see the point in supporting 32-Bit anymore. The 32-Bit architecture has added nothing but problems, especially user created ones which don't understand what a 4GB RAM limitation is, and it's also annoying to deal with as some bugs are exclusive to 32-Bit.
+
+
So I've decided to stop releasing 32-Bit binaries, as it is just annoying to deal with. There's no reason to limit myself to a more restrictive architecture, just because some users are stuck with devices that only ship 32-Bit drivers - not my problem, fix your devices or write your own drivers that are 64-Bit compatible.
+
+
In case you are currently using a 32-Bit Windows, or 32-Bit OBS Studio, I urge you to seriously consider using a 64-Bit Windows or OBS Studio. You are just limiting yourself by not doing so, for no reason either.
+
+
Xaymar out.
diff --git a/_posts/2019/2019-12-22-stream-effects-is-now-streamfx.html b/_posts/2019/2019-12-22-stream-effects-is-now-streamfx.html
index 89688c2..9c56066 100644
--- a/_posts/2019/2019-12-22-stream-effects-is-now-streamfx.html
+++ b/_posts/2019/2019-12-22-stream-effects-is-now-streamfx.html
@@ -1,23 +1,13 @@
---
title: 'Stream Effects is now StreamFX'
category: Blog
-tags: ['StreamFX']
+tags: ['StreamFX', 'WordPress Archive']
---
-
-
-
After many people have started calling Stream Effects "Stream Elements", I have decided to rename Stream Effects to StreamFX. StreamFX still means Stream Effects, but it is much simpler to remember and not as easily confused with Stream Elements.
-
+
After many people have started calling Stream Effects "Stream Elements", I have decided to rename Stream Effects to StreamFX. StreamFX still means Stream Effects, but it is much simpler to remember and not as easily confused with Stream Elements.
-
-
For users of the plugin that manually installed it, this means that you will have to remove the obs-stream-effects dll and data directories. For those using the installer, the installer should automatically handle removing the old files for you.
-
+
For users of the plugin that manually installed it, this means that you will have to remove the obs-stream-effects dll and data directories. For those using the installer, the installer should automatically handle removing the old files for you.
-
-
Hope this resolves this issue once and for all.
-
+
Hope this resolves this issue once and for all.
-
-
- Xaymar out.
-
-
\ No newline at end of file
+
- Xaymar out.
diff --git a/_posts/2019/2019-12-22-the-path-to-streamfx-0-8-0.html b/_posts/2019/2019-12-22-the-path-to-streamfx-0-8-0.html
index 7198959..52a65a2 100644
--- a/_posts/2019/2019-12-22-the-path-to-streamfx-0-8-0.html
+++ b/_posts/2019/2019-12-22-the-path-to-streamfx-0-8-0.html
@@ -1,129 +1,66 @@
---
title: 'The path to StreamFX 0.8.0'
category: Blog
-tags: ['StreamFX']
+tags: ['StreamFX', 'WordPress Archive']
---
-
-
-
Ensuring that Content Creators get a Crash-free StreamFX experience was a challenge. It took two years to get here, and now the plugin itself is likely more stable than OBS Studio itself. And with StreamFX 0.8.0 Alpha 1 (pre-release, not production ready) being available right now, everyone can enjoy it. But let's talk about what the past was, and what caused things to go wrong.
-
+
Ensuring that Content Creators get a Crash-free StreamFX experience was a challenge. It took two years to get here, and now the plugin itself is likely more stable than OBS Studio itself. And with StreamFX 0.8.0 Alpha 1 (pre-release, not production ready) being available right now, everyone can enjoy it. But let's talk about what the past was, and what caused things to go wrong.
-
-
-
+
Where It Went Wrong
-
-
Where It Went Wrong
-
+
In the early days StreamFX had very few features, which was enough for the time. The first version was relatively stable as it only dealt with very basic libOBS calls that can't really go wrong. Even after adding Blur and Shape Mask to the existing 3D Transform and Displacement Mapping effects, things still looked fine.
-
-
In the early days StreamFX had very few features, which was enough for the time. The first version was relatively stable as it only dealt with very basic libOBS calls that can't really go wrong. Even after adding Blur and Shape Mask to the existing 3D Transform and Displacement Mapping effects, things still looked fine.
-
+
And here is where it starts going downhill (or uphill if you think that is harder). At the time I deluded myself into thinking that nobody else was really using it, but reality was very different.
-
-
And here is where it starts going downhill (or uphill if you think that is harder). At the time I deluded myself into thinking that nobody else was really using it, but reality was very different.
-
+
Bugs Bugs Bugs
-
-
Bugs Bugs Bugs
-
+
The first wave of bugs was freezes, crashing, scene corruption, and general nonsense. I tried to work around it by wrapping large parts of the "gs" part of libOBS into wrapper classes to automatically handle lifetime.
-
-
The first wave of bugs was freezes, crashing, scene corruption, and general nonsense. I tried to work around it by wrapping large parts of the "gs" part of libOBS into wrapper classes to automatically handle lifetime.
But things were looking good, better than before. I still had new features to implement, but how bad can it really get?
-
-
But things were looking good, better than before. I still had new features to implement, but how bad can it really get?
-
+
A New Feature Appeared
-
-
A New Feature Appeared
-
+
A random thought passed my mind: "What if you could have the same source, but one has different filters on it?"
-
-
A random thought passed my mind: "What if you could have the same source, but one has different filters on it?"
-
+
That is how Source Mirror came to life, the current second most used part of StreamFX right after 3D Transform. It allows you to create a copy of a Source at near zero cost and add a completely different set of filters to it. Something that required complex Scene setups before was now possible with just a single Source.
-
-
That is how Source Mirror came to life, the current second most used part of StreamFX right after 3D Transform. It allows you to create a copy of a Source at near zero cost and add a completely different set of filters to it. Something that required complex Scene setups before was now possible with just a single Source.
-
+
Many users switched to it after seeing the potential, and it became a hit. So much that new bugs appeared every week, and the 0.4 release was followed by a 0.4.1 release, which was followed by a 0.4.2 release. That was two years ago in 2017, and the beginning of the downhill ride, or uphill battle.
-
-
Many users switched to it after seeing the potential, and it became a hit. So much that new bugs appeared every week, and the 0.4 release was followed by a 0.4.1 release, which was followed by a 0.4.2 release. That was two years ago in 2017, and the beginning of the downhill ride, or uphill battle.
-
+
One-Year Long Patch Cycle
-
-
One-Year Long Patch Cycle
-
+
While at the time I had work at a company which I shall not name, I also dealt with the AMD Encoder, and dealt with StreamFX. I tried my hand at adding Custom Shaders to StreamFX, which ended up very barebone and broken. But it was the first proof that this can actually be done - and at the time a completely new thing.
-
-
While at the time I had work at a company which I shall not name, I also dealt with the AMD Encoder, and dealt with StreamFX. I tried my hand at adding Custom Shaders to StreamFX, which ended up very barebone and broken. But it was the first proof that this can actually be done - and at the time a completely new thing.
-
+
This was released as 0.4.3 Preview 1 exclusively to Patrons (support my Projects and become a Patron today at Patreon) at the time. Some people liked the new Custom Shaders, some didn't, and others just ignored it. And later - after many fixes - 0.5.0 Preview 1 was released, which added support for Audio Mirroring to Source Mirror, allowing you to add audio effects to each copy.
-
-
This was released as 0.4.3 Preview 1 exclusively to Patrons (support my Projects and become a Patron today at Patreon) at the time. Some people liked the new Custom Shaders, some didn't, and others just ignored it. And later - after many fixes - 0.5.0 Preview 1 was released, which added support for Audio Mirroring to Source Mirror, allowing you to add audio effects to each copy.
When I finally recovered, it was around late September. I was refreshed, and got things done quickly, and dealt with lots of self-created issues.
-
-
When I finally recovered, it was around late September. I was refreshed, and got things done quickly, and dealt with lots of self-created issues.
-
+
Commence Operation Cleanup
-
-
Commence Operation Cleanup
-
+
Within a single month, I had accumulated more than 3000 lines of changes, all fixes or refactoring a design, even adding workarounds for shortcomings of the libOBS library (many of which still exist today). Blur got much faster, Signed Distance Field Shadows were added and Scene Mirroring was finally supported through a workaround for libOBS.
-
-
Within a single month, I had accumulated more than 3000 lines of changes, all fixes or refactoring a design, even adding workarounds for shortcomings of the libOBS library (many of which still exist today). Blur got much faster, Signed Distance Field Shadows were added and Scene Mirroring was finally supported through a workaround for libOBS.
-
+
The result of that was released as 0.5.0 Preview 2, again exclusively to Patrons at the time. It had been a full year since the last mostly stable build, and this one was released the day before christmas. It was a Christmas present like no other.
-
-
The result of that was released as 0.5.0 Preview 2, again exclusively to Patrons at the time. It had been a full year since the last mostly stable build, and this one was released the day before christmas. It was a Christmas present like no other.
-
+
And It Became Stable
-
-
And It Became Stable
-
+
Shortly after Christmas passed, I returned to coding. Bugs needed fixing, new features had to be implemented. In total it took around a full month, but the result was worth it and released as 0.5.0 Preview 3. While I had to remove Custom Shaders, hundreds of fixes and changes made it in and it also brought MipMapping to 3D Transform, which is still mostly the same code today.
-
-
Shortly after Christmas passed, I returned to coding. Bugs needed fixing, new features had to be implemented. In total it took around a full month, but the result was worth it and released as 0.5.0 Preview 3. While I had to remove Custom Shaders, hundreds of fixes and changes made it in and it also brought MipMapping to 3D Transform, which is still mostly the same code today.
-
+
And just one month after that, 0.5 was released - the next mostly stable version that was not a pre-release. It wasn't completely bug free, but it was getting there, with the remaining bugs were fixed in 0.5.1 and 0.5.2. And even more in 0.6, 0.6.1, 0.6.2 and 0.6.3 - which also added the ultra low impact Dual Filtering Gaussian Blur approximation.
-
-
And just one month after that, 0.5 was released - the next mostly stable version that was not a pre-release. It wasn't completely bug free, but it was getting there, with the remaining bugs were fixed in 0.5.1 and 0.5.2. And even more in 0.6, 0.6.1, 0.6.2 and 0.6.3 - which also added the ultra low impact Dual Filtering Gaussian Blur approximation.
-
+
I had a new idea, and I was pretty sure that the last released built was stable. And with my list of bugs to fix nearing the empty point, I finally could focus on adding new features again. While adding Glow and Outline to Signed Distance Field Effects was one of the features, it wasn't the primary feature for the next version.
-
-
I had a new idea, and I was pretty sure that the last released built was stable. And with my list of bugs to fix nearing the empty point, I finally could focus on adding new features again. While adding Glow and Outline to Signed Distance Field Effects was one of the features, it wasn't the primary feature for the next version.
-
+
If (!system.running()) system.change();
-
-
If (!system.running()) system.change();
-
+
That feature was actually Dynamic Mask, a simple filter that allows for very complex effects, with no limits to your creativity. It allowed you to mask any source using any other source or scene, adjusting the mask value per-channel - something that up to that point was impossible. Even the earliest implementation of it basically verified its reason to exist.
-
-
That feature was actually Dynamic Mask, a simple filter that allows for very complex effects, with no limits to your creativity. It allowed you to mask any source using any other source or scene, adjusting the mask value per-channel - something that up to that point was impossible. Even the earliest implementation of it basically verified its reason to exist.
-
+
When 0.7 released, I was not prepared for the creativity people had. At the time I was not fully aware of what I had just released into the world, but now I know that it can even be used as an alternative to Color Key and Chroma Key, which are both very awful in OBS Studio. But now I had no more features to implement, and no more bugs I knew how to fix.
-
-
When 0.7 released, I was not prepared for the creativity people had. At the time I was not fully aware of what I had just released into the world, but now I know that it can even be used as an alternative to Color Key and Chroma Key, which are both very awful in OBS Studio. But now I had no more features to implement, and no more bugs I knew how to fix.
-
+
By pure chance, a Content Creator complained to me about how awful the Color Correction and LUT system in OBS Studio is. And at the time I was toying around with DaVinci Resolve. A new idea sparked: A Color Grading filter that takes after professional video editing software, and allows for a live preview.
-
-
By pure chance, a Content Creator complained to me about how awful the Color Correction and LUT system in OBS Studio is. And at the time I was toying around with DaVinci Resolve. A new idea sparked: A Color Grading filter that takes after professional video editing software, and allows for a live preview.
-
-
-
-
This filter released in 0.7.1 as experimental, and has pretty much replaced every single Color Correction and LUT I had used up until that point. It was just that good to be able to see your changes live while editing them, not just after exporting. Just compare the two screenshots below to see the power this filter has.
-
+
This filter released in 0.7.1 as experimental, and has pretty much replaced every single Color Correction and LUT I had used up until that point. It was just that good to be able to see your changes live while editing them, not just after exporting. Just compare the two screenshots below to see the power this filter has.
@@ -139,43 +76,22 @@ tags: ['StreamFX']
-
-
Where We Are Now
-
+
Where We Are Now
-
-
And yet, 0.7.1 ended up as one of the most broken version of StreamFX to date. This actually carried over from 0.7 itself, but the addition of new things in 0.7.1 only made it worse. Crashes were happening left and right, scene collections got magically corrupted, and it was just in general not a good time.
-
+
And yet, 0.7.1 ended up as one of the most broken version of StreamFX to date. This actually carried over from 0.7 itself, but the addition of new things in 0.7.1 only made it worse. Crashes were happening left and right, scene collections got magically corrupted, and it was just in general not a good time.
-
-
My initial attempts at fixing these bugs didn't go too great, but they were working attempts. With 0.7.2 Beta most things returned to working, but other things broke - especially because once again there is broken behavior in libOBS. Despite my best intentions, people were being forced back onto 0.7.1, and I had to fix things.
-
+
My initial attempts at fixing these bugs didn't go too great, but they were working attempts. With 0.7.2 Beta most things returned to working, but other things broke - especially because once again there is broken behavior in libOBS. Despite my best intentions, people were being forced back onto 0.7.1, and I had to fix things.
-
-
That was the beginning of 0.8 Alpha 1, the most stable StreamFX release to date. Only half of the total commits between 0.7.2 to 0.8 Alpha 1 were actual fixes, but the fixes were really effective. The code was refactored without ensuring that things don't break temporarily, and in the end it worked out for the better.
-
+
That was the beginning of 0.8 Alpha 1, the most stable StreamFX release to date. Only half of the total commits between 0.7.2 to 0.8 Alpha 1 were actual fixes, but the fixes were really effective. The code was refactored without ensuring that things don't break temporarily, and in the end it worked out for the better.
-
-
And not only that, with 0.8 Alpha 1 the biggest creative feature Custom Shaders came back from the dead in a brand new design. While it is still incomplete, the new implementation is much more flexible and already has more features than all previous implementations. In addition, Color Grade is now feature complete and stable too.
-
+
And not only that, with 0.8 Alpha 1 the biggest creative feature Custom Shaders came back from the dead in a brand new design. While it is still incomplete, the new implementation is much more flexible and already has more features than all previous implementations. In addition, Color Grade is now feature complete and stable too.
-
-
It is an exciting time, and most importantly a time for a super stable StreamFX with all the features expected of it.
-
+
It is an exciting time, and most importantly a time for a super stable StreamFX with all the features expected of it.
-
-
Final Words
-
+
Final Words
-
-
The ride until now was bumpy, but it seems that things are finally going better. Crashes have mostly been resolved, rendering issues are getting less and less, and I'm running out of features to implement. The last and final feature that 0.8.0 will have is Custom Shader sources, filters and transitions, which opens up a whole lot of new creative options - all of which I'm looking forward to.
-
+
The ride until now was bumpy, but it seems that things are finally going better. Crashes have mostly been resolved, rendering issues are getting less and less, and I'm running out of features to implement. The last and final feature that 0.8.0 will have is Custom Shader sources, filters and transitions, which opens up a whole lot of new creative options - all of which I'm looking forward to.
-
-
And with that, I'm signing off.
-
+
And with that, I'm signing off.
-
-
- Xaymar out.
-
-
\ No newline at end of file
+
- Xaymar out.
diff --git a/_posts/2020/2020-01-12-a-second-life-for-my-threadripper-1950x.html b/_posts/2020/2020-01-12-a-second-life-for-my-threadripper-1950x.html
index 09f1f35..ec55bc4 100644
--- a/_posts/2020/2020-01-12-a-second-life-for-my-threadripper-1950x.html
+++ b/_posts/2020/2020-01-12-a-second-life-for-my-threadripper-1950x.html
@@ -1,99 +1,50 @@
---
title: 'A Second Life for my Threadripper 1950X'
category: Blog
+tags: [ "NAS", "Virtual Machine", "FreeNAS", "PLEX", "pfSense", "Pi-hole", "Debian", "QEMU", "KVM", "libvirt", 'WordPress Archive' ]
---
-
-
-
As my upgrade to an AMD Ryzen 9 3950X is finally complete, I had my old AMD ThreadRipper 1950X left over. While it wasn't the perfect gaming or compute CPU, it deserved to live on for pretty much solo-ing the entire workload I've given it up until now.
-
+
As my upgrade to an AMD Ryzen 9 3950X is finally complete, I had my old AMD ThreadRipper 1950X left over. While it wasn't the perfect gaming or compute CPU, it deserved to live on for pretty much solo-ing the entire workload I've given it up until now.
-
-
-
+
The Plan
+
I've always wanted a NAS and Home Theather system, and some friends recommended FreeNAS and PLEX to me. While I'm not happy with PLEX due to various completely abnormal reasons, it does work for streaming over the internet. The plan was simple: Run a Host OS with various virtual machines for several servers.
-
-
The Plan
-
+
Primarily I wanted FreeNAS and PLEX, but in the future I wanted to extend that to pfSense, PiHole and other services like game servers, like Minecraft, Space Engineers and other computationally expensive servers that I don't want to run on my gaming and editing system.
-
-
I've always wanted a NAS and Home Theather system, and some friends recommended FreeNAS and PLEX to me. While I'm not happy with PLEX due to various completely abnormal reasons, it does work for streaming over the internet. The plan was simple: Run a Host OS with various virtual machines for several servers.
-
+
In the end, I decided to split up the machine like this:
-
-
Primarily I wanted FreeNAS and PLEX, but in the future I wanted to extend that to pfSense, PiHole and other services like game servers, like Minecraft, Space Engineers and other computationally expensive servers that I don't want to run on my gaming and editing system.
-
+
FreeNAS and PLEX on NUMA #0 with 12GB RAM and 6/12 Cores/Threads. Eventually will have the KFA2 GTX 1650 Super passed in for transcoding purposes, if necessary.
pfSense on NUMA #1 with 4GB RAM and 2/4 Cores/Threads.
PiHole on NUMA #1 with 4GB RAM and 2/4 Cores/Threads.
-
-
In the end, I decided to split up the machine like this:
-
+
Setting up the Host
+
I've chosen Debian as the Host OS as I'm already familiar with it, and went with QEMU and libvirt for the Virtualization. I know how libvirt works to some degree, and dislike the one-click-setup things like Docker and Kubernetes where I have no control over what is actually being done.
-
-
FreeNAS and PLEX on NUMA #0 with 12GB RAM and 6/12 Cores/Threads. Eventually will have the KFA2 GTX 1650 Super passed in for transcoding purposes, if necessary.
pfSense on NUMA #1 with 4GB RAM and 2/4 Cores/Threads.
PiHole on NUMA #1 with 4GB RAM and 2/4 Cores/Threads.
All remaining space used as LVM for VMs down the road.
-
-
I've chosen Debian as the Host OS as I'm already familiar with it, and went with QEMU and libvirt for the Virtualization. I know how libvirt works to some degree, and dislike the one-click-setup things like Docker and Kubernetes where I have no control over what is actually being done.
-
+
Once the setup was done, it was time to set up networking. Since I wanted both 1gbit NICs to run in teaming mode, ideally one that gives me 2gbit available transfer rate total. 10gbit, 5gbit and 2.5gbit are still too expensive at the time, and thanks to systemd-networkd (never thought I'd write thanks to a systemd part) it was a breeze to get the two working together - and without any issues with my current switch either!
Once the setup was done, it was time to set up networking. Since I wanted both 1gbit NICs to run in teaming mode, ideally one that gives me 2gbit available transfer rate total. 10gbit, 5gbit and 2.5gbit are still too expensive at the time, and thanks to systemd-networkd (never thought I'd write thanks to a systemd part) it was a breeze to get the two working together - and without any issues with my current switch either!
-
+
Yay, we now have storage for the VM Operating Systems, and now it was time to set up virtualization on the machine.
-
-
And finally there was the LVM storage which is not initialized during the setup. Setting it up is as simple as running two commands, to be exact:
-
+
libVirt-ualization
+
Virtualization with libvirt and qemu is super easy, thanks to the extensive documentation on it that sometimes is confusing to read. I started with the usual, define the storage pool for ISO files for installation images, then define the storage pool for the VM's Operating System on the LVM volume group, then define a bridge type network for all VMs to use.
Yay, we now have storage for the VM Operating Systems, and now it was time to set up virtualization on the machine.
-
-
-
-
libVirt-ualization
-
-
-
-
Virtualization with libvirt and qemu is super easy, thanks to the extensive documentation on it that sometimes is confusing to read. I started with the usual, define the storage pool for ISO files for installation images, then define the storage pool for the VM's Operating System on the LVM volume group, then define a bridge type network for all VMs to use.
Networking took a few tries, but I ended up with this which worked well enough and allows VMs to use the full 1gbit of the host port at near zero cost:
-
+
Networking took a few tries, but I ended up with this which worked well enough and allows VMs to use the full 1gbit of the host port at near zero cost:
So with that done, what's left is the Virtual Machines themselves. Since this is getting a bit longer than expected, I've split this up into two separate posts. You can find the second post using the Next Post button below (if it has already been published).
-
-
\ No newline at end of file
+
So with that done, what's left is the Virtual Machines themselves. Since this is getting a bit longer than expected, I've split this up into two separate posts. You can find the second post using the Next Post button below (if it has already been published).
diff --git a/_posts/2020/2020-01-19-a-second-life-for-my-threadripper-1950x-part-2.html b/_posts/2020/2020-01-19-a-second-life-for-my-threadripper-1950x-part-2.html
index 0453ffe..2c1332a 100644
--- a/_posts/2020/2020-01-19-a-second-life-for-my-threadripper-1950x-part-2.html
+++ b/_posts/2020/2020-01-19-a-second-life-for-my-threadripper-1950x-part-2.html
@@ -1,78 +1,39 @@
---
title: 'A Second Life for my ThreadRipper 1950X (Part 2)'
category: Blog
+tags: [pfSense, PLEX, "Pi-hole", "FreeNAS", "KVM", "libvirt", "Virtual Machine", "VM", 'WordPress Archive']
---
-
Virtualization with QEMU and libvirt is super easy, if you know what you're doing. And if you don't, there's management tools that make your life easier (but aren't exactly bug free). In my case, I've already had experience with writing XML files for libvirt, and none of the management tools would work from console (aside from libvirt itself).
-
-
Virtualization with QEMU and libvirt is super easy, if you know what you're doing. And if you don't, there's management tools that make your life easier (but aren't exactly bug free). In my case, I've already had experience with writing XML files for libvirt, and none of the management tools would work from console (aside from libvirt itself).
-
+
Setting up the FreeNAS+PLEX VM was hindered by many problems, but the biggest one was the Graphics device. For an unknown reason, libvirt defaults to a cirrus device, which not many Linux distros still support. In fact, FreeNAS doesn't support it at all and tries to create a graphics interface even when you tell it to boot in serial console mode - which is kinda stupid, but who am I to complain about free software?
-
-
Setting up the FreeNAS+PLEX VM was hindered by many problems, but the biggest one was the Graphics device. For an unknown reason, libvirt defaults to a cirrus device, which not many Linux distros still support. In fact, FreeNAS doesn't support it at all and tries to create a graphics interface even when you tell it to boot in serial console mode - which is kinda stupid, but who am I to complain about free software?
-
+
Fixing it was easy, just switch it with the much more modern qxl driver and done. After that the machine booted, but I still had things to do: Storage. FreeNAS requires that it is installed on a separate disk than the storage it is supposed to use for NAS storage - and that's where the 5th partition on the NVMe comes in.
-
-
Fixing it was easy, just switch it with the much more modern qxl driver and done. After that the machine booted, but I still had things to do: Storage. FreeNAS requires that it is installed on a separate disk than the storage it is supposed to use for NAS storage - and that's where the 5th partition on the NVMe comes in.
-
+
In short, I needed a small enough partition to hold FreeNAS, but not too small. I decided on 4GiB, which should be enough to hold FreeNAS and any configuration files it would create. Creating the storage was simply running virsh vol-create-as --pool storage --name freenas --capacity 4G --allocation 4G --format raw. As you might have guessed, that created a raw volume which outperforms all other storage formats, at the cost of not having any snapshots.
-
-
In short, I needed a small enough partition to hold FreeNAS, but not too small. I decided on 4GiB, which should be enough to hold FreeNAS and any configuration files it would create. Creating the storage was simply running virsh vol-create-as --pool storage --name freenas --capacity 4G --allocation 4G --format raw. As you might have guessed, that created a raw volume which outperforms all other storage formats, at the cost of not having any snapshots.
-
+
And I had some spare 2TB drives lying around from the time I had HDDs in my main PC, those were perfect for NAS - they were a bit louder, but they did still do the job fine. Thankfully Linux supports device names, so I passed them in directly using the device serial number instead of relying on fragile, connection based addressing.
-
-
And I had some spare 2TB drives lying around from the time I had HDDs in my main PC, those were perfect for NAS - they were a bit louder, but they did still do the job fine. Thankfully Linux supports device names, so I passed them in directly using the device serial number instead of relying on fragile, connection based addressing.
-
+
Setting up FreeNAS and PLEX
-
-
Setting up FreeNAS and PLEX
-
+
Installing FreeNAS is very easy, most of it ended up being automated. I only had to point it at the drive it was supposed to use as storage, and that was it. Well I also had to tell with which network Gateway and DNS to use, as it refused to gather those from DHCP, but that's probably something in my own network causing it.
-
-
Installing FreeNAS is very easy, most of it ended up being automated. I only had to point it at the drive it was supposed to use as storage, and that was it. Well I also had to tell with which network Gateway and DNS to use, as it refused to gather those from DHCP, but that's probably something in my own network causing it.
-
+
Surprisingly that is where the easy things stopped. The FreeNAS web interface is anything but a shallow learning curve, and I repeatedly end up having to figure out how to do things in an unfamiliar environment. But in the end I did get it running. The first task is to specify at least one user group to which you want to assign people to.
-
-
Surprisingly that is where the easy things stopped. The FreeNAS web interface is anything but a shallow learning curve, and I repeatedly end up having to figure out how to do things in an unfamiliar environment. But in the end I did get it running. The first task is to specify at least one user group to which you want to assign people to.
-
+
For the groups I used 'users' (anyone under 18) and 'adult-users' (anyone over or exactly 18). This allows me to split the user base between trusted and untrusted users. Next up was to define my own user, which I added to both users and adult-users, and finally it was time to define the actual storage space. FreeNAS defaults to either RAID 5 or RAID 6 (not exactly sure which), which meant my 3 2TB HDDs would end up as around 4TB total.
-
-
For the groups I used 'users' (anyone under 18) and 'adult-users' (anyone over or exactly 18). This allows me to split the user base between trusted and untrusted users. Next up was to define my own user, which I added to both users and adult-users, and finally it was time to define the actual storage space. FreeNAS defaults to either RAID 5 or RAID 6 (not exactly sure which), which meant my 3 2TB HDDs would end up as around 4TB total.
-
+
As I prefer my important network accessible storage to not just simply disappear one day, I went with that over a striped RAID - even though I still have not had a single Seagate HDD die on me, I wasn't about to tempt fate. After all, anything that can go wrong will go wrong, and anyone claiming the opposite should probably not have the job they have right now.
-
-
As I prefer my important network accessible storage to not just simply disappear one day, I went with that over a striped RAID - even though I still have not had a single Seagate HDD die on me, I wasn't about to tempt fate. After all, anything that can go wrong will go wrong, and anyone claiming the opposite should probably not have the job they have right now.
-
+
Finally there was setting up the SAMBA share. This was super easy thanks to the Web interface, and the only issue I had was that I forgot to set the group correctly. Once that was fixed, I finally had network accessible storage, at a much cheaper price than I would have to pay for any of the proprietary providers like Google, DropBox and similar. And surprisingly installing PLEX was just clicking install on a plugin and then waiting a few hours for the progress bar to move from 50%. All done!
-
-
Finally there was setting up the SAMBA share. This was super easy thanks to the Web interface, and the only issue I had was that I forgot to set the group correctly. Once that was fixed, I finally had network accessible storage, at a much cheaper price than I would have to pay for any of the proprietary providers like Google, DropBox and similar. And surprisingly installing PLEX was just clicking install on a plugin and then waiting a few hours for the progress bar to move from 50%. All done!
-
+
pfSense and and PiHole
-
-
pfSense and and PiHole
-
+
I ended up not going with these two for now, as PLEX+FreeNAS ended up eating a huge chunk of network bandwidth. And I also couldn't figure out how to get my Router to not act as a DHCP server yet, so I'm leaving that for a future post.
-
-
I ended up not going with these two for now, as PLEX+FreeNAS ended up eating a huge chunk of network bandwidth. And I also couldn't figure out how to get my Router to not act as a DHCP server yet, so I'm leaving that for a future post.
-
+
But with this I finally had a way to get rid of around 1.1 TB of static data on my PC. Especially important documents wandered from my Google Drive to my NAS storage as I needed them to be accessible on any device in my home network. With that said, this mini-series ends.
-
-
But with this I finally had a way to get rid of around 1.1 TB of static data on my PC. Especially important documents wandered from my Google Drive to my NAS storage as I needed them to be accessible on any device in my home network. With that said, this mini-series ends.
-
-
-
-
- Xaymar out.
-
-
\ No newline at end of file
+
- Xaymar out.
diff --git a/_posts/2020/2020-01-23-stepping-down-as-the-maintainer-for-the-amd-encoder-plugin.html b/_posts/2020/2020-01-23-stepping-down-as-the-maintainer-for-the-amd-encoder-plugin.html
index 157d4f6..3a62639 100644
--- a/_posts/2020/2020-01-23-stepping-down-as-the-maintainer-for-the-amd-encoder-plugin.html
+++ b/_posts/2020/2020-01-23-stepping-down-as-the-maintainer-for-the-amd-encoder-plugin.html
@@ -2,6 +2,7 @@
title: 'Stepping Down as the Maintainer for the AMD Encoder Plugin'
category: Blog
tags: [AMD, AMF, OBS]
+unpublished: true
---
\ No newline at end of file
+
diff --git a/_posts/2020/2020-02-04-a-now-playing-overlay-using-last-fm.html b/_posts/2020/2020-02-04-a-now-playing-overlay-using-last-fm.html
index 8744a6c..52f5244 100644
--- a/_posts/2020/2020-02-04-a-now-playing-overlay-using-last-fm.html
+++ b/_posts/2020/2020-02-04-a-now-playing-overlay-using-last-fm.html
@@ -1,87 +1,49 @@
---
title: 'A "Now Playing" Overlay using Last.FM'
category: Blog
-tags: [OBS, Last.FM, AIMP, Spotify]
+tags: [OBS, Last.FM, AIMP, Spotify, 'WordPress Archive']
---
-
-
-
I wanted to upgrade my streaming setup slightly, and while watching other streamers, I noticed that some have added a "Now Playing" overlay. For the most part it's either embedded in a static overlay as text, or just free floating text. But that isn't enough for me.
-
+
I wanted to upgrade my streaming setup slightly, and while watching other streamers, I noticed that some have added a "Now Playing" overlay. For the most part it's either embedded in a static overlay as text, or just free floating text. But that isn't enough for me.
Last.FM Now Playing Overlay
-
-
-
-
The biggest difference to the usual "Now Playing" overlays is that it is animated. Instead of simply changing text, it slides out when no song is playing, slides in when a song starts playing, and flips to reveal a track change. Not only that, but it also shows track art if there is any. Just take a look at it in action to see what it can do:
-
+
The biggest difference to the usual "Now Playing" overlays is that it is animated. Instead of simply changing text, it slides out when no song is playing, slides in when a song starts playing, and flips to reveal a track change. Not only that, but it also shows track art if there is any. Just take a look at it in action to see what it can do:
The "Now Playing" overlay in action.
-
-
To support most streaming software (and drastically reduce the work I had to do), I compressed it to a single HTML file that contains the necessary CSS and JavaScript. This also enables you to just download it, but keep it mind that you will not receive any future updates if you do so. You can also customize the style completely by either using the CSS override function that your streaming software provides, or by editing the HTML file.
-
+
To support most streaming software (and drastically reduce the work I had to do), I compressed it to a single HTML file that contains the necessary CSS and JavaScript. This also enables you to just download it, but keep it mind that you will not receive any future updates if you do so. You can also customize the style completely by either using the CSS override function that your streaming software provides, or by editing the HTML file.
-
-
And did I mention that it is completely free, has no tracking, and no ads? The only requirement is a Last.FM compatible player, a Last.FM account and a streaming software with browser integration.
-
+
And did I mention that it is completely free, has no tracking, and no ads? The only requirement is a Last.FM compatible player, a Last.FM account and a streaming software with browser integration.
-
-
Setting It Up
-
+
Setting It Up
-
-
If you don't already have a Last.FM account sign up for one and then link it to whatever player you want to use (for example: Spotify). Then all you need is to create a browser instance in your streaming software, and point it at the following URL:
-
+
If you don't already have a Last.FM account sign up for one and then link it to whatever player you want to use (for example: Spotify). Then all you need is to create a browser instance in your streaming software, and point it at the following URL:
(Make sure that you replace <YOUR_LASTFM_USERNAME> with your actual Last.FM username.)
-
+
(Make sure that you replace <YOUR_LASTFM_USERNAME> with your actual Last.FM username.)
-
-
The overlay was designed for a vertical size of 128px and will automatically scale the content to fit using the 'zoom' property. A horizontal resolution of 1024px is recommended, but you can reduce that by also reducing the height, or customizing the CSS.
-
+
The overlay was designed for a vertical size of 128px and will automatically scale the content to fit using the 'zoom' property. A horizontal resolution of 1024px is recommended, but you can reduce that by also reducing the height, or customizing the CSS.
-
-
Customization
-
+
Customization
-
-
As the entire thing is a HTML page, you can easily change the design of the overlay. Here are the CSS classes you can modify to customize the style:
-
+
As the entire thing is a HTML page, you can easily change the design of the overlay. Here are the CSS classes you can modify to customize the style:
-
-
.info Container for the track information.
.logo Logo or Album Art for the track.
.artist Artist name for the track.
.title Title of the track.
.separator The en-dash separator.
.slide_in Slide in animation.
.slide_out Slide out animation.
.flip The flip animation, must be 500ms, and data change happens at 200ms. Ideally also contains the slide_in animation data.
-
+
.info Container for the track information.
.logo Logo or Album Art for the track.
.artist Artist name for the track.
.title Title of the track.
.separator The en-dash separator.
.slide_in Slide in animation.
.slide_out Slide out animation.
.flip The flip animation, must be 500ms, and data change happens at 200ms. Ideally also contains the slide_in animation data.
-
-
Note that the CSS modifying hooks that OBS Studio and Streamlabs OBS provide run after all other JavaScript code has run, so you can't override the zoom with that. In the case that you want to change the sizes of elements beyond what is already there, consider downloading it and modifying the source files.
-
+
Note that the CSS modifying hooks that OBS Studio and Streamlabs OBS provide run after all other JavaScript code has run, so you can't override the zoom with that. In the case that you want to change the sizes of elements beyond what is already there, consider downloading it and modifying the source files.
-
-
Final Words
-
+
Final Words
-
-
Before I leave you to your new overlay, there are some problems with this implementation. It relies on Last.FM, which means that you have to share data with yet another company, and it needs a Browser, which means that the CPU and GPU load is higher than it would be with a native plugin. Additionally there's also the problem that Last.FM may only have partial or no data about a song and the overlay will stop working as expected temporarily.
-
+
Before I leave you to your new overlay, there are some problems with this implementation. It relies on Last.FM, which means that you have to share data with yet another company, and it needs a Browser, which means that the CPU and GPU load is higher than it would be with a native plugin. Additionally there's also the problem that Last.FM may only have partial or no data about a song and the overlay will stop working as expected temporarily.
-
-
But for my use case, which is Spotify and AIMP, this is more than enough. It removes the need to use partially or completely broken Twitch extensions (does Twitch ever check and remove broken extensions?), and allows viewers to easily see which track is currently playing.
-
+
But for my use case, which is Spotify and AIMP, this is more than enough. It removes the need to use partially or completely broken Twitch extensions (does Twitch ever check and remove broken extensions?), and allows viewers to easily see which track is currently playing.
With StreamFX 0.8.0 being almost right on the doorstep of a stable release, I want to take a moment and guide you through everything that has changed since version 0.7.2. After all, who wants to upgrade to something they don't know anything about?
+
+
Stability & Performance Improvements
+
+
For those that have frequent issues with StreamFX, the 0.8.0 release will have a massive impact. Almost the entire codebase was refactored into safer, stabler code which also massively reduced the crashes that can happen. A lot of the crashes resulted from simple errors that are automatically resolved by the new code. The newly refactored code also ended up being slightly faster than the old code, which will benefit users on weaker CPUs and free up additional resources.
+
+
Overall, the refactor solved almost every currently known bug or crash, and has even revealed possible crashes that weren't reported until then. StreamFX 0.8.0 is now almost 100% crash free, which is something I could not claim about any of the older versions.
+
+
Custom Shaders Are Back
+
+
If you're already familiar with the Shaderfilter plugin, you can likely guess what these are. If not, it is really simple to explain: These allow you to load any HLSL file straight into OBS Studio and use it as a Filter, Source or Transition - and it even generates a human readable interface for you! So you can now create (or commission someone to create) HLSL sources, filters and transitions for your stream to customize it past what anyone has done before.
The current implementation allows you to do any effect that does not require extra textures, as these are not yet supported. A future update will hopefully be able add support for textures, including FFTs for source audio, so that you can create even more impressive shaders. What exactly is possible still remains to be seen, as I've hit various limitations of the OBS Studio effect parser, including undiscovered crashes in OBS.
+
+
Now Available: FFmpeg Encoders
+
+
After announcing that the FFmpeg Encoders plugin was going to be merged into StreamFX, it still took a long time until they were actually ready. Now with StreamFX 0.8.0 they will finally be ready for use again, in a much more stable and improved way than before.
+
+
Both Nvidia NVENC encoders have received a small overhaul which now allows for the use of the Target Quality rate control mode, which mimics x264's CRF behavior. While not as perfect as x264 CRF is, it certainly gets there in most cases, especially on Turing hardware.
+
+
Mirror mirror in my OBS...
+
+
Source Mirror has always been one of the primary use cases of StreamFX for many people, as it allowed you to duplicate a full audio stream and filter it again. And now Source Mirror is even faster and better at mirroring audio - however it lost the ability to rescale the video mirror.
+
+
Upcoming Things
+
+
I've been working on a new filter with Nvidia for a while, which is still in early stages. It is currently in the experimental phase, which means that much more work is required for a stable integration, but the current integration works. The filter will be available once Nvidia releases the runtime for it to the generic public, however I can't say much about when that is going to be.
+
+
And that is all for now - more may come in the future, but at the moment I can't guarantee it. If you consider StreamFX to be useful to your setup and would like to see it continuously updated, consider supporting me on on Patreon or on Github Sponsors! Even a support of just one dollar per month means a lot, and if everyone that uses StreamFX would support me on either platform, I could spend a lot more time working on plugin.
diff --git a/_posts/2020/2020-04-04-how-to-use-the-new-nvidia-face-tracking-filter-in-streamfx.html b/_posts/2020/2020-04-04-how-to-use-the-new-nvidia-face-tracking-filter-in-streamfx.html
new file mode 100644
index 0000000..ff99918
--- /dev/null
+++ b/_posts/2020/2020-04-04-how-to-use-the-new-nvidia-face-tracking-filter-in-streamfx.html
@@ -0,0 +1,41 @@
+---
+title: How to use the new Nvidia Face Tracking Filter in StreamFX
+category: News
+tags: [Tutorial, StreamFX, 'WordPress Archive']
+---
+
+
A short while ago I teased a new filter live on stream, and now that the Nvidia counterpart for it is publicly released I can finally go into more detail on what it does, why it is useful, and how you too can now use it on your Nvidia GeForce RTX hardware.
+
+
What does the Filter do?
+
+
In simple terms it keeps the Region of Interest always close to the center of the frame, which is usually the face of a content creator. Cropping and zoom is handled automatically and adjusted live while you move around. Get closer to the camera and it zooms out, go further away and it zooms in. Just compare the images below to see what it can do automatically:
+
+
Without Nvidia Face Tracking Filter
With Nvidia Face Tracking Filter
+
+
Effectively this filter simulates what it's like to have a professional camera operator following you on stage, always following where the action currently is. And the best thing is: it's free, and available now!
+
+
Why would I need this?
+
+
If you like moving around a lot, a manually cropped area only gets you so far. It's very restrictive, as you have a predetermined region of interest, and adjusting it takes a while to do. And that's exactly where this filter comes in.
+
+Nvidia Face Tracking Filter at work on a Logitech Brio 4K
+
+
In this video I've moved through the entire horizontal field of view, which I could not have done with a manually cropped region. Thanks to the new Filter the region of interest was almost always in the center. And of course, like with everything that I do, it can be fully customized to your personal needs. Whether you want it fully zoomed in to something or just slightly further away is entirely up to you. If you wanted you could even create this meme on the press of a button.
+
+
So how can I use it?
+
+
You'll need the latest OBS Studio, the latest version of the StreamFX plugin, any Nvidia GeForce RTX graphics card, and Windows. If you don't yet have StreamFX installed, you can easily install it by either following the official installation guide on YouTube, or following the text guide on the Wiki. If the plugin does not load, you will also have to install the most recent Microsoft Visual C++ 2015/2017/2019 Redistributables, which you can download directly from Microsoft.
+
+
Once you have both OBS Studio and StreamFX set up, it's time to install the Nvidia AR SDK Redistributables here. These are required for the filter to show up at all, and if they are not installed properly, or there was a problem during install, you will not be able to use it. Hopefully you now have everything set up.
+
+
Now once you start (or restart) OBS Studio, a new filter should be available for you to choose on video sources called "Nvidia Face Tracking". Add this to your Video Capture source, and it should start its work immediately. Which leaves you with the final step, customizing the configuration. While the default values , chances are that you have a different camera, or have even gone the route of using an Elgato CamLink with a proper DSLR.
+
+
The options are very simple: Stability controls how fast it should respond to changes (lower values respond faster but are more unstable), Zoom controls the maximum zoom relative to the "full frame" zoom level, and Offset controls the relative offset to the detected region of interest. The default values are targeted at the Logitech Brio 4k with the Field of View set to 90°, so you should adjust the values for your needs and camera of choice.
+
+Settings for the Nvidia Face Tracking Filter
+
+
Anything else?
+
+
And that makes up the gist of it. The filter itself is currently still experimental, but I'm working on optimizing it further so that it can be used at higher camera resolutions and also while playing GPU intensive games. At the current time it works great for variety streamers and dual PC content creators, so stay tuned for future updates!
+
+
Until then, have a nice week!
diff --git a/_posts/2020/2020-04-22-rtx-voice-in-my-vst-compatible-audio-software-its-more-likely-than-you-think.html b/_posts/2020/2020-04-22-rtx-voice-in-my-vst-compatible-audio-software-its-more-likely-than-you-think.html
new file mode 100644
index 0000000..30b3107
--- /dev/null
+++ b/_posts/2020/2020-04-22-rtx-voice-in-my-vst-compatible-audio-software-its-more-likely-than-you-think.html
@@ -0,0 +1,11 @@
+---
+title: RTX Voice in my VST-compatible Audio Software? It's more likely than you think!
+category: News
+tags: [VoiceFX, NVIDIA, "RTX Broadcast", "RTX Voice", 'WordPress Archive']
+---
+
+
I'm currently trying to integrate it as a VST, though progress on this may be slow due to actual work, and StreamFX having priority. But once I have a working version it will be available for free for any Patreon, Github and Twitch supporter - or available for a one-time fee of 60 EUR.
+
+
I'll make another post once it is ready.
diff --git a/_posts/2020/2020-04-26-optimizing-streamfx-in-your-obs-scenes.html b/_posts/2020/2020-04-26-optimizing-streamfx-in-your-obs-scenes.html
new file mode 100644
index 0000000..1c58a4e
--- /dev/null
+++ b/_posts/2020/2020-04-26-optimizing-streamfx-in-your-obs-scenes.html
@@ -0,0 +1,73 @@
+---
+title: Optimizing StreamFX in your OBS Scenes
+category: Blog
+tags: [Tutorial, StreamFX, 'WordPress Archive']
+---
+
+
Performance is important, and even more so in live streaming. Every streamer and content creator absolutely hates it to see the FPS number dip below the configured number - especially if it is a far drop below. But what can you actually do against that as a streamer or content creator?
+
+
First I'll prefix all of this by saying that this is by no means a complete guide. It is completely based on performance profiling I've done on my own systems, which all vary in hardware but saw the same improvement after applying the fixes. These are not guaranteed to solve all issues, but they will help reduce issues - and perhaps even allow an old laptop to stream at 60 FPS.
+
+
All of the measurements from here on out were done with NVIDIA Nsight Graphics and mostly were done on the following Hardware configurations: AMD Ryzen 9 3950X with a NVIDIA GeForce RTX 2080 Ti, AMD Ryzen 7 3600 with a NVIDIA GeForce GTX 1650 Super, Intel i5-7300HQ with a NVIDIA GeForce GTX 1050 Ti, and Intel i5-4690 with an GTX 1650 Super.
+
+
So let's get started with optimizing your setup!
+
+
Blur and the common Pitfalls
+
+
The Blur filter is a relatively simple case and one of the most common pitfalls as well. Solving many of the performance problems that comes from using it is also super easy and can be done in less than 30 minutes - so what are they?
+
+
Blur Masking vs Cropping
+
+
The biggest case for performance problems is apply a Blur filter to the entirety of the source, without applying a Crop/Pad filter first, and then relying on the Masking option to do it for you. The problem with this is that Masking runs after the blur happens, not before - it can't reduce work that was already done.
+
+
When all you want to do is blur a small part of the screen, applying a blur filter to the entire thing is super wasteful. An alternative to this is to duplicate the source using Source Mirror, then apply a Crop/Pad filter, and then apply the Blur. This reduces the impact of blurring by a lot.
+
+
Note that applying a Crop/Pad after the Blur also acts the same as Masking does. The same applies to the cropping provided by the scene editor.
+
+
Wrong Blur Types for Large Size Blurs
+
+
But what if you do want to blur everything? In that case the above doesn't help you, but you can help yourself in another way. Often there are more optimized variants of a blur available, which may reduce the impact by half or even more.
+
+
For example you can completely replace a Gaussian Area Blur with a Dual-Filtering Blur and the latter will be significantly faster. Just look at this table to see replacements that work up to 5 times faster on any hardware:
+
+
Original Blur
Replacement Blur
Up to x% faster
Box Area Blur Box Directional Blur
Box Linear Area Blur Box Linear Directional Blur
~200%
Gaussian Area Blur
Dual-Filtering Blur
~500%
Gaussian Area Blur Gaussian Directional Blur
Gaussian Linear Area Blur Gaussian Linear Directional Blur (Not identical to Gaussian Blur)
~200%
Possible replacement blurs that take siginificantly less CPU and GPU time.
+
+
Full Resolution Blurring is Wasteful
+
+
The final optimization you can do for your blurs is to scale the input to them down. This is a trick that Games and Web Browsers have been doing for years in order to do shadows, glows, and similar blur based effects in real time. As an example, let's start with a 2560x1440 source that you want to blur with a 64px wide Box Area blur.
+
+
This is super expensive to do - even on modern hardware - and that's never good for reaching a specific framerate target. But there's something we can do: Downscaling! By putting a Scaling/Aspect Ratio filter before the Blur filter, setting it's Scale Filtering to Bilinear and the size to 1280x720 (exactly 50% of the original) we can now reduce the blur size to just 32px.
+
+
This can be repeated until you're no longer happy with the blur quality - in my case I stop this at around 8px width. By doing this we can approach the time savings that Dual-Filtering allows us to do with any of the Area or Directional Blurs - as long as the direction is aligned with the pixel grid.
+
+
Real-Time Shader Optimizations
+
+
Shaders are one of the features in StreamFX that allow you to do so much cool stuff - and at the same time mess everything up. The following is a list of things you should do:
+
+
Avoid the use of integers unless absolutely necessary. Integers have a significant overhead in pixel and vertex shaders, and you should always opt for floats instead. While the math might end up slightly more complicated, it will run faster than integer math.
Prefer unsigned integers over signed integers. Unsigned integers have a smaller overhead than signed integers, but they are still on the list of things to avoid using. If you don't need an integer value to be less than zero, use uint!
Manually unroll loops. Automatic unrolling often produces functional but inefficient code, which can be avoided by manually unrolling. In the ideal case put the content of the loop into an inline bool myfunction(...params...) {...code...} function which returns true if the loop should be interrupted - allows for easy unrolling.
Render at a lower resolution. Not many shaders actually need to be rendering at 100% of the parents resolution - many actually look perfectly fine at 75% or even 50%. Some can even look nearly identical at 25% - experiment with this to see what works for you.
Group mathematical operations by what they do. Multiply next to multiply operations, additions next to additions, subtractions next to subtractions. This helps the shader transpiler generate more efficient code, and can bring performance boosts of up to 10%.
Avoid excessive use of if, for and while. Ideally you want your arguments to be known at the time of compiling, but that is not always possible. So in those cases you should keep your branching to the minimum possible - either by manually unrolling loops or by adding techniques to select features.
Don't calculate everything in the pixel shader. Not all calculations need to be done in the pixel shader, for example calculating UVs in the vertex shader and directly using that value as an input to a texture sampling command allows the compiler to optimize the sample to a better location. This can get you around 20% extra performance.
+
+
Other Improvements
+
+
Update OBS Studio and StreamFX often!
+
+
Many of the performance problems that get reported often come from using outdated or even ancient versions of OBS Studio and the plugin. Updating to a more recent version of both usually instantly resolves these due to newer versions having received more optimizations.
+
+
Reduce SDF Effects Texture Size
+
+
Dynamic generation of Signed Distance Fields (furthermore called SDF) is incredibly expensive, with a single SDF Effects filter on a 512x512 source taking as much resources as a Box Area Blur at 64px width. The impact of it though can be reduced by checking the Advanced Options property and then reducing the SDF Texture Scale.
+
+
Most sources look fine with the SDF texture scale set at 12.5%, others might need a little more, but almost nothing actually requires a 100% sized SDF texture. Which scale setting you end up using is up to you, but beware of scaling artifacts.
+
+
Avoid duplicating Sources
+
+
While this is technically advice for anyone using OBS Studio, it also applies to StreamFX. Many of your filter graphs will probably have some overlapping elements, and you can drastically reduce the rendering impact by reusing results.
+
+
For example if you have a Video Capture Device source with Chroma/Color Key and Color Grading, and want to have two different filters going from there, it is a better option to use Source Mirror to mirror the source. Especially for costly filters, such as Blur and SDF Effects, this is a very efficient way to solve a performance problem.
+
+
Anything else?
+
+
And that's it. When you apply all the fixes mentioned here you should see a decrease in GPU usage, which for some may be massive, while for others it might be very small. But even a small GPU usage decrease can allow you to hit a slightly higher framerate target. Maybe with this you'll be able to go from 30 to 60 fps, or go from 720p to 1080p.
+
+
In my case switching out a few of the blurs with Dual-Filtering allowed me to record and stream at 1440p144 instead of 1440p30, which means that I've more than tripled the available GPU time just with a single fix.
+
+
So what are you waiting for? Delve into your scene setup and look for things that you can optimize!
diff --git a/_posts/2020/2020-06-13-is-a-48khz-sample-rate-truly-enough-for-audio.html b/_posts/2020/2020-06-13-is-a-48khz-sample-rate-truly-enough-for-audio.html
new file mode 100644
index 0000000..97c6681
--- /dev/null
+++ b/_posts/2020/2020-06-13-is-a-48khz-sample-rate-truly-enough-for-audio.html
@@ -0,0 +1,186 @@
+---
+title: Is a 48kHz sample rate truly enough for Audio?
+category: Blog
+tags: ["Audio", "DAC", "ADC", 'WordPress Archive']
+unpublished: true
+---
+
+
+
Ever since the day that we've been able to push sample rate higher than 44.1kHz, this question has appeared: What is the best sample rate for Audio, and can you actually hear the difference between 48kHz and 96kHz (or higher) sample rates?
+
+
+
+
Before we get into this, note that I am not an audio engineer, or a scientist. I am a software developer, who is often too curious for his own good, resulting in weird new projects - like StreamFX. So take this with a grain of salt, and if you know better, do feel free to contact me!
+
+
+
+
+
+
+
+
This test is based on my own frequency visualizer tool available here. All tests are based on the humanly audible range of 20 Hz to 20kHz (for a healthy young adult). These tests do not take into account inaccuracies caused by the physical properties of the D/A or A/D converters, speakers and microphones.
+
+
+
+
Update: Information for supersampling D/A and A/D converters has been added to the entry. Please see the conclusion page for more information.
+
+
+
+
When does 48kHz run into problems?
+
+
+
+
The most common case is the conversion from Digital to Analog - without it we would not be able to hear any audio at all. Let's take a look at a few common frequencies: 32 Hz, 64 Hz, 128 Hz, 256 Hz, 512 Hz, 1024 Hz, 2048 Hz, 4096 Hz, 8192 Hz, and finally 16384 Hz.
+
+
+
+
32, 64 and 128 Hz on 48kHz DAC
256, 512 and 1024 Hz on 48kHz DAC
2048, 4096 and 8192 Hz on 48kHz DAC
4096, 8192 and 16384 Hz on 48kHz DAC
+
+
+
+
Looking at the generated graphs, we can immediately tell that anything equal to or below 2048 Hz will be perfectly fine on 48kHz. We can also tell that somewhere between 2048 and 4096 Hz we will start seeing slight artifacts, and that everything above that unknown value will have ever stronger artifacts - In fact we can see the strong artifacts appear on 8192 Hz already.
+
+
+
+
And at 16384 Hz we might as well just throw in the towel as there is basically no way to create the original wave with current hardware. Even the most accurate DAC will struggle to recreate the wave properly, and overshoot and undershoot constantly, corrupting the wave past recovery. While it is possible to work around the issue, it won't be gone.
+
+
+
+
Knowing this we can tell that for the majority of audible frequencies, we'll be safe with 48kHz. But so far we've only looked at 2^n frequencies - what about other frequencies that end up in a pretty bad shape at this sample rate?
+
+
+
+
The Broken Frequencies in 48kHz
+
+
+
+
Since we can safely say that any frequency up to 4096 kHz works "fine", let's take a look at the frequencies above them. For example, how about we look at integer divisions of 48 kHz and variations of them, such as 19.2 kHz, 16 kHz, 12 kHz, 9.6 kHz, 8 kHz, 6 kHz and 4.8 kHz.
+
+
+
+
19.2 kHz (Sample #1)
19.2 kHz (Sample #2)
16 kHz (Sample #1)
16 kHz (Sample #2)
+
+
+
+
At 19.2 kHz and 16 kHz, we have by far the worst artifacts. It's not even possible to call these waves anymore, they are just random noise now. Not much of the original wave is left, but we can still guess that it used to be a wave of some type. In the second sample which is slightly offset by time, we can see even worse effects for both frequencies.
+
+
+
+
12kHz (Sample #1)
12kHz (Sample #2)
9.6kHz (Sample #1)
9.6kHz (Sample #2)
+
+
+
+
Continuing on with 12kHz and 9.6kHz, we can see similar results depending on just how the time offset is adjusted. However good filtering algorithms might be able to still make out that these used to be waves - the velocity of the waveform could be used to recreate a proper wave for the frequency that we are trying to reproduce.
+
+
+
+
8kHz (Sample #1)
8kHz (Sample #2)
6kHz (Sample #1)
6kHz (Sample #2)
+
+
+
+
With 8kHz and all frequencies below that, we've approached the area where the artifacts become so small that we can filter them out at minimal loss. Knowing this we can infer that all smaller frequencies that this will perform fine, given good filtering.
+
+
+
+
So the question then is, what sample rate is enough to fix the majority of artifacts?
+
+
+
+
Which Samplerate avoids the artifacts?
+
+
+
+
In the best case possible, we would want to accurately reproduce every frequency between 20 Hz and 20 kHz. This is however just not feasible with current technology at a reasonable price point. That means we'll have to do with what we already have: 96 kHz and 192 kHz. Let's look at both of them.
+
+
+
+
19.2, 16 and 12 kHz (Sample #1 at 96kHz)
19.2, 16 and 12 kHz (Sample #2 at 96kHz)
+
+
+
+
In the graphs for 96 kHz we can clearly see an improvement compared to 48 kHz, as it almost eliminates all the artifacts for these frequencies. At 96 kHz we are safe when it comes to human speech and most instruments. Some artifacts are still left, but for the most common use cases, 96 kHz is enough.
+
+
+
+
19.2, 16 and 12 kHz (Sample #1 at 192kHz)
19.2, 16 and 12 kHz (Sample #2 at 192kHz)
+
+
+
+
At 192 kHz we can see all the remaining artifacts effectively disappear completely. Even 19.2 kHz looks like a proper wave and likely will not need any complex filtering to be detected correctly. This would be the ideal sample rate for instruments such as cymbals and bells, but would be massively overkill for vocals.
+
+
+
+
Solving the Question(s)
+
+
+
+
Is 48 kHz enough?
+
+
+
+
This depends, but the short answer is no. There is a significant audio processing overhead required to make 48 kHz be able to sound like what you would achieve with 96 kHz or higher. If you can confidently say that everything in your audio production pipeline is doing the necessary processing for 48 kHz playback, then you can set your playback frequency to 48 kHz.
+
+
+
+
Will switching to 96 kHz (or higher) fix the problems?
+
+
+
+
Yes, absolutely. While they won't be gone completely, they will be reduced to the point that they won't matter anymore, which is especially important for audio recording from real world instruments and vocals. A studio performance captured at 192 kHz sample rate will sound much different compared to one captured at 48 kHz.
+
+
+
+
What sample rate should I pick?
+
+
+
+
This depends on what you actually want to do:
+
+
+
+
If you only intend to capture game audio with nothing else, then 48 kHz will be perfectly fine, as most games mix their audio to 48 kHz or even 44.1 kHz.
For human voices, such as commentary and singing, you will want to switch to 96 kHz. This covers the majority of frequencies that humans can produce, and also covers a large amount of instruments as well.
Lastly there are some instruments that don't sound good at 96 kHz, for which 192 kHz is required, for example cymbals and bells.
+
+
+
+
However there is a problem with this. If your pipeline involves a naive downsampler, which is common in many popular media production software such as streaming apps, you actually gain none of the benefits of the higher sampling rate. In the worst case this can even cause new artifacts to appear.
+
+
+
+
What is the correct way to downsample?
+
+
+
+
This is the hard part, and I have no real answer for it. A reduced sample rate simply cannot cover all the frequencies that higher sample rates can, and even the best downsampling and filtering and only do so much and will struggle with certain frequencies where artifacts are simply unavoidable.
+
+
+
+
The majority of the frequencies above 9.6 kHz are problematic at 48 kHz, and simply can't be represented correctly. For example the 19.2 kHz frequency is just nearly impossible to accurately represent, but is fine at 96 kHz.
+
+
+
+
What about supersampling D/A and A/D converters?
+
+
+
+
Higher priced audio devices have started using supersampling D/A and A/D converters, which usually have a data resolution of 48, 96 or 192 kHz, and an internal resolution in the mHz area. Since these are usually not listed in the spec sheet, it is impossible to tell if you have one or not without an oscilloscope.
+
+
+
+
Their quality is defined by their resampling algorithm, and high quality resampling algorithms can make 48 kHz sound nearly indistinguishable compared to 96 kHz, at least for the majority of frequencies. If you can confidently say that you have one of these, then you will be "fine" at 48 kHz sampling rate - the majority of audio frequencies will be reproduced with only minor artifacts.
+
+
+
+
The Conclusion
+
+
+
+
So there you have it, the answer to the age old question: "Is 48 kHz enough?" - and the answer to it is "No". The minimum necessary to accurately reproduce most real world audio is 96 kHz, and some things even need 192 kHz or higher to be correctly reproduced.
+
+
+
+
And thanks to technological advances, we might in the future see 96 kHz become the new "X is enough". Chips have gotten smaller and more efficient, audio capture/playback devices have gotten better at audio, and even our mobile phones are starting to jump onto higher samplerates.
+
+
+
+
With all that said, there isn't anything left to talk about. If you think I made a mistake, or just know better, do feel free to contact me.
+
diff --git a/_posts/2020/2020-06-23-the-art-of-encoding-with-nvidia-turing-nvenc.html b/_posts/2020/2020-06-23-the-art-of-encoding-with-nvidia-turing-nvenc.html
new file mode 100644
index 0000000..69390ea
--- /dev/null
+++ b/_posts/2020/2020-06-23-the-art-of-encoding-with-nvidia-turing-nvenc.html
@@ -0,0 +1,1248 @@
+---
+title: The Art of encoding with NVIDIA NVENC
+category: Blog
+tags: [Tutorial, NVENC, NVIDIA, OBS Studio]
+---
+
+
Streaming with more than one PC has been the leader in H.264 encoding for years, but NVIDIAs Turing and
+ Ampere generation has put a significant dent into that lead. The new generation of GPUs with the brand new encoder
+ brought comparable quality x264 medium - if you can find a GPU that is. Let's take a look at what's needed to set up
+ your stream for massively improved quality.
+
+
The guide has been updated for: StreamFX v0.11 and OBS Studio 27.0
+
+
+
Setting up NVENC (for Streaming)
+
+
Modern OBS Studio has two ways to achieve the expected quality: the built-in NVENC H.264 (new)
+ and the addition from StreamFX called NVIDIA NVENC H.264/AVC (via FFmpeg). Both Options can achieve similar quality to
+ x264 medium, but the latter is able to exceed that and rival x264 medium/slow in various situations. Whichever you
+ pick, both of them support zero-copy encoding, and they're both valid options for streaming.
+
+
Built-In: OBS Studio NVENC H.264 (new)
+
+
+
+
+
+ Image reference for Turing/Ampere
+
+
+
+
+
The built-in NVENC option in OBS Studio is by far the simplest option and will give you almost
+ identical quality on Maxwell, Pascal, Turing and Ampere, though Turing and Ampere will make use of the new
+ improvements of the NVENC chip. Maxwell and Pascal users can expect to reach x264 veryfast/faster-like quality,
+ while Turing and Ampere users can expect to hit fast/medium-like quality. Below are the settings you need to set:
+
+
+
+
+
+
+
Option
+
Maxwell/Pascal
+
Turing/Ampere
+
+
+
+
+
Preset
+
Quality
+
Max Quality or Quality
+
+
+
Profile
+
high
+
high
+
+
+
Look-ahead
+
Enabled/Checked
+
Enabled/Checked
+
+
+
Psycho Visual Tuning
+
Enabled/Checked
+
Enabled/Checked
+
+
+
Max B-Frames
+
1 or 2
+
3 or 4
+
+
+
+ Best Built-in NVENC settings
+
+
+
StreamFX: NVIDIA NVENC H.264/AVC (via FFmpeg)
+
+
+
+
+ Image reference for Turing/Ampere
+
+
+
+
+
If you're new to StreamFX's NVENC integration, it will most likely overwhelm you with the settings it
+ offers. But thanks to all those settings, you can actually go above the default quality by quite a significant
+ amount. Note that I will only cover critical settings, as other settings like Bitrate, Buffer Size and Key Frame
+ Interval are explained elsewhere.
+
+
+
+
+
+
Option
+
Kepler, Maxwell & Pascal
+
Volta, Turing & Ampere
+
+
+
+
+
Preset
+
High Quality
+
High Quality
+
+
+
H264
+
+
+
+
+
► Profile
+
High
+
High
+
+
+
► Level
+
Automatic
+
Automatic
+
+
+
Rate Control Options
+
+
+
+
+
► Mode
+
High Quality Constant Bitrate
+
High Quality Constant Bitrate
+
+
+
► Two Pass
+
Disabled
+
Enabled
+
+
+
► Look Ahead
+
8 - 12
+
16 - 32
+
+
+
► Adaptive I-Frames
+
Enabled
+
Enabled
+
+
+
► Adaptive B-Frames
+
Enabled
+
Enabled
+
+
+
Adaptive Quantization
+
+
+
+
+
► Spatial (AQ)
+
Enabled
+
Enabled
+
+
+
► Spatial (AQ) Strength
+
<Any>
+
<Any>
+
+
+
► Temporal (AQ)
+
Enabled
+
Enabled
+
+
+
Other Options
+
+
+
+
+
► Maximum B-Frames
+
1 or 2
+
3 or 4
+
+
+
► B-Frame References
+
"middle"
+
"middle"
+
+
+
► Zero Latency
+
Disabled
+
Disabled
+
+
+
► Weighted Prediction
+
Disabled
+
Disabled
+
+
+
► Non-reference P-Frames
+
Enabled
+
Enabled
+
+
+
► Reference Frames
+
-1 (Automatic)
+
-1 (Automatic)
+
+
+
FFmpeg Options (Optional)
+
+
+
+
+
► Custom Settings
+
+
+
+
+
+ Ideal NVENC Settings for StreamFX's NVENC
+
+
+
For certain platforms it may be necessary to turn off Adaptive I-Frames due to how their internal
+ processing works, such as Twitch. This has a drastic quality impact and should only be done if you rely on that
+ platform alone to reach your audience.
+
+
Setting up Resolution and Framerate to match the Bitrate
+
+
It is no secret than H.264/AVC is an outdated codec and that platforms should have paved the way for
+ better codecs a long time ago, but it is the solution that we are stuck with until AV1 is adopted by the masses. So
+ in order to get the best quality out of our stream, we should aim to also set up our stream according to the bitrate
+ and codec we use. Below is the average result of a few hundred thousand tests at various resolutions and bitrates,
+ according to PSNR and VMAF (weighted PSNR 30:70 VMAF):
+
+
+
+
+
+
Resolution
+
3.5mbit 30 FPS
+
3.5mbit 60 FPS
+
6.0mbit 30 FPS
+
6.0mbit 60 FPS
+
8.5mbit 30 FPS
+
8.5mbit 60 FPS
+
+
+
+
+
640x360
+
6
+
6
+
8
+
7
+
9
+
8
+
+
+
960x540
+
5
+
4
+
6
+
5
+
7
+
7
+
+
+
1280x720
+
4
+
3
+
4
+
3
+
5
+
4
+
+
+
1536x864
+
3
+
2
+
4
+
3
+
4
+
4
+
+
+
1600x900
+
3
+
2
+
3
+
2
+
4
+
3
+
+
+
1920x1080
+
2
+
1
+
2
+
2
+
3
+
3
+
+
+
+ Rating from 1 to 10 based on VMAF and PSNR, weighted towards producing useful ranges. Tests performed
+ with x264 slow. A 10 is perfect, 9 is near lossless, 8 is indistinguishable, 7 is high quality, 5 is
+ acceptable quality and 3 is watchable.
+
+
+
Please note that watchable in video encoding means that you can decode information within it with
+ reasonable accuracy, instead of it having turned to full garbage. Higher resolutions than 1920x1080 were omitted
+ from the table as the rows would be filled with values between 0 and 1, which just are not very useful to us.
+
+
This means that at 3.5mbit, the highest resolution and framerate for a variety streamer is 1280x720 at
+ 30 FPS, or 960x540 at 60 FPS. The equation shifts slightly for 6.0mbit, where you can either go for 1536x864 at 30
+ FPS or 1280x720 at 60 FPS. Finally at 8.5mbit you are looking at a maximum resolution and framerate of 1920x1080 at
+ 30 FPS or 1536x864 at 60 FPS.
+
+
Final Words
+
+
In the past few years NVIDIA has made massive improvements to their encoder, which has evened the
+ playing field far beyond what was expected. With no need to transfer frames from the GPU to the CPU, and quality
+ comparable to x264 medium (or better), NVIDIAs Turing NVENC is pushing the boundaries of what is possible in a
+ single consumer PC.
+
+
Whether you use it or not is entirely up to you however. If you already have a working Dual-PC setup
+ that can achieve x264 medium (or better) quality, then you don't gain much from moving to Turing NVENC. But if
+ you're currently stuck on anything below x264 medium, or have a Turing GPU ready to test it out - why not give it a
+ shot?
+
+
Video Examples
+
+
+
+
ARMA 3 "Walk through the Jungle" #002
+
+
+
+
+
+
x264 slow
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
OBS Studio 27.x
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
StreamFX v0.10
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
FFmpeg 4.4
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Black Mesa #001
+
+
+
+
+
+
x264 slow
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
OBS Studio 27.x
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
StreamFX v0.10
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
FFmpeg 4.4
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Call of Duty Modern Warframe TDM Broadcast
+
+
+
+
+
+
x264 slow
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
OBS Studio 27.x
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
StreamFX v0.10
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
FFmpeg 4.4
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Forza Horizon 4 #002
+
+
+
+
+
+
x264 slow
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
OBS Studio 27.x
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
StreamFX v0.10
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
FFmpeg 4.4
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GRIP Combat Racing #007 (at 60 FPS)
+
+
+
+
+
+
x264 slow
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
OBS Studio 27.x
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
StreamFX v0.10
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
FFmpeg 4.4
+
+
+
+
+ 1920x1080x60 at 8.5mbit
+
+
+
+
+
+ 1920x1080x60 at 6.0mbit
+
+
+
+
+
+ 1280x720x60 at 6.0mbit
+
+
+
+
+
+ 960x540 at 6.0mbit
+
+
+
+
+
+ 640x360 at 3.5mbit
+
+
+
+
+
+
+
+
diff --git a/_posts/2021/2021-05-25-routine-maintenance.html b/_posts/2021/2021-05-25-routine-maintenance.html
index 272fa17..bfc9579 100644
--- a/_posts/2021/2021-05-25-routine-maintenance.html
+++ b/_posts/2021/2021-05-25-routine-maintenance.html
@@ -1,7 +1,7 @@
---
title: 'Routine Maintenance'
category: Blog
-tags: [Blog]
+tags: [Blog, 'WordPress Archive']
---
{% capture content %}Site was offline for ~2 days for maintenance, as I was moving the entire infrastructure to the new Server, which is located somewhere in the frosty north, and has plenty of hardware to handle the things I throw at it. For those on IPv6, the site should already be 100% online again, while for those on IPv4-only, it may take a day or so to update. During the move/maintenance I learned a couple things:{% endcapture %}{% include blocks/paragraph.liquid content=content %}
diff --git a/_posts/2021/2021-06-02-fidelityfx-super-resolution-dlss-killer-or-not.html b/_posts/2021/2021-06-02-fidelityfx-super-resolution-dlss-killer-or-not.html
index 123d4f5..a53ca1b 100644
--- a/_posts/2021/2021-06-02-fidelityfx-super-resolution-dlss-killer-or-not.html
+++ b/_posts/2021/2021-06-02-fidelityfx-super-resolution-dlss-killer-or-not.html
@@ -1,7 +1,7 @@
---
title: 'FidelityFX Super Resolution: DLSS Killer, or not?'
category: Review
-tags: [AMD, FidelityFX, FidelityFX Super Resolution, FSR, NVIDIA, DLSS]
+tags: [AMD, FidelityFX, FidelityFX Super Resolution, FSR, NVIDIA, DLSS, 'WordPress Archive']
---
{% capture content %}It’s been a day since the reveal of FidelityFX Super Resolution, and it appears to be a DLSS killer. But on closer inspection, it seems that AMD made a mistake in at least one of the examples, and forgot to show the FSR footage, instead only showing the native footage. Let’s go into the details on AMDs FidelityFX Super Resolution a bit.{% endcapture %}{% include blocks/paragraph.liquid content=content %}
diff --git a/_posts/2021/2021-06-05-mozilla-why.html b/_posts/2021/2021-06-05-mozilla-why.html
index b3c7f31..2ba0d81 100644
--- a/_posts/2021/2021-06-05-mozilla-why.html
+++ b/_posts/2021/2021-06-05-mozilla-why.html
@@ -1,7 +1,7 @@
---
title: Mozilla, why?
category: Blog
-tags: [Rant, Mozilla, Firefox]
+tags: [Rant, Mozilla, Firefox, 'WordPress Archive']
---
{%capture content%}I didn’t mind the addition of Pocket because I didn’t use it. I didn’t mind the addition of Hello, as I didn’t use it. I didn’t mind the removal of the original themeing ability, which was far superior to what we have now. Didn’t even really care about the removal of Flash either. What I do mind is when you ignore user feedback, push out a release, break every existing theme and make things look incredibly stupid, then continue to ignore user feedback.{%endcapture%}{% include blocks/paragraph.liquid content=content %}
diff --git a/_posts/2021/2021-07-30-new-world-a-promising-but-incomplete-action-mmo-rpg.html b/_posts/2021/2021-07-30-new-world-a-promising-but-incomplete-action-mmo-rpg.html
index 009eaa3..1790385 100644
--- a/_posts/2021/2021-07-30-new-world-a-promising-but-incomplete-action-mmo-rpg.html
+++ b/_posts/2021/2021-07-30-new-world-a-promising-but-incomplete-action-mmo-rpg.html
@@ -1,7 +1,7 @@
---
title: "New World: A promising, but incomplete, Action MMO RPG"
category: Review
-tags: [Review, RPG, MMO, Game]
+tags: [Review, RPG, MMO, Game, 'WordPress Archive']
---
{%capture content%}“New World” is an Action RPG MMO developed by “Amazon Games Orange County”, “Relentless Studios” and “Cloud 9 Games” which is published by Amazon Games. It mixes various already existing game mechanics into one game, and added it’s own twists to it.{%endcapture%}{% include blocks/paragraph.liquid content=content %}
diff --git a/_posts/2021/2021-08-14-a-little-bit-of-silence.html b/_posts/2021/2021-08-14-a-little-bit-of-silence.html
index 4cb20dd..3cce750 100644
--- a/_posts/2021/2021-08-14-a-little-bit-of-silence.html
+++ b/_posts/2021/2021-08-14-a-little-bit-of-silence.html
@@ -1,7 +1,7 @@
---
title: A little bit of Silence
category: Blog
-tags: [Health]
+tags: [Health, 'WordPress Archive']
---
{%capture content %}For a few weeks now I’ve taken a step back from the public eye, for various reasons. The main one is that I simply need some more time to myself, time to enjoy life a bit more than I used to. I’m barreling straight towards my 30s, and haven’t even experienced half of what I could have at this age, despite having the means to do so. So in the near, and perhaps far future, I will put a lot more focus on enjoying life.{% endcapture %}{% include blocks/paragraph.liquid content=content %}
diff --git a/_posts/2021/2021-08-19-av1-still-the-current-future-of-video.html b/_posts/2021/2021-08-19-av1-still-the-current-future-of-video.html
index fe47728..555eb55 100644
--- a/_posts/2021/2021-08-19-av1-still-the-current-future-of-video.html
+++ b/_posts/2021/2021-08-19-av1-still-the-current-future-of-video.html
@@ -1,7 +1,7 @@
---
title: "AV1: Still the current future of Video"
category: Blog
-tags: [Video, Encoding, AV1, H264, H265, VP9, AOMedia]
+tags: [Video, Encoding, AV1, H264, H265, VP9, AOMedia, 'WordPress Archive']
videos:
- name: "ARMA 3: Altis Driving (License CC-BY-SA)"
poster: "https://cdn.xaymar.com/blog/2021/08/arma3_altis-driving_2560x1440_50fps_YUV420-TV-sRGB_003.webp"
@@ -292,6 +292,10 @@ videos:
{% capture content %}All the way back in December 2020, I decided it was time to try out how far AV1 had progressed. At the time, SVT AV1 was the only encoder that produced reasonable results with near realtime performance, however that has changed now. A lot of work went into AOM AV1, and it is now capable of encoding in the “frames per second” realm instead of “frames per minute”. So why not take another look at things?{% endcapture %}{% include blocks/paragraph.liquid content=content %}
+
⚠️ This Article is outdated! ⚠️
+I've written this article during a time where all tested encoders were still in development and the quality has drastically changed since then. Take everything you read here with a mountain of salt, as the field has drastically changed, and most things written here are no longer true.
+
+
{% capture content %}For the tests I used footage I captured myself, as that way I have no problems figuring out who actually owns the distribution rights. As for versions of the encoder, NVIDIA NVENC was run with Driver version 471.41 on a RTX 3090, AOM AV1 was compiled at v3.1.2, and SVT AV1 was on compiled at v0.8.6-76-g44486d23. The tests were run with the following settings:{% endcapture %}{% include blocks/paragraph.liquid content=content %}
{% capture content %}
diff --git a/_posts/2022/2022-01-10-h264-encoder-showdown.html b/_posts/2022/2022-01-10-h264-encoder-showdown.html
index 6b9c668..a5c5e22 100644
--- a/_posts/2022/2022-01-10-h264-encoder-showdown.html
+++ b/_posts/2022/2022-01-10-h264-encoder-showdown.html
@@ -61,6 +61,10 @@ videos:
{% capture content %}So, as it is usual, I drank my coffee as my automated script did what I told it to do. Then I fixed the automated script to actually do what I thought it did, and repeated this charade twice more because it's obviously fun, and I definitely did not forget to put an "s" at the end of a variable reference - twice. Without any further interruptions, here are a few hundred video examples for your watching pleasure.{% endcapture %}
{% include blocks/paragraph.liquid content=content %}
+
⚠️ This Article is outdated! ⚠️
+I've written this article during a time where all three hardware vendors were still developing their drivers. Intel, AMD and NVIDIA drivers have changed since then and fixed or implemented many things that were missing at the time of writing. As I no longer have the hardware to test everything, perhaps EposVox will re-run these tests on newer hardware.
+
+
{% capture content %}
Update 2022-01-11:
Added x264 veryfast files and newly discovered AMF settings that drastically improve quality.{% endcapture %}