Updated to be somewhat compatible with newer Dart versions and added WebGL rendering