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 0000000000000000000000000000000000000000..b55b14bf5fc1cfdaccdd23d6127443cedd981332 --- /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 0000000000000000000000000000000000000000..6ad94bfb178d7bbd2debc3a106270d44a78366c1 --- /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