mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
GPU: Write stencil fail to alpha is RGB masked.
See #15813 (Hunter x Hunter) which does this for shadows.
This commit is contained in:
parent
929266cc9e
commit
710abcc288
2 changed files with 9 additions and 1 deletions
|
@ -1511,6 +1511,14 @@ void ConvertStencilFuncState(GenericStencilFuncState &state) {
|
|||
state.testRef = gstate.getStencilTestRef();
|
||||
state.testMask = gstate.getStencilTestMask();
|
||||
|
||||
if ((state.sFail == state.zFail || !gstate.isDepthTestEnabled()) && state.sFail == state.zPass) {
|
||||
// Common case: we're writing only to stencil (usually REPLACE/REPLACE/REPLACE.)
|
||||
// We want to write stencil to alpha in this case, so switch to ALWAYS if already masked.
|
||||
if ((gstate.getColorMask() & 0x00FFFFFF) == 0x00FFFFFF) {
|
||||
state.testFunc = GE_COMP_ALWAYS;
|
||||
}
|
||||
}
|
||||
|
||||
switch (gstate_c.framebufFormat) {
|
||||
case GE_FORMAT_565:
|
||||
state.writeMask = 0;
|
||||
|
|
|
@ -135,7 +135,7 @@ const CommonCommandTableEntry commonCommandTable[] = {
|
|||
{ GE_CMD_BLENDMODE, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE },
|
||||
{ GE_CMD_BLENDFIXEDA, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE },
|
||||
{ GE_CMD_BLENDFIXEDB, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE },
|
||||
{ GE_CMD_MASKRGB, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE | DIRTY_COLORWRITEMASK },
|
||||
{ GE_CMD_MASKRGB, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE | DIRTY_DEPTHSTENCIL_STATE | DIRTY_COLORWRITEMASK },
|
||||
{ GE_CMD_MASKALPHA, FLAG_FLUSHBEFOREONCHANGE, DIRTY_BLEND_STATE | DIRTY_FRAGMENTSHADER_STATE | DIRTY_DEPTHSTENCIL_STATE | DIRTY_COLORWRITEMASK },
|
||||
{ GE_CMD_ZTEST, FLAG_FLUSHBEFOREONCHANGE, DIRTY_DEPTHSTENCIL_STATE },
|
||||
{ GE_CMD_ZTESTENABLE, FLAG_FLUSHBEFOREONCHANGE, DIRTY_DEPTHSTENCIL_STATE | DIRTY_FRAGMENTSHADER_STATE },
|
||||
|
|
Loading…
Add table
Reference in a new issue