Merge pull request #1130 from Subv/tex_2d

Shaders: Fixed texture coordinates in TEX with Texture2D
This commit is contained in:
bunnei 2018-08-20 21:49:47 -04:00 committed by GitHub
commit ea99819f37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 6 deletions

View File

@ -1514,7 +1514,7 @@ private:
switch (instr.tex.texture_type) { switch (instr.tex.texture_type) {
case Tegra::Shader::TextureType::Texture2D: { case Tegra::Shader::TextureType::Texture2D: {
std::string x = regs.GetRegisterAsFloat(instr.gpr8); std::string x = regs.GetRegisterAsFloat(instr.gpr8);
std::string y = regs.GetRegisterAsFloat(instr.gpr20); std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
coord = "vec2 coords = vec2(" + x + ", " + y + ");"; coord = "vec2 coords = vec2(" + x + ", " + y + ");";
break; break;
} }
@ -1526,7 +1526,9 @@ private:
break; break;
} }
default: default:
UNIMPLEMENTED(); LOG_CRITICAL(HW_GPU, "Unhandled texture type {}",
static_cast<u32>(instr.tex.texture_type.Value()));
UNREACHABLE();
} }
const std::string sampler = const std::string sampler =
@ -1576,7 +1578,9 @@ private:
break; break;
} }
default: default:
UNIMPLEMENTED(); LOG_CRITICAL(HW_GPU, "Unhandled texture type {}",
static_cast<u32>(instr.texs.GetTextureType()));
UNREACHABLE();
} }
const std::string sampler = GetSampler(instr.sampler, instr.texs.GetTextureType(), const std::string sampler = GetSampler(instr.sampler, instr.texs.GetTextureType(),
instr.texs.IsArrayTexture()); instr.texs.IsArrayTexture());
@ -1593,7 +1597,8 @@ private:
switch (instr.tlds.GetTextureType()) { switch (instr.tlds.GetTextureType()) {
case Tegra::Shader::TextureType::Texture2D: { case Tegra::Shader::TextureType::Texture2D: {
if (instr.tlds.IsArrayTexture()) { if (instr.tlds.IsArrayTexture()) {
UNIMPLEMENTED(); LOG_CRITICAL(HW_GPU, "Unhandled 2d array texture");
UNREACHABLE();
} else { } else {
std::string x = regs.GetRegisterAsInteger(instr.gpr8); std::string x = regs.GetRegisterAsInteger(instr.gpr8);
std::string y = regs.GetRegisterAsInteger(instr.gpr20); std::string y = regs.GetRegisterAsInteger(instr.gpr20);
@ -1602,7 +1607,9 @@ private:
break; break;
} }
default: default:
UNIMPLEMENTED(); LOG_CRITICAL(HW_GPU, "Unhandled texture type {}",
static_cast<u32>(instr.tlds.GetTextureType()));
UNREACHABLE();
} }
const std::string sampler = GetSampler(instr.sampler, instr.tlds.GetTextureType(), const std::string sampler = GetSampler(instr.sampler, instr.tlds.GetTextureType(),
instr.tlds.IsArrayTexture()); instr.tlds.IsArrayTexture());
@ -1623,7 +1630,9 @@ private:
break; break;
} }
default: default:
UNIMPLEMENTED(); LOG_CRITICAL(HW_GPU, "Unhandled texture type {}",
static_cast<u32>(instr.tld4.texture_type.Value()));
UNREACHABLE();
} }
const std::string sampler = const std::string sampler =