Commit Graph

100 Commits

Author SHA1 Message Date
Filoppi
a2702c6e27 Video: implement color correction to match the NTSC and PAL color spaces (and gamma) that GC and Wii targeted.
To further increase the accuracy of the post process phase, I've added (scRGB) HDR support, which is necessary
to fully display the PAL and NTSC-J color spaces, and also to improve the quality of post process texture samplings and
do them in linear space instead of gamma space (which is very important when playing at low resolutions).
For SDR, the quality is also slightly increased, at least if any post process runs, as the buffer is now
R10G10B10A2 (on Vulkan, DX11 and DX12) if supported; previously it was R8G8B8A8 but the alpha bits were wasted.

Gamma correction is arguably the most important thing as Dolphin on Windows outputted in "sRGB" (implicitly)
as that's what Windows expects by default, though sRGB gamma is very different from the gamma commonly used
by video standards dating to the pre HDR era (roughly gamma 2.35).

Additionally, the addition of HDR support (which is pretty straight forward and minimal), added support for
our own custom AutoHDR shaders, which would allow us to achieve decent looking HDR in Dolphin games without
having to use SpecialK or Windows 11 AutoHDR. Both of which don't necessarily play nice with older games
with strongly different and simpler lighting. HDR should also be supported in Linux.
Development of my own AutoHDR shader is almost complete and will come next.

This has been carefully tested and there should be no regression in any of the different features that Dolphin
offers, like multisampling, stereo rendering, other post processes, etc etc.

Fixes: https://bugs.dolphin-emu.org/issues/8941

Co-authored-by: EndlesslyFlowering <EndlesslyFlowering@protonmail.com>
Co-authored-by: Dogway <lin_ares@hotmail.com>
2023-06-19 01:34:42 +03:00
Robin Kertels
23bebc5270 VideoBackends:Vulkan: Allow loading custom drivers on Android
... using libadrenotools
2023-06-11 13:52:34 +02:00
degasus
196c684ac1 Vulkan: Enable subgroupShuffle.
It is used as workaround for the missing subgroupBroadcastDynamicId flag on SPIR-V < 1.5.
2023-03-24 21:53:23 +01:00
Robin Kertels
2695666e6d VideoBackends:Vulkan: Fix printing validation errors 2023-02-16 17:53:15 +01:00
Robin Kertels
19a4653203 VideoBackends:Vulkan: Replace debug_report with debug_utils
The former is deprecated and pretty much all modern drivers
support VK_EXT_debug_utils.
Android drivers dont support it. On those drivers,
we use the implementation provided by the validation layers.
2022-12-27 02:48:50 +01:00
JMC47
b66793194e Merge pull request #11028 from tellowkrinkle/MetalFixes
Various Metal renderer improvements
2022-10-24 15:22:37 -04:00
JMC47
cdcbe51b2a Merge pull request #10890 from tellowkrinkle/VertexLineExpand
VideoCommon: Add vertex shader point/line expansion
2022-10-23 01:49:26 -04:00
Robin Kertels
aa1679f2c7 VideoBackends:Vulkan: Clean up unused memory allocation code 2022-10-23 03:21:29 +02:00
TellowKrinkle
3a5901d12e VideoBackends:Vulkan: Add support for vertex shader point and line expansion 2022-10-22 20:13:24 -05:00
Robin Kertels
3ffbf94b2a VideoBackends:Vulkan: Set up VMA
Co-authored-by: iwubcode <iwubcode@users.noreply.github.com>
2022-10-23 02:54:35 +02:00
TellowKrinkle
274d4679ca VideoBackends:Multiple: More GPUs with broken subgroup ops 2022-10-08 04:44:48 -05:00
Robin Kertels
2e6d8d6575 VideoBackends:Vulkan: Fix validation error around surface_capabilities2 2022-10-01 01:26:03 +02:00
TellowKrinkle
936b4d5d0d VideoBackends:Vulkan: Dynamic vertex loader support 2022-09-19 16:28:24 -05:00
TellowKrinkle
4c629c2bee VideoCommon: Add dynamic vertex loader to ubershaders 2022-09-19 16:28:23 -05:00
TellowKrinkle
6ee0248eab VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
TellowKrinkle
6ab24e6c17 VideoCommon: Better driver bug handling
Adds a pass to process driver deficiencies between UID caching and use, allowing a full view of the whole pipeline, since some bugs/workarounds involve interactions between blend modes and the pixel shader
2022-07-13 21:51:24 -05:00
TellowKrinkle
db6e928c8d VideoCommon: Fix Intel GPUs on Metal/Vulkan locking up in ubershaders 2022-06-14 00:48:47 -05:00
JMC47
c0488de482 Merge pull request #10251 from Pokechu22/negative-scissor
Rework scissor handling
2022-04-24 15:00:42 -04:00
OatmealDome
259a5fc7c0 DriverDetails: Add broken discard with early-Z bug on Apple Silicon GPUs 2022-04-20 14:56:34 -04:00
OatmealDome
e7f5e5172c DriverDetails: Introduce new VENDOR_APPLE for Apple GPUs 2022-04-19 10:55:27 -04:00
Pokechu22
4595b89ad8 VideoCommon: Remove bSupportsOversizedViewports
I think this is a relic of D3D9.  D3D11 and D3D12 seem to work fine without it.  Plus, ViewportCorrectionMatrix just didn't work correctly (at least with the viewports being generated by the new scissor code).
2022-04-16 10:26:11 -07:00
OatmealDome
a8ce71fcd4 VulkanContext: Set bSupportsSettingObjectNames based on extension initialization result 2022-01-31 01:17:40 -05:00
OatmealDome
9ff7f80aa0 VulkanContext: Ensure present queue family is valid before incrementing queueCreateInfoCount 2021-12-28 21:18:47 -05:00
OatmealDome
08396c56e5 VideoConfig: Add bool for sampler LOD bias support 2021-12-25 15:16:27 -05:00
JMC47
b1f79d9ecf Merge pull request #10215 from OatmealDome/shader-logic-ops
VideoCommon: Support shader logic ops on Metal (Apple GPUs) and OpenGL ES
2021-12-22 16:39:54 -05:00