aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/pica.h
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2014-12-23 13:05:51 -0200
committerGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2014-12-29 02:08:11 -0200
commit8369ee58035ca98f776428f6cccbcf987fee3bc9 (patch)
tree3c1800823ffe55529ba6dbcba0c4407d2da625f2 /src/video_core/pica.h
parentfe186d3a598837ba7337f06399dfb8ae7930a070 (diff)
Rasterizer: Pre-divide vertex attributes by W
Execute the division-by-W for perspective-correct interpolation of values in the clipper, moving them out of the rasterization inner loop.
Diffstat (limited to 'src/video_core/pica.h')
-rw-r--r--src/video_core/pica.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/video_core/pica.h b/src/video_core/pica.h
index 89d97e4e..38bac748 100644
--- a/src/video_core/pica.h
+++ b/src/video_core/pica.h
@@ -757,6 +757,26 @@ struct float24 {
return float24::FromFloat32(ToFloat32() - flt.ToFloat32());
}
+ float24& operator *= (const float24& flt) {
+ value *= flt.ToFloat32();
+ return *this;
+ }
+
+ float24& operator /= (const float24& flt) {
+ value /= flt.ToFloat32();
+ return *this;
+ }
+
+ float24& operator += (const float24& flt) {
+ value += flt.ToFloat32();
+ return *this;
+ }
+
+ float24& operator -= (const float24& flt) {
+ value -= flt.ToFloat32();
+ return *this;
+ }
+
float24 operator - () const {
return float24::FromFloat32(-ToFloat32());
}