Cesium in Internet Explorer 11

Microsoft released a beta version of Windows Server 2012 R2 today that includes a new version of Internet Explorer 11 with support for WebGL. AGI is kind enough to provide me with an MSDN subscription, so I decided to try it out and see if it’s able to run Cesium.

Short answer: no. First, here’s the WebGL report.

And here’s what we get from Cesium Viewer:

It seems Microsoft has a little way to go, still. In any case, I’m thrilled to see Microsoft joining the WebGL party, and expect they’ll get these bugs worked out before the official release.

Kevin

Cool - some of those things like DITHER will likely be removed from Cesium (and glTF) since we don’t use them and they are rarely implemented in practice - the spec basically allows a nop.

However, the shader errors are the real crux here. We may have to do some changes here. I won’t be surprised if IE is very strict so they can market themselves as the most secure browser for WebGL.

Patrick

I’d be curious to see what a test run looks like. In addition to WebGL related tests, older versions of IE have other standards compliance issues that break things in Core.

Here you go:

For comparison, here’s what Chrome looks like on the same hardware and OS (Windows Server 2012 R2 Datacenter Preview):

I’m not sure why the CZML-related test failures in Chrome. This is the specs currently published to cesium.agi.com: http://cesium.agi.com/Cesium/Specs/SpecRunner.html

Kevin

This is probably a bug in the Specs. I think I have a hardcoded path in there that’s different on the website. I’ll fix it.

Yeah, it's these paths:

    var simple;
    var simpleUrl = '../../Apps/CesiumViewer/Gallery/simple.czml';
    var vehicle;
    var vehicleUrl = '../../Apps/CesiumViewer/Gallery/Vehicle.czml';

You should just copy those CZML files into the Specs/Data folder to keep
the specs self-contained.

Yeah, that’s exactly what I was going to do.

Tony Parisi has a good report from when Microsoft announced WebGL in IE 11:

Patrick

Hi,
I just installed IE 11 from the regular Windows Update.
In principle WebGL is available, and some online demos work, for instance the chrome globe.
Cesium exits with the error message

"An error occurred while rendering. Rendering has stopped.
RuntimeError: Fragment shader failed to compile. Compile log: Shader compilation errors
(9, 1): syntax error, unexpected UNSUPPORTED_TOKEN"

I am using the latest master branch from git

best regards,
Arne

Microsoft’s WebGL implementation is coming along quickly, but it’s still not perfect. The error you’re seeing is a result of the lack of support for GLSL structs, which Cesium uses quite a bit. You can try the ie11 branch on GitHub, which should at least get you a globe in IE11. Some features won’t work even in that branch, though, such as anything that uses the Cesium material system.

Kevin

Curious what happened to the IE11 branch? I downloaded IE11 today and tried running our app (built from b28) with no luck, I got shader compilation errors.

Eric

Eric,

If you can upgrade to b30, IE 11 will work out of the box: http://cesiumjs.org/2014/07/01/Cesium-version-b30-released/

Patrick

Also, Microsoft released several security patches that update IE, these patches are needed in order to run Cesium. If you go to the IE about box you should see something like the below. This is the oldest version I know that can run Cesium. (The easiest way to guarantee compatibility is to simply install all pending windows updates).


Version: 11.0.9600.17105
Update Versions: 11.07 (KB2964358)

Thanks for the info guys. I am at 11.0.9600.16428, which I guess explains why cesiumjs.org doesn’t work for me. I will see if I can get the patches and try again.
Eric

I patched IE11 and yes, cesiumjs.org works now. Thanks, I’ll have to try and move to b30. IE11 seems clunkier and slower than Chrome, has that been your experience as well?

Eric

There’s a chance that IE11 is using software rendering on your machine. For some reason they blacklist a large amount of video drivers. I have the same issue on one of my machines. You can confirm this by bringing up the console (F12) and then reloading a page using WebGL. You’ll get a message in the console about software rendering.

On a machine where hardware rendering IE 11 performs pretty well but I still find Chrome to be the best overall browser (at least in regards to Cesium performance). I find Firefox slower or faster than IE depending on the situation.

I’m having issues loading the Cesium map version 1.9 in computers using IE 11 (version 11.0.9600.17728 update 11.0.18) with the Windows 7 operating system. Everything works perfectly well when using IE 11 in Windows 8.1. I ran the debugger for IE 11 and the issue is at line 114,015 of the
Cesium-uncompressed.js file of version 1.9. It is failing to get a webgl context with the webglOptions given.
When I remove the options then I can load the map in IE. I also noticed that
the context that got created was by using the experimental-webgl instead of the
webgl. I tested with the change and the
map was too slow in 3D mode (globe), and performs better in 2D mode.

This is what I did to be able to load the map in IE 11 using the windows 7 operating system:

change in the uncompressed Cesium.js file:

Line 114,015

this._originalGLContext =
canvas.getContext(‘webgl’, webglOptions) ||
canvas.getContext(‘experimental-webgl’, webglOptions) || indefined;

Change to:

this._originalGLContext = canvas.getContext(‘webgl’) ||
canvas.getContext(‘experimental-webgl’) || indefined;

Is there a better workaround to be able to use Cesium in IE 11 and Windows 7? many of my customers are restricted to use only IE 11. I suspect some dll dependencies that need to get upgraded in Windows 7.

Thanks,

Alberto.

Cesium works in IE11 on Windows 7. This configuration is tested on practically every pull request. What your most likely seeing is IE blacklisting your specific video card or driver, which is machine specific.

The change you made locally is most likely going to cause bugs and issues since we request those options for a reason and the slow performance you’re seeing is because IE still uses software rendering, which will not work well for most apps.

I recommend making sure you’re system is using the latest video card drivers and If that doesn’t fix his issue can you post the output of http://webglreport.com/. Just copy and paste the WebGL 1 box, or take a screen shot for us on the offending system.