|
|
@@ -610,6 +610,12 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes, const Regs:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // The hardware takes the absolute and saturates vertex colors like this, *before* doing interpolation
|
|
|
+ for (int i = 0; i < 4; ++i) {
|
|
|
+ ret.color[i] = float24::FromFloat32(
|
|
|
+ std::fmin(std::fabs(ret.color[i].ToFloat32()), 1.0f));
|
|
|
+ }
|
|
|
+
|
|
|
LOG_TRACE(Render_Software, "Output vertex: pos (%.2f, %.2f, %.2f, %.2f), col(%.2f, %.2f, %.2f, %.2f), tc0(%.2f, %.2f)",
|
|
|
ret.pos.x.ToFloat32(), ret.pos.y.ToFloat32(), ret.pos.z.ToFloat32(), ret.pos.w.ToFloat32(),
|
|
|
ret.color.x.ToFloat32(), ret.color.y.ToFloat32(), ret.color.z.ToFloat32(), ret.color.w.ToFloat32(),
|