Commit Graph

293 Commits

Author SHA1 Message Date
xebra
159aa1415d [spline/bezier]Add some gpu features flags for Instanced Tessellation. 2017-01-31 23:37:06 +09:00
xebra
ce27f7b0b5 Expand gpu features flags to 64-bit. 2017-01-31 23:37:06 +09:00
Henrik Rydgard
9c55e1e0de Only enable RAM Clears for the SOCOM games that require it.
Should remove the performance impact of #8994 which is bigger than
expected, it seems (cache pollution?)
2017-01-28 10:11:43 +01:00
Henrik Rydgard
e4cb44c243 Merge the texture flags into the dirty flags 2017-01-24 18:12:20 +01:00
Henrik Rydgard
c289a2c7bf Split TextureChanged into two bools, so we can later convert to dirtyflags 2017-01-24 18:12:20 +01:00
Henrik Rydgard
7d60ec73be Move framebufChanged into the dirty flag field 2017-01-24 18:12:20 +01:00
Henrik Rydgard
b423998c36 Move uniform dirty-flag to gstate_c, opening up for other uses. 2017-01-24 18:12:20 +01:00
Henrik Rydgard
bd4436c6eb Centralize EstimatePerVertexCost and Execute_BlockTransferStart 2017-01-23 17:22:17 +01:00
xebra
b78e184c51 [spline/bezier]Add some variables in gpu state cache for hardware tessellation. 2017-01-23 14:12:02 +01:00
Unknown W. Brackets
82f3df1e06 Vulkan: Initial support for aniso filtering. 2016-03-20 19:31:02 +01:00
Henrik Rydgard
a995dd2ff4 Get rid of strange offset in Vulkan matrix converter 2016-03-20 19:31:02 +01:00
Henrik Rydgard
4063f7e0db Fill out GPU_Vulkan.cpp with what's mostly a copy of GLES_GPU.cpp 2016-03-20 19:30:11 +01:00
Unknown W. Brackets
0e85225e29 Bring back the depth range hack. 2016-02-06 20:28:45 -08:00
Unknown W. Brackets
f1c06d25ea Switch to old-style depth in OpenGL.
Some devices really aren't handling the new method well.  There seem to be
accuracy problems when specifying the values to OpenGL.
2016-02-06 20:21:14 -08:00
Unknown W. Brackets
79750ed1ad Add a config setting to control depth quality.
For those who want 1x PSP like behavior.
2016-01-20 22:11:00 -08:00
Unknown W. Brackets
b80c02c272 Simulate depth clamping.
We'll allow extra space in both directions.  It's not exactly right, but
it's a fast approximation.
2016-01-19 07:12:58 -08:00
Henrik Rydgard
e11d0a7e1c Minor GPU interface cleanup 2016-01-06 23:49:02 +01:00
Unknown W. Brackets
529abd7db4 Correct clamped depth range from [0, 65535].
This changes a few things:
 * All backends clamp the depth range and keep it positive.
 * The depth rounding uniform is now properly dirtied.
 * Projection is updated to translate and scale appropriately.
 * Depth rounding is halved on OpenGL to account for [-1, 1] range.

Fixes Phantasy Star Portable 2 without the need for a game-specific hack.
2016-01-03 12:29:43 -08:00
Unknown W. Brackets
18cdf9f352 Remove the depth range hack.
Ths removes the game-specific hack to workaround depth issues.
2016-01-03 12:05:59 -08:00
Unknown W. Brackets
164594b044 Use a VAO for all drawing, and VBOs throughout. 2015-12-19 09:18:34 -08:00
Unknown W. Brackets
fbc4b4e7a1 Use glCopyImageSubData() when it's available.
There's 4 different extensions providing this functionality.  NV is
supported on desktop and mobile, EXT/OES on mobile, and ARB on desktop.

Mostly these are only supported by desktop cards and NVIDIA mobile.

