summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glsl/reg_alloc.cpp
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-05-30 00:08:19 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:36 +0200
commit3047eb66889a9782fadfbe479c33e6a8bfc5bf53 (patch)
tree9491643b07576e354844b39d5dffb321491aadf9 /src/shader_recompiler/backend/glsl/reg_alloc.cpp
parentglsl: TLD4 implementation (diff)
downloadyuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.gz
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.bz2
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.lz
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.xz
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.zst
yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.zip
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/backend/glsl/reg_alloc.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
index ecb550095..b1de022d4 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 : "");
}