mirror of https://github.com/PCSX2/pcsx2.git
GSdx: trying to fix gaps between sprites that may still appear with d3d in native res
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1402 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
edd6b785c1
commit
df8c611084
|
@ -167,7 +167,7 @@ GSSource : public CBaseFilter, private CCritSec, public IGSSource
|
|||
}
|
||||
};
|
||||
|
||||
CAutoPtr<GSSourceOutputPin> m_output;
|
||||
GSSourceOutputPin* m_output;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -178,12 +178,17 @@ public:
|
|||
, m_atpf(10000000i64 / fps)
|
||||
, m_now(0)
|
||||
{
|
||||
m_output.Attach(new GSSourceOutputPin(m_size, m_atpf, this, this, hr));
|
||||
m_output = new GSSourceOutputPin(m_size, m_atpf, this, this, hr);
|
||||
|
||||
// FIXME
|
||||
if(fps == 60) m_atpf = 166834; // = 10000000i64 / 59.94
|
||||
}
|
||||
|
||||
virtual ~GSSource()
|
||||
{
|
||||
delete m_output;
|
||||
}
|
||||
|
||||
DECLARE_IUNKNOWN;
|
||||
|
||||
int GetPinCount()
|
||||
|
@ -193,7 +198,7 @@ public:
|
|||
|
||||
CBasePin* GetPin(int n)
|
||||
{
|
||||
return n == 0 ? m_output.m_p : NULL;
|
||||
return n == 0 ? m_output : NULL;
|
||||
}
|
||||
|
||||
// IGSSource
|
||||
|
|
|
@ -29,6 +29,7 @@ CRC::Game CRC::m_games[] =
|
|||
{0x42E05BAF, TomoyoAfter, JP},
|
||||
{0x7800DC84, Clannad, JP},
|
||||
{0xA6167B59, Lamune, JP},
|
||||
{0xDDB59F46, KyuuketsuKitanMoonties, JP},
|
||||
{0xa39517ab, FFX, EU},
|
||||
{0xa39517ae, FFX, FR},
|
||||
{0x941bb7d9, FFX, DE},
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
TomoyoAfter,
|
||||
Clannad,
|
||||
Lamune,
|
||||
KyuuketsuKitanMoonties,
|
||||
FFX,
|
||||
FFX2,
|
||||
FFXII,
|
||||
|
|
|
@ -35,6 +35,8 @@ GSRenderer::GSRenderer(uint8* base, bool mt, void (*irq)(), GSDevice* dev)
|
|||
m_aa1 = !!theApp.GetConfig("aa1", 0);
|
||||
m_blur = !!theApp.GetConfig("blur", 0);
|
||||
|
||||
if(m_nativeres) m_filter = 2;
|
||||
|
||||
s_n = 0;
|
||||
s_dump = !!theApp.GetConfig("dump", 0);
|
||||
s_save = !!theApp.GetConfig("save", 0);
|
||||
|
|
|
@ -494,9 +494,9 @@ protected:
|
|||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region tomoyo after, clannad, lamune (palette uploaded in a point list, pure genius...)
|
||||
#pragma region palette uploaded in a point list, pure genius...
|
||||
|
||||
if(m_game.title == CRC::TomoyoAfter || m_game.title == CRC::Clannad || m_game.title == CRC::Lamune)
|
||||
if(m_game.title == CRC::TomoyoAfter || m_game.title == CRC::Clannad || m_game.title == CRC::Lamune || m_game.title == CRC::KyuuketsuKitanMoonties)
|
||||
{
|
||||
if(prim == GS_POINTLIST && !PRIM->TME)
|
||||
{
|
||||
|
|
|
@ -211,6 +211,7 @@ void GSSettingsDlg::UpdateControls()
|
|||
EnableWindow(GetDlgItem(m_hWnd, IDC_RESY), hw && !native);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_RESY_EDIT), hw && !native);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_NATIVERES), hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_FILTER), hw && !native);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_LOGZ), dx9 && hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_FBA), dx9 && hw);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw);
|
||||
|
|
|
@ -46,8 +46,15 @@ VS_OUTPUT vs_main(VS_INPUT input)
|
|||
}
|
||||
|
||||
VS_OUTPUT output;
|
||||
|
||||
// pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
|
||||
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
|
||||
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
|
||||
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
|
||||
|
||||
float4 p = float4(input.p, input.z, 0) - float4(0.05f, 0.05f, 0, 0);
|
||||
|
||||
output.p = float4(input.p, input.z, 0) * VertexScale - VertexOffset;
|
||||
output.p = p * VertexScale - VertexOffset;
|
||||
|
||||
if(VS_TME == 1)
|
||||
{
|
||||
|
|
|
@ -38,8 +38,15 @@ VS_OUTPUT vs_main(VS_INPUT input)
|
|||
}
|
||||
|
||||
VS_OUTPUT output;
|
||||
|
||||
// pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
|
||||
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
|
||||
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
|
||||
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
|
||||
|
||||
float4 p = input.p - float4(0.05f, 0.05f, 0, 0);
|
||||
|
||||
output.p = input.p * VertexScale - VertexOffset;
|
||||
output.p = p * VertexScale - VertexOffset;
|
||||
|
||||
if(VS_LOGZ == 1)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue