Unknown W. Brackets
4329aaa31c
GPU: Apply color test mask as a uint.
...
This is simpler and allows us to unify paths better.
2022-09-26 06:57:41 -07:00
Unknown W. Brackets
a19a057e8c
GPU: Consistently use uvec3 for colortest.
2022-09-26 06:57:41 -07:00
Henrik Rydgård
d9f74d2fb7
ivec->uvec, comment fix
2022-09-26 13:05:25 +02:00
Henrik Rydgård
f4b71e2dc7
Fragment shader uniforms: Pack color mask in 32 bits instead of expand to 128 bits.
...
Allows us to save 16 bytes from the main uniform buffer, since there's
free 32-bit spaces here and there to use.
2022-09-26 13:04:56 +02:00
Henrik Rydgård
07ca9e4656
Fold the "materialUpdate" flag into the light ubershader part.
...
This reduces the number of vertex shaders and thus pipelines by quite a
bit more in a few games, like Tekken and GoW, continuing the fight
against shader compile stutter.
The perf impact should be minimal if not positive due to less pipeline
changes.
GLES fixes
Make the vertex input declarations match (always declare fog input). Fixes D3D11 validation
Tess fix
2022-09-26 12:06:16 +02:00
Henrik Rydgård
ce82fce8de
Use subpass dependencies to implement shader framebuffer read in Vulkan.
2022-09-16 19:19:42 +02:00
Henrik Rydgård
a52e62a187
Enable depth uploads on render-to-clut-buffer. Esoteric but needed for #11100 . Compat flag for now.
2022-09-14 22:18:34 +02:00
Henrik Rydgård
8d00df12a4
Detect the CLUT8/8888 situation
...
Implement CLUT8 depal from 8888 textures. Hard to tell if working
2022-09-14 22:18:34 +02:00
Henrik Rydgård
b4d0ac2e1c
Unify CLUT texture size at 512 to reduce complexity. Worth the extra bytes.
2022-09-13 11:56:56 +02:00
Henrik Rydgård
3e7f6b57aa
Shadergen issues found by the test
2022-09-11 16:52:33 +02:00
Henrik Rydgård
694dbe1271
Add ShaderDepalMode enum, use in shader ID. Replaces smoothed bit.
2022-09-11 14:40:01 +02:00
Henrik Rydgård
9bd8b11bf8
Implement shader depal for D3D11.
2022-09-11 13:41:17 +02:00
Henrik Rydgård
e828df9f25
Split each renderpass/framebuffer into multiple "compatibility classes" (RenderPassType).
2022-09-08 00:32:03 +02:00
Henrik Rydgård
b15c65540e
Fix the new logic-op-in-shader on OpenGL and D3D11
...
Also disable BlueToAlpha for now for Outrun and DiRT 2, it breaks the
water effect somehow. Will come back to it later.
2022-09-04 22:53:05 +02:00
Henrik Rydgård
7882c4cd6d
Shader unit test fix
2022-09-04 20:06:59 +02:00
Henrik Rydgård
8800f2046b
Preserve alpha in shader logic op emulation. Include logic op in check for packUnorm4x8.
2022-09-04 19:27:26 +02:00
Henrik Rydgård
2474eb6a72
Shader bit setup and code generation for logic-ops-in-shader
2022-09-04 11:14:47 +02:00
Henrik Rydgård
87b14fe1c2
Some more renaming and refactoring, extracted from a future PR
2022-09-04 00:10:55 +02:00
Henrik Rydgård
de712b7804
More renaming
2022-09-02 22:20:11 +02:00
Henrik Rydgård
4da2ca0935
Implement shader blending for D3D9
...
This was easy, dunno why I never got around to it before..
I guess I didn't know about VPOS.
This does raise our minimum shader model requirement to ps_3_0.
2022-08-30 12:19:56 +02:00
Henrik Rydgård
67c911d13f
Fix smoothed CLUT lookups. Shouldn't go beyond the mask's reach.
...
Should help #15896
2022-08-24 17:13:36 +02:00
Henrik Rydgård
d459eac891
Fix checks for depth texture support, GLES syntax errors
2022-08-24 11:26:07 +02:00
Henrik Rydgård
2a6015c1e3
Better checks for smoothed depal
2022-08-22 15:25:28 +02:00
Henrik Rydgård
6558bde0f6
Remove SmoothedDepal compat setting, instead detect the ramp directly.
2022-08-22 15:24:41 +02:00
Henrik Rydgård
f5e6754ac0
Special case depal lookups for Test Drive's strange usage.
...
This implements the hack I suggested in #13355 , where instead of first
reducing the color to RGB565 as the real game does, we just take each
channel at full precision and do the lookup according to the mask,
linearly filtering the palette.
This makes the game look a lot nicer and is also a small optimization,
but the hack is very specific so kinda ugly in a way.
2022-08-22 15:19:38 +02:00
Henrik Rydgård
886679c7ec
Remove the color-to-depth mode
2022-08-20 08:29:33 +02:00
Henrik Rydgård
ade8b88766
Try to fix shader compilation error on Adreno reported by Lubos
2022-08-12 21:32:32 +02:00
Henrik Rydgård
92a3d45340
Lock out shaderDepal from D3D for now, will implement later.
2022-08-06 18:27:03 +02:00
Henrik Rydgård
5da7dd42b5
Fix Vulkan as well
2022-08-01 15:48:52 +02:00
Henrik Rydgård
b940c8a8b7
Fix for D3D11 and GL, but not Vulkan for some weird reason
2022-08-01 15:45:05 +02:00
Henrik Rydgård
7b7d16d2fb
D3D9 fix
2022-08-01 12:11:42 +02:00
Henrik Rydgård
73fc9fb520
OpenGL fix
2022-08-01 11:57:22 +02:00
Henrik Rydgård
90a44579bf
Implement color-to-depth for Vulkan, start implementing for D3D11
2022-08-01 11:30:36 +02:00
Henrik Rydgård
c158414858
Give the mip bias its own uniform flag.
2022-07-31 10:43:48 +02:00
Henrik Rydgård
cc857e8217
Revert mistaken change in D3D9 fragment shader gen
2022-07-31 10:43:48 +02:00
Henrik Rydgård
46d6b43618
Support 3D textures in OpenGL ES, add feature check
2022-07-31 10:43:48 +02:00
Henrik Rydgård
129f3fe997
Testfix, cleanup
2022-07-31 10:43:48 +02:00
Henrik Rydgård
fecf9127a0
Implement 3D texturing in the OpenGL backend too. Assorted fixes.
2022-07-31 10:43:48 +02:00
Henrik Rydgård
566385f762
Remove some dead code
2022-07-31 10:43:48 +02:00
Henrik Rydgård
f87b4cf232
Implement 3D textures for D3D9 as well
2022-07-31 10:43:48 +02:00
Henrik Rydgård
0262fbc70a
Implement 3D textures for D3D11
2022-07-31 10:43:48 +02:00
Henrik Rydgård
e455d6bcfe
Some safety checks to avoid bad combinations, probably not really needed in practice.
2022-07-31 10:43:48 +02:00
Henrik Rydgård
d7aa3ee486
Fix the mip bias to take the texture depth and sampling offset into account.
2022-07-31 10:43:48 +02:00
Henrik Rydgård
2cb9e09ad3
Implement new discovery of a larger CLUT than we thought, plus non-shared CLUTs for 8-bit indices.
...
Not sure yet what limitations apply, regarding using it for even more
16-bit colors, etc...
2022-07-31 10:43:48 +02:00
Henrik Rydgård
f061eadc04
Initial implementation of 3D texturing through equal-size mips (see #6357 )
...
Vulkan-only currently, though all the other backends except ES 2.0
without GL_OES_texture_3d can support it with some work.
2022-07-31 10:43:47 +02:00
Henrik Rydgård
0ff8c721e4
Improve comment, variable name
2022-07-12 00:17:26 +02:00
Henrik Rydgård
e52e9094ca
Vulkan fragment shaders: Don't opportunistically emit "layout (early_fragment_tests)"
...
The purpose of this is not really for optimization, it's to get a
specific behavior that we really don't care about. Drivers are pretty
good at getting this potential performance improvement automatically
if it's possible without changing the output.
git blame says I added it, heh.
Don't think it'll make much difference one way or another, though, but
trying to reduce complexity.
2022-07-12 00:14:22 +02:00
Henrik Rydgård
6b2dec91b5
Finish BlueToAlpha functionality
2022-04-30 18:17:17 +02:00
Henrik Rydgård
462972f7ea
Add option to redirect blue to alpha if 565 mode is rendered and mask is 0x0FFFFF.
...
This is used by several games to render to the alpha channel of RGBA4444
images, which cannot normally be done directly on the PSP.
Can be used as a far more efficient replacement for
ReinterpretFramebuffers/ShaderColorBitmask
2022-04-30 18:17:16 +02:00
Unknown W. Brackets
c18236b5fa
GPU: Avoid switch on uint.
...
Vivante seems to get confused.
2021-04-10 14:01:33 -07:00