From 9b6a280656e3768aaf459493d573fe3a38748fe1 Mon Sep 17 00:00:00 2001 From: danij Date: Thu, 29 Dec 2011 22:31:00 +0000 Subject: [PATCH] Flip sky sphere material on the x axis if primary texture is missing Although we normally draw from right to left we do not want to display the "missing" material back to front. --- doomsday/engine/portable/src/rend_sky.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doomsday/engine/portable/src/rend_sky.c b/doomsday/engine/portable/src/rend_sky.c index 1cb3f4fcf3..92dede94bc 100644 --- a/doomsday/engine/portable/src/rend_sky.c +++ b/doomsday/engine/portable/src/rend_sky.c @@ -48,7 +48,7 @@ typedef struct { } skyvertex_t; typedef struct { - boolean fadeout; + boolean fadeout, texXFlip; Size2Raw texSize; float texOffset; ColorRawf capColor; @@ -247,6 +247,7 @@ static void configureRenderHemisphereStateForLayer(int layer, hemispherecap_t se rs.texSize.width = rs.texSize.height = 0; if(setupCap != HC_NONE) rs.fadeout = false; + rs.texXFlip = true; if(renderTextures != 0) { @@ -262,7 +263,10 @@ static void configureRenderHemisphereStateForLayer(int layer, hemispherecap_t se { mat = R_SkyLayerMaterial(layer); if(!mat) + { mat = Materials_ToMaterial(Materials_ResolveUriCString(MN_SYSTEM_NAME":missing")); + rs.texXFlip = false; + } } assert(mat); @@ -348,7 +352,7 @@ static void renderSkyHemisphere(int flags) glMatrixMode(GL_TEXTURE); glPushMatrix(); glLoadIdentity(); - glScalef(1024.f / rs.texSize.width, yflip? -1.0f : 1.0f, 1.0f); + glScalef(1024.f / rs.texSize.width * (rs.texXFlip? 1.0f : -1.0f), yflip? -1.0f : 1.0f, 1.0f); glTranslatef(rs.texOffset / rs.texSize.width, yflip? -1.0f : 0.0f, 0.0f); }