Passing float texture to fragment shader returns incorrect value in Blender 2.8
Somehow, I figured out myself, this is quite a newbie mistake. The generated image should be created with float_buffer.

from: 

bpy.data.images.new(IMAGE_NAME, WIDTH, HEIGHT)


to: 

bpy.data.images.new(IMAGE_NAME, WIDTH, HEIGHT, alpha=True, float_buffer=True)


One more thing is that the alpha value should be 1.0 since it will be used as masks for other. Ref from documentation