aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/rasterizer.cpp
diff options
context:
space:
mode:
authorGravatar Tony Wasserka <NeoBrainX@gmail.com>2015-01-03 13:33:57 +0100
committerGravatar Tony Wasserka <NeoBrainX@gmail.com>2015-02-18 14:50:28 +0100
commit6ca752ccbc7c59dab66f476ca02d3b53527c57da (patch)
treed5578562d0ea9d4c06dbd1050ae1460bf2e842bd /src/video_core/rasterizer.cpp
parent8bd7a896ea82b5b2f4ff7f2ec50624ff6ec45431 (diff)
Pica/TextureUnit: Implement mirrored repeating texture wrapping.
Diffstat (limited to 'src/video_core/rasterizer.cpp')
-rw-r--r--src/video_core/rasterizer.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/video_core/rasterizer.cpp b/src/video_core/rasterizer.cpp
index 65dddb47..f788122d 100644
--- a/src/video_core/rasterizer.cpp
+++ b/src/video_core/rasterizer.cpp
@@ -251,7 +251,15 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
return val;
case Regs::TextureConfig::Repeat:
- return (int)(((unsigned)val) % size);
+ return (int)((unsigned)val % size);
+
+ case Regs::TextureConfig::MirroredRepeat:
+ {
+ int val = (int)((unsigned)val % (2 * size));
+ if (val >= size)
+ val = 2 * size - 1 - val;
+ return val;
+ }
default:
LOG_ERROR(HW_GPU, "Unknown texture coordinate wrapping mode %x\n", (int)mode);