diff --git a/shaders.cpp b/shaders.cpp index 21e64ee5..3b1c261e 100644 --- a/shaders.cpp +++ b/shaders.cpp @@ -180,7 +180,7 @@ shared_ptr write_shader(flagtype shader_flags) { break; } } - else if(geometry == gProduct) { + else if(geometry == gProduct && !hybrid::over_sphere()) { shader_flags |= SF_PERS3 | SF_DIRECT; coordinator += "float z = log(t[2] * t[2] - t[0] * t[0] - t[1] * t[1]) / 2.;\n" @@ -190,6 +190,11 @@ shared_ptr write_shader(flagtype shader_flags) { "if(r != 0.) r = d / r;\n" "t.xy *= r; t.z = z;\n"; distfun = "sqrt(z*z+d*d)"; + treset = true; + } + else if(geometry == gProduct && hybrid::over_sphere()) { + shader_flags |= SF_PERS3 | SF_DIRECT; + distfun = "length(t.xyz)", treset = true; } else if(pmodel == mdPerspective) { shader_flags |= SF_PERS3 | SF_DIRECT;