WebGL is already secured to be a success; only IE-users will not have the 3D-web without plugin. But once sites like Wikipedia starts to offer 3D-imagery of the human body and buildings (as we know in Google Earth’s KML-format), things can go really fast in favour of the WebGL-supported browsers. This is important, because the balance between the computers/smartphones and the servers (you know: internet) just got somewhat more connected. I was first somewhat critical, because I want the web to have content (text and images) and not be “an ultimate experience” – luckily it turned out to be good for the content. I’m looking forward to Wikipedia and hardware accelerated services like Streetview!
A possible next step would be WebCL. But is it technically possible? And what would the internet-landscape be to be ready for such thing? Khronos did mention to be working on such technique, according to this article. But not much attention was given to it. So I was happy to see a GSOC11 proposal WebCL-plugin for Firefox by Adrien Plagnol. They even have some code. But it was already finished for Firefox 4 (Windows and Linux), I learnt about a week ago.
WebCL by Nokia
It is very simple: it is a Javascript-version of the host-specific OpenCL code. Kernels are just kernels as we know them.
Nokia has put together a very nice WebCL homepage, which contains tutorials. And at lesson one we see how it looks like:
function detectCL() { // First check if the WebCL extension is installed at all if (window.WebCL == undefined) { alert("Unfortunately your system does not support WebCL. " + "Make sure that you have both the OpenCL driver " + "and the WebCL browser extension installed."); return false; } // Get a list of available CL platforms, and another list of the // available devices on each platform. If there are no platforms, // or no available devices on any platform, then we can conclude // that WebCL is not available. try { var platforms = WebCL.getPlatformIDs(); var devices = []; for (var i in platforms) { var plat = platforms[i]; devices[i] = plat.getDeviceIDs(WebCL.CL_DEVICE_TYPE_ALL); } alert("Excellent! Your system does support WebCL."); } catch (e) { alert("Unfortunately platform or device inquiry failed."); } }
As you can see this is very understandable code, if you know the basics of OpenCL and JavaScript. It is built for stability, so it seems to crash less easily than I expected.
I’ve written/tweeted a lot about OpenCL wrappers and how I think the OpenCL-ecosphere advances mainly by the growing up of the wrappers. Complaints about the far too long initialisation of OpenCL-software can easily be put in just a few lines of code. We now start from scratch again, but I will not be wonder-struck if there will be a jQuery-plugin released soon.
Needs
In the first place, think real-time encryption which can be adapted per user without the browser knowing. There are many more reasons all going back to the demand to have a browser-based computer (like Google is trying with its ChromeOS). All OS-APIs need to be available in a HTML5-like language and this is exactly that.
What are you still doing here? Install the Opencl-plugin for Firefox 4 and try Nokia’s online OpenCL-sandbox now! +1 for crashing it, +2 for sending in a bug-report.
Look at the WebCL based M-set animation at
http://www.ibiblio.org/e-notes/webcl/webcl.htm
sorry, only for Radeon HD yet
Share: Free WebCL eBook:
http://www.heronote.com/files/WebCL.htm
It is a help-file compiled from the resources made available at Nokia’s WebCL-page I see. But nevertheless handy for offline usage. Thanks!