Commit graph

93 commits

Author SHA1 Message Date
Henrik Rydgard
2292531dd6 Small optimization for Disable Alpha Test - makes sure we don't generate the same shader twice. 2013-10-22 15:15:13 +02:00
Henrik Rydgard
bf59f3db73 Add ugly hack setting for PowerVR to disable alpha test
Causes glitches but the speedup is truly massive in some games so I relent :/

Please do not report graphics bugs when this is enabled...

Future: Maybe remove this setting except on PowerVR?
2013-10-22 13:00:19 +02:00
Henrik Rydgard
80702109f5 Move gpu vendor detection to native with the rest of the gl init.
Also disable vertical layout for mainscreen entirely.
2013-10-16 00:48:44 +02:00
Henrik Rydgard
f645988b8f More precision annotations in shader generators, other microoptimizations 2013-10-07 20:15:00 +02:00
Henrik Rydgard
99a7ff0973 Fix shader generation issue for desktop PowerVR chips - are there still such things???
Seen in our automatic reports.
2013-09-29 11:17:12 +02:00
raven02
8564d146c8 Rename roundTo255th to roundTo255thf 2013-09-28 00:06:18 +08:00
raven02
50edfb75d0 Add reporting for color test function 2013-09-10 09:20:50 +08:00
Unknown W. Brackets
655a7b4973 Check for a stencil test when ignoring alphatest. 2013-08-29 22:14:51 -07:00
Henrik Rydgard
766731db8e Add back the default case to the triviallytrue functions. 2013-08-29 20:39:23 +02:00
raven02
65d836c5dd Fix FF2 issue #2857 2013-08-29 22:50:31 +08:00
raven02
0b98f1f71b Should keep default case 2013-08-28 15:10:40 +08:00
raven02
0f55a6e042 Add GE_COMP_NEVER for alpha/color test to return false. 2013-08-28 14:33:15 +08:00
Henrik Rydgard
dcc63fd716 PowerVR: work around what appears to be a driver bug with equality test + discard, but not completely sure that discard isn't just broken.
If this change breaks something, it was probably already broken, and it's PVR-only.
2013-08-28 00:12:49 +02:00
Henrik Rydgard
dd667156f5 Oops 2013-08-27 22:14:13 +02:00
Henrik Rydgard
711d3ff52c Speedup a few 2D games on mobile by eliminating the alpha test in some conditions
That is, if there's no depth testing/writing, and the alpha equation will produce the same result as the alpha test (when the alpha test is >= 0 or != 0 and the blend func is safe), we turn off the alpha test.
2013-08-27 21:48:03 +02:00
Henrik Rydgard
6360fcb0ae Add some stats to get some idea of much alpha tested drawing we do.
Turns out it's one hell of a lot and we really should fix this by
checking both vertices and textures to deduce when we can just skip
alpha testing safely, probably quite often.

