summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexManagerBase.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2015-01-16 04:01:00 +1300
committerScott Mansell <phiren@gmail.com>2015-01-23 03:32:31 +1300
commit128d3036564e99fd3c8d7e6ae45eb17e43d0c95f (patch)
tree128e5965feeb19535548acab6610627a09203ded /Source/Core/VideoCommon/VertexManagerBase.cpp
parentadd59b3bea032e331363dcf28361f8e0de65e43d (diff)
Reduce number of divisions in screenspace transform.
This is closer to what the hardware does anyway.
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index 23eb770c6d..c9f5e2c714 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -264,11 +264,11 @@ void VertexManager::CalculateZSlope(u32 stride)
VertexShaderManager::TransformToClipSpace(&vtx[i * 3], &out[i * 4]);
// Transform to Screenspace
- float w = out[3 + i * 4];
+ float inv_w = 1.0f / out[3 + i * 4];
- out[0 + i * 4] = out[0 + i * 4] / w * xfmem.viewport.wd + viewOffset[0];
- out[1 + i * 4] = out[1 + i * 4] / w * xfmem.viewport.ht + viewOffset[1];
- out[2 + i * 4] = out[2 + i * 4] / w * xfmem.viewport.zRange + xfmem.viewport.farZ;
+ out[0 + i * 4] = out[0 + i * 4] * inv_w * xfmem.viewport.wd + viewOffset[0];
+ out[1 + i * 4] = out[1 + i * 4] * inv_w * xfmem.viewport.ht + viewOffset[1];
+ out[2 + i * 4] = out[2 + i * 4] * inv_w * xfmem.viewport.zRange + xfmem.viewport.farZ;
}
float dx31 = out[8] - out[0];