Graphic amarcord: Rendition

La scorsa settimana abbiamo iniziato una serie di brevi articoli che hanno l’intento di ricordare, ai nostalgici di retrogaming e retrocomputing, l’era pionieristica del passaggio dal 2D al 3D e di mostrare, ai più giovani, lo spaccato di un mondo molto diverso dall’attuale, con tanti protagonisti sulla scena, poche regole certe (le API D3D e OpenGL non erano ancora uno standard di fatto nel mondo dei videogiochi) e, di conseguenza, tanti differenti approcci ai problemi più comuni ai quali si andava e si va ancora oggi incontro (potenza di calcolo, banda passante, ecc) con soluzioni, a volte, fin troppo “originali” (ad esempio la mancanza dell’unità di testuring nei chip della serie Imagine 2 di number nine).

In questo panorama, un capitolo a parte merita Rendition che con i suoi chip è stata, per diverso tempo, all’avanguardia nel mondo della grafica 3D, nonostante la sua storia sia, di fatto, rispetto a quella di altri produttori, piuttosto breve.

Rendition nasce nel 1993 con lo specifico intento di progettare chip acceleratori 2D/3D. Il suo primo chip, il Verite V1000, equipaggia alcune VGA tra cui la 3D Blaster PCI di Creative e la Sierra Screamin’3D dell’immagine sottostante

rendition-v1000.jpg

In un mondo di VGA in cui l’accelerazione 3D è pressoché assente, i prodotti di Rendition si differenziano proprio perchè costituiscono l’unica valida alternativa all’accoppiata scheda video 2D più acceleratore 3D. I chip della serie Verite integrano, infatti, fin dal V1000, tutte le feature necessarie ad accelerare la grafica 3D, dalle operazioni di texturing alle z-ops, all’alpha blending. Inoltre fanno uso di una specie di antialiasing sia per punti che su linee e poligoni (quello che chiamiamo edge antialiasing).

Sia il V1000 che i successivi V2x00 hanno architettura RISC programmabile facendo uso del VGA register set di IBM, con singola pipeline a 5 stadi e singola unità di texturing. La particolarità dei chip V1000 e V2x00 è l’integrazione, al loro interno, di un triangle setup engine che ha lo scopo di scaricare la cpu di parte del carico di lavoro. L’immagine sottostante può aiutare a capire questo concetto

triangle-setup-engine.jpg

Qui sono riportati, in maniera molto semplificata, gli stadi in cui è suddivisa l’elaborazione di un’immagine 3D. La figura è riferita alla situazione nel corso del 1998, in cui molti dei chip erano già dotati di triangle setup engine. I due blocchi in bianco sono quelli relativi alle operazioni di trasformazione e illuminazione che, nel 1998, erano ancora interamente a carico della cpu; i due in grigio, invece, sono relativi alle operazioni di conversione dei triangoli in scan line  e delle operazioni rasterizzazione compiute sulle scan line.

Il V1000, già nel 1996, anno del suo lancio sul mercato, integrava l’engine di triangle setup, a detta di alcuni, anche un engine di Transform and Lightning (T&L), ovvero i due blocchi bianchi di figura, che non sarebbe mai stata “esposta” e pertanto utilizzata. Di fatto non c’è alcuna evidenza del fatto che il V1000 e il V2x00, almeno nelle versioni rilasciate sul mercato, fossero dotati di motori T&L mentre invece è risaputo che Rendition, insieme a Fujitsu, stava tentando, nel corso del 2008, di lanciare una versione del V2200 con un engine T&L integrato, il Pinolite di Fujitsu, su una vga dotata di 9 MB di ram (di cui uno dedicato alle operazioni di transform and lightning) ma che l’operazione non è mai andata in porto. I motivi del fallimento vanno ricercati nella non florida situazione economica di Rendition, nell’aumentata competitività da parte della concorrenza e nel progressivo affermarsi di OpenGL e D3D come standard per i giochi.

