Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.y:
" %s abs_arg = abs(x);\n"
" %s correction = sqrt(1.0 - abs_arg);\n"
" %s result = correction * (((-0.019963376f\n"
" * abs_arg + 0.07612093f)\n"
" * abs_arg - 0.21274031f)\n"
" * abs_arg + 1.5707964f\n);"
/* Piecewise, (x >= 0) ? result : pi - result. */
" %s mask = x >= 0.0;\n"
" result = mask * result\n"
" + (1.0 - mask) * (3.14159265 - result);\n"
" return %s;"
"}";
- static const char fn_name_acos[] = "acos";
- static const char fn_name_asin[] = "asin";
- static const char return_stmt_acos[] = "result";
- static const char return_stmt_asin[] = "-result + (3.14159265 / 2.0)";
In the same spirit, just use `1.570796f`.