PlayCanvas V2 i WebGPU: što se stvarno mijenja za WebGL projekte

PlayCanvas V2 i WebGPU: što se stvarno mijenja za WebGL projekte

PlayCanvas danas: dvije engine grane, dva svijeta

PlayCanvas je u verzijama 2.x jasno usmjerio razvoj prema WebGPU-u, ali WebGL 2 i dalje ostaje glavni produkcijski backend. U praksi, ekosustav je podijeljen na dvije engine grane:

  • Engine V1 – podržava WebGL 1 i WebGL 2, ali je u fazi održavanja. Dobiva samo kritične ispravke i sigurnosne zakrpe.
  • Engine V2 – cilja WebGL 2 i WebGPU, bez podrške za WebGL 1. Dobiva nove značajke, optimizacije i promjene u API-ju.

Editor omogućuje odabir između tih grana. Novi projekti se potiču na V2, dok se postojeći WebGL 1 projekti praktično „zamrzavaju” na zadnjoj stabilnoj 1.x verziji. To ne znači da prestaju raditi, ali znači da ostaju izvan glavnog razvojno-optimizacijskog toka.

Za timove koji održavaju dugovječne 3D web aplikacije, ova podjela je ključna. Odabir grane više nije samo tehničko pitanje, nego i strateška odluka o tome koliko ste spremni ulagati u refaktor i dugoročnu održivost.

Što konkretno znači kraj WebGL 1 podrške u V2

PlayCanvas V2 potpuno uklanja WebGL 1 iz rendererskog pipelinea. To ima nekoliko vrlo konkretnih posljedica:

  • Ne možete više ciljati starije preglednike i uređaje koji podržavaju samo WebGL 1.
  • Shaderi, materijali i render konfiguracije pretpostavljaju WebGL 2 značajke (VAO, instancing, uniform bufferi…).
  • Engine može agresivnije optimizirati rendering passove jer ne mora podržavati starije ograničene GPU pipelineove.

Na strani koda, to otvara prostor za modernije tehnike. Primjerice, lakše je graditi napredne post-processing lance, koristiti više render targeta ili raditi sofisticiranije culling strategije. No za timove koji su se dugo oslanjali na WebGL 1 kompatibilnost, to znači da moraju jasno odlučiti: ostati na V1 i prihvatiti tehnološki dug ili krenuti u refaktor.

Migracija s V1 na V2: više od obične nadogradnje

Migracija na PlayCanvas Engine V2 nije „drop-in” update. Radi se o nizu breaking promjena koje zahvaćaju cijeli rendering pipeline:

  • uklanjanje zastarjelih komponenti i deprecated API poziva
  • promjene u načinu definiranja materijala i shader varijanti
  • drugačiji pristup inicijalizaciji grafičkog uređaja i odabiru backenda
  • čišćenje starog koda koji je zaobilazio WebGL 1 ograničenja

Za ozbiljnije projekte migracija traži planirani refaktor. Tipičan scenarij uključuje:

  1. Inventuru prilagođenih shader programa, render targeta i post-processing efekata.
  2. Provjeru svih mjesta gdje se izravno pristupa WebGL kontekstu ili niskorazinskim bufferima.
  3. Postupno prebacivanje na službene V2 API-je za materijale, geometriju i render tokove.
  4. Paralelno testiranje na WebGL 2 i WebGPU backendu, s fokusom na razlike u ponašanju.

U praksi, mnogi timovi biraju hibridni pristup: ključne funkcionalnosti prebacuju na V2, dok dio starog koda ostaje u izoliranim modulima koji se kasnije dodatno moderniziraju. Cilj je zadržati stabilan FPS i dobar frame pacing tijekom cijelog prijelaza.

Backendovi u PlayCanvasu: WebGL 2, WebGPU i „null” uređaj

PlayCanvas V2 danas nudi tri glavna backenda za rendering:

  • WebGL 2 – primarni produkcijski backend. Podržan u većini modernih preglednika, s provjerenim performansama i stabilnim driverima.
  • WebGPU (beta) – novi API s nižim driver overheadom, boljom kontrolom nad GPU pipelineom i podrškom za compute shadere.
  • „Null” uređaj – headless backend za testiranje, server-side rendering i automatizirane testove bez stvarnog GPU-a.

Engine automatski bira najbolji dostupni backend. Ako WebGPU nije dostupan ili je nestabilan, sustav se vraća na WebGL 2. To je važno za timove koji ciljaju širok spektar uređaja: desktop preglednike, mobilne telefone, embedded uređaje u kiosk rješenjima ili VR headsetove.

U praksi, većina produkcijskih projekata i dalje će isporučivati WebGL 2 build. WebGPU se koristi kao eksperimentalni kanal: za internu validaciju novih tehnika, A/B testiranje performansi i pripremu za buduće generacije preglednika.

Multi-draw i nove optimizacije: što dobiva WebGL 2

Jedna od zanimljivijih novijih značajki u PlayCanvasu je podrška za višestruko crtanje, odnosno multi-draw. Cilj je jasan: smanjiti broj draw poziva po frameu i bolje iskoristiti GPU.

U klasičnom WebGL 2 scenariju, engine mora za svaku instancu objekta slati zaseban draw poziv. Kod scena s tisućama objekata to stvara značajan CPU overhead i usporava cijeli pipeline. Multi-draw omogućuje grupiranje tih poziva u jedan batched rendering pass.

