Apple arbeitet an schnellem 3D für Web-Browser
Vor sechs Jahren wurde mit WebGL im Zuge von HTML5 eine einheitliche Schnittstelle für interaktive 3D-Inhalte im Web-Browser eingeführt. Dabei übernimmt der Web-Browser vor allem die Kommunikation zwischen den Web-Scripten und der OpenGL-Schnittstelle des Grafiktreibers. Dies ist aber für komplexe Anwendungen nicht besonders leistungsfähig, was jedoch mittlerweile vor allem an dem aufgeblähten OpenGL liegt.
Apple hat daher mit der Einführung von Metal in iOS 8 vor drei Jahren bereits Arbeiten an einer neuen schlanken 3D-Schnittstelle für Web-Browser aufgenommen, die leistungsfähiger sein soll. In dieser Woche hat Apple die bisherige Arbeit unter dem Titel WebGPU der Öffentlichkeit
präsentiert. In Cupertino erhofft man sich eine gemeinsame öffentliche Entwicklung hin zu einer einheitlichen 3D-Schnittstelle, die von allen Web-Browsern unterstützt wird und komplexe 3D-Anwendung erlaubt.
Apple geht nicht davon aus, dass das vorgestellte WebGPU in der Form bestehen bleiben wird. Vielmehr dürften DirectX 12 und Vulkan für einige Änderungen sorgen, die letztendlich aber mit wenig Aufwand plattformübergreifende 3D-Lösungen ermöglicht. So könnte die Initiative letztendlich dazu führen, dass sich Apples Metal, Microsofts DirectX 12 und Khronos Vulkan so weit annähern, dass ein neuer allgemeingültiger 3D-Standard entsteht, der OpenGL beerbt.
Beispiel
let canvas = document.querySelector("canvas");
let gpu = canvas.getContext("webgpu");
let commandQueue = gpu.createCommandQueue();
let commandBuffer = commandQueue.createCommandBuffer();
let commandEncoder = commandBuffer.createRenderCommandEncoderWithDescriptor(passDescriptor);
commandEncoder.setRenderPipelineState(pipelineState);
commandEncoder.setVertexBuffer(vertexBuffer, 0, 0);
commandEncoder.drawPrimitives("triangle", 0, 3);
commandEncoder.endEncoding();
commandBuffer.presentDrawable(drawable);
commandBuffer.commit();