Good improvement in performance on NVIDIA when blit is called a lot, since
it doesn't need to rebind anything or change state.  Example is in desert
city in Tales of Phantasia.
2015-12-06 10:39:21 -08:00
Henrik Rydgard
4b360a571c Remove the depth range hack option, turning it into an ugly game specific compatibility hack.
I hate doing this, but it's not really better off as an option.

See #8171
2015-11-15 23:00:25 +01:00
Henrik Rydgard
067431b35b Region is not used in the viewport calculations - remove wrong commented out code 2015-11-04 11:04:47 +01:00
Henrik Rydgard
f4248cb550 Remove a whole lot of flipping special cases 2015-11-02 20:07:30 +01:00
Henrik Rydgard
65b78b18ea Only enable fragment shader depth rounding for Heroes Phantasia, should reduce flicker.
Doens't fix but helps #6485
2015-10-11 20:52:00 +02:00
Henrik Rydgard
b07b002040 Introduce "Compatibility Flags".
These should be used very restrictively, see comment in Compatibility.h.

Should help #8004, by disabling depth rounding in Fight Night round 3.
2015-09-27 01:23:20 +02:00
Unknown W. Brackets
dff4aeb30f Correct uv bound pointers in arm vertexjit. 2015-09-13 14:55:10 -07:00
Unknown W. Brackets
5c233fa545 Add initial decoding check for uv bounds. 2015-09-13 10:00:33 -07:00
Henrik Rydgard
0237b84efd Reduce use of #ifdef USING_GLES2 some more 2015-09-05 23:09:06 +02:00
Henrik Rydgard
186d624ef3 Cleanup of FBO+blit flags. Requires the change in native to stop lying. 2015-09-05 22:40:45 +02:00
Henrik Rydgard
5b2ffd1434 Fix some naming, remove NV_draw_texture, move decisions out 2015-09-05 22:11:28 +02:00
Henrik Rydgard
f524049277 Move more GPU feature checks upfront. Re-check when exiting settings menu. 2015-09-05 21:23:58 +02:00
Henrik Rydgard
a71be3f75f Start moving GPU feature compatibility decisions to startup
(and a single, cache-friendly flag field)
2015-09-05 19:58:47 +02:00
Henrik Rydgard
1e8a1b801f Rename viewportX1/X2 etc to scale + center, which is what they actually are. 2015-08-26 15:24:35 +02:00
Henrik Rydgard
d7f4c47c22 Refactor: Even more getting rid of gstate access in the framebuffer manager. 2015-08-05 12:13:14 +02:00
Henrik Rydgard
2430c283a5 More GPU cleaning, removing uses of GPUState.h where not needed.
Want to get rid of direct accesses to GPUState in modules that may be reused in
my future next-gen backends, that will reformat display lists into command lists that will
then be optimized and executed, out of sync with the real GPUState.

Candidate modules that may be reused in full are Framebuffer and Depal, possibly TextureCache to some degree.
2015-07-29 12:37:49 +02:00
Henrik Rydgard
aae254254b Fix bad cleanup change, thanks to tapcio for pointing it out in 07b17560f 2015-07-28 01:09:48 +02:00
Henrik Rydgård
07b17560f4 Add some useful accessors to GPUState (backported from a work-in-progress branch) 2015-07-26 12:24:16 +02:00
Henrik Rydgård
0726912f09 sceDisplay, GPUState cleanup and comments 2015-07-25 09:46:11 +02:00
Unknown W. Brackets
425ff3d78f Track bone matrix updates for future morph usage.
This makes them upload later, if/when they're needed.

