GPU/HW: Tweak vertex shader offsets

Fixes Doom/Dark Forces/etc in hardware renderer, but only at 1x
resolution. Fixes missing lines in Castlevania SOTM, Ridge Racer Type 4,
etc.
This commit is contained in:
Connor McLaughlin 2020-04-21 22:07:53 +10:00
parent 834f3768a1
commit ec5b52b3fb
2 changed files with 5 additions and 3 deletions

View file

@ -199,7 +199,7 @@ void GPU_HW::LoadVertices()
vertices[i].Set(m_drawing_offset.x + vp.x, m_drawing_offset.y + vp.y, color, texpage, packed_texcoord); vertices[i].Set(m_drawing_offset.x + vp.x, m_drawing_offset.y + vp.y, color, texpage, packed_texcoord);
} }
if (rc.quad_polygon) if (rc.quad_polygon && m_resolution_scale > 1)
HandleFlippedQuadTextureCoordinates(vertices.data()); HandleFlippedQuadTextureCoordinates(vertices.data());
// Cull polygons which are too large. // Cull polygons which are too large.

View file

@ -400,8 +400,10 @@ std::string GPU_HW_ShaderGen::GenerateBatchVertexShader(bool textured)
ss << R"( ss << R"(
{ {
// 0..+1023 -> -1..1 // 0..+1023 -> -1..1
float pos_x = (float(a_pos.x) / 512.0) - 1.0; float pos_x = ((float(a_pos.x) + 0.5) / 1024.0);
float pos_y = (float(a_pos.y) / -256.0) + 1.0; float pos_y = ((float(a_pos.y) + 0.5) / 512.0);
pos_x = (pos_x * 2.0) - 1.0;
pos_y = ((1.0 - pos_y) * 2.0) - 1.0;
v_pos = float4(pos_x, pos_y, 0.0, 1.0); v_pos = float4(pos_x, pos_y, 0.0, 1.0);
v_col0 = a_col0; v_col0 = a_col0;