1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-06-22 21:23:18 +00:00

reduced glitches in slr

This commit is contained in:
Zeno Rogue 2019-09-03 08:27:39 +02:00
parent e38f012e63
commit 561c8e975c

View File

@ -1056,6 +1056,9 @@ EX namespace slr {
"float lo_gphi = gphi;"
"float lo_s = s;"
"float lo_alpha = PI/4.;"
"float lx_gphi = gphi;"
"float lx_s = s;"
"float lx_alpha = PI/4.;"
"float hi_gphi = gphi;"
"float hi_s = s;"
"float hi_alpha = PI/4.;"
@ -1084,7 +1087,7 @@ EX namespace slr {
" s = asin(sinh(r) * c / cos(alpha)) / c;"
" gphi = 2.*sin(alpha)*s - atan(sin(alpha) * tan(c*s) / c);"
" if(gphi > phi) { next_nan = 0; maxa = alpha; hi_gphi = gphi; hi_s = s; hi_alpha = alpha; }"
" else { mina = alpha; lo_gphi = gphi; lo_s = s; lo_alpha = alpha; }"
" else { mina = alpha; lx_gphi = lo_gphi; lx_s = lo_s; lx_alpha = lo_alpha; lo_gphi = gphi; lo_s = s; lo_alpha = alpha; }"
" }"
" if(next_nan != 0) {"
" mina = PI/4.; "
@ -1101,11 +1104,10 @@ EX namespace slr {
" }"
" }"
" }"
"if(hi_alpha < 9.) {"
"if(hi_alpha <= 9.) { hi_gphi = lx_gphi; hi_s = lx_s; hi_alpha = lx_alpha; } "
"float fr = (phi-lo_gphi) / (hi_gphi-lo_gphi);"
"alpha = lo_alpha + (hi_alpha-lo_alpha) * fr;"
"s = lo_s + (hi_s-lo_s) * fr;"
"}"
"beta = theta - phi + 2.*sin(alpha)*s;"
"alpha = alpha * sgn; beta = beta * sgn;"
"return vec4(s * cos(beta) * cos(alpha), s * sin(beta) * cos(alpha), s * sin(alpha), 1.);"