19 lines
565 B
GLSL
19 lines
565 B
GLSL
/**
|
|
* Packs a depth value into a vec3 that can be represented by unsigned bytes.
|
|
*
|
|
* @name czm_packDepth
|
|
* @glslFunction
|
|
*
|
|
* @param {float} depth The floating-point depth.
|
|
* @returns {vec3} The packed depth.
|
|
*/
|
|
vec4 czm_packDepth(float depth)
|
|
{
|
|
// See Aras Pranckevičius' post Encoding Floats to RGBA
|
|
// http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/
|
|
vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth;
|
|
enc = fract(enc);
|
|
enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
|
|
return enc;
|
|
}
|