Approfittando del gancio fornito dal discorso sulla API, torno a parlare dei chip di Rendition.  Nel 1996, il V1000 costituisce, come detto, l’unica vera soluzione combinata 2D/3D e il suo engine RISC programmabile, permette di raggiungere buone prestazioni a patto di ottimizzare il codice per le caratteristiche architetturali del chip di rendition, in modo da poter sfruttare anche il triangle setup engine. Ciò è causa dell’uscita di diversi titoli ottimizzati per le VGA della serie Verite, tra cui Quake, Quake II, Tomb Raider, Descent, GP Legends, Resident Evil e alcuni titoli della saga di Myth.

A proposito di queste ottimizzazioni, riporto le parole di Carmack durante lo sviluppo di Quake, di cui esiste la versione VQuake, ottimizzata per i chip di Rendition

“We at id have been fans of the Vérité architecture since we first saw the spec, several months back. Now that we have some experience with the chip, we’re even more pleased with it; in fact, it’s our clear favorite among 3D accelerators.” Aggiungendo, in riferimento allo sviluppo di Quake “… Vérité will be the premier platform for Quake.” 

La difficoltà nell’ottimizzare per questa specifica piattaforma, oltre alla diffusione ed all’affermazione di standard come D3D e OpenGL, spinge le software house ad abbandonare gradualmente l’idea di sviluppare una versione custom dei propri titoli. In effetti, in quel periodo, l’assenza di uno standard specifico favorisce il sorgere di architetture molto diverse tra loro che richiedono il ricorso a specifici path per ogni singola architettura, oppure a driver che ricompilino il codice ottimizzandolo per quella specifica microarchitettura. La seconda opzione, spesso, non dà risultati eccezionali e, comunque, non dà risultati comparabili a quelli ottenibili con codice ottimizzato nativamente, oggi come allora.

D’altra parte si deve tener conto del fatto che ci si riferisce all’era in cui si sta effettuando la transizione dal 2D al 3D per quanto riguarda i giochi,  e, di conseguenza, manca ancora uno standard ben preciso perché non è ancora chiara la direzione che l’evoluzione dell’hardware e, di conseguenza, del software avrebbe preso.

Da un lato c’è Microsoft che cerca di forzare il processo di adozione delle sue DirectX, ancora acerbe e non all’altezza delle OpenGL. Dall’altra ci sono le OpenGL, sviluppate da SGI per applicazioni di tipo professionale e “prestate” al mondo dei videogiochi che, pur essendo più mature e stabili delle DirectX non sono state pensate per applicazioni videoludiche. Inoltre ci sono i produttori di cpu che spingono perchè le cose restino immutate, in modo da preservare per i loro prodotti, un ruolo centrale e predominante all’interno dei computer.  In questo marasma, non stupisce se ci si trova davanti al sorgere di tante architetture differenti e a vari tentativi di imporre applicazioni e microarchitetture proprietarie come standard.

Tornando ai chip Verite, si può parlare di loro, di fatto, come di acceleratori 3D con funzioni 2D; in effetti nel 2D e nei giochi basati su DOS questi chip non si distinguono affatto, facendo registrare prestazioni decisamente al di sotto della media. In particolare, alcune limitazioni architetturali castrano anche le prestazioni 3D del V1000; mi riferisco, nello specifico, al mancato utilizzo dello z-buffer, presente, invece, nei chip 3dfx, che impedisce, nei titoli che fanno uso di z-buffering, di elaborare un pixel per ciclo; altra interessante caratteristica del V1000 è l’utilizzo del canale PCI di comunicazione con la scheda madre, con controller dotato di funzionalità di bus mastering, più efficiente della gestione FIFO adottata su bus ISA; purtroppo, anche questa utile feature che avrebbe permesso una miglior gestione del canale di comunicazione tra VGA, CPU e ram di sistema, soffre di alcuni problemi di “gioventù” derivanti dal mancato supporto al bus PCI di molti produttori di mainboard dell’epoca.

