From 3047eb66889a9782fadfbe479c33e6a8bfc5bf53 Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Sat, 29 May 2021 18:08:19 -0400
Subject: glsl: Implement TXQ and other misc changes

---
 src/shader_recompiler/backend/glsl/reg_alloc.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

(limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')

diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
index ecb550095d..b1de022d4e 100644
--- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
@@ -37,9 +37,14 @@ std::string FormatFloat(std::string_view value, IR::Type type) {
             return "uintBitsToFloat(0xff800000)";
         }
     }
-    const bool needs_dot = value.find_first_of('.') == std::string_view::npos;
-    const bool needs_suffix = !value.ends_with('f');
-    const auto suffix = type == IR::Type::F32 ? "f" : "lf";
+    if (value.find_first_of('e') != std::string_view::npos) {
+        // scientific notation
+        const auto cast{type == IR::Type::F32 ? "float" : "double"};
+        return fmt::format("{}({})", cast, value);
+    }
+    const bool needs_dot{value.find_first_of('.') == std::string_view::npos};
+    const bool needs_suffix{!value.ends_with('f')};
+    const auto suffix{type == IR::Type::F32 ? "f" : "lf"};
     return fmt::format("{}{}{}", value, needs_dot ? "." : "", needs_suffix ? suffix : "");
 }
 
-- 
cgit v1.2.3-70-g09d2