Fixes #7746, Shadow of Destiny artifacts when software skinning is
enabled.
2015-05-16 21:49:25 -07:00
Unknown W. Brackets
5822faabf9 Make sure to wrap clut indexes at 1024 bytes.
So that's 256 for 32-bit and 512 for 16-bit.
2015-04-26 00:42:58 -07:00
Unknown W. Brackets
5b61c03b7f Avoid accidental sign ext for > 24 bit clut shift. 2015-04-26 00:26:24 -07:00
Unknown W. Brackets
67662ee23f Force clut address to align to 16.
Hardware seems to ignore the lower bits when loading.
2015-04-12 22:39:49 -07:00
Unknown W. Brackets
0fc311a319 dx9: Compensate for viewport w/h adjustments.
Fixes text in Final Fantasy 4, world map in Star Ocean, etc.
2014-12-18 22:24:47 -08:00
Lioncash
a962bc5a6c Mark some functions as const 2014-12-07 17:08:13 -05:00
Henrik Rydgard
01a1438dce Improve depth buffering in D3D by computing a depth-flipped proj matrix but only when needed. 2014-09-08 23:10:23 +02:00
Unknown W. Brackets
1f51fe7843 d3d: Avoid rewriting textures, just swizzle.
Luckily A is in the same place and the same width, so we can do this for
all but framebuffers easily.

Technically we could do it in OpenGL as well.

