diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-06-14 06:28:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-14 06:28:12 +0200 |
commit | 5fe5ccac4250d5f001cc29838033e2fef63ebb6c (patch) | |
tree | 32224370753184eeca64cf9b055351ee599c9e94 /src/video_core/swrasterizer/rasterizer.cpp | |
parent | Services/UDS: Set the proper bit in the ConnectionStatus structure when creating a network. (#2738) (diff) | |
parent | pica/rasterizer: implement/stub texture wrap mode 4-7 (diff) | |
download | yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar.gz yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar.bz2 yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar.lz yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar.xz yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.tar.zst yuzu-5fe5ccac4250d5f001cc29838033e2fef63ebb6c.zip |
Diffstat (limited to 'src/video_core/swrasterizer/rasterizer.cpp')
-rw-r--r-- | src/video_core/swrasterizer/rasterizer.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 8b7b1defb..cd7b6c39d 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -357,10 +357,22 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve int t = (int)(v * float24::FromFloat32(static_cast<float>(texture.config.height))) .ToFloat32(); - if ((texture.config.wrap_s == TexturingRegs::TextureConfig::ClampToBorder && - (s < 0 || static_cast<u32>(s) >= texture.config.width)) || - (texture.config.wrap_t == TexturingRegs::TextureConfig::ClampToBorder && - (t < 0 || static_cast<u32>(t) >= texture.config.height))) { + bool use_border_s = false; + bool use_border_t = false; + + if (texture.config.wrap_s == TexturingRegs::TextureConfig::ClampToBorder) { + use_border_s = s < 0 || s >= static_cast<int>(texture.config.width); + } else if (texture.config.wrap_s == TexturingRegs::TextureConfig::ClampToBorder2) { + use_border_s = s >= static_cast<int>(texture.config.width); + } + + if (texture.config.wrap_t == TexturingRegs::TextureConfig::ClampToBorder) { + use_border_t = t < 0 || t >= static_cast<int>(texture.config.height); + } else if (texture.config.wrap_t == TexturingRegs::TextureConfig::ClampToBorder2) { + use_border_t = t >= static_cast<int>(texture.config.height); + } + + if (use_border_s || use_border_t) { auto border_color = texture.config.border_color; texture_color[i] = {border_color.r, border_color.g, border_color.b, border_color.a}; |