diff --git a/src/backend/web-gl/fragment-shader.js b/src/backend/web-gl/fragment-shader.js
index 166e80e5..e0b34ea8 100644
--- a/src/backend/web-gl/fragment-shader.js
+++ b/src/backend/web-gl/fragment-shader.js
@@ -24,8 +24,12 @@ float asinh(float x) {
}
float atan2(float v1, float v2) {
- if (v1 == 0.0 || v2 == 0.0) return 0.0;
- return atan(v1 / v2);
+ if (v2 == 0.0) {
+ if (v1 == 0.0) return 0.0;
+ if (v1 > 0.0) return 1.5707963267948966;
+ if (v1 < 0.0) return -1.5707963267948966;
+ }
+ return atan(v1, v2);
}
float atanh(float x) {
@@ -493,4 +497,4 @@ void main(void) {
module.exports = {
fragmentShader
-};
\ No newline at end of file
+};
diff --git a/src/backend/web-gl2/fragment-shader.js b/src/backend/web-gl2/fragment-shader.js
index b45a8706..28bdc819 100644
--- a/src/backend/web-gl2/fragment-shader.js
+++ b/src/backend/web-gl2/fragment-shader.js
@@ -14,8 +14,12 @@ __CONSTANTS__;
in vec2 vTexCoord;
float atan2(float v1, float v2) {
- if (v1 == 0.0 || v2 == 0.0) return 0.0;
- return atan(v1 / v2);
+ if (v2 == 0.0) {
+ if (v1 == 0.0) return 0.0;
+ if (v1 > 0.0) return 1.5707963267948966;
+ if (v1 < 0.0) return -1.5707963267948966;
+ }
+ return atan(v1, v2);
}
float cbrt(float x) {
diff --git a/test/all.html b/test/all.html
index 460fd639..fd875b9d 100644
--- a/test/all.html
+++ b/test/all.html
@@ -91,9 +91,6 @@
-
-
-
@@ -183,6 +180,7 @@
+
@@ -325,4 +323,4 @@