Le informazioni in un sistema VR arrivano all’utente tramite quattro canali:
- Canale visivo
- Canale inerziale
- Canale aptico
- Canale acustico
La piattaforma di realtà virtuale più potente al giorno d’oggi è il computer.
Si considerano quindi come caratteristiche della workstation:
- Velocità e parallelismo della CPU
- Capacità di rendering (Flops) della GPU
- Velocità dei BUS
Bus Dati
Il bus, in elettronica e informatica, è un canale di comunicazione che permette a periferiche e componenti di un sistema elettronico - come ad esempio un computer - di interfacciarsi tra loro scambiandosi informazioni o dati di vario tipo attraverso la trasmissione e la ricezione di segnali.
Diversamente dalle connessioni punto-punto, un solo bus può collegare tra loro più dispositivi. In pratica è il canale di trasferimento con cui colloquiano le componenti di un elaboratore elettronico.
Le connessioni elettriche del bus possono essere realizzate direttamente su circuito stampato oppure tramite un apposito cavo.Ciò nonostante, i bus possono essere di due tipi: seriale oppure parallelo. Un bus è di tipo parallelo quando adotta una trasmissione parallela. Sono di questo tipo i bus ISA, PCI e AGP. Un bus è invece seriale se adotta una trasmissione seriale.
Importanza Dei Bus
Ormai processori e GPU hanno delle velocità di elaborazione enormi, tuttavia il tempo totale di elaborazione delle informazioni è anche limitato dalla velocità con cui i vari componenti del sistema si scambiano dati.
Avere dei singoli componenti velocissimi ma un bus lento non è ottimale in quanto la “lentezza” del bus crea un collo di bottiglia che limita anche gli altri componenti.PCI Express
Lo standard che ormai viene utilizzato nei computer è lo standard PCI-Express.
Il PCI Express (Peripheral Component Interconnect Express), abbreviato in PCIe, è uno standard di interfaccia d’espansione a bus seriale per computer ad alta velocità, progettato per sostituire i vecchi standard PCI, PCI-X e AGP.
È basato su un trasferimento dei dati seriale, a differenza di quello parallelo del PCI, che semplifica il layout del PCB delle schede madri ed è costituito da una serie di canali. Ciò consente una notevole modularità, in quanto possono essere aggregati più canali per aumentare la banda passante disponibile o per supportare particolari configurazioni, come ad esempio l’utilizzo di due o più schede video; inoltre la larghezza di banda di ciascun canale è indipendente da quella degli altri.
Le specifiche e regolamentazioni sono mantenute e sviluppate da PCI-SIG (PCI Special Interest Group).
Con il PCI-E 4.0 si riescono ormai a raggiungere velocità di 32GB/s. A confronto l’Nvidia RTX 4090 ha una banda massima di circa 1000GB/s.
Link to original
Si può quindi concludere che la velocità dei bus è ancora oggi un fattore limitante per il processing grafico.
Fixed Function Pipeline
Link to originalIl termine pipeline a funzione fissa è usato per confrontare le API grafiche 3D e le GPU precedenti progettate prima dell’avvento delle API grafiche 3D basate su shader e delle architetture GPU.
Storicamente, le API a funzione fissa consistevano in un set di punti di ingresso di funzioni che venivano mappati direttamente alla logica dedicata per il loro scopo indicato nelle GPU progettate per supportarle.
Con l’evoluzione delle GPU e delle API basate su shader, le API a funzione fissa sono state implementate dagli ingegneri dei driver grafici utilizzando l’architettura di shading general-purpose.
Questo approccio avrebbe continuato a fornire API a funzione-fissa con cui la maggior parte degli sviluppatori era esperta, consentendo al contempo ulteriori sviluppi e miglioramenti delle nuove architetture basate su shader.
Shader
Shader (dall’inglese to shade = ombreggiare, sfumare) indica un insieme di algoritmi usati soprattutto nella computer grafica 3D che conferiscono al materiale virtuale a cui sono abbinati delle caratteristiche o proprietà che ne descrivono o ne influenzano il modo di reagire alla luce e di rendere il passaggio da un punto completamente illuminato a uno in ombra.
Lo shader è in grado di simulare al video l’aspetto del materiale virtuale in modo tale da essere il più vicino possibile a quello reale. Tecnicamente, invece che inviare poligoni o immagini a una scheda video, un’applicazione può inviare specifici piccoli programmi, che descrivono come i poligoni e le immagini contigui debbano essere processati fino alla visualizzazione su schermo. I passaggi della pipeline grafica, e in alcuni casi l’intera pipeline, vengono rimpiazzati da questi programmi.
Per programmare la pipeline di rendering della GPU vengono utilizzati linguaggi di shading, che hanno in gran parte sostituito la pipeline a funzione fissa del passato che consentiva solo funzioni comuni di trasformazione della geometria e di shading dei pixel; Con gli shader è possibile utilizzare effetti personalizzati. La posizione e il colore (tonalità, saturazione, luminosità e contrasto) di tutti i pixel, vertici e/o texture utilizzati per costruire un’immagine renderizzata finale possono essere modificati utilizzando algoritmi definiti in uno shader e possono essere modificati da variabili esterne o texture introdotte dal programma che chiama lo shader.
Le shader si dividono in:
- Vertex shader, che manipolano le proprietà dei vertici senza crearne di nuovi.
- Geometry shader, che possono creare e modificare nuove geometrie (insieme divertici)
- Pixel shader (o fragment shader), che lavorano sulle proprietà dei singoli pixel rasterizzati e sulle texture.L’utilizzo delle shader ha anche un ulteriore vantaggio; dato che ogni unità può far girare qualunque tipo di shader l’utilizzo della GPU è più uniforme, mentre nella pipeline a funzione fissa non vi è uniformità di utilizzo delle risorse.
Link to original
Architetture Distribuite
Le architetture di realtà virtuale per più utenti (o più rendering pipeline) distribuisce il carico di queste rendering pipeline.
Un esempio “semplice” e a bassa latenza è quello dei display affiancati, in cui occorre sincronizzare bene il display delle immagini affiancate.

Si utilizza un’architettura Master-Slave in cui il monitor principale gestisce la sincronizzazione degli altri.
La situazione è molto diversa quando il carico viene distribuito in rete per permettere la partecipazione di utenti multipli.
In questi casi la distribuzione cambia di modalità e scalabilità in base anche al numero di utenti da gestire.
Si possono utilizzare architetture di rete Peer-to-peer, a stella, a bus, centralizzate o miste in base al progetto.
Dead Reckoning
Questa tecnica di sincronizzazione prevede che ogni oggetto con stato sincronizzabile invii un messaggio di keep-alive al server a bassa frequenza, con una sorta di polling. Gli altri nodi sincronizzeranno il loro stato tenendo in considerazione anche lo stato visto dagli altri nodi.
Questo permette ai nuovi nodi che entrano nella simulazione di rendere consistente il suo stato in pochi secondi, e di avere una buona resilienza alla congestione di rete che può causa una perdita di pacchetti di sincronizzazione.
Link to original