I care about this because alpha testing drawing is very expensive
on some mobile chips.
2013-08-27 21:01:17 +02:00
Henrik Rydgard
edb6e5a54c Fix fallthough bugs in isAlphaTestTriviallyTrue 2013-08-24 11:56:39 +02:00
Henrik Rydgard
416f0c56e8 Experiment: Use glBlendFuncSeparate to not change dest alpha when blending.
Fixes Persona blending issues.
2013-08-22 19:14:04 +02:00
raven02
9931e5c5cc Fragment : Set doTextureAlpha = gstate.isTextureAlphaUsed(); 2013-08-20 21:32:07 +08:00
Unknown W. Brackets
12c5f5e1e6 Use constants for other uv gen mode usages.
And also change them to treat 3 as coords as well.
2013-08-19 00:43:54 -07:00
Unknown W. Brackets
46805b37cb Use the texture-related GE accessors. 2013-07-21 19:45:04 -07:00
Unknown W. Brackets
988614f6d0 Use lightning GE state accessors where appropriate. 2013-07-21 19:44:30 -07:00
Unknown W. Brackets
c0da6b97c5 Add and use some color/alpha test accessors. 2013-07-21 19:44:30 -07:00
raven02
7ac496529b Vendor Based Alpha and Color Testing 2013-07-21 01:14:36 +08:00
raven02
44fe09f03e Fix black box in Dainiji_Super_Robot_Taisen_Z_Hakaihen 2013-07-20 01:55:12 +08:00
Henrik Rydgard
1abd9ff2d3 Change the alpha test rounding offset to be just under half. Fixes some disappearing things.. 2013-07-18 19:19:52 +02:00
Henrik Rydgard
d76c45411d alpha test: fix typo, add back rounding offset 2013-07-18 01:02:21 +02:00
Henrik Rydgard
3e24949f8a Try different approach to rounding the inputs to the alpha test. Appears to fix some problems on PowerVR. 2013-07-17 23:03:21 +02:00
Henrik Rydgard
79110638c9 Unbreak things (silly mistake in last commit, remove *2.0 factor which just can't be right) 2013-07-06 22:50:06 +02:00
Henrik Rydgard
9928bd762c Specify alphacolorref as highp 2013-07-06 22:44:18 +02:00
raven02
64de3c428e Minor cleanup 2013-06-28 21:43:12 +08:00
Unknown W. Brackets
cd213e655b Add some debug code for finding textures. 2013-06-22 10:35:34 -07:00
Henrik Rydgard
cdef31f9fc Turn off the use of uniform arrays in shaders as some devices don't like them, and the speedup seems to be very small if any. 2013-05-26 14:03:02 +02:00
Henrik Rydgard
199907b9ed Shader simplification - well, more of it. Hopefully this helps the mali problems a bit more. 2013-05-22 15:52:10 +02:00
Unknown W. Brackets
03f3f99e39 Don't use ivec in the fragment shader.
Attempt at #1777.  Needs the + 0.5 to round properly on mobile.
2013-05-12 13:09:02 -07:00
Unknown W. Brackets
5ecacd6bc8 Don't double alpha when alphablend is disabled.
Probably doesn't affect much.
2013-05-12 09:31:23 -07:00
Unknown W. Brackets
c937a22f26 Only double the color with color doubling.
Not the alpha.
2013-05-09 23:31:53 -07:00
Unknown W. Brackets
47c404b925 Clean up some comments. 2013-05-09 01:19:55 -07:00
Unknown W. Brackets
4a30221c95 Ignore texfunc RGBA when texture is full alpha.
This allows us to skip some work in the fragment shader.
2013-05-08 23:14:20 -07:00
Unknown W. Brackets
ebf1b57834 Rename round255f to roundAndScale255f.
Seems to verbose to me, but no one can think it doesn't scale or round
this way.
2013-05-07 08:02:27 -07:00
Unknown W. Brackets
f2b4c4a0bc Pre-round the colortest/alphatest reference val. 2013-05-07 07:52:49 -07:00
raven02
eba452f1ba Add back round255f and round255v to u_alphacolorref 2013-05-07 21:52:40 +08:00
raven02
3744f6ee28 Fix colortest rounding using vec3 2013-05-07 19:53:48 +08:00
raven02
274b9c712c Add rounding to equality check for ColorTest 2013-05-07 16:47:53 +08:00
Unknown W. Brackets
9537be9ebb Don't double src alpha when it's not safe to do so.
Fixes LittleBigPlanet vignette.
2013-05-03 01:10:59 -07:00
Unknown W. Brackets
8f27d03af3 Double alpha at least for a known case.
Makes Popolocrois look much better now.
2013-04-30 00:04:20 -07:00
Unknown W. Brackets
3a769bb047 Do alpha test equal compares using rounding.
Fixes accuracy problems, Popolocrois shows things now.
2013-04-29 01:19:23 -07:00
Henrik Rydgard
e3f183bc28 ColorDouble needs to be in the fragment shader ID 2013-04-27 18:33:56 +02:00
Henrik Rydgard
c04ce5a64e Implement projective texture mapping. It's not used a great deal but good to have. 2013-04-17 21:41:47 +02:00
Henrik Rydgard
ea11c36091 Fix a vshader id bit collision, avoid color test when set to 'ALWAYS', zeroinitialize dls. 2013-04-15 22:57:54 +02:00