|
|
|
@ -2299,8 +2299,7 @@ private:
|
|
|
|
|
ASSERT_MSG(!instr.tmml.UsesMiscMode(Tegra::Shader::TextureMiscMode::NDV),
|
|
|
|
|
"NDV is not implemented");
|
|
|
|
|
|
|
|
|
|
const std::string op_a = regs.GetRegisterAsFloat(instr.gpr8);
|
|
|
|
|
const std::string op_b = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
|
|
|
|
|
const std::string x = regs.GetRegisterAsFloat(instr.gpr8);
|
|
|
|
|
const bool is_array = instr.tmml.array != 0;
|
|
|
|
|
auto texture_type = instr.tmml.texture_type.Value();
|
|
|
|
|
const std::string sampler =
|
|
|
|
@ -2311,13 +2310,11 @@ private:
|
|
|
|
|
std::string coord;
|
|
|
|
|
switch (texture_type) {
|
|
|
|
|
case Tegra::Shader::TextureType::Texture1D: {
|
|
|
|
|
std::string x = regs.GetRegisterAsFloat(instr.gpr8);
|
|
|
|
|
coord = "float coords = " + x + ';';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case Tegra::Shader::TextureType::Texture2D: {
|
|
|
|
|
std::string x = regs.GetRegisterAsFloat(instr.gpr8);
|
|
|
|
|
std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
|
|
|
|
|
const std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
|
|
|
|
|
coord = "vec2 coords = vec2(" + x + ", " + y + ");";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@ -2327,8 +2324,7 @@ private:
|
|
|
|
|
UNREACHABLE();
|
|
|
|
|
|
|
|
|
|
// Fallback to interpreting as a 2D texture for now
|
|
|
|
|
std::string x = regs.GetRegisterAsFloat(instr.gpr8);
|
|
|
|
|
std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
|
|
|
|
|
const std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
|
|
|
|
|
coord = "vec2 coords = vec2(" + x + ", " + y + ");";
|
|
|
|
|
texture_type = Tegra::Shader::TextureType::Texture2D;
|
|
|
|
|
}
|
|
|
|
|