package asgl.shaders.agal { public class AGALCodec { public function AGALCodec() { } /** * @param dest = v.n * @param rgba = v * @param constants = v, v.xyzw = [1/(256*256*256), 1/(256*256), 1/256, 1] */ public static function decodeFloatFromRGBA(dest:String, rgba:String, constants:String):String { var code:String = ''; code += AGALBase.dp4(dest, rgba, constants); return code; } /** * @param dest = v * @param float = 0-0.99999....., the value can set dest or tmp * @param constants1 = v, v.xyzw = [256*256*256, 256*256, 256, 1] * @param constants2 = v, v.xyzw = [0, 1/256, 1/256, 1/256] * @param tmp = v, will use four components. */ public static function encodeFloatToRGBA(dest:String, float:String, constants1:String, constants2:String, tmp:String):String { var code:String = ''; code += AGALBase.mul(dest, constants1, float); code += AGALBase.frc(dest, dest); code += AGALBase.mul(tmp, dest+'.xxyz', constants2); code += AGALBase.sub(dest, dest, tmp); return code; } } }