From e8e6d0aa252e5957f1228aec61172e4f171d2b61 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Thu, 16 Sep 2021 22:26:23 +0200 Subject: [PATCH] two-sided display of hyperbolic disk with -1 -1); if(pmodel == mdRetroLittrow) return sphere; if(pmodel == mdRetroHammer) return sphere; if(pmodel == mdHemisphere) return !in_vr; @@ -333,6 +333,9 @@ EX int get_side(const hyperpoint& H) { double horizon = curnorm / pconf.alpha; return (H[2] <= -horizon) ? -1 : 1; } + if(pmodel == mdDisk && hyperbolic && pconf.alpha < 0 && pconf.alpha > -1) { + return (H[2] * (H[2] + pconf.alpha) < sqhypot_d(2, H)) ? -1 : 1; + } if(pmodel == mdRetroLittrow && sphere) { return H[2] >= 0 ? 1 : -1; } diff --git a/shaders.cpp b/shaders.cpp index 18dbe621..9540e43e 100644 --- a/shaders.cpp +++ b/shaders.cpp @@ -171,7 +171,7 @@ shared_ptr write_shader(flagtype shader_flags) { else if(!vid.consider_shader_projection) { shader_flags |= SF_PIXELS; } - else if(among(pmodel, mdDisk, mdBall) && GDIM == 2 && vrhr::rendering() && !sphere) { + else if(among(pmodel, mdDisk, mdBall) && GDIM == 2 && vrhr::rendering() && !sphere && !(hyperbolic && pconf.alpha < 0 && pconf.alpha > -1)) { shader_flags |= SF_DIRECT | SF_BOX; vsh += "uniform mediump float uAlpha, uDepth, uDepthScaling, uCamera;";