Commit Graph

237 Commits

Author SHA1 Message Date
7ec6d116e8 Graphics: Adapt aspect ratio when SBS/TAB 3D is used
Adds support for choosing to present the full resolution
independently to each eye when using side-by-side or
top-and-bottom 3D.
2024-08-22 07:11:43 +10:00
2f13be5a2d VideoConfig: Adjust FrameDumpResolutionType enum class to style guidelines 2024-04-13 03:21:39 +02:00
72db62e178 Video: split frame dumping settings into 3 resolution dumping modes
also polish aspect ratio related code for clarity
2024-04-08 22:54:45 +03:00
41b19e262f Add custom relative and raw (squared pixels) aspect ratio modes 2024-02-29 21:11:19 +02:00
b3aa6ad93b Video: implement custom aspect ratio support (already exposed to Qt).
This also renamed some variables/functions.
2023-12-18 02:00:24 +02:00
a8fd938a06 Change paper white default to 203 to match the ITU 2023-11-14 20:21:34 +02:00
7cc4304918 VideoCommon: Expose the widescreen heuristic's standard and widescreen ratio values in onion config. 2023-09-06 18:45:28 -05:00
4938b99600 VertexManagerBase: Allow widecreen heuristic constants to be overriden by onion config 2023-09-05 11:50:49 -04:00
de781a6fa7 RenderBase: Allow widescreen heuristic's transition threshold to be overridden by onion config 2023-09-05 11:49:22 -04:00
39d96a21a8 Video: Improved Tooltips & Bicubic (#5)
Edited by Filoppi
2023-08-18 02:00:56 +03:00
ca93a5191f Video: Added Box Resampling
Edited by Filoppi
2023-08-18 02:00:56 +03:00
2edf81cdb0 Video: implement output resampling (upscaling/downscaling) methods 2023-08-18 02:00:55 +03:00
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
23bebc5270 VideoBackends:Vulkan: Allow loading custom drivers on Android
... using libadrenotools
2023-06-11 13:52:34 +02:00
f25a0b43b6 VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS) 2023-02-14 18:25:33 +01:00
31cfe8250d Lint fixes 2023-02-09 18:36:20 +13:00
3ae78b8e76 Also use events for config changed 2023-01-31 19:41:24 +13:00
9d125a6e43 Move ConfigChanged out of RenderBase
There is this nice VideoConfig file that's perfect for it
2023-01-31 19:41:24 +13:00
c38c76abad Refactor to remove virtual from RenderXFBToScreen
Slightly simplifies the upcoming refactor
2023-01-31 18:29:47 +13:00
a2f4606d33 Merge pull request #11205 from TellowKrinkle/AutoPresent
VideoBackends:Metal: Default to presentDrawable when vsync is on
2023-01-30 09:01:18 +01:00
9c9310bf44 Merge pull request #11208 from TellowKrinkle/CPUCull
Cull vertices on the CPU
2023-01-26 23:15:23 +01:00
1be0149146 VideoCommon: Cull vertices on the CPU 2023-01-25 02:21:56 -06:00
23ad07b368 Add VISkip 2023-01-14 01:56:37 -05:00
f3df3a7727 PixelShaderGen: Clamp texture layer when using manual texture sampling with stereoscopic 3D
Otherwise, texelFetch() will use an out-of-bounds layer for game textures (that have 1 layer; EFB copies have 2 layers in stereoscopic 3D mode), which is undefined behavior (often resulting in a black image). The fast texture sampling path uses texture(), which always clamps (see https://www.khronos.org/opengl/wiki/Array_Texture#Access_in_shaders), so it was unaffected by this difference.
2022-12-27 13:45:13 -08:00
673f81c18a New FrameTime/VBlank Analyzer + Graph 2022-12-23 19:52:53 -05:00
8a3b8a925e Core: Add option to force linear texture filtering. 2022-12-09 02:02:16 +01:00
edb2c90b38 Improve FPS/VPS Counting and Revamp Appearance 2022-11-23 00:11:47 +01:00
37a51f1d09 VideoCommon: Add an option to disable mipmaps
Needed by M1 fifoci to work around a minor non-determinism bug
2022-11-07 22:18:56 -06:00
fa8134deda VideoBackends:Metal: Default to presentDrawable when vsync is on 2022-10-24 17:55:30 -05:00
b66793194e Merge pull request #11028 from tellowkrinkle/MetalFixes
Various Metal renderer improvements
2022-10-24 15:22:37 -04:00
3912fa7a2e VideoCommon: Add reasons for disabled VS expand 2022-10-22 20:18:02 -05:00
0a42c534c3 VideoCommon: Add configuration to prefer VS for line/point expansion 2022-10-22 20:13:24 -05:00
68f49df0f8 VideoCommon: Add vertex shader point and line expansion 2022-10-22 20:13:24 -05:00
da27a3e6bc Merge pull request #11095 from K0bin/misc-vulkan
Remove special treatment for Android in video settings
2022-10-08 22:24:30 +02:00
a13f09433c VideoBackends:Metal: Add config option to use presentDrawable 2022-10-08 04:46:07 -05:00
c08de82e90 VideoBackends:Metal: Bring back unified memory config
Turns out it was helpful.  (Most improvement in ubershaders.)  This time with much better auto mode.
2022-10-08 04:46:05 -05:00
4e204a9a1a VideoCommon: Remove special treatment for Android in video settings 2022-10-01 20:53:02 +02:00
56fce3ba8a Software: Remove dedicated texture/frame dumping infrastructure
Texture dumping can already be done using VideoCommon's system (and in fact the same setting already enabled *both* of these). Dumping objects/TEV stages/texture fetches doesn't currently have an equivalent, but could be added to the FIFO player instead.
2022-09-26 18:25:54 -07:00
4c629c2bee VideoCommon: Add dynamic vertex loader to ubershaders 2022-09-19 16:28:23 -05:00
354530cf61 VideoCommon: Remove old iLog field
Prior to 7854bd7109, this was used by the debugger for the OpenGL and D3D9 plugins to control logging (via PRIM_LOG and INFO_LOG/DEBUG_LOG in VideoCommon code; PRIM_LOG was changed in 77215fd27c), and also framedumping (removed in 64927a2f81 and 2d8515c0cf), shader dumping (removed in 2d8515c0cf and this commit), and texture dumping (removed in 54aeec7a8f). Apart from shader dumping, all of these features have modern alternatives, and shader source code can be seen in RenderDoc if "Enable API Validation Layers" is checked (which also enables source attachment), so there's no point in keeping this around.
2022-08-04 15:49:39 -07:00
6ee0248eab VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
69839df1eb VideoCommon: support dynamically updating game mods at runtime 2022-06-27 18:20:52 -05:00
0f88155729 Core / DolphinQt / VideoCommon: add setting for enabling graphic mods 2022-06-27 18:20:52 -05:00
f3eff70e2f Implement ImGui window for scissor rectangles
This is mainly for debugging, and is only exposed by manually editing the configuration.
2022-04-16 12:35:00 -07:00
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
c5c4169bc8 Merge pull request #10255 from Pokechu22/sw-zfreeze
Software: Fix zfreeze with CullMode::All
2022-04-15 11:12:49 +12:00
3a742e99bb Software: Remove config to disable ZComploc and ZFreeze
These aren't particularly useful, and make the code a bit more confusing.  If for some reason someone wants to test what happens when these functions are disabled, it's easier to just edit the code that implements them.  They aren't exposed in the UI, so one would need to restart Dolphin to do it anyways.
2022-04-08 20:05:32 -07:00
3382408b8e VideoCommon/FrameDump: Allow user to specify a pixel format. 2022-04-09 00:45:49 +02:00
947b562e06 VideoConfig: Add flag for whether the system supports setting object names 2022-01-31 01:17:37 -05:00
08396c56e5 VideoConfig: Add bool for sampler LOD bias support 2021-12-25 15:16:27 -05:00