Con il passaggio al V2x00, si rimuove questa limitazione e si migliora la texture unit, riuscendo ad ottenere una capacità di elaborazione più prossima a quella teorica anche con titoli che fanno uso di z-buffering e di texture filtering.

Se il V1000, con i suoi 25 MHz di clock, il memory controller a 64 bit e i 4 MB di EDO Ram a 50 MHz (per una bandwidth teorica di 400 MB/sec) riscuote, nonostante le limitazioni, un buon successo, tanto da spingere più produttori ad adottarlo, lo stesso non si può dire delle sue versioni riviste e corrette: il V2100, versione clockata a 45 MHz, con 4 o 8 MB di SGRAM, equipaggia la sola Diamond Stealth II S220, mentre la versione più performante, il V2200, con clock a 55 MHz, la Hercules Thriller 3D che viene presentata sia in versione PCI che AGP.

I chip della serie V2x00 sfoggiano, con API standard, prestazioni allineate e, con cpu lente, persino superiori a quelle delle vga equipaggiate con Riva 128 e Riva 128ZX, mentre in D3D le prestazioni sono allineate a quelle delle Voodoo. Purtroppo, però, nel frattempo 3dfx  sta per far uscire il suo Voodoo II e nVidia sta per sfornare il Riva TnT, il primo chip a utilizzare la doppia pipeline di rendering.

Questo, unito alle solite problematiche di ottimizzazione del software che spinge gradualmente le software house ad abbandonare le versioni custom a favore degli standard D3D o OpenGL, segna il declino di Rendition. Lo stesso Carmack, che aveva dichiarato il V1000 suo chip d’elezione per sviluppare Quake, in seguito parlerà delle difficoltà incontrate nell’ottimizzare la versione VQuake e farà uscire i suoi titoli in OpenGl e D3D.

A seguire, alcuni benchmark che testimoniano le prestazioni delle vga equipaggiate con i chip V2x00.  Nell’ordine, in OpenGL con cpu, diciamo, performante

ogl-pii-300-bench.jpg

e  questo il risultato con cpu più lenta

ogl-bench-cpu-lenta.jpg

Come si vede, dova la cpu fa, il più delle volte, da collo di bottiglia, i chip Rendition (Hercules Thriller e Diamond Stealth) risescono a distanziare i Riva 128 e ad avvicinare le prestazioni degli acceleratori equipaggiati con i chip Voodoo, addirittura ion configurazione multichip, come nel caso delle quantum 3D obsidian, di cui, per curiosità, riporto l’immagine nella versione 4400 con 2 Bruce e 2 Chuck e 12+2 MB di ram on board.

quantum-3d-obsidian.jpg

Il tentativo di dotare, nel 1998, il V2200 di engine T&L avrebbe anticipato di un anno l’uscita del Geforce e del Savage2000. Purtroppo la mancanza di fondi e la scarsa competitività del V2200 rispetto al vari Voodoo 2 e Riva TnT, spinge Rendition a rinunciare al progetto e a tentare di dirottare le poche risorse ancora disponibili su un nuovo chip, il V3300 che, annunciato nel corso del 1998, secondo le intenzioni, avrebbe dovuto avere 2 pipeline di rendering come il TnT e sarebbe dovuto uscire ad inizio 1999.

Prima della fine dell’anno, Rendition, ormai economicamente in pessime acque, viene acquisita ma Micron Technology che decide, nonostante i tentativi da parte degli ormai ex ingegneri di Rendition, di continuare a mantenere in piedi l’asset relativo alle gpu, di abbandonare la progettazione di chip grafici. Così viene abbandonato il progetto V3300 e resta senza esito anche l’annuncio di un ulteriore chip, il V4400.

Dall’uscita del primo chip combinato 2D/3D alla scomparsa di Rendition sono passati due soli anni che, comunque, sono stati sufficienti a lasciare un segno indelebile nel mondo dei chip grafici.

Press ESC to close