Unknown W. Brackets
766968e942
Don't use shader blending without buffers.
...
Ugh, making ComputeFragmentShaderID() slower again...
2014-05-30 09:01:22 -07:00
Unknown W. Brackets
fce7d8c697
Ignore the funcs for min/max/absdiff.
...
Seems from reports that they are indeed ignored, just wanted to verify.
2014-05-27 01:45:21 -07:00
Unknown W. Brackets
0eae30dddb
Set a bit to account for fixa/fixb/etc. logic.
2014-05-27 01:45:20 -07:00
Unknown W. Brackets
b8a2410934
Oops, typo.
2014-05-27 01:45:19 -07:00
Unknown W. Brackets
41ca303bee
Skip a few more fixa/fixb combos.
2014-05-27 01:45:18 -07:00
Unknown W. Brackets
a67327759f
Double using multiply not add, should be fine.
2014-05-27 01:45:17 -07:00
Unknown W. Brackets
4b978ed6f9
Apply unsupported blending modes in the shader.
...
This handles unsupported fixed color combinations, alpha doubling, etc.
Where possible, tries to avoid it - it means using a blit (without the
framebuffer fetch extension), which can slow things down a lot with tons
of drawcalls.
2014-05-27 01:45:17 -07:00
Unknown W. Brackets
99458d7797
Avoid forcing nearest/disabling linear if possible.
...
If we know that the test is trivially true, we don't need to worry about
the test. May help #4405 .
2014-05-15 22:38:44 -07:00
Unknown W. Brackets
f660c04983
Optimize double alpha blending for 1/0 textures.
...
If the blend is 2*a / 1-a, and the alpha is either 1 or 0, we can still
use color doubling instead. Fixes #3379 (Persona 2.)
2014-05-11 14:17:19 -07:00
Henrik Rydgard
cf4887ecdd
Update native to detect the EXT and NV extensions separately. Only look at the NV one.
2014-04-18 19:30:10 +02:00
Henrik Rydgård
45246ad9d3
Merge pull request #5891 from raven02/kill-alpha
...
Remove 'DisableAlphaTest' option
2014-04-15 22:00:18 +02:00
raven02
d2ce635bbf
Remove option
2014-04-16 03:57:57 +08:00
raven02
cd024e88e8
Add #extension GL_EXT_shader_framebuffer_fetch : require
2014-04-14 19:55:34 +08:00
raven02
a9d7be1eab
Should be id0
2014-04-13 16:13:59 +08:00
raven02
e358a6dcbe
Handle ABSDIFF blending mode using GL_EXT_shader_framebuffer_fetch
2014-04-13 16:01:55 +08:00
Unknown W. Brackets
1209bc7ba4
Optimize ComputeFragmentShaderID() a bit.
...
I've seen it decently high on some profiles (1-2%). This cuts it down by
12.5% when used in a tight loop. The temporary was 8%, the ifs were the
other 4.5%.
2014-03-29 10:21:04 -07:00
Unknown W. Brackets
2b7d2fdc4b
Optimize > and != 0 alpha tests.
...
There's no need to do rounding in this case. These are very common.
Also, if the test was !=, convert it to >, which may work better on
PowerVR.
2014-03-29 10:16:06 -07:00
Henrik Rydgard
f99925261d
Merge branch 'raven02-patch-42'
...
Conflicts:
GPU/GLES/FragmentShaderGenerator.cpp
2014-03-29 17:26:33 +01:00
raven02
664efe6812
Return false when alpha blending disabled
2014-03-29 22:04:59 +08:00
raven02
2944856c42
FS : Add missing gstate.isTextureMapEnabled()
2014-03-29 21:03:28 +08:00
Henrik Rydgard
37e9fc59b3
2x alpha: Safer change than the last attempt. Still fixes P2. I think this can be simplified, anyway.
2014-03-29 12:10:44 +01:00
Henrik Rydgard
27767fa85c
Revert "Rethink 2x src alpha->color doubling. Fixes #3379."
...
This reverts commit 47efded29f .
2014-03-29 12:01:47 +01:00
Henrik Rydgard
47efded29f
Rethink 2x src alpha->color doubling. Fixes #3379 .
2014-03-29 11:40:17 +01:00
Unknown W. Brackets
69c2500dc6
Make sure vai->flags are set while hashing.
...
Since we decode the verts in this case we have a fresh flag. Might
be #5718 ?
2014-03-25 08:19:38 -07:00
Henrik Rydgard
dc07d3410a
More checks for alpha test elimination
2014-03-24 17:33:20 +01:00
Henrik Rydgard
f33ddad364
Eliminate further alpha tests
2014-03-24 12:41:33 +01:00
Henrik Rydgard
b174996c1c
Add a conservative check that prevents alpha testing in a few cases.
...
This will become really powerful if we add some code to the vertex decoder
to check for non-full alpha in the vertices, and set gstate_c.vertexFullAlpha if none
is found (probably want to do the reverse, set it to true and clear if any non-255 alpha is found).
Alpha testing is a performance killer on many mobile GPUs so big efforts to
avoid it can be worth it.
2014-03-23 16:32:38 +01:00
Henrik Rydgard
20d480a374
Minor GPU code cleanups
2014-03-23 16:32:38 +01:00
Unknown W. Brackets
b9f4cc4481
Double colors only when texturing, and after test.
...
Per tests.
2014-01-12 11:45:29 -08:00
Henrik Rydgård
c277fe3019
Don't declare fragColor0 unless we will use it. See #4877
2013-12-29 11:26:56 +01:00
raven02
9676f6943f
Restore Alpha/ColorDoubling to do before color test
2013-12-25 15:39:37 +08:00
raven02
f97aacce45
Reformat stencilToAlpha a bit
2013-12-24 22:36:57 +08:00
Henrik Rydgard
832c933cb8
Some shader fixes
2013-12-17 23:38:58 +01:00
Henrik Rydgard
f8312716f3
Only use dual source when actually needed.
...
Does generate a few more shaders but hopefully isn't a problem, should get rid of most of the slowdown in most games.
2013-12-16 23:44:28 +01:00
Henrik Rydgard
a9a15d5196
Don't use dual source when stencil disabled
2013-12-16 23:41:42 +01:00
Henrik Rydgard
0d2ec01e83
Switch CanReplaceAlphaWithStencil response to an enum
2013-12-16 23:24:32 +01:00
Henrik Rydgard
a8a48013f6
Don't use gl_FragColor when deprecated
2013-12-16 23:18:13 +01:00
Henrik Rydgard
40a0705b50
Typo fix checking the alpha func for src factors
2013-12-16 23:13:33 +01:00
Henrik Rydgård
b6f8038a51
Fragment shader: Remove superfluous precision specifiers.
...
Also make sure to strip lowp/mediump/highp on desktop even for GL3.0-3.3.
2013-12-16 11:46:59 +01:00
Unknown W. Brackets
0043950770
Use #version 130 for OpenGL 3.0+ to support out.
...
Otherwise it just gives errors on cards that support dual source blending.
2013-12-15 08:32:22 -08:00
Henrik Rydgard
214cc01976
Fix bugs in stencil2alpha, fix bugs in glsl 3 support, enable dual source blending where available
...
The stencil2alpha bug fixes fix some glows in Wipeout, dual source fixes the rest.
2013-12-15 12:49:13 +01:00
Henrik Rydgard
3cde4921ae
Have the shader generators generate modern GLSL if available.
...
This opens up to use other modern features like dual source alpha later.
2013-12-15 11:23:27 +01:00
raven02
affc7f44a6
Add extra GE_TEXFUNC_UNKNOWN1/2/3 which handle same as GE_TEXFUNC_ADD
2013-12-14 06:47:20 +08:00
Henrik Rydgard
e2080f6c65
Revert "STENCIL_VALUE_UNKNOWN for DECR/INCR/INVERT"
...
This reverts commit 59d3b92e71 .
Revert "zero alpha if stencil op consistently says to zero for format 5551 as well"
This reverts commit ed07a7f411 .
2013-12-08 17:48:22 +01:00
raven02
59d3b92e71
STENCIL_VALUE_UNKNOWN for DECR/INCR/INVERT
2013-12-08 22:19:13 +08:00
raven02
ed07a7f411
zero alpha if stencil op consistently says to zero for format 5551 as well
2013-12-08 22:05:31 +08:00
Henrik Rydgard
7b4759384f
Only zero alpha if stencil op consistently says to zero.
...
Otherwise we may be better off keeping the alpha.
2013-12-08 13:04:54 +01:00
Unknown W. Brackets
054501c100
Replace alpha when blend mode allows it.
...
Some games are using fixed/fixed blending modes which work in our favor.
2013-12-07 02:54:33 -08:00
Henrik Rydgard
c738364f67
Make sure to disable scissor when doing the initial clear of a new FBO.
...
Minor cleanups.
2013-12-06 23:08:37 +01:00
Henrik Rydgård
13cdbd5284
Mask away alpha when the stencil operation is KEEP
2013-12-06 11:15:13 +01:00