WebGPU stiže, WebGL još ne odlazi
WebGPU se postupno pojavljuje u Chromeu, Edgeu, Firefoxu i Safariju. Donosi nižu razinu pristupa GPU-u, bolje upravljanje memorijom i moderniji pipeline. Ipak, većina produkcijskih 3D web projekata i dalje se oslanja na WebGL 1 i WebGL 2.
Razlog je jasan: WebGL je prisutan gotovo svugdje. Radi na starijim preglednicima, na starijim mobilnim uređajima, u ugrađenim sustavima i kiosk rješenjima. Ako ciljate masovnu publiku ili B2B okruženja s konzervativnim IT-jem, WebGL je i dalje najsigurniji izbor.
Istovremeno, malo je timova spremno ignorirati WebGPU. Brži compute, moderni shader model i bolja kontrola nad resursima otvaraju vrata složenijim simulacijama, naprednim post-processing efektima i većim scenama. Pitanje više nije WebGL ili WebGPU, nego kako dizajnirati projekte koji mogu živjeti u oba svijeta.
Babylon.js je jedan od prvih okvira koji na to odgovara konkretnim alatima, a ne samo roadmap prezentacijama.
Babylon.js 8.0: nove značajke, stari WebGL još uvijek u fokusu
Babylon.js 8.0 donio je niz nadogradnji koje su posebno zanimljive WebGL timovima. Iako engine sve snažnije podržava WebGPU, većina novih funkcija i dalje radi iznad WebGL 2 backenda.
Naprednije osvjetljenje: IBL sjene i area light izvori
Fizički utemeljeno osvjetljenje (PBR) već je standard u modernom web 3D-u. Babylon.js 8.0 proširuje ga s dvije bitne komponente:
- IBL sjene (Image-Based Lighting) koriste HDR okruženja kako bi simulirale indirektno osvjetljenje, refleksije i mekše sjene. U praksi, to znači realističnije materijale bez dodatnog ručnog podešavanja svjetala.
- Area light izvori (pravokutne ili disk svjetiljke) omogućuju mekše, prirodnije sjene od točkastih izvora. U arhitektonskim vizualizacijama ili produkt dizajnu razlika je odmah vidljiva.
Važna implikacija za WebGL developere: ove tehnike su implementirane tako da rade i na WebGL 2, uz razumnu potrošnju resursa. Nije potrebno prebaciti se na WebGPU da biste dobili moderan PBR izgled.
Lightweight Viewer: 3D modeli kao dio klasične web stranice
Lightweight Viewer cilja timove koji žele integrirati 3D sadržaj u postojeće web stranice bez pisanja vlastitog render koda.
Tipičan scenarij: e-commerce stranica želi 3D prikaz proizvoda umjesto galerije slika. Umjesto custom WebGL aplikacije, Babylonov viewer se ubacuje kao widget. Konfigurira se kroz JSON ili HTML atribute, a engine brine o kameri, osvjetljenju i osnovnim interakcijama.
Za poslovne timove to znači kraći time-to-market i manje potrebe za specijaliziranim WebGL znanjem. Istovremeno, isti modeli i materijali mogu se kasnije koristiti u većoj, custom 3D aplikaciji temeljeno na istom engineu.
Node Render Graph: kontrola render pipelinea bez pisanja vlastitog enginea
Render pipeline u modernim aplikacijama rijetko je linearan. Tipičan frame uključuje više rendering passova: geometriju, sjene, refleksije, SSAO, bloom, tonemapping, UI sloj.
Node Render Graph u Babylon.js 8.0 uvodi čvorovni sustav za definiranje tog pipelinea. Umjesto hardkodiranog reda operacija, dobivate graf gdje je svaki korak jedan node: render scene, izračun sjena, post-processing, kompozitiranje.
Za WebGL developere to znači:
- mogućnost preciznog upravljanja redoslijedom i ovisnostima između passova
- lakše eksperimentiranje s novim efektima bez forkanja enginea
- bolji uvid u performanse jer je struktura pipelinea eksplicitna
Node Render Graph radi i na WebGL 2 i na WebGPU backendu. Jednom definirani graf može se izvršavati na oba API-ja, što je ključna točka za dugoročne projekte.
Dvostruki shader set: GLSL i WGSL rame uz rame
Najveća promjena za buduću migraciju na WebGPU je prelazak jezgre Babylona na dvostruki skup shadera: GLSL za WebGL i WGSL za WebGPU.
Zašto je to važno za performanse i održavanje
Prvi val WebGPU integracija u web engineima često se oslanjao na runtime prevođenje. GLSL shaderi su se dinamički pretvarali u WGSL ili SPIR-V. To je donosilo dodatno vrijeme učitavanja, kompleksnost i veće bundleove.
Babylon.js mijenja pristup: engine isporučuje unaprijed pripremljene WGSL varijante shader programa, paralelno s GLSL verzijama. Prednosti su konkretne:
- manje runtime prevođenja i manje iznenađenja na različitim GPU-ovima
- jasniji debugging jer se radi s izvornim WGSL kodom
- lakše optimizacije specifične za WebGPU bez kompromisa za WebGL
Za timove s većim bibliotekama custom materijala ovo smanjuje rizik pri prelasku na WebGPU. Nema više jednokratne masovne migracije shader koda; umjesto toga, engine postaje most između dva svijeta.
Node Material Editor: isti materijal, dva backenda
Babylonov Node Material Editor omogućuje vizualno sastavljanje shadera kroz čvorove. U verzijama s podrškom za WebGPU editor može generirati i GLSL i WGSL varijante iz iste čvorovne mreže.
To ima nekoliko praktičnih posljedica:
- art timovi i tehnički artisti mogu stvarati materijale bez brige o ciljanom API-ju
- isti materijal radi na WebGL 2 i na WebGPU, ovisno o tome što je dostupno na uređaju
- migracija na WebGPU svodi se na provjeru i fino podešavanje, a ne na pisanje shadera ispočetka
U praksi, to omogućuje arhitekturu gdje su scene, materijali i asset pipeline dizajnirani kao agnostični sloj. Tek u fazi izvođenja odlučuje se hoće li se koristiti WebGL ili WebGPU backend.
Veliki svjetovi u pregledniku: Large World Rendering
Jedan od izazova WebGL-a je ograničena preciznost floating point koordinata. U vrlo velikim scenama, kada se kamera udalji tisućama jedinica od ishodišta, pojavljuje se jittering geometrije i artefakti u pomaku piksela.
Game enginei to rješavaju tehnikama poput „floating origin“: svijet se redovito „pomakne“ tako da kamera ostaje blizu ishodišta, dok se relativni odnosi objekata čuvaju.
Babylon.js 9.0 u eksperimentalnoj grani uvodi Large World Rendering, mehanizam inspiriran tim pristupom.
Kako Large World Rendering funkcionira
Konceptualno, engine periodički rekonfigurira koordinatni sustav oko kamere. Objektima se mijenjaju pozicije tako da se numerički vrate u područje veće preciznosti, dok korisnik ne primjećuje skok.
Za WebGL to znači:
- manje jitteringa u dalekim planovima
- mogućnost simulacija i open-world scena u pregledniku bez tipičnih artefakata
- bolju stabilnost fizike i raycastinga na velikim udaljenostima
Ipak, značajka još ima ograničenja. Određeni sustavi, poput sjena ili billboard objekata, mogu zahtijevati dodatne prilagodbe. Timovi koji planiraju masivne karte ili digitalne blizance gradova trebaju računati na dodatno testiranje i eventualno prilagođavanje vlastitih shader programa.
Činjenica da se ovakve tehnike implementiraju iznad WebGL-a šalje jasnu poruku: WebGL nije samo za male demoe i konfiguratore, već i za ozbiljne simulacije i kompleksne vizualizacije.
Strategija za nove 3D web projekte
Za timove koji danas pokreću nove 3D web projekte, praktična poruka iz razvoja Babylona je relativno jasna.
WebGL kao default, WebGPU kao accelerant
WebGL i dalje treba ostati primarni cilj ako su kompatibilnost i doseg ključni. To uključuje:
- korporativna okruženja s ograničenim nadogradnjama preglednika
- edukacijske platforme i javne portale
- embedded uređaje i kioske gdje je nadogradnja softvera sporija
Istovremeno, pri izboru enginea ključno je gledati kvalitetu i zrelost WebGPU podrške. Babylon.js demonstrira da jedan engine može:
- istovremeno pružiti stabilan WebGL 2 rendering
- nuditi napredne alate za PBR, shader authoring i upravljanje pipelineom
- omogućiti jasan, postupni put prema WebGPU-u bez „hard cut“ migracije
Dizajn agnostične jezgre aplikacije
Praktičan arhitektonski pristup može izgledati ovako:
- Scene i entiteti: definirani neovisno o grafičkom API-ju. Objektima se dodjeljuju komponente (mesh, materijal, ponašanje) bez znanja o WebGL-u ili WebGPU-u.
- Materijali i shaderi: gdje god je moguće, koriste se čvorovni editori (poput Node Material Editora) koji generiraju i GLSL i WGSL. Custom shaderi se pišu uz jasnu separaciju API-specifičnih dijelova.
- Render backend: odabire se u runtimeu, na temelju mogućnosti preglednika i uređaja. Babylonov engine detektira podršku i bira WebGL 2 ili WebGPU backend.
- Feature gating: napredne WebGPU-only značajke (npr. compute-heavy simulacije) izoliraju se u module s jasnim fallbackom za WebGL.
Na taj način, isti projekt može danas isporučivati stabilno iskustvo na WebGL-u, a sutra iskoristiti WebGPU tamo gdje je dostupan, bez ponovne izgradnje cijelog sustava.
Što pratiti u sljedećim verzijama Babylona
Kako se Babylon.js kreće prema verziji 9.0 i dalje, nekoliko trendova je posebno relevantno za planiranje WebGL projekata:
- daljnje širenje WGSL pokrivenosti, uključujući napredne materijale i post-processing efekte
- stabilizacija Large World Rendering sustava i rješavanje edge slučajeva sa sjenama i billboardima
- optimizacije vezane uz asset pipeline, posebno za velike scene i streaming geometrije
- bolja integracija s alatima za DCC (Blender, 3ds Max, glTF toolchain) uz očuvanje kompatibilnosti između WebGL i WebGPU izvoza
Za timove koji žele dugoročno ulagati u 3D web, ključna lekcija je da se odluka više ne svodi na WebGL ili WebGPU. Umjesto toga, treba birati engine i arhitekturu koja omogućuje koegzistenciju oba API-ja, uz minimalne troškove održavanja.
Babylon.js trenutno je jedan od najkonkretnijih primjera takvog pristupa. Njegove novosti u verziji 8.0 i eksperimentalne značajke u 9.0 jasno pokazuju kako može izgledati budućnost WebGL projekata u svijetu u kojem WebGPU postaje standard, ali stariji hardver i dalje ne nestaje.