Za WebGL 2 projekte to znači:

  • manje draw poziva po frameu
  • bolji FPS na CPU-limitiranim scenama
  • stabilniji frame pacing u scenama s velikim brojem malih objekata (npr. čestice, vegetacija, crowds simulacije)

Iako je multi-draw dizajniran s WebGPU-om na umu, donosi mjerljiva ubrzanja i u postojećim WebGL 2 projektima. Razlika je u tome što WebGPU, uz compute shadere i fleksibilnije upravljanje bufferima, otvara dodatne mogućnosti:

  • napredni GPU-based culling (frustum, occlusion, LOD odluke na GPU-u)
  • proceduralno generiranje geometrije i instanci na samom GPU-u
  • dinamičko sortiranje draw poziva prema materijalima i stateu bez povratka na CPU

Za timove koji danas rade ozbiljne WebGL 2 projekte, isplati se već sada razmišljati o strukturi podataka i scene tako da se mogu lako prebaciti na GPU-driven pipeline.

WebGPU kao „beta” cilj: što realno možete očekivati

WebGPU u PlayCanvasu je još uvijek označen kao beta. To znači da:

  • API se može mijenjati, posebno oko naprednih mogućnosti poput compute shader pipelinea.
  • Podrška u preglednicima nije ujednačena; neke kombinacije OS-a i GPU drivera još uvijek imaju bugove.
  • Alati za profiliranje i debuggiranje WebGPU-a još su u razvoju, što otežava detaljnu analizu performansi.

Ipak, već danas se WebGPU može koristiti za konkretne eksperimente. Primjerice:

  • testiranje GPU-based culling algoritama na složenim scenama
  • usporedba performansi istog shader koda na WebGL 2 i WebGPU backendu
  • prototipiranje naprednih efekata (volumetrija, fizički točniji lighting modeli) koji su teški za izvesti u WebGL 2 ograničenjima

Bitno je da produkcijska očekivanja ostanu realna. WebGPU danas nije zamjena za WebGL 2 u širokoj distribuciji, ali jest važan pokazatelj kamo ide cijeli 3D web ekosustav.

Strategija za timove: pisati za WebGL 2, razmišljati o WebGPU-u

Za većinu razvojnih timova najrazboritiji pristup izgleda ovako:

  1. Primarni cilj: WebGL 2 – optimizirati rendering pipeline, smanjiti draw pozive, paziti na bandwidth i veličinu tekstura.
  2. Struktura koda: backend-agnostična – ne oslanjati se na direktan pristup WebGL kontekstu, već koristiti službene PlayCanvas apstrakcije.
  3. Shaderi: modularni – pisati shadere tako da se lako prilagode različitim backendovima i ograničenjima.
  4. Testiranje: dualni backend – redovito testirati isti projekt na WebGL 2 i WebGPU-u kako bi se rano uočile razlike u ponašanju i performansama.

Na taj način, projekti koji danas startaju na modernom WebGL 2 kodu neće biti zaključani u zastarjeli pipeline za nekoliko godina. Kada WebGPU postane standardni dio preglednika i alata, prelazak će se svesti na prilagodbu pojedinih dijelova koda, a ne na potpunu rekonstrukciju engine integracije.

Dugoročne posljedice za WebGL ekosustav

PlayCanvas 2.x dobro ilustrira kako će vjerojatno izgledati tranzicijsko razdoblje za cijeli WebGL ekosustav. WebGL 2 će još godinama ostati „radni konj” za produkciju, posebno u scenarijima gdje je važna široka kompatibilnost: edukativne aplikacije, B2B konfiguratori, industrijske vizualizacije, interaktivni marketing.

Istovremeno, WebGPU će se koristiti kao paralelni put za projekte kojima je ključna maksimalna iskorištenost GPU-a: složene simulacije, AAA web igre, masivni digitalni tvornicki „digital twin” modeli ili VR/AR iskustva s visokim zahtjevima na FPS i latenciju.

Za današnje WebGL timove poruka je jasna: nije nužno odmah prebaciti sve na WebGPU, ali jest nužno prestati graditi nove sustave oko WebGL 1 i zastarjelih API-ja. Investicija u moderni WebGL 2 kod, automatizirano testiranje i backend-agnostičnu arhitekturu danas, izravno smanjuje tehnološki dug sutra.

Zaključak: konkretne promjene koje treba planirati danas

PlayCanvas V2 i WebGPU ne mijenjaju preko noći način na koji se isporučuju WebGL projekti, ali mijenjaju pravila igre za buduće generacije 3D web aplikacija. Ključne točke za planiranje:

  • WebGL 1 je praktično na izlaznim vratima u modernim engineovima. Novi razvoj treba ciljati WebGL 2.
  • PlayCanvas V2 donosi breaking promjene i traži planirani refaktor, posebno za prilagođene shadere i render tokove.
  • Multi-draw i slične optimizacije već danas daju dobitke u WebGL 2 projektima, a sutra će biti temelj GPU-driven pipelinea na WebGPU-u.
  • Najbolja strategija je pisati za WebGL 2, ali dizajnirati arhitekturu tako da može iskoristiti WebGPU čim postane standard.

Timovi koji se na vrijeme prilagode ovom dvostrukom svijetu – stabilni WebGL 2 za produkciju i eksperimentalni WebGPU za inovacije – bit će u najboljoj poziciji kada se ravnoteža konačno pomakne prema novom API-ju.

Natrag na vrh