summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FramebufferShaderGen.cpp
AgeCommit message (Collapse)Author
2025-03-09VideoCommon: Move backend_info out of VideoConfig struct.Jordan Woyak
2023-06-19Video: implement color correction to match the NTSC and PAL color spaces ↵Filoppi
(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>
2022-11-23Fix build errors related to formatting non-scoped enumsPokechu22
2022-07-21VideoBackends:Metal: MSAA supportTellowKrinkle
2022-07-21VideoBackends: Add Metal rendererTellowKrinkle
2022-07-15Remove casts to integers for texture and EFB formatsPokechu22
The only remaining casts for these types that I know of are in TextureInfo (where format_name is set to the int version of the format, and since that affects filenames and probably would break resource packs, I'm not changing it) and in TextureDecoder_Common's TexDecoder_DrawOverlay, which will be handled separately.
2022-06-24D3D / VideoCommon: generate HLSL from SPIRViwubcode
2022-03-21VideoCommon: Remove redundant in qualifiersJosJuice
ANGLE raises a compilation error otherwise.
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2020-11-17VideoCommon: Migrate over to fmtLioncash
Migrates off the printf-based formatting where applicable.
2020-11-09ShaderGenCommon: Rename WriteFmt() to Write()Lioncash
Now that we've converted all of the shader generators over to using fmt, we can drop the old Write() member function and perform a rename operation on the WriteFmt() to turn it into the new Write() function. All changes within this are the removal of a <cstdarg> header, since the previous printf-based Write() required it, and renaming. No functional changes are made at all.
2020-10-19FramebufferShaderGen: Migrate over to fmtLioncash
Continures the migration of the shader generators over to fmt.
2020-05-25VideoCommon/ShaderGenCommon: Make template functions regular functionsLioncash
These are only ever used with ShaderCode instances and nothing else. Given that, we can convert these helper functions to expect that type of object as an argument and remove the need for templates, improving compiler throughput a marginal amount, as the template instantiation process doesn't need to be performed. We can also move the definitions of these functions into the cpp file, which allows us to remove a few inclusions from the ShaderGenCommon header. This uncovered a few instances of indirect inclusions being relied upon in other source files. One other benefit is this allows changes to be made to the definitions of the functions without needing to recompile all translation units that make use of these functions, making change testing a little quicker. Moving the definitions into the cpp file also allows us to completely hide DefineOutputMember() from external view, given it's only ever used inside of GenerateVSOutputMembers().
2020-04-28Cleanup warnings of -WswitchJun Su
Add default branch to the switch-case.
2019-12-05VideoCommon/FramebufferShaderGen: Make use of std::ostringstream internallyLioncash
We only use these string streams to output into a final std::string instance, we don't read into types with them. Because of this, we can just make use of std::ostringstream, rather than the fully-fledged std::stringstream.
2019-12-05VideoCommon/FramebufferShaderGen: Make use of std::string_view where applicableLioncash
Prevents the use of the null pointer as an input to any functions.
2019-12-04VideoCommon/FramebufferShaderGen: Use an anonymous namespace where applicableLioncash
Places all internal helpers and types within an anonymous namespace.
2019-12-04VideoCommon/FramebufferShaderGen: Add missing initial source file commentsLioncash
Makes the source files consistent with the rest of the VideoCommon code.
2019-12-04VideoCommon/FramebufferShaderGen: Collapse stream insertionsLioncash
No behavioral change. This is intended to make the transition to fmt less noisy in subsequent changes by combining insertions of multiple string literals into one where applicable.
2019-10-02Renderer: Use interface blocks for ImGui shadersStenzek
2019-08-03FramebufferShaderGen: Fix upside-down EFB being restored in OpenGLStenzek
2019-07-24FramebufferManager: Support saving EFB to save stateStenzek
2019-07-19FramebufferShaderGen: Fix format reinterpret shaders on GLESStenzek
2019-07-14TextureCache: Support reinterpreting formats for VRAM texturesStenzek
2019-04-28FramebufferShaderGen: Don't emit SV_SampleIndex when not using SSAAStenzek
2019-04-20ShaderGen: Use interface blocks when geometry shaders are supportedStenzek
We don't use explicit locations in OpenGL currently, so this breaks when we use alternative names in the geometry shaders.
2019-02-19Move most backend functionality to VideoCommonStenzek