Small (1-2%) performance improvement in FF2.
2014-08-28 01:20:21 -07:00
Unknown W. Brackets
a43c3771a3 More correctly blend when hitting the frame cap.
If we hit too many blits per frame, fall back correctly in the shader.
2014-08-18 23:20:48 -07:00
The Dax
8a78f5e814 Pause rendering when minimized, when appropriate (hopefully? This is sort of hard to test.). 2014-07-21 10:30:51 +02:00
Unknown W. Brackets
2883988f22 Ignore the high bits of the framebuffer address.
And depth buffer.  On a PSP, these bits don't affect where it renders to
even slightly.
2014-06-21 08:29:38 -07:00
Unknown W. Brackets
2038bc5527 Support alpha / color test masks on desktop/gles3.
Won't work on GLES 2, though...
2014-06-16 00:33:48 -07:00
Unknown W. Brackets
f6649794df Respect max texture level in GE debugger preview. 2014-06-15 10:31:16 -07:00
Unknown W. Brackets
030b562eb9 Support render-to-offset within a framebuffer.
Fixes #6324.
2014-06-14 17:08:41 -07:00
Unknown W. Brackets
1d9f7b04fc Implement in-shader blending on gles2 / gl2.
I'm sure it'll be slow, though...
2014-06-13 23:42:59 -07:00
Unknown W. Brackets
acab898be0 Keep track of x/y offset for render-to-tex.
Fixes intro in Valkyrie Profile now that we're wrapping correctly.
2014-06-08 14:27:05 -07:00
Unknown W. Brackets
cc841bbe4c Apply tex wrap/clamp in shader for render-to-tex.
Fixes graphical artifacts in Wild Arms XF (which depends on how you get
there, because it's based on the size of the framebuffer.)
2014-06-07 13:13:58 -07:00
Unknown W. Brackets
580143e5e2 Disable vertex arrays before depal as well. 2014-05-31 22:07:42 -07:00
Unknown W. Brackets
29a9ff369e Make a note when we need to reset the shader.
Hmm, not sure this is the cleanest way.
2014-05-27 22:12:25 +02: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
16f4622ac7 Remove cached light variables to reduce work when parsing DLs.
Also removes some duplication between GL and the inactive D3D code.
2014-04-21 12:51:19 +02:00
raven02
abc5c86339 Split out texture level 2014-04-19 06:45:17 +08:00
Unknown W. Brackets
6cfc61665d Switch to a bitmask instead. 2014-04-13 14:45:55 -07:00
Unknown W. Brackets
4c1c694d4b Use flags to avoid hashing textures when unchanged.
If only parameters change (like wrapping or clut, etc.) we don't need to
rehash the data - we know it hasn't changed.

Should reduce the distance between lazy texture hashing on and off.
2014-04-13 14:22:39 -07: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
Unknown W. Brackets
678237aa6c Improve SSE usage in software transform.
It's actually already pretty decent (unlike the softgpu), but there were a
few places it could use a bit of help.  Speeds up things with hardware
transform off, or areas that need to use software transform.
2014-03-17 23:05:48 -07:00
raven02
04f31c5e8e Add gstate.isSkinningEnabled() 2013-12-16 20:42:45 +08:00
Unknown W. Brackets
a2d91ee26d softgpu: Don't mask out so much of fb stride.
Seems like anything from 4 is supported in 8888, most likely it just needs
to align to 16 bytes.  Values above 1024 work, but e.g. 2044 seems buggy.

Fixes the map on Hexyz Force (rendered at 80 stride.)
2013-12-15 11:59:24 -08:00
raven02
2e7609b084 Cleanup ClearmodeDepthMask 2013-12-10 20:48:20 +08:00
Henrik Rydgård
e14f17b430 isClutSharedForMipmaps: This was presumably inverted by accident? 2013-12-09 12:46:13 +01:00
Unknown W. Brackets
c6a441965e Move shared clut check to gstate. 2013-12-08 23:11:56 -08:00
Unknown W. Brackets
435115441d Reinitialize the GE on sceKernelLoadExec().
Mostly, reset the lists and draw completion, etc.

May be required for Capcom Classic Collection Reloaded to work.
2013-11-28 15:35:12 -08:00
Unknown W. Brackets
7a86ca2890 Mask block transfer stride correctly per tests.
1024 is valid, but nothing higher.

May help graphics in some games.
2013-11-25 01:53:33 -08:00
Henrik Rydgard
8c562a615f Bone matrix loading speedup. Bit of a hack but seems reliable enough. 2013-11-14 14:02:31 +01:00
Henrik Rydgard
7e67476b00 Simple unoptimized software skinning.
Does not take advantage of the possible reduction in state changes yet.
2013-11-13 18:10:57 +01:00
Henrik Rydgard
4b98e0d6d6 Optimize LoadClut a little 2013-11-12 17:06:03 +01:00
Unknown W. Brackets
21deaef35a Invert gstate.getClearModeColorMask().
It makes more sense matching gstate.getColorMask().
2013-11-10 03:20:58 -08: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
Unknown W. Brackets
d49ad5f114 Use an accessor for depth/frame addresses. 2013-10-06 22:17:53 -07:00
Unknown W. Brackets
3787471791 Add some initial methods to GPUDebugInterface. 2013-09-22 10:22:33 -07:00
Henrik Rydgard
d7ae3f88a1 Do Beziers more correctly (although still not tesselating properly).
Snow now visible in SSX.
2013-09-22 09:52:46 +02:00
Henrik Rydgard
01def3b6cc Missed these 2013-09-21 23:44:11 +02:00
Henrik Rydgard
82e5787bbe Preparation for proper spline/bez: Convert control points to a simple format.
The bezier/spline code will no longer need to handle morph and splines,
when it's finally written. This is done by pre-skinning in software and
pre-decoding to get rid of the morph.
2013-09-21 23:37:14 +02:00
Unknown W. Brackets
a1f3591960 Android buildfix. 2013-09-20 09:51:43 -07:00
Unknown W. Brackets
7906de26f7 Try to match especially the size of ge contexts.
But also some of the actual data, most of it matches like this.
2013-09-20 00:33:32 -07:00
Unknown W. Brackets
ad4bd8ed74 softgpu: small optimization, precompute tex info. 2013-09-15 21:39:28 -07:00
Unknown W. Brackets
68f61e5071 Remove some unused gstate_c values. 2013-09-14 14:36:06 -07:00
Unknown W. Brackets
7b2dea4429 Use accessors for offsetx/y. 2013-09-14 11:06:48 -07:00
Unknown W. Brackets
40e3e8e930 Use a gstate enum, report unhandled blend mode. 2013-09-14 07:36:43 -07:00
raven02
f6c41bfa13 Add u16 getTextureDimension(int level) 2013-09-08 16:09:40 +08:00
Unknown W. Brackets
bbf714c361 Provide for GPU init failure, kill a warning. 2013-09-07 22:30:30 -07:00
raven02
e834b1b80d Use GEComparison for getDepthTestFunction() 2013-09-05 13:59:09 +08:00
raven02
7f080b9958 Add isAntiAliasEnabled() 2013-08-30 20:46:36 +08: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
Unknown W. Brackets
cd70250d8c Use more accessors, simplify softgpu colortest. 2013-08-24 11:34:38 -07:00
Unknown W. Brackets
5ab04a3076 Centralize CLUT handling form gstate values. 2013-08-24 11:34:37 -07:00
Unknown W. Brackets
7f6cf3ec29 Add a few gstate accessors for texture type stuff. 2013-08-24 11:34:37 -07:00
Unknown W. Brackets
0a217a1254 Use accessors better for block transfers. 2013-08-24 11:34:36 -07:00
Unknown W. Brackets
c141e94fe9 Use gstate.* accessors in a few more places. 2013-08-24 11:34:35 -07:00
Henrik Rydgard
dfb91d4532 Track number of GPU commands executed per call level.
This is to get an idea if it would be beneficial to compile and cache display lists. Looks like it would be for some games, for example in GTA it's often 20k/80k/20k commands per frame - that is 100k executed commands per frame that could potentially just be executed instead of interpreted. Likewise in Wipeout. Of course, this means yet another cache with invalidation issues etc..
2013-08-23 11:29:55 +02:00
raven02
282d072793 Add isTextureAlphaUsed() 2013-08-20 21:28:16 +08:00
Tony Wasserka
2962d242cb softgpu: Implement skinning. 2013-08-16 23:49:14 +02:00
Tony Wasserka
11a94e1d14 softgpu: Implement spline surface drawing (without patch subdivision). 2013-08-16 23:49:13 +02:00
Tony Wasserka
d2f30961af softgpu: Make perspective correct uv mapping code more readable and implement projection mapping. 2013-08-16 23:49:12 +02:00
Tony Wasserka
62b384e052 softgpu: Lots of clearmode fixes. 2013-08-16 23:49:11 +02:00
Tony Wasserka
e1216e91cc softgpu: Implement texture scaling, texture offset and texture coordinate wrapping/clamping. 2013-08-16 23:49:10 +02:00
Tony Wasserka
d91d5c087b GPUState: Fix depth buffer stride getter. 2013-08-16 23:49:09 +02:00
Tony Wasserka
a013aad6f1 softgpu: Fix incorrect depth buffer write base address.
softgpu: Implement framebuffer pixel formats different than RGBA8888.
softgpu: Move texel decoding functions to a separate header.
2013-08-16 23:49:09 +02:00
Tony Wasserka
0e1e8fe331 softgpu: Clean up depth testing code. 2013-08-16 23:49:02 +02:00
Henrik Rydgard
96373132bb Android buildfix 2013-08-14 20:42:13 +02:00
raven02
fad8b77044 Merge remote-tracking branch 'upstream/master' into patch-13 2013-08-14 07:29:56 +08:00
raven02
c2a86d647f Fix wrong size generated of FBO for some games which uses it as render-to-texture 2013-08-12 02:20:55 +08:00
Unknown W. Brackets
e7c7c5b3db Add a setting to launch a separate CPU thread. 2013-08-09 22:41:30 -07:00
Henrik Rydgard
bc00a7e302 Process frame timing on frame boundaries instead of flips. Frameskipping works better in many games. 2013-08-07 23:32:28 +02:00
Henrik Rydgard
51ffdfa132 Rename gpuStats.numFrames to numVBlanks. Switch to using numFlips for things like cache expirations. 2013-08-07 22:34:00 +02:00
raven02
c4a3638183 Add gstate.isClearModeDepthWriteEnabled/ColorMask/AlphaMask() 2013-08-03 14:56:37 +08:00
raven02
0daa550538 Add getWeightMask() 2013-07-30 23:55:11 +08:00
raven02
50f98fe498 Add texture level parameter 2013-07-30 23:23:02 +08:00
raven02
75c9ce2498 GPUstate :Add getTextureWidth() & getTextureHeight()
and
2013-07-30 23:09:22 +08:00
Unknown W. Brackets
2f94977efe Don't include gfx/gl* outside the OpenGL GE. 2013-07-29 22:47:38 -07:00
raven02
adf0680897 gstate code cleanup 2013-07-29 17:25:07 +08:00
Henrik Rydgard
50a2d1b87f More work on prescaled UV 2013-07-28 00:33:51 +02:00
Unknown W. Brackets
4cfa074546 Use GE state accessors in the texcache. 2013-07-21 19:45:05 -07:00
Unknown W. Brackets
b2927213c7 Use stencil GE state accessors. 2013-07-21 19:45:04 -07:00
Unknown W. Brackets
46805b37cb Use the texture-related GE accessors. 2013-07-21 19:45:04 -07:00
Unknown W. Brackets
abd9dc6137 Use the light computation/type GE accessors. 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
neobrain
3ca0c5397f Add logic op/color masking GE state accessors. 2013-07-21 19:44:29 -07:00
neobrain
e6e7dd66d0 Implement some stencil test GE state accessors. 2013-07-21 19:44:29 -07:00
Florent Castelli
cc180fa204 Add type safe getter for texture and clut format fields. 2013-07-21 19:44:28 -07:00
neobrain
a70220a1d5 Add clut GE state accessors. 2013-07-21 19:44:28 -07:00
neobrain
01824e44ae Add some texture-related GE accessors. 2013-07-21 19:44:23 -07:00
neobrain
4c74cafa51 Add some more lighting related accessors. 2013-07-21 19:43:34 -07:00
neobrain
abca8f6c87 Add some more GE state accessors for light/etc. 2013-07-21 19:43:34 -07:00
neobrain
a40741798c Add accessors for several lighting related values. 2013-07-21 17:43:08 -07:00
raven02
7ac496529b Vendor Based Alpha and Color Testing 2013-07-21 01:14:36 +08:00
Henrik Rydgard
4c913c097e new attempt at sizing the framebuffers, similar to what raven02 said 2013-07-10 21:59:43 +02:00
PGGB
eaa8813d44 Remove relative gl_common.h include directives 2013-07-10 19:28:15 +02:00
Sacha
b39a572043 Buildfixes.
Fix C++11 usage.
Remove redundancy.
Fix st_*time re-usage.
2013-06-02 13:26:39 +10:00
Unknown W. Brackets
9c85bd92e4 Show statistics for GPU cycles executed per frame. 2013-05-31 10:40:16 -07:00
Unknown W. Brackets
cb217189c5 Keep track of whether a texture has alpha.
This way we know what sorts of blending we even have to do.  Commonly,
textures don't have any real alpha.

Not yet used for anything.
2013-05-08 23:14:19 -07:00
Unknown W. Brackets
85a23dac63 Avoid framebuffer lookups for repeated prims.
There are usually many prims per framebuffer.  This cuts time spent in
SetRenderFramebuffer() from 1% to 0.13% (although a bit more time in
ExecuteOp, not much.)
2013-04-22 22:04:27 -07:00
BeaR
8cc3f01b7b Use correct state for lmode 2013-04-16 19:22:18 +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
BeaR
fa3a1fbd52 Add support for spotlights 2013-04-09 18:26:06 +02:00
raven02
6396324f57 Add few isEnabled() in GPUState for Alpha/Color/Lighting/Texture Test 2013-03-27 18:35:54 +08:00
Henrik Rydgard
d96c588288 Cache vertex decoders. No big boost now, but opens for optimizing them more, and lets us keep stats of the most common ones. 2013-03-24 12:28:42 +01:00
Henrik Rydgard
b1108f3290 Respect the size of the current FBO when drawing. Some cleanup. 2013-03-16 00:40:37 +01:00
Henrik Rydgard
bc15617392 Make un-buffered rendering much smarter, removing flicker.
This turns it into a very viable option for many games. You do lose some FX
but it can as a result even be used as a workaround for the massive glow
in Wipeout...
2013-03-03 13:00:21 +01:00
raven02
e15df27c4a New isAlphaBlendEnabled() & isDitherEnabled() 2013-02-27 22:37:17 +08:00