JavaScript image processing framework based on dynamically generated WebGL shaders