From 0bfb05deccc04aabe27d56db90de87c9b5fc5910 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Tue, 29 May 2018 18:33:01 -0700
Subject: [PATCH] added de/encodeFloatRGBA glsl helper functions

---
 src/mol-gl/shader/utils/decode-float-rgba.glsl | 5 +++++
 src/mol-gl/shader/utils/encode-float-rgba.glsl | 8 ++++++++
 2 files changed, 13 insertions(+)
 create mode 100644 src/mol-gl/shader/utils/decode-float-rgba.glsl
 create mode 100644 src/mol-gl/shader/utils/encode-float-rgba.glsl

diff --git a/src/mol-gl/shader/utils/decode-float-rgba.glsl b/src/mol-gl/shader/utils/decode-float-rgba.glsl
new file mode 100644
index 000000000..b55b14bf5
--- /dev/null
+++ b/src/mol-gl/shader/utils/decode-float-rgba.glsl
@@ -0,0 +1,5 @@
+float decodeFloatRGBA(vec4 rgba) {
+  return dot(rgba, vec4(1.0, 1/255.0, 1/65025.0, 1/16581375.0));
+}
+
+#pragma glslify: export(decodeFloatRGBA)
\ No newline at end of file
diff --git a/src/mol-gl/shader/utils/encode-float-rgba.glsl b/src/mol-gl/shader/utils/encode-float-rgba.glsl
new file mode 100644
index 000000000..6ad94bfb1
--- /dev/null
+++ b/src/mol-gl/shader/utils/encode-float-rgba.glsl
@@ -0,0 +1,8 @@
+vec4 encodeFloatRGBA(float v) {
+  vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * v;
+  enc = frac(enc);
+  enc -= enc.yzww * float4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);
+  return enc;
+}
+
+#pragma glslify: export(encodeFloatRGBA)
\ No newline at end of file
-- 
GitLab