UNPKG

@luma.gl/effects

Version:

Rendering and post-processing effects library for luma.gl

33 lines (25 loc) 791 B
// Packing of floats into RGBA8 /* eslint-disable camelcase */ const fs = `\ const float PackUpscale = 256. / 255.; // fraction -> 0..1 (including 1) const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); const float UnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1) const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); const float ShiftRight8 = 1. / 256.; vec4 pack_floatToRGBA8( const in float v ) { vec4 r = vec4( fract( v * PackFactors ), v ); r.yzw -= r.xyz * ShiftRight8; // tidy overflow return r * PackUpscale; } float pack_RGBA8ToFloat( const in vec4 v ) { return dot(v, UnpackFactors); } `; const DEFAULT_PROPS = {}; export default { name: 'pack', fs, vs: fs, DEFAULT_PROPS, getUniforms: props => props };