mirror of
https://github.com/PCSX2/gsdx-sourceforge.git
synced 2026-02-04 03:11:19 +01:00
This commit is contained in:
@@ -233,6 +233,11 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
|
||||
m_slenv.f.g = GSVector4((float)(int)env.FOGCOL.FCG);
|
||||
m_slenv.f.b = GSVector4((float)(int)env.FOGCOL.FCB);
|
||||
|
||||
if(m_sel.fpsm == 1)
|
||||
{
|
||||
m_slenv.fm |= GSVector4i::xff000000();
|
||||
}
|
||||
|
||||
if(PRIM->TME)
|
||||
{
|
||||
DWORD hash = context->TEX0.ai32[0]; // TBP0, TBW, PSM
|
||||
@@ -887,7 +892,7 @@ void GSRasterizer::DrawScanline(int top, int left, int right, const Vertex& v)
|
||||
GSVector4i zm = m_slenv.zm;
|
||||
GSVector4i test = GSVector4i::zero();
|
||||
|
||||
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one(test));
|
||||
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one(fa));
|
||||
|
||||
if(ztst > 1)
|
||||
{
|
||||
|
||||
@@ -861,7 +861,7 @@ void GSRasterizer::DrawScanlineEx(int top, int left, int right, const Vertex& v)
|
||||
GSVector4i zm = m_slenv.zm;
|
||||
GSVector4i test = GSVector4i::zero();
|
||||
|
||||
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one(test));
|
||||
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one(fa));
|
||||
|
||||
if(ztst > 1)
|
||||
{
|
||||
@@ -1124,7 +1124,7 @@ void GSRasterizer::DrawScanlineEx(int top, int left, int right, const Vertex& v)
|
||||
s = s.blend(d, fm);
|
||||
}
|
||||
|
||||
m_state->m_mem.WriteFrameAndZBufX(fpsm, fa, fm, s, ztst > 0 && !(atst == 0 && afail != 2) ? zpsm : 3, za, zm, zs, pixels);
|
||||
m_state->m_mem.WriteFrameAndZBufX(fpsm == 1 && rfb ? 0 : fpsm, fa, fm, s, ztst > 0 && !(atst == 0 && afail != 2) ? zpsm : 3, za, zm, zs, pixels);
|
||||
|
||||
}
|
||||
while(0);
|
||||
|
||||
@@ -1066,6 +1066,41 @@ public:
|
||||
return zero() == zero();
|
||||
}
|
||||
|
||||
static GSVector4i one()
|
||||
{
|
||||
return invzero().srl32(31);
|
||||
}
|
||||
|
||||
static GSVector4i x0001()
|
||||
{
|
||||
return invzero().srl16(15);
|
||||
}
|
||||
|
||||
static GSVector4i x000000ff()
|
||||
{
|
||||
return invzero().srl32(24);
|
||||
}
|
||||
|
||||
static GSVector4i x80000000()
|
||||
{
|
||||
return invzero().sll32(31);
|
||||
}
|
||||
|
||||
static GSVector4i xff000000()
|
||||
{
|
||||
return invzero().sll32(24);
|
||||
}
|
||||
|
||||
static GSVector4i x00ffffff()
|
||||
{
|
||||
return invzero().srl32(8);
|
||||
}
|
||||
|
||||
static GSVector4i x00003fff()
|
||||
{
|
||||
return invzero().srl32(18);
|
||||
}
|
||||
|
||||
static GSVector4i invzero(const GSVector4i& v)
|
||||
{
|
||||
// - vc can't generate a simple pxor xmm0, xmm0 / pcmpeqd xmm0, xmm0
|
||||
|
||||
Reference in New Issue
Block a user