JMC47
900439ea0d
Merge pull request #12102 from iwubcode/cubemap_custom_texture
...
VideoCommon: add ability to load cube maps into custom texture data
2023-09-03 18:29:00 -04:00
Sketch
fb852a5062
VideoCommon: Deinit Graphics Mod Manager implicitly
2023-09-03 16:06:08 -04:00
Admiral H. Curtiss
46a596c0d3
Merge pull request #12148 from Dentomologist/fifo_convert_memoryupdate_type_to_enum_class
...
Fifo: Convert MemoryUpdate::Type to enum class
2023-09-03 03:34:35 +02:00
iwubcode
62fee2f3b6
VideoCommon: add loading cube maps from DDS files and loading it into our custom texture object. Custom texture object now has the concept of slices in addition to levels. Traditional custom textures have a single slice
2023-09-02 20:20:09 -05:00
Dentomologist
9cabf20aaa
Fifo: Convert MemoryUpdate::Type to enum class
2023-09-02 18:19:26 -07:00
Dentomologist
d5d3eb5025
TextureCacheBase: Add m_ prefix to member variables
2023-09-01 22:52:17 -07:00
Admiral H. Curtiss
69db8a615f
Merge pull request #12145 from JosJuice/ubershaderpixel-uint
...
VideoCommon: Fix GLSL uint handling in UberShaderPixel
2023-08-29 12:33:54 +02:00
Admiral H. Curtiss
df120b0630
Merge pull request #12000 from Filoppi/window_res_fix
...
Video: Fix issues with the window presentation
2023-08-28 23:50:50 +02:00
JosJuice
5b112dbf2c
VideoCommon: Fix GLSL uint handling in UberShaderPixel
2023-08-28 21:17:01 +02:00
iwubcode
f982c556b5
VideoCommon: add additional texture sampler types to ShaderAsset
2023-08-26 12:12:37 -05:00
Admiral H. Curtiss
2502e412b3
Merge pull request #12117 from JosJuice/config-callback-cpu
...
Don't call RunAsCPUThread in config callbacks
2023-08-26 16:34:46 +02:00
Admiral H. Curtiss
5c4671f573
Merge pull request #12126 from JosJuice/small-vector
...
Move SmallVector to Common
2023-08-26 14:15:18 +02:00
iwubcode
9223540bf4
VideoCommon: additional error checking for CustomPipelineAction and move the pixel shader asset cache time back to being calculated during texture creation
2023-08-24 00:47:48 -05:00
iwubcode
7c52a52440
VideoCommon: add TextureData structure that contains the raw texture data, a sampler, and the type of texture information
2023-08-24 00:35:31 -05:00
JosJuice
ba99d17ac0
VideoCommon: Fix custom shader constants on GLES
2023-08-22 19:38:18 +02:00
JosJuice
6e88c44d5d
Move SmallVector to Common
...
We had one implementation of this type of data structure in Arm64Emitter
and one in VideoCommon. This moves the Arm64Emitter implementation to
its own file and adds begin and end functions to it, so that VideoCommon
can use it.
You may notice that the license header for the new file is CC0. I wrote
the Arm64Emitter implementation of SmallVector, so this should be no
problem.
2023-08-22 13:19:49 +02:00
iwubcode
55fba7c0ed
VideoCommon/GraphicsModAsset: Error out if config key is not a string.
2023-08-22 02:40:08 +02:00
iwubcode
5506121685
VideoCommon: add support to graphics mod manager to load in assets and pass it to graphics actions
2023-08-20 18:53:27 -05:00
iwubcode
6ea0d17802
VideoCommon: when graphics settings change, trigger a reload of all custom shaders
2023-08-20 18:53:27 -05:00
iwubcode
931a8aa413
VideoCommon: add milliseconds elapsed time value to pixel shaders as a uniform to be able to support animation effects in custom shaders
2023-08-20 18:53:27 -05:00
iwubcode
c7191382be
VideoCommon: add custom pipeline action
2023-08-20 18:53:27 -05:00
iwubcode
d320366954
VideoCommon: add custom shader cache to VertexManagerBase, supporting custom pixel shaders by replacing the existing pipeline with a modified one
2023-08-20 18:53:27 -05:00
iwubcode
bedbf2b8c6
VideoCommon: add custom shader cache
2023-08-20 18:53:27 -05:00
iwubcode
dbaf24ef09
VideoCommon: add data needed to support custom pixel shaders to graphics mod actions
2023-08-20 18:53:27 -05:00
iwubcode
4283d76718
VideoCommon: uber pixel shader gen changes needed to support custom pixel shaders in graphics mods
2023-08-20 18:53:27 -05:00
iwubcode
e704385fce
VideoCommon: pixel shader gen changes needed to support custom pixel shaders in graphics mods
2023-08-20 18:53:27 -05:00
iwubcode
c3a370839a
VideoCommon: add helper functions to handle generating custom lighting code for a custom pixel shader
2023-08-20 18:53:27 -05:00
iwubcode
0da5cf60a8
VideoCommon: add custom pixel shader definition and custom shader header to shadergen common as it will be used by both the special and uber shader variant of pixel shaders
2023-08-20 18:53:27 -05:00
Filoppi
8bca9a864f
Video: The `Auto` internal resolution scaling wasn't working correctly if the window weird aspect ratios (e.g. 32:9), beacuse it would account for the the portion of the image that will show black bars into the calcuations to find the best matching resolution
2023-08-18 02:14:00 +03:00
Filoppi
6c7f34d5da
Video: The `Auto-Adjust Window Size` setting was calculating the window size based on the resolution of the window in the previous frame if we used the "stretch" aspect ratio setting, so it's result would be self influence in a loop and behave unreliably (e.g. when changing resolution between Auto/Native/2x the automatic window scaling would behave randomly)
2023-08-18 02:14:00 +03:00
Filoppi
cb34d1aafe
Video: There was always a black line around one of the 4 edges (top/left/bottom/right) of the window because the final output size wasn't calculated right (unless the aspect ratio was set to stretch)
2023-08-18 02:14:00 +03:00
Filoppi
fae3aee9e0
Video: The `% 4` that was done on the rendering resolution was only meant to be done when recording videos (due to encoding limitations) but one case was missed (this had no consequences really, as it was just in the code that automatically resizes the window). The hardcoded `4` has been replaced with `VIDEO_ENCODER_LMC` for clarity.
2023-08-18 02:14:00 +03:00
Filoppi
80b453082d
Video: fix post process shaders with parameters failing to build on OpenGL
...
This was because the shader uniforms between the pixel and vertex shaders
were willingly left different, to avoid filling the vertex shader with unnecessary
params. Turns out all backends are fine with this except OGL.
The new behaviour is now much more consistent and well explained,
the "default" shaders are the ones that always run, and the non default
ones are the user selected ones (if any).
2023-08-18 02:00:56 +03:00
Sam Belliveau
39d96a21a8
Video: Improved Tooltips & Bicubic ( #5 )
...
Edited by Filoppi
2023-08-18 02:00:56 +03:00
Sam Belliveau
ca93a5191f
Video: Added Box Resampling
...
Edited by Filoppi
2023-08-18 02:00:56 +03:00
Filoppi
2edf81cdb0
Video: implement output resampling (upscaling/downscaling) methods
2023-08-18 02:00:55 +03:00
Admiral H. Curtiss
a08792033a
Merge pull request #12103 from iwubcode/asset_load_system_time
...
VideoCommon: asset load time is now stored as a chrono system_clock time
2023-08-18 00:14:29 +02:00
JosJuice
7197e3abd0
Use structs for config callback IDs
...
This way you can't mix up regular config callback IDs and CPU thread
config callback IDs. (It would be rather bad if you did!)
2023-08-17 19:19:26 +02:00
JosJuice
71ce8bb6f0
Don't call RunAsCPUThread in config callbacks
...
In theory, our config system supports calling Set from any thread. But
because we have config callbacks that call RunAsCPUThread, it's a lot
more restricted in practice. Calling Set from any thread other than the
host thread or the CPU thread is formally thread unsafe, and calling Set
on the host thread while the CPU thread is showing a panic alert causes
a deadlock. This is especially a problem because 04072f0
made the
"Ignore for this session" button in panic alerts call Set.
Because so many of our config callbacks want their code to run on the
CPU thread, I thought it would make sense to have a centralized way to
move execution to the CPU thread for config callbacks. To solve the
deadlock problem, this new way is non-blocking. This means that threads
other than the CPU thread might continue executing before the CPU thread
is informed of the new config, but I don't think there's any problem
with that.
Intends to fix https://bugs.dolphin-emu.org/issues/13108 .
2023-08-17 19:19:25 +02:00
Admiral H. Curtiss
23ae8c439c
Merge pull request #12112 from JosJuice/hires-texture-encoding
...
VideoCommon: Fix std::filesystem::path encoding conversion
2023-08-16 18:39:18 +02:00
JosJuice
86910f406e
VideoCommon: Fix std::filesystem::path encoding conversion
...
In std::string, you can store strings using any encoding, but in Dolphin
we have decided to use UTF-8. The problem is that if you convert between
std::string and std::filesystem::path using the built-in methods, the
standard library will make up its own assumption of what encoding you're
using in the std::string. On most OSes this is UTF-8, but on Windows
it's whatever the user's code page is.
What I believe is the C++ standard authors' intended solution to this is
to use std::u8string instead of std::string, but that's a big hassle to
move over to, because there's no convenient way to convert between
std::string and std::u8string. Instead, in Dolphin, we have added helper
functions that convert between std::string and std::filesystem::path in
the manner we want. You *always* have to use these when converting
between std::string and std::filesystem::path, otherwise we get these
kinds of encoding problems that we've been having with custom textures.
Fixes https://bugs.dolphin-emu.org/issues/13328 .
2023-08-16 09:56:56 +02:00
takayhan-AMD
b969282b72
Remove out-dated hack of AMD driver issue WRT dual-source blending output index.
2023-08-15 23:58:29 -04:00
iwubcode
eeb73460ab
VideoCommon: asset load time is now stored as a chrono system_clock time, so that times can be fabricated in a future feature (without creating a file to do so)
2023-08-15 22:02:28 -05:00
Dentomologist
720191d1f7
AbstractFramebuffer: Fix Android reorder-ctor warning
...
Move declaration of m_additional_color_attachments so its initialization
order matches that of the constructor.
2023-08-12 20:48:47 -07:00
iwubcode
246b7c5bdb
VideoCommon: fix regression with texture load order where the custom texture code was always updating the asset map for each texture with each entry, making it so the last value actually would be loaded instead of the first
2023-08-11 00:36:41 -05:00
JMC47
5512d19d4b
Merge pull request #12061 from iwubcode/cubemap_backends_only
...
VideoBackends: add support for cube maps for OGL, Vulkan, and D3D
2023-08-10 18:36:48 -04:00
iwubcode
dca7c67105
VideoCommon: update NetplayChatUI's chat message input to use a hidden label. This avoids an error thrown by imgui
2023-07-29 00:27:07 -05:00
iwubcode
350e51951b
VideoCommon: update imgui to 1.89.7 (and implot to 0.15); fix issues with upgrade; keep the demo code in case someone wants to reference it but don't compile it by enabling 'IMGUI_DISABLE_DEMO_WINDOWS' in config
2023-07-27 11:47:34 -05:00
Admiral H. Curtiss
a76cc146e1
Merge pull request #12055 from iwubcode/skip_dump_async
...
VideoCommon: skip the texture dump if a custom texture is available, regardless if it is loaded or not
2023-07-23 19:53:25 +02:00
iwubcode
fd74244339
VideoCommon: add custom texture message to provide a dirty means of debugging whether custom textures are installed correctly
2023-07-21 20:13:27 -05:00
iwubcode
e892b7f1ac
VideoBackends: add support for cube maps for OGL, Vulkan, and D3D
2023-07-21 19:09:40 -05:00
iwubcode
f7e78742cf
VideoCommon: skip the texture dump if the texture is using a custom texture, regardless of whether or not it is loaded yet
2023-07-19 23:44:41 -05:00
iwubcode
79f202ea5c
VideoCommon: fix some compiler warnings for CustomAsset. FreeBSD compiler complained about a defaulted move constructor due to the mutex being implicitly deleted. Additionally, the const owning library deleted the copy constructor.
2023-07-16 19:45:55 -05:00
iwubcode
5740be15f9
VideoCommon: initialize load info variables
2023-07-16 12:56:03 -05:00
iwubcode
77511e8e7c
VideoCommon: add material asset. A material is similar to other graphics engines where it provides data to be used in conjunction with a shader asset to generate a runtime AbstractShader
2023-07-09 12:21:34 -05:00
Admiral H. Curtiss
7bb04ff1dc
Merge pull request #12022 from iwubcode/texture_create_gmod_impl
...
VideoCommon: call into graphics mods create texture callback
2023-07-09 04:20:43 +02:00
Admiral H. Curtiss
0366122306
Merge pull request #12009 from iwubcode/shader_asset
...
VideoCommon: add a pixel shader asset
2023-07-03 03:24:11 +02:00
iwubcode
a2ad3ca6f7
VideoCommon: don't do pointer copies during graphics mod callback iteration
2023-07-02 13:58:07 -05:00
iwubcode
0539bb4a3e
VideoCommon: call into graphics mods create texture callback, providing additional asset dependencies that trigger the texture to be reloaded
2023-07-02 13:45:09 -05:00
Admiral H. Curtiss
6d7bf60071
Merge pull request #11991 from iwubcode/tcache_multiple_texture_dependencies
...
VideoCommon: allow multiple texture assets to associate with a texture cache entry
2023-07-02 20:14:32 +02:00
iwubcode
a93e6e7397
VideoCommon: add support for allowing a TextureCache entry to be associated with multiple assets
2023-07-02 12:50:07 -05:00
Admiral H. Curtiss
eedc1144c1
Merge pull request #11923 from iwubcode/multi-texture-compute-support
...
VideoBackends: support multiple compute images for some backends
2023-07-01 17:47:55 +02:00
Admiral H. Curtiss
fa81006b51
Merge pull request #11955 from TellowKrinkle/CMakeDependencies
...
CMake: Allow ignoring system packages
2023-06-30 19:06:04 +02:00
iwubcode
6ea49c6746
VideoCommon: add a pixel shader asset
2023-06-30 01:32:53 -05:00
iwubcode
3627398cf5
VideoBackends: support multiple compute images for some backends (D3D, OGL, Vulkan)
2023-06-28 17:15:31 -05:00
Admiral H. Curtiss
c04536c5d0
Merge pull request #11982 from iwubcode/graphics_mod_create_texture_callback
...
VideoCommon: add graphics mod callback interface for when a texture is created
2023-06-23 18:10:59 +02:00
Admiral H. Curtiss
02909bd1a5
Merge pull request #11850 from Filoppi/post_process_fixes
...
Video: implement color correction to match the Wii/GC NTSC/PAL color spaces (and gamma)
2023-06-23 18:08:23 +02:00
iwubcode
1d767c3a5b
VideoCommon: add graphics mod callback interface for when a texture is created
2023-06-20 19:26:53 -05:00
iwubcode
2dc24a9148
VideoCommon: move cached texture asset to 'CustomAsset' common code
2023-06-20 18:59:55 -05:00
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
get
7523a62105
Change unnamed enum in NativeVertexFormat.h to u32
2023-06-17 08:13:57 -05:00
get
07ad75f34f
EnumUtils: Add Common::ToUnderlying
...
Mirrors the C++23 <utility> function, std::to_underlying
2023-06-17 07:15:33 -05:00
Admiral H. Curtiss
1aef85a985
Merge pull request #11918 from TellowKrinkle/DPIScale
...
Improved DPI change handling
2023-06-17 04:07:13 +02:00
Admiral H. Curtiss
cbcf5bfac1
Merge pull request #11889 from Filoppi/patch-18
...
Fix video output having small black borders all the times
2023-06-16 17:59:51 +02:00
Admiral H. Curtiss
f5eea4a957
Merge pull request #11834 from Dentomologist/xemitter_use_pseudonamed_parameter_force5bytes
...
XEmitter: Add enum class Force5Bytes
2023-06-16 15:46:36 +02:00
TellowKrinkle
5b10a80401
CMake: Use targets for all optionally-external dependencies
2023-06-15 01:41:41 -05:00
Admiral H. Curtiss
6d16a09707
Merge pull request #11941 from Dentomologist/convert_blockingloop_stopmode_to_enum_class
...
Common: Convert BlockingLoop::StopMode to enum class
2023-06-13 11:47:20 +02:00
iwubcode
3e27fc7c0b
VideoCommon: don't treat incorrect aspect ratio or sizes that aren't a multiple of native textures as an error
2023-06-12 21:19:29 -05:00
Dentomologist
3c80f821c0
Common: Convert BlockingLoop::StopMode to enum class
2023-06-12 17:12:25 -07:00
Dentomologist
4c2759f541
XEmitter: Add enum class Jump
...
Replace the bool parameter force5bytes in J, JMP, and J_CC with an enum
class Jump::Short/Near. Many callers set that parameter to the literal
'true', which was unclear if you didn't already know what it did.
2023-06-12 13:04:18 -07:00
OatmealDome
1a0a1e8f12
Merge pull request #10976 from TellowKrinkle/StackFrames
...
Improve stack frames for profilers
2023-06-12 05:00:08 +02:00
TellowKrinkle
d3110b9521
VideoCommon: Update imgui scale when dpi changes
2023-06-11 20:05:27 -05:00
Robin Kertels
23bebc5270
VideoBackends:Vulkan: Allow loading custom drivers on Android
...
... using libadrenotools
2023-06-11 13:52:34 +02:00
Admiral H. Curtiss
8f51a9d2d8
Merge pull request #11699 from Pokechu22/gl-check-maximum-samples
...
OpenGL: Check the list of supported AA modes instead of hardcoding
2023-06-09 15:07:07 +02:00
Admiral H. Curtiss
092773ad0c
Merge pull request #11859 from iwubcode/backend-multi-output
...
VideoBackends: add support to allow rendering to multiple output targets
2023-06-09 13:40:21 +02:00
Pokechu22
c63f0f37cd
VideoCommon: Pass WindowSystemInfo to InitBackendInfo
2023-06-08 22:07:39 -07:00
iwubcode
afa498fa2f
VideoCommon: update DirectFilesystemAssetLibrary to not throw exceptions when a file no longer exists
2023-06-08 22:20:52 -05:00
iwubcode
429b2eca8a
VideoCommon: add logging for loading texture assets
2023-06-08 19:48:45 -05:00
Admiral H. Curtiss
7845fb00ee
Merge pull request #11681 from iwubcode/asset_management
...
VideoCommon: migrate texture packs to use the asset loader system
2023-06-08 22:21:12 +02:00
Admiral H. Curtiss
78f5c5f8d2
Merge pull request #11899 from Filoppi/patch-20
...
Video: Fix Post Process shader options issues
2023-06-08 16:12:49 +02:00
Admiral H. Curtiss
3dbdf0472d
Merge pull request #11901 from Filoppi/add_texture_types
...
Video: add R10B10G10A2 and R16G16B16A16F texture types
2023-06-08 15:28:15 +02:00
Filoppi
cdc53c046b
Video: add R10B10G10A2 and R16G16B16A16F texture types (needed by PR 11850)
2023-06-08 03:17:20 +03:00
Filippo Tarpini
c9e61a79b7
Video: Fix Post Process shader options issues
...
-An assert would be erroneously thrown when shaders declared an array of 4 int or float options, despite 4 being the max supported (a simple <= / < mistake)
-When changing the type of a shader option (e.g. from bool to float), the serialization would be stuck appending the value from the previous option type, making the shader fail to build permanently until the cache were cleaned
2023-06-08 02:54:46 +03:00
iwubcode
e831d7b6bb
InputCommon / VideoCommon: remove dynamic input reloading the texture cache, this is no longer needed, assets reload automatically!
2023-06-07 18:30:10 -05:00
iwubcode
ca8d6748d6
VideoCommon: introduce linked assets in TCacheEntry, allowing for assets to be reloaded
2023-06-07 18:30:10 -05:00
Minty-Meeo
e92f8fcbb4
Remove old GCC version workarounds
...
The minimum GCC version is now GCC 10.
2023-06-06 22:49:53 -05:00
iwubcode
f1f1ecc9d1
Core / VideoCommon: update HiresTexture to use CustomAssetLoader
2023-06-05 16:33:19 -05:00
iwubcode
9d7ab47738
VideoCommon: add additional locks around asset access and usage to ensure thread safety
2023-06-05 16:19:46 -05:00
Filippo Tarpini
adf4089276
Fix video output having small black borders all the times
...
To maintain compatibility with some video encoders, the whole output buffer was scaled to be a multiple of 4.
This change makes it so that that rule only applies while actively recording (or taking screenshots, even if it might not be necessary for that case).
2023-06-04 18:03:57 +03:00
iwubcode
8c3dc5b0d6
VideoCommon: update pipeline version for RenderState change
2023-06-03 14:52:31 -05:00