Poglobljen vodnik za razvijalce o upravljanju ločljivosti globinskega medpomnilnika WebXR, filtriranju artefaktov in nadzoru kakovosti za robustno AR okluzijo.
Obvladovanje globine v WebXR: Poglobljen pregled ločljivosti globinskega medpomnilnika in nadzora kakovosti
Obogatena resničnost (AR) je prestopila prag iz znanstvene fantastike v otipljivo, zmogljivo orodje, ki preoblikuje našo interakcijo z digitalnimi informacijami. Čar AR leži v njeni zmožnosti, da neopazno zlije virtualno z resničnim. Virtualni lik, ki se premika okoli vašega pohištva v dnevni sobi, digitalno merilno orodje, ki natančno izmeri resnični predmet, ali kos virtualne umetnine, pravilno skrit za resničnim stebrom – vse te izkušnje so odvisne od ene ključne tehnologije: razumevanja okolja v realnem času. V središču tega razumevanja za spletno AR je WebXR Depth API.
API za globino (Depth API) razvijalcem zagotavlja oceno geometrije resničnega sveta za vsako sličico, kot jo vidi kamera naprave. Ti podatki, splošno znani kot globinska mapa (depth map), so ključ do odklepanja naprednih funkcij, kot so okluzija, realistična fizika in mreženje okolja. Vendar je dostop do teh podatkov o globini le prvi korak. Surove informacije o globini so pogosto šumne, nedosledne in nižje ločljivosti kot glavni vir kamere. Brez ustreznega ravnanja lahko to privede do utripajočih okluzij, nestabilne fizike in splošnega zloma iluzije poglobljenosti.
Ta celovit vodnik je namenjen razvijalcem WebXR, ki želijo preseči osnovno AR in vstopiti v svet resnično robustnih, verodostojnih izkušenj. Razčlenili bomo koncept ločljivosti globinskega medpomnilnika, raziskali dejavnike, ki slabšajo njegovo kakovost, in ponudili nabor praktičnih tehnik za nadzor kakovosti, filtriranje in validacijo. Z obvladovanjem teh konceptov lahko šumne, surove podatke pretvorite v stabilen in zanesljiv temelj za naslednjo generacijo AR aplikacij.
Poglavje 1: Osnove API-ja za globino v WebXR
Preden lahko nadzorujemo kakovost globinske mape, moramo najprej razumeti, kaj to je in kako do nje dostopamo. API za zaznavanje globine WebXR (WebXR Depth Sensing API) je modul znotraj API-ja za naprave WebXR (WebXR Device API), ki izpostavlja informacije o globini, zajete s senzorji naprave.
Kaj je globinska mapa?
Predstavljajte si, da posnamete sliko, vendar namesto shranjevanja barvnih informacij za vsak piksel shranite razdaljo od kamere do predmeta, ki ga ta piksel predstavlja. To je v bistvu globinska mapa. Gre za 2D sliko, običajno v sivinah, kjer jakost piksla ustreza razdalji. Svetlejši piksli lahko predstavljajo predmete, ki so bližje, medtem ko temnejši piksli predstavljajo predmete, ki so dlje (ali obratno, odvisno od vizualizacije).
Ti podatki so na voljo vašemu kontekstu WebGL kot tekstura, `XRDepthInformation.texture`. To vam omogoča izvajanje visoko učinkovitih izračunov globine na ravni pikslov neposredno na GPE znotraj vaših senčilnikov (shaders) – kar je ključnega pomena za zmogljivost AR v realnem času.
Kako WebXR zagotavlja informacije o globini
Za uporabo API-ja morate najprej zahtevati funkcijo `depth-sensing` pri inicializaciji vaše seje WebXR:
const session = await navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['depth-sensing'] });
Določite lahko tudi preference za format podatkov in uporabo, kar bomo raziskali kasneje v razdelku o zmogljivosti. Ko je seja aktivna, v vaši zanki `requestAnimationFrame` dobite najnovejše informacije o globini iz sloja WebGL:
const depthInfo = xrWebView.getDepthInformation(xrFrame.getViewerPose(xrReferenceSpace));
Če je `depthInfo` na voljo, vsebuje več ključnih informacij:
- texture: `WebGLTexture`, ki vsebuje surove vrednosti globine.
- normDepthFromViewMatrix: Matrika za pretvorbo koordinat v prostoru pogleda (view-space) v normalizirane koordinate teksture globine.
- rawValueToMeters: Faktor skaliranja za pretvorbo surovih vrednosti brez enot iz teksture v metre. To je bistveno za natančne meritve v resničnem svetu.
Osnovna tehnologija, ki generira te podatke, se razlikuje glede na napravo. Nekatere uporabljajo aktivne senzorje, kot so Time-of-Flight (ToF) ali strukturirana svetloba, ki projicirajo infrardečo svetlobo in merijo njen povratek. Druge uporabljajo pasivne metode, kot so stereoskopske kamere, ki iščejo ujemanje med dvema slikama za izračun globine. Kot razvijalec ne nadzorujete strojne opreme, vendar je razumevanje njenih omejitev ključno za upravljanje podatkov, ki jih proizvaja.
Poglavje 2: Dva obraza ločljivosti globinskega medpomnilnika
Ko razvijalci slišijo "ločljivost", pogosto pomislijo na širino in višino slike. Pri globinskih mapah je to le polovica zgodbe. Ločljivost globine je dvodelen koncept in oba dela sta ključna za kakovost.
Prostorska ločljivost: 'Kaj' in 'Kje'
Prostorska ločljivost se nanaša na dimenzije globinske teksture, na primer 320x240 ali 640x480 pikslov. Ta je pogosto bistveno nižja od ločljivosti barvne kamere naprave (ki je lahko 1920x1080 ali več). To neskladje je primarni vir artefaktov v AR.
- Vpliv na podrobnosti: Nizka prostorska ločljivost pomeni, da vsak piksel globine pokriva večje območje resničnega sveta. To onemogoča zajemanje finih podrobnosti. Robovi mize se lahko zdijo kockasti, tanek steber svetilke lahko popolnoma izgine, razlika med predmeti, ki so blizu drug drugemu, pa postane zabrisana.
- Vpliv na okluzijo: Tu je težava najbolj vidna. Ko je virtualni predmet delno za resničnim predmetom, postanejo nizkoločljivostni "stopničasti" artefakti ob meji okluzije očitni in uničujejo občutek poglobljenosti.
Predstavljajte si to kot fotografijo nizke ločljivosti. Razločite lahko splošne oblike, vendar so vse fine podrobnosti in ostri robovi izgubljeni. Izziv za razvijalce je pogosto inteligentno "povečati" (upsample) ali delati s temi nizkoločljivostnimi podatki, da bi ustvarili visokoločljivosten rezultat.
Bitna globina (natančnost): 'Kako daleč'
Bitna globina ali natančnost določa, koliko različnih korakov razdalje je mogoče predstaviti. To je numerična natančnost vrednosti vsakega piksla v globinski mapi. API WebXR lahko zagotovi podatke v različnih formatih, kot so 16-bitna nepredznačena cela števila (`ushort`) ali 32-bitna števila s plavajočo vejico (`float`).
- 8-bitna globina (256 ravni): 8-bitni format lahko predstavlja le 256 diskretnih razdalj. Na območju 5 metrov to pomeni, da je vsak korak oddaljen skoraj 2 centimetra. Predmetom na 1,00 m in 1,01 m je lahko dodeljena ista vrednost globine, kar vodi do pojava, znanega kot "kvantizacija globine" ali pasovi (banding).
- 16-bitna globina (65.536 ravni): To je pomembna izboljšava in pogost format. Zagotavlja veliko bolj gladko in natančnejšo predstavitev razdalje, zmanjšuje artefakte kvantizacije in omogoča zajemanje bolj subtilnih variacij globine.
- 32-bitno plavajoče število (Float): To ponuja najvišjo natančnost in je idealno za znanstvene ali merilne aplikacije. Izogne se težavi fiksnih korakov celoštevilskih formatov, vendar za ceno višje zmogljivosti in porabe pomnilnika.
Nizka bitna globina lahko povzroči "Z-fighting", kjer se dve površini na rahlo različnih globinah borita za izrisovanje spredaj, kar povzroča utripajoč učinek. Prav tako povzroči, da so gladke površine videti stopničaste ali pasaste, kar je še posebej opazno pri simulacijah fizike, kjer se zdi, da se virtualna žoga kotali po nizu stopnic namesto po gladki klančini.
Poglavje 3: Resnični svet proti idealni globinski mapi: Dejavniki, ki vplivajo na kakovost
V popolnem svetu bi bila vsaka globinska mapa kristalno jasna, visokoločljivostna in popolnoma natančna predstavitev resničnosti. V praksi so podatki o globini neurejeni in dovzetni za širok spekter okoljskih in strojno pogojenih težav.
Odvisnosti od strojne opreme
Kakovost vaših surovih podatkov je temeljno omejena s strojno opremo naprave. Čeprav ne morete zamenjati senzorjev, je zavedanje o njihovih tipičnih točkah odpovedi ključno za izgradnjo robustnih aplikacij.
- Tip senzorja: Senzorji Time-of-Flight (ToF), ki so pogosti v mnogih visokokakovostnih mobilnih napravah, so na splošno dobri, vendar nanje lahko vpliva okoliška infrardeča svetloba (npr. močna sončna svetloba). Stereoskopski sistemi imajo lahko težave s površinami brez teksture, kot je navaden bel zid, saj ni izrazitih značilnosti, ki bi se ujemale med obema pogledoma kamere.
- Profil porabe energije naprave: Za varčevanje z baterijo lahko naprava namerno zagotovi globinsko mapo nižje ločljivosti ali z več šuma. Nekatere naprave lahko celo preklapljajo med različnimi načini zaznavanja, kar povzroči opazne spremembe v kakovosti.
Saboterji iz okolja
Okolje, v katerem se nahaja vaš uporabnik, ima ogromen vpliv na kakovost podatkov o globini. Vaša AR aplikacija mora biti odporna na te pogoste izzive.
- Težavne lastnosti površin:
- Odsevne površine: Ogledala in polirana kovina delujejo kot portali, ki prikazujejo globino odsevane scene, ne pa površine same. To lahko v vaši globinski mapi ustvari bizarne in nepravilne geometrije.
- Prozorne površine: Steklo in prozorna plastika so pogosto nevidni za senzorje globine, kar vodi do velikih lukenj ali nepravilnih odčitkov globine tistega, kar je za njimi.
- Temne ali svetlobo vpijajoče površine: Zelo temne, mat površine (kot je črni žamet) lahko vpijejo infrardečo svetlobo aktivnih senzorjev, kar povzroči manjkajoče podatke (luknje).
- Svetlobni pogoji: Močna sončna svetloba lahko preobremeni senzorje ToF, kar ustvari znaten šum. Nasprotno pa so zelo slabi svetlobni pogoji lahko izziv za pasivne stereo sisteme, ki se zanašajo na vidne značilnosti.
- Razdalja in doseg: Vsak senzor globine ima optimalen delovni doseg. Predmeti, ki so preblizu, so lahko izven fokusa, medtem ko se natančnost znatno poslabša za oddaljene predmete. Večina senzorjev za potrošnike je zanesljivih le do približno 5-8 metrov.
- Zameglitev zaradi gibanja: Hitro gibanje naprave ali predmetov v prizoru lahko povzroči zameglitev gibanja v globinski mapi, kar vodi do razmazanih robov in nenatančnih odčitkov.
Poglavje 4: Orodjarna razvijalca: Praktične tehnike za nadzor kakovosti
Zdaj, ko razumemo težave, se osredotočimo na rešitve. Cilj ni doseči popolne globinske mape – to je pogosto nemogoče. Cilj je obdelati surove, šumne podatke v nekaj, kar je dosledno, stabilno in dovolj dobro za potrebe vaše aplikacije. Vse naslednje tehnike je treba za delovanje v realnem času implementirati v vaših senčilnikih WebGL.
Tehnika 1: Časovno filtriranje (glajenje skozi čas)
Podatki o globini so lahko od sličice do sličice zelo "nemirni", saj posamezni piksli hitro spreminjajo svoje vrednosti. Časovno filtriranje to zgladi z mešanjem podatkov o globini trenutne sličice s podatki iz prejšnjih sličic.
Preprosta in učinkovita metoda je Eksponencialno drseče povprečje (EMA). V vašem senčilniku bi ohranjali "zgodovinsko" teksturo, ki shranjuje zglajeno globino iz prejšnje sličice.
Konceptualna logika senčilnika:
float smoothing_factor = 0.6; // Vrednost med 0 in 1. Višja = več glajenja.
vec2 tex_coord = ...; // Koordinata teksture trenutnega piksla
float current_depth = texture2D(new_depth_map, tex_coord).r;
float previous_depth = texture2D(history_depth_map, tex_coord).r;
// Posodobi samo, če je trenutna globina veljavna (ne 0)
if (current_depth > 0.0) {
float smoothed_depth = mix(current_depth, previous_depth, smoothing_factor);
// Zapiši smoothed_depth v novo zgodovinsko teksturo za naslednjo sličico
} else {
// Če so trenutni podatki neveljavni, samo prenesi stare podatke
// Zapiši previous_depth v novo zgodovinsko teksturo
}
Prednosti: Odlično zmanjšuje visokofrekvenčni šum in utripanje. Okluzije in fizikalne interakcije so zaradi tega veliko bolj stabilne.
Slabosti: Vpelje rahel zamik ali učinek "duha" (ghosting), še posebej pri hitro premikajočih se predmetih. `smoothing_factor` je treba natančno nastaviti, da se uravnoteži stabilnost z odzivnostjo.
Tehnika 2: Prostorsko filtriranje (glajenje s sosedi)
Prostorsko filtriranje vključuje spreminjanje vrednosti piksla na podlagi vrednosti njegovih sosednjih pikslov. To je odlično za popravljanje posameznih napačnih pikslov in glajenje majhnih neravnin.
- Gaussova zameglitev: Preprosta zameglitev lahko zmanjša šum, vendar bo zmehčala tudi pomembne ostre robove, kar vodi do zaobljenih vogalov na mizah in zamegljenih meja okluzije. Na splošno je preveč agresivna za ta primer uporabe.
- Bilateralni filter: To je filter za glajenje, ki ohranja robove. Deluje tako, da povpreči sosednje piksle, vendar daje večjo težo sosedom, ki imajo podobno vrednost globine kot osrednji piksel. To pomeni, da bo zgladil ravno steno, ne bo pa povprečil pikslov čez diskontinuiteto globine (kot je rob mize). To je veliko bolj primerno za globinske mape, vendar je računsko dražje od preproste zameglitve.
Tehnika 3: Polnjenje lukenj in popravljanje (Inpainting)
Pogosto bo vaša globinska mapa vsebovala "luknje" (piksle z vrednostjo 0), kjer senzor ni uspel dobiti odčitka. Te luknje lahko povzročijo, da se virtualni predmeti nepričakovano pojavijo ali izginejo. Preproste tehnike polnjenja lukenj lahko to ublažijo.
Konceptualna logika senčilnika:
vec2 tex_coord = ...;
float center_depth = texture2D(depth_map, tex_coord).r;
if (center_depth == 0.0) {
// Če je to luknja, vzorči sosede in povpreči veljavne
float total_depth = 0.0;
float valid_samples = 0.0;
// ... zanka čez mrežo sosedov 3x3 ali 5x5 ...
// if (neighbor_depth > 0.0) { total_depth += neighbor_depth; valid_samples++; }
if (valid_samples > 0.0) {
center_depth = total_depth / valid_samples;
}
}
// Uporabi (potencialno zapolnjeno) vrednost center_depth
Naprednejše tehnike vključujejo širjenje vrednosti globine od robov luknje navznoter, vendar lahko že preprosto povprečje sosedov znatno izboljša stabilnost.
Tehnika 4: Povečanje ločljivosti (Upsampling)
Kot smo že omenili, je globinska mapa običajno veliko nižje ločljivosti kot barvna slika. Za izvedbo natančne okluzije na ravni pikslov moramo ustvariti globinsko mapo visoke ločljivosti.
- Bilinearna interpolacija: To je najpreprostejša metoda. Pri vzorčenju nizkoločljivostne teksture globine v vašem senčilniku lahko strojni vzorčevalnik GPE samodejno zmeša štiri najbližje piksle globine. To je hitro, vendar povzroči zelo zamegljene robove.
- Povečanje ločljivosti z ohranjanjem robov (Edge-Aware Upsampling): Naprednejši pristop uporablja visokoločljivostno barvno sliko kot vodilo. Logika je, da če je v barvni sliki oster rob (npr. rob temnega stola ob svetli steni), bi moral biti verjetno oster rob tudi v globinski mapi. To preprečuje zameglitev čez meje predmetov. Čeprav je implementacija od začetka kompleksna, je osnovna ideja uporaba tehnik, kot je Joint Bilateral Upsampler, ki spreminja uteži filtra na podlagi tako prostorske razdalje kot barvne podobnosti v visokoločljivostni teksturi kamere.
Tehnika 5: Odpravljanje napak in vizualizacija
Ne morete popraviti tistega, česar ne vidite. Eno najmočnejših orodij v vaši orodjarni za nadzor kakovosti je zmožnost neposredne vizualizacije globinske mape. Teksturo globine lahko izrišete na štirikotnik na zaslonu. Ker surove vrednosti globine niso v vidnem območju, jih boste morali normalizirati v vašem fragmentnem senčilniku.
Konceptualna logika normalizacijskega senčilnika:
float raw_depth = texture2D(depth_map, tex_coord).r;
float depth_in_meters = raw_depth * rawValueToMeters;
// Normaliziraj na območje 0-1 za vizualizacijo, npr. za največji doseg 5 metrov
float max_viz_range = 5.0;
float normalized_color = clamp(depth_in_meters / max_viz_range, 0.0, 1.0);
gl_FragColor = vec4(normalized_color, normalized_color, normalized_color, 1.0);
S primerjavo surovih, filtriranih in povečanih globinskih map lahko intuitivno prilagodite svoje parametre filtriranja in takoj vidite vpliv svojih algoritmov za nadzor kakovosti.
Poglavje 5: Študija primera - Implementacija robustne okluzije
Povežimo te koncepte z najpogostejšim primerom uporabe API-ja za globino: okluzijo. Cilj je, da se virtualni predmet pravilno prikaže za resničnimi predmeti.
Osnovna logika (v fragmentnem senčilniku)
Postopek se zgodi za vsak posamezen piksel vašega virtualnega predmeta:
- Pridobi globino virtualnega fragmenta: V senčilniku vozlišč (vertex shader) izračunate položaj vozlišča v prostoru izrezovanja (clip-space). Komponenta Z tega položaja po perspektivni delitvi predstavlja globino vašega virtualnega predmeta. To vrednost posredujte fragmentnemu senčilniku.
- Pridobi globino resničnega sveta: V fragmentnem senčilniku morate ugotoviti, kateri piksel v globinski mapi ustreza trenutnemu virtualnemu fragmentu. Uporabite lahko `normDepthFromViewMatrix`, ki ga zagotavlja API, za pretvorbo položaja vašega fragmenta v prostoru pogleda v koordinate teksture globinske mape.
- Vzorči in obdelaj resnično globino: Uporabite te koordinate teksture za vzorčenje vaše (idealno, predhodno filtrirane in povečane) globinske mape. Ne pozabite pretvoriti surove vrednosti v metre z uporabo `rawValueToMeters`.
- Primerjaj in zavrzi: Primerjajte globino vašega virtualnega fragmenta z globino resničnega sveta. Če je virtualni predmet dlje (ima večjo vrednost globine) kot resnični predmet na tem piksli, potem je zakrit (okludiran). V GLSL uporabite ključno besedo `discard`, da popolnoma ustavite izrisovanje tega piksla.
Brez nadzora kakovosti: Robovi okluzije bodo kockasti (zaradi nizke prostorske ločljivosti) in bodo utripali ali migetali (zaradi časovnega šuma). Videti bo, kot da je bila na vaš virtualni predmet grobo nanesena šumna maska.
Z nadzorom kakovosti: Z uporabo tehnik iz 4. poglavja – z izvajanjem časovnega filtra za stabilizacijo podatkov in uporabo metode povečanja ločljivosti z ohranjanjem robov – meja okluzije postane gladka in stabilna. Virtualni predmet bo videti, kot da je trdno in verodostojno del resnične scene.
Poglavje 6: Zmogljivost, zmogljivost, zmogljivost
Obdelava podatkov o globini v vsaki sličici je lahko računsko draga. Slaba implementacija lahko zlahka zniža hitrost sličic vaše aplikacije pod udoben prag za AR, kar vodi do slabosti. Tukaj je nekaj nujnih najboljših praks.
Ostanite na GPE
Nikoli ne berite podatkov teksture globine nazaj na CPE znotraj vaše glavne zanke za izrisovanje (npr. z uporabo `readPixels`). Ta operacija je izjemno počasna in bo zaustavila cevovod za izrisovanje ter uničila vašo hitrost sličic. Vsa logika filtriranja, povečanja ločljivosti in primerjave mora biti izvedena v senčilnikih na GPE.
Optimizirajte svoje senčilnike
- Uporabite ustrezno natančnost: Kjer je mogoče, uporabite `mediump` namesto `highp` za plavajoče vrednosti in vektorje. To lahko zagotovi znatno povečanje zmogljivosti na mobilnih GPE.
- Zmanjšajte število dostopov do tekstur: Vsak vzorec teksture ima svojo ceno. Pri implementaciji filtrov poskusite ponovno uporabiti vzorce, kjer je to mogoče. Na primer, 3x3 box blur je mogoče razdeliti na dva prehoda (enega vodoravnega, enega navpičnega), ki skupaj zahtevata manj branj teksture.
- Veje so drage: Kompleksni stavki `if/else` v senčilniku lahko povzročijo težave z zmogljivostjo. Včasih je hitreje izračunati oba izida in uporabiti matematično funkcijo, kot je `mix()` ali `step()`, za izbiro rezultata.
Pametno uporabljajte pogajanje o funkcijah WebXR
Ko zahtevate funkcijo `depth-sensing`, lahko podate deskriptor s preferencami:
{ requiredFeatures: ['depth-sensing'],
depthSensing: {
usagePreference: ['cpu-optimized', 'gpu-optimized'],
dataFormatPreference: ['luminance-alpha', 'float32']
}
}
- usagePreference: `gpu-optimized` je tisto, kar želite za izrisovanje v realnem času, saj sistemu namigne, da boste podatke o globini primarno uporabljali na GPE. `cpu-optimized` se lahko uporablja za naloge, kot je asinhrona rekonstrukcija mreže.
- dataFormatPreference: Zahteva za `float32` vam bo dala najvišjo natančnost, vendar ima lahko svojo ceno v zmogljivosti. `luminance-alpha` shrani 16-bitno vrednost globine v dva 8-bitna kanala, kar zahteva malo logike bitnega premikanja v vašem senčilniku za rekonstrukcijo, vendar je lahko na nekaterih strojnih opremah bolj zmogljivo. Vedno preverite, kateri format ste dejansko prejeli, saj sistem zagotovi tistega, ki ga ima na voljo.
Implementirajte prilagodljivo kakovost
Pristop "ena velikost za vse" pri kakovosti ni optimalen. Visokokakovostna naprava lahko obvlada kompleksen večprehodni bilateralni filter, medtem ko bo naprava nižjega cenovnega razreda morda imela težave. Implementirajte sistem prilagodljive kakovosti:
- Ob zagonu preizkusite zmogljivost naprave ali preverite njen model.
- Glede na zmogljivost izberite drugačen senčilnik ali drugačen nabor tehnik filtriranja.
- Visoka kakovost: Časovna EMA + Bilateralni filter + Povečanje ločljivosti z ohranjanjem robov.
- Srednja kakovost: Časovna EMA + Preprosto povprečje sosedov 3x3.
- Nizka kakovost: Brez filtriranja, samo osnovna bilinearna interpolacija.
To zagotavlja, da vaša aplikacija teče gladko na čim širšem spektru naprav, kar vsakemu uporabniku omogoča najboljšo možno izkušnjo.
Zaključek: Od podatkov do izkušnje
API za globino WebXR je vrata do nove ravni poglobljenosti, vendar ni rešitev "priključi in uporabljaj" za popolno AR. Surovi podatki, ki jih zagotavlja, so zgolj izhodišče. Pravo obvladovanje leži v razumevanju nepopolnosti podatkov – omejitev ločljivosti, šuma, okoljskih slabosti – in v uporabi premišljenega, na zmogljivost osredotočenega cevovoda za nadzor kakovosti.
Z implementacijo časovnega in prostorskega filtriranja, inteligentnim obravnavanjem lukenj in razlik v ločljivosti ter nenehno vizualizacijo vaših podatkov lahko šumen, nemiren signal pretvorite v stabilen temelj za vašo ustvarjalno vizijo. Razlika med motečim demo posnetkom AR in resnično verodostojno, poglobljeno izkušnjo pogosto leži v tem skrbnem upravljanju informacij o globini.
Področje zaznavanja globine v realnem času se nenehno razvija. Prihodnji napredki lahko prinesejo z umetno inteligenco izboljšano rekonstrukcijo globine, semantično razumevanje (vedenje, da piksel pripada 'tlom' v primerjavi s 'osebo') in senzorje z višjo ločljivostjo na več napravah. Vendar bodo temeljna načela nadzora kakovosti – glajenja, filtriranja in potrjevanja podatkov – ostala bistvene veščine za vsakega razvijalca, ki resno želi premikati meje mogočega v obogateni resničnosti na odprtem spletu.