From 3afc4facd383ee65abc777a5fa5424cef539309d Mon Sep 17 00:00:00 2001 From: espes Date: Fri, 3 Jul 2015 15:55:45 +1000 Subject: [PATCH] probably don't divide by zero when normalizing vsh output depth --- hw/xbox/nv2a_vsh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/xbox/nv2a_vsh.c b/hw/xbox/nv2a_vsh.c index 06395005cb..946ad0d55d 100644 --- a/hw/xbox/nv2a_vsh.c +++ b/hw/xbox/nv2a_vsh.c @@ -779,7 +779,9 @@ QString* vsh_translate(uint16_t version, " /* Un-screenspace transform */\n" "oPos.x = (oPos.x - viewportOffset.x) / viewportScale.x;\n" "oPos.y = (oPos.y - viewportOffset.y) / viewportScale.y;\n" - "oPos.z = (oPos.z - 0.5 * (clipRange.x + clipRange.y)) / (0.5 * (clipRange.y - clipRange.x));\n" + "if (clipRange.y != clipRange.x) {\n" + " oPos.z = (oPos.z - 0.5 * (clipRange.x + clipRange.y)) / (0.5 * (clipRange.y - clipRange.x));\n" + "}\n" "if (oPos.w <= 0.0) {\n" /* undo the perspective divide in the case where the point would be