As none of the known Upscaling algorithms handle Alpha, we need to manually restore and interpolate it properly. While this technically reduces visual quality slightly, the chances of this being noticed are slim to none considering that Upscaling is already a questionable solution to quality. Linear was picked here as it produces the best overall result for scaling, keeping gradients mostly in one piece. Mostly.
Fixes#646
As the Alpha channel is completely ignored and possibly destroyed by denoising algorithms, we should restore the Alpha channel manually. Linear interpolation was chosen here as it will behave like Point if the size matches, and properly interpolate if the size doesn't match.
Fixes: #646
There are a number of duplicate shader routines we should combine into a single shader to save disk space, and remove unexpected errors in one copy but not the other.
* New translations en-US.ini (Italian)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (German)
* New translations en-US.ini (Indonesian)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (French)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (French)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (German)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Italian)
* New translations en-US.ini (French)
* New translations en-US.ini (German)
* The "Super Resolution" filter is now called "Upscaling" and in the future will support additional providers, like FidelityFX "Super-Resolution" and NVIDIA "Upscaling".
* The entire plugin now has identical logging behavior, so it should be easy to identify exact parts of the plugin in log files.
* A crash caused by log functions on Linux/Mac has been fixed, which was caused by reusing variable length arguments. (#632)
* Radeghast submitted a new 'Swirl' example shader. (#618)
* Added an AV1 encoder based on AOM-AV1, although its stability and quality may not be great so far.
* Denoising of Video content is now possible with the new "Denoising" filter on NVIDIA RTX hardware.
* Fixed a few bugs affecting the "Upscaling" (previously "Super Resolution") filter.
* Fixed references to NVIDIA missing the ®.
* New translations en-US.ini (German)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (German)
* New translations en-US.ini (Italian)
* New translations en-US.ini (German)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Bosnian)
* New translations en-US.ini (Bulgarian)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Chinese Traditional)
* New translations en-US.ini (Chinese Traditional, Hong Kong)
* New translations en-US.ini (Croatian)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (English, Australia)
* New translations en-US.ini (English, Canada)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Estonian)
* New translations en-US.ini (Faroese)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (French)
* New translations en-US.ini (German)
* New translations en-US.ini (Greek)
* New translations en-US.ini (Hebrew)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Icelandic)
* New translations en-US.ini (Irish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Mongolian)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Serbo-Croatian)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Swedish)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Ukrainian)
* New translations en-US.ini (Vietnamese)
The previous name was too strict on what could be put into the effect, and would result in additional clutter in the Filter menu when we eventually decide to support other Upscaling methods than Super-Resolution networks.
As not all encoders need all functions, classes inheriting from this should not need to implement all of them as no-ops. Instead the header should take care of this, which reduces duplicated empty code paths.
As vargs may be modified by some functions, we should not reuse it and instead create a copy of it. This fixes a segfault on logging calls happening with GCC, and potentially may fix other compilers and platforms as well.