WebGPU je svugdje – ali WebGL ne nestaje
Stabilna podrška za WebGPU u svim glavnim preglednicima – Chromeu, Edgeu, Firefoxu i Safariju – mijenja način na koji planiramo budućnost 3D grafike na webu. No to ne znači da će postojeći WebGL projekti nestati ili postati neupotrebljivi preko noći.
Velike produkcijske baze koda u Three.js, Babylon.js i PlayCanvas engineima i dalje se oslanjaju na WebGL 1/2. Tisuće igara, konfiguratora proizvoda, CAD preglednika i znanstvenih vizualizacija danas su u produkciji na WebGL-u. Za većinu timova praktično pitanje nije „kada ugasiti WebGL“, nego „kako iskoristiti WebGPU bez gubitka kompatibilnosti“.
U praksi se to svodi na tri glavne odluke: koje dijelove koda refaktorirati, kako organizirati rendering pipeline da podrži više backendova i gdje je WebGL i dalje sasvim dovoljan.
WebGPU vs WebGL: dva različita GPU modela
WebGPU donosi moderan, eksplicitni GPU model, inspiriran Vulkanom, Direct3D 12 i Metalom. WebGL ostaje vezan uz naslijeđeni OpenGL ES stil rada. Razlika nije samo terminološka, već duboko utječe na dizajn aplikacija.
Eksplicitni WebGPU model
U WebGPU-u developer ima mnogo više kontrole:
- ručno upravljanje GPU memorijom (bufferi, teksture, layouti),
- jasno definirani rendering i compute pipelineovi,
- bind grupe i deskriptori resursa umjesto implicitnog globalnog stanja,
- moderne shader jezike (WGSL, SPIR-V prijevodni putevi),
- compute passovi za fiziku, simulacije fluida, AI pre-obradu ili napredni post-processing.
To omogućuje napredne scenarije: tile-based deferred rendering, asinkrono učitavanje i konverziju podataka direktno na GPU-u, kompleksne GPGPU algoritme i sofisticirane tehnike global illuminationa koje su u WebGL-u ili preskupe ili neizvedive.
WebGL kao jednostavniji i šire kompatibilan sloj
WebGL je dizajniran kao tanak sloj nad OpenGL ES 2.0/3.0. On nudi:
- jednostavniji mentalni model (globalno stanje, manje objekata),
- široku kompatibilnost sa starijim GPU-ovima i starijim OS-ovima,
- zrelu ekosustavnu podršku (primjeri, pluginovi, gotovi shaderi),
- stabilne enginee koji su godinama battle-tested.
Za tipične scenarije – 3D katalog proizvoda, arhitektonski preglednik, edukativne vizualizacije, manje i srednje velike igre – dobro posložen WebGL 2 pipeline i dalje isporučuje 60 FPS i stabilan frame pacing na širokom spektru uređaja, uključujući starije laptope i mobitele.
Zato univerzalni WebGPU u preglednicima ne znači automatski da je svaki WebGL projekt „zastarjeli tehnički dug“. Umjesto toga, mijenja se gornja granica onoga što je moguće, dok baza ostaje na WebGL-u još godinama.
Kako enginei uvode WebGPU: višestruki backendovi
Trend u ekosustavu je jasan: umjesto da napuste WebGL, autori enginea uvode apstrakcijske slojeve koji podržavaju više rendering backendova.
Three.js, Babylon.js i PlayCanvas pristup
Three.js već ima eksperimentalni WebGPURenderer. Babylon.js razvija paralelni WebGPU backend, dok PlayCanvas istražuje slične smjerove. Zajednička ideja je da isti high-level kod scene ostaje nepromijenjen:
- scene graph,
- kamere,
- materijali (PBR, toon, custom shaderi),
- svjetla i sjene,
- post-processing lanac.
Na temelju mogućnosti preglednika i uređaja engine bira backend:
- WebGPU backend kada je dostupan i stabilan,
- WebGL 2 kao zadani „fallback“ za sve ostale.
Za timove koji danas održavaju WebGL projekte, to znači da prvi korak nije ručno prepisivanje shader koda u WGSL, nego migracija na novije verzije enginea i API-je koji već podržavaju višestruke backendove.
Primjer migracije u praksi
Zamislimo postojeći Three.js projekt iz 2018. godine, baziran na starijem rXX releasu. Umjesto da se odmah uvodi WebGPU, tim može:
- nadograditi na aktualnu verziju Three.js-a,
- riješiti deprecated API pozive i uskladiti materijale,
- prebaciti se na standardizirane PBR materijale (MeshStandardMaterial, MeshPhysicalMaterial),
- izolirati vlastite custom shadere u jasno definirane module.
Kad WebGPURenderer postane dovoljno stabilan za produkciju, isti scene graph i materijali mogu se renderirati kroz WebGPU backend, dok WebGL renderer ostaje kao fallback. Na strani korisnika to se svodi na uvjetnu inicijalizaciju renderera, bez promjene poslovne logike.
Gdje WebGL i dalje pobjeđuje: kompatibilnost i trošak održavanja
U mnogim organizacijama WebGL nije samo tehnološki izbor, već i poslovna odluka. Važne su metrike poput pokrivenosti uređaja, troška održavanja i rizika od regresija.
Stariji hardver, embedded i specifična okruženja
U industriji i obrazovanju još uvijek cirkuliraju:
- stariji Windows strojevi s ograničenim GPU-om,
- jeftini Android tableti u učionicama,
- embedded uređaji i kiosk rješenja s zaključanim preglednicima,
- intranet okruženja koja kasne s nadogradnjama preglednika.
Na tim platformama WebGPU će formalno „postojati“ tek kada se ažuriraju preglednici i driveri, što može potrajati godinama. WebGL 1/2 u tim scenarijima ostaje jedini realni put do hardverski ubrzanog 3D prikaza.
Stabilnost i predvidivost
WebGL stack je godinama stabilizirao svoje rubne slučajeve. Browser bugovi i driver specifične anomalije i dalje postoje, ali su dobro dokumentirani. Postoje workaroundovi, polyfillovi i guidelines za robustan rendering pipeline.
WebGPU je mlađi. API je moderniji, ali i složeniji. U ranim fazama šire adopcije logično je očekivati:
- neujednačenu kvalitetu drivera,
- razlike u performansama između vendor implementacija,
- edge bugove u kompleksnim compute passovima.
Zbog toga mnogi timovi WebGPU uvode prvo u ne-kritične dijelove aplikacije: eksperimentalne značajke, „high quality“ modove, napredne vizualne efekte koji nisu nužni za osnovnu funkcionalnost.
Performanse: gdje WebGPU zaista donosi korist
Univerzalni WebGPU mijenja gornju granicu performansi, ali ne i osnovnu činjenicu da se većina dobiti u tipičnim WebGL projektima postiže klasičnom optimizacijom.
Što još uvijek najviše pomaže WebGL projektima
Za većinu postojećih projekata veći učinak će imati:
- smanjenje broja draw callova (batching, instancing),
- agresivno korištenje texture atlasa i mipmapa,
- optimizacija PBR materijala (manje tekstura, kompresija, preciznost),
- LODs i culling (frustum, occlusion, distance-based),
- profiliranje bottleneckova (CPU vs GPU, JS GC, upload podataka).
Na primjer, konfigurator automobila koji s 500 draw callova po frameu prijeđe na 80 draw callova uz instancing i batching, često će dobiti stabilnih 60 FPS na WebGL-u bez ikakvog WebGPU koda.
Kad WebGPU postaje game changer
WebGPU počinje donositi jasnu prednost kada:
- aplikacija koristi kompleksne simulacije (fizika, flocking, fluidi) koje traže compute passove,
- pipeline uključuje više render targeta, napredne post-processing lance i dinamički global illumination,
- treba obraditi vrlo velike skupove podataka (geoprostorni podaci, medicinski volumeni, point cloudovi s milijunima točaka),
- ciljate high-end GPU-ove i VR/AR uređaje gdje je svaki milisekund framea kritičan.
Primjer: web-bazirani alat za simulaciju industrijskog postrojenja. WebGPU compute pipeline može izvoditi simulaciju protoka fluida i topline direktno na GPU-u, dok WebGL varijanta mora ili pojednostaviti model ili se oslanjati na skupu CPU simulaciju i rijetko osvježavanje scene.
No takvi projekti su još uvijek manjina u odnosu na klasične vizualizacije i konfiguratore. Za većinu današnjih WebGL aplikacija racionalna strategija je prvo iscrpiti mogućnosti optimizacije WebGL 2 pipelinea, a tek onda uvoditi WebGPU specifične značajke.
Arhitektura novih projekata: hibridni pristup
Za organizacije koje danas planiraju nove 3D web alate, najpraktičniji zaključak je hibridan: WebGL kao minimalni, robustan sloj kompatibilnosti, WebGPU kao ciljani backend za napredne značajke i dugoročni razvoj.
Jasno razdvajanje slojeva
Ključna arhitektonska odluka je razdvajanje:
- jezgre renderinga (scene graph, materijali, efekti, resource management),
- poslovne logike (pravila domene, kalkulacije cijene, workflow),
- UI sloja (React, Vue, Svelte, vlastiti UI toolkit).
Poslovna logika i UI trebaju biti što neovisniji o konkretnoj grafičkoj tehnologiji. Oni bi trebali „razmišljati“ u terminima entiteta, stanja i događaja, a ne u terminima WebGL ili WebGPU API poziva.
Rendering sloj tada može imati dva backend modula:
- WebGL backend: stabilan, široko kompatibilan, minimalno rizičan,
- WebGPU backend: napredne značajke, high-end vizualni mod, dugoročni fokus razvoja.
Aplikacija pri inicijalizaciji može detektirati dostupnost WebGPU-a, profilirati uređaj i mrežu te odabrati prikladan backend i kvalitetu renderinga (low/medium/high). Time se izbjegava prisiljavanje korisnika na WebGPU ondje gdje to nema smisla.
Strategija za postojeće WebGL timove
Za timove koji već imaju velike WebGL projekte, praktični koraci mogu izgledati ovako:
- Standardizirati se na jedan engine (Three.js, Babylon.js, PlayCanvas) i aktualnu verziju.
- Refaktorirati kod tako da scena, materijali i animacije budu opisani na visokoj razini, a ne kroz direktne WebGL pozive.
- Izolirati custom shadere i rendering trikove u jasno dokumentirane module.
- Uvesti feature flagove za napredne efekte koji će kasnije moći koristiti WebGPU compute passove ili dodatne rendering passeve.
- Postupno testirati WebGPU backend u paraleli s WebGL-om na ograničenom setu korisnika (A/B test, beta kanal).
Na taj način WebGPU postaje evolucija postojećeg projekta, a ne revolucija koja zahtijeva potpuno ponovno pisanje.
Zaključak: WebGL kao temelj, WebGPU kao budućnost
Univerzalna dostupnost WebGPU-a u preglednicima je velika prekretnica, ali ne znači kraj WebGL-a. Naprotiv, WebGL će još dugo biti temeljni sloj kompatibilnosti za široku publiku, stariji hardver i konzervativna okruženja.
WebGPU podiže plafon mogućeg – omogućuje moderni, eksplicitni GPU model, compute pipelineove i napredne rendering tehnike. No stvarna korist za postojeće WebGL projekte ovisi o profilu publike, tipu aplikacije i spremnosti tima da ulaže u kompleksniji pipeline.
Najzdraviji pristup danas je tretirati WebGL kao stabilan, provjeren sloj, a WebGPU kao ciljani backend za napredne značajke i budući rast. Enginei s višestrukim backendovima, jasna arhitektura i fokus na optimizaciju WebGL 2 pipelinea i dalje su najbrži put do pouzdanih 3D web aplikacija koje će preživjeti i sljedeću generaciju preglednika.



