Connor McLaughlin
6c17f7ad49
GS: Support fractional upscale
2022-10-15 17:37:35 +01:00
TellowKrinkle
9b5dd92dad
GS:HW: Use 16-bit unorm for HDR
2022-10-11 18:17:27 +02:00
refractionpcsx2
92cd6e8435
GS: Fix DX shader error
2022-10-09 04:53:18 +01:00
TellowKrinkle
0637682eb0
GS:HW: Properly handle fbmask of negative values
...
Previously was possible with blending and colclip, but now more common with the new hdr algorithm
2022-10-09 04:06:59 +01:00
TellowKrinkle
73ae9f8879
GS:HW: Make HDR algorithm more float-precision-friendly
...
- Use whole numbers instead of 255ths
- Use range -128 - 127 instead of 0 - 255 for accumulation blends
2022-10-07 20:44:53 +02:00
TellowKrinkle
1b34eb14f8
GS: Pass through primitive ID in geometry shaders in DX12 and VK
...
Fixes primid destination alpha on sprites
2022-09-06 21:07:56 +02:00
TellowKrinkle
412480b326
GS: Don't add 10 to date flag to indicate initialization
...
We already have 1 and 2 dedicated to the job
2022-09-06 21:07:56 +02:00
TellowKrinkle
62f9b16139
GS:OGL: Use blend min for primid destination alpha
2022-09-06 21:07:56 +02:00
TellowKrinkle
ea81b74e3b
GS:OGL: Add fetch_rt function to shader
2022-09-04 23:02:44 -05:00
lightningterror
6279ae63ce
GS-hw: Remove remaining 24bit destination checks for Ad.
2022-09-01 10:28:42 +02:00
lightningterror
edc82d77a5
GS-hw: Improve how we handle blending on 24bit with Ad factor in renderer.
2022-08-31 20:34:51 +02:00
TellowKrinkle
91601e5647
GS: Manually do bilinear sampling when converting RGBA to depth
...
Shader bilinear doesn't properly handle the case where r overflows into g (or g overflows into b, etc)
2022-08-20 10:12:24 +01:00
TellowKrinkle
882c09b870
Vulkan: Format convert.glsl
2022-08-20 10:12:24 +01:00
refractionpcsx2
5447da0588
GS: Don't do blend_mix on HDR
2022-08-16 20:54:55 +01:00
refractionpcsx2
1b18e02fe0
GS: Add constant adjustment in blend mix when reverse subtracting.
2022-08-16 20:54:55 +01:00
TellowKrinkle
cb64e8d504
GS:HW: More accurate blend equation for blend mix
2022-08-13 00:01:23 +02:00
lightningterror
6b48cf574d
GS-hw: Adjust how we handle specific blend mix cases.
...
Replace Cs*As + Cd*(1 - As) with Cs*As - Cd*(As - 1).
Replace Cs*F + Cd*(1 - F) with Cs*F - Cd*(F - 1).
As - 1 or F - 1 subtraction is only done for the dual source output (hw blending part)
since we are changing the equation.
Af will be replaced with As in shader and send it to dual source output.
Also check if A*Alpha in the shader overflows, if it does then adjust the
alpha that is sent for HW blending further to compensate.
2022-08-07 14:08:04 +02:00
refractionpcsx2
42b334efcd
GS-HW: Use correct alphas when AA1 is enabled + ABE disabled.
2022-07-18 09:40:21 +01:00
Stuart Kenny
f7d76ebf1d
GS: Add lottes crt to present shader.
2022-06-22 16:26:19 +02:00
lightningterror
d2904c1fd5
GS: Fix up wave filter shaders.
2022-06-14 21:25:47 +02:00
Connor McLaughlin
a9819542d4
GS: Split convert and present shaders
2022-06-05 21:27:16 +01:00
Stuart Kenny
0b2536dd3e
GS/HW: Fix typos in wave filter shader
2022-05-31 17:36:16 +01:00
refractionpcsx2
89d44a5f60
GS: Offset interlace when upscaling
2022-05-24 18:03:07 +01:00
Connor McLaughlin
b0f20c9973
GS/DX11: Fix MMOD=1 merge background color
2022-04-18 04:29:19 +01:00
Connor McLaughlin
1993203d26
GS: Add Direct3D 12 renderer
2022-04-15 12:56:41 +01:00
TellowKrinkle
5ecaa9459d
GS: Add Metal renderer
2022-03-31 23:51:27 -05:00
Connor McLaughlin
d32d8cc0ec
Shaders/FXAA: Fix warnings with Vulkan compiler
2022-03-28 09:24:51 +02:00
Connor McLaughlin
0cb9655523
GS/Vulkan: Remove unused color attribute
...
Would likely be getting optimized out anyway.
2022-03-28 09:24:51 +02:00
Connor McLaughlin
3067bef82d
GS/Vulkan: Implement FXAA
2022-03-28 09:24:51 +02:00
Connor McLaughlin
486764be03
GS/Vulkan: Implement shadeboost
2022-03-28 09:24:51 +02:00
Connor McLaughlin
4a5180bc0a
GS: Put shadeboost params in uniforms
...
Compiling variants for these is silly.
2022-03-28 09:24:51 +02:00
Connor McLaughlin
1927896442
GS: Fix some edge cases with fbfetch
...
Second alpha pass with A masked, DATE enabled, etc.
2022-03-21 20:24:09 +00:00
Connor McLaughlin
45682c382f
GS: Add NO_COLOR flag to PS (depth-only)
2022-03-20 23:41:33 +00:00
Connor McLaughlin
19d310475b
GS: Draw alpha pass when dual source blend is missing
2022-03-20 23:41:33 +00:00
Connor McLaughlin
a8b9df3952
GS: Utilize GL_EXT_framebuffer_fetch where available
2022-03-20 23:41:33 +00:00
Connor McLaughlin
bb75c78c1a
GS: Add option to disable texture barriers/geometry shaders
2022-03-20 23:41:33 +00:00
Connor McLaughlin
f73398ea84
GS/Vulkan: Fix warning when compiling RGBA8->RGB5A1 shader
...
Also gets rid of the program info log length check, since that's been
long removed in glslang.
2022-02-20 14:03:33 +00:00
lightningterror
b8236b1b1c
GS-hw: Partially revert #5540
...
Allow to wrap on colclip.
For real tho, ideal solution is sw blend, doing any clamp/wrap is wrong on blend mix.
2022-02-19 00:38:13 +01:00
lightningterror
1a3d77b2c0
GS-hw: Fix d3d11 depth sample shader.
...
Also adjust some comments to match updated shader names.
2022-02-18 19:21:01 +01:00
lightningterror
06766ddb98
GS-hw: Don't wrap on 16bit destination format for blend mix.
...
Helps Dog's Life blending, we shouldn't wrap as we do more blend math afterward which will be wrong if we wrapped before.
2022-02-18 19:00:54 +01:00
lightningterror
7151848406
GS-hw: Rename alpha_clamp to blend_mix.
2022-02-18 19:00:54 +01:00
Connor McLaughlin
dfe4bc199f
GS/HW: Use integers for depth conversion shaders
...
Fixes z-fighting in reflections in DBZ BT3, maybe others?
2022-02-15 10:41:37 +01:00
refractionpcsx2
d4b1d9abe5
GS-hw: Increase 32->16bit conversion accuracy
...
Improves Dogs life (no longer goes completely black right away, but has decal problems)
Vastly improves texture quality in Spider-Man 3 when using Framebuffer Conversion to fix the textures
2022-02-14 14:50:21 +00:00
refractionpcsx2
ad415945a6
GS-hw: Apply clamp/wrap when FBMask enabled
2022-02-11 19:33:38 +01:00
Connor McLaughlin
2684fd6b62
GS: Add depth copy convert shader
2022-02-03 15:20:35 +00:00
lightningterror
3ca4272230
GS-hw: Implement hw, hw/sw, sw blending on Ad when alpha write is masked.
...
Idea is to replace Ad with As when alpha write is masked,
then expand/let blend mix, accumulation blend non recursive blend or hw clr blend to
do the blending with Ad swapped as As.
We are doing this to try to bring some originally higher blending modes to lower levels
where we can do the draws with less texture barriers instead (gl/vk),
as for d3d11 this allows to run blending on the draws since previously the cases weren't handled properly,
it will be slower on d3d11 since we will be reading the frame buffer but it's better than nothing.
D3D11: It is enabled on Medium blending or higher, if draw is fbmask then it will enable
it on basic blending too.
OpenGL/Vulkan:
It is enabled based on the previous blending modes:
accumulation blend -> either minimum or basic level, depending on colclamp.
non recursive blend -> either minimum or basic level, depending on colclamp.
blend mix -> basic and higher level.
hw clr blend -> minimum and higher level.
All:
Prefer full sw blend when primitives don't overlap, sw fbmask or full barrier is used, it is more accurate.
2022-02-03 01:11:08 +01:00
lightningterror
ae14afd5f7
GS-hw: Combine BLEND_C_CLR2_AF and BLEND_C_CLR3_AS in one shader bit.
...
Free a shader bit.
2022-02-03 01:11:08 +01:00
TellowKrinkle
6d0b9b3747
GS:HW: Don't scale rt when converting to texture
...
Scale texture coordinates instead
2022-02-01 01:24:35 +00:00
Connor McLaughlin
f33ee27f56
GS: Get rid of extra binding for channel shuffle
...
Having this binding was redundant, as there's no "normal" texture
sampled when we're doing a channel shuffle, and it caused issues in
Vulkan when the render target or depth buffer the source.
Also fixes the Urban Chaos HLE shader.
Fixes validation errors in GT4, NFS: Carbon, Urban Chaos, probably
others too.
2022-01-30 14:17:12 +00:00
lightningterror
3b691da8d1
GS-hw: Implement alternative hw blending for Cs*Ad, Cs*Ad + Cd, Cd - Cs*Ad.
...
Alpha destination value is wrong so let us try to compensate.
Multiply Cs by (255/128) in shader.
Will work best if Cs is 0.5 or less, if it's higher than 0.5 then the closer to 1 the less accurate it gets.
Ofc it is best to use sw blending but it will help if sw blending is not present/selected for specific draw, will help d3d11 quite more.
2022-01-27 12:09:35 +01:00
lightningterror
c9216e5625
GS-hw: Remove useless shader line from CLR As/Af case.
2022-01-24 11:42:54 +01:00
lightningterror
93af9656d0
GS-hw: Fix clr 1 case shader.
...
Forgot to rename.
2022-01-24 11:11:38 +01:00
lightningterror
4ab9d1a493
GS-hw: Implement alternative hw blending for Cd*As, Cd*F.
...
Do hw blend for Cd*As, Cd*F, expand the clear color blend method as it is almost the same.
Most helpful for dx11 ofc, for gl/vulkan will help with rendering on lower
levels of blending without needing a barrier.
2022-01-23 20:59:35 +01:00
lightningterror
3c92054a6e
GS-hw: Move PABE shader bit to the top of sw blending.
...
Early return when there is no sw blending, no need to run the blend code.
Optimization.
2022-01-11 13:15:56 +01:00
Connor McLaughlin
0f5b17de0f
GS/DX11: Implement automatic/manual LOD in pixel shader
2022-01-11 12:30:11 +01:00
Connor McLaughlin
68f18245a7
GS/DX11: Implement merge feedback write
2022-01-09 16:35:34 +01:00
Connor McLaughlin
1a8a5a5e8e
GS: Add Vulkan renderer
2022-01-08 05:19:45 +00:00
Connor McLaughlin
0c36647506
GS: Rewrite presentation interface and OSD
2022-01-02 15:06:39 +00:00
Connor McLaughlin
2330d3a056
GS: Use hardware point/line expansion where supported in GL
2022-01-02 15:06:39 +00:00
Connor McLaughlin
bce54a64ff
GS: Use flat/nointerpolation for IIP=0 instead of GS
2022-01-02 15:06:39 +00:00
lightningterror
6a431daffc
GS-hw: Extend Blend mix to work when alpha is higher than 1.
...
Clamp the alpha(As/Af) to 1 in the shader, it is already clamped to 1 in hw blend unit.
It should allow to better render the effects, still not fully accurate but it's closer to what we want.
Hopefully it helps D3D11 more.
2021-12-27 20:22:41 +01:00
Connor McLaughlin
a2ae4ba441
GS/OpenGL: Get rid of interface blocks for convert shaders
2021-12-26 13:21:51 +00:00
Connor McLaughlin
4e1b2792c9
GS/OpenGL: Move some uniform buffers to program uniforms
2021-12-26 13:21:51 +00:00
Connor McLaughlin
6e064da536
GS/OpenGL: Use programs instead of separate pipelines
2021-12-26 13:21:51 +00:00
Sergeanur
21bc56a8ba
GS: Simulate scan mask
2021-12-26 11:51:25 +00:00
Connor McLaughlin
efed92b15c
GS/OpenGL: Move scaling factor to shader constant
2021-12-22 11:41:57 +01:00
Connor McLaughlin
08c00eed1e
GS: Unify constant buffers between renderers
2021-12-22 11:41:57 +01:00
lightningterror
9368e29d62
GS-d3d11:fx: Flip x and y dithering positions.
2021-12-19 22:24:30 +01:00
TellowKrinkle
ae8751e9ca
GS:DX11: Use GSHWDrawConfig selector structs
2021-12-19 22:21:10 +01:00
TellowKrinkle
a11b8c4750
GS:OGL: Use GSHWDrawConfig selector structs
2021-12-19 22:21:10 +01:00
TellowKrinkle
962db4bfc4
Resources: Move fxaa.fx to out of dx11 directory
...
It was used by both DX and OGL
2021-12-12 06:10:47 -06:00
TellowKrinkle
da651cabe4
Resources: Move shaders to shared shader/ directory
2021-12-12 06:10:47 -06:00