Newsgroup: it.comp.hardware
Titolo: Schede grafiche, rendering a *basso* livello

Mi servirebbe conoscere gli algoritmi principali di rendering di una moderna
scheda grafica a bassissimo livello. Tipo: se faccio rendering di un cubo
con opengl, cosa fa esattamente la scheda per la proiezione prospettica?
Riporta le coordinate in riferimento alla camera e poi proietta? Usa
modelli solo matriciali?
Dovrei implementare un motorino di rendering particolare su GPU, ma se le
schede fanno già quello che penso mi risparmio il lavoraccio... dove posso
trovare informazioni così specializzate?
-- 
  Eugenio
 
http://binaryunit.blogspot.com

 trovare informazioni così specializzate?
Come consiglio cerca documentazione del produttore della GPU che userai, 
puoi provare anche a guardare qualche driver opensource per la stessa 
famiglia o almeno stesso produttore ma modelli precedenti così ti puoi 
fare un'idea.
Che progetto è?

Eugenio ha scritto:

documentati sulle opengl stesse, magari trovi gli spunti adatti a 
deciderti 'come' implementare ciò di cui hai bisogno
di quanta potenza grafica hai bisogno ???
magari ti basta usare le opengl appunto , poi si preoccupano loro SE 
quelle istruzioni sono implementate direttamente in hardware ... 
esistono proprio per questo ;-)
documentati pure su KUMA , che se non ricordo male è il progetto di 
poter usare le ultimissime GPU come motori di calcolo generici , ma 
intanto ti potrebbero meglio far comprendere come operano dette GPU, e 
quindi poter decidere con maggior cognizione di causa ...
oltre , naturalmente le directx
in fondo, anche se devi implementare un motore di rendering completo , 
magari per i tuoi scopi può già bastare il livello di prestazioni 
ottenibile con la frapposizione di dette routine ...
non bisogna mica reinventarsi la ruota ogni volta che bisogna spostarsi 
da un luogo ad un altro ;-)
magari ti risparmi un lavoro immenso , anche se a scapito di qualche 
poligono al secondo ... decine , migliaia o milioni di poligoni ? è 
questo il problema ?!?!? ;-)
ciao :-)

 Che progetto è?
In poche parole ho un'idea su di un modello di proiezione semplificato
rispetto al modello generale che potrebbe portare un incremento di
prestazioni nel rendering volumetrico. Invece di sviluppare il sw e
confrontarlo con i tool esistenti (sarebbe interessante ma c'è almeno un
mese di lavoro) vorrei sapere cosa fanno esattamente le librerie grafiche
in modo da capire a priori se vale la pena tentare o no... La parte da
testare riguarda la sola proiezione prospettica delle coordinate.
-- 
  Eugenio
 
http://binaryunit.blogspot.com

 usare le ultimissime GPU come motori di calcolo generici 
Semmai sarà CUDA...:D

 ambito professionale...
In quale ambito professionale? In ambito scientifico trovo sempre più spesso
le OpenGL, dato che sono multipiattaforma
-- 
  Eugenio
 
http://binaryunit.blogspot.com

 le OpenGL, dato che sono multipiattaforma
Ad esempio 3DStudio accetta anche le DX nelle ultime versioni...

Cercando in particolare nella doc OpenGL trovo conferme alla mia tesi: la
proiezione prospettica è implementata per il caso più generico, e può
essere migliorata per casi specializzati. Ma una frase letta su wikipedia
(GPU) mi ha colpito:
--
Diversamente, quando viene elaborata un'immagine 3D, la CPU del computer si
occupa solo del calcolo delle coordinate geometriche dei vertici dei
poligoni che compongono gli oggetti della scena, e lascia alla GPU il
compito di riempire le "facce" formate da questi vertici, chiamate in gergo
Texture, e del calcolo delle ombre e degli effetti grafici da applicare ai
poligoni, sgravandosi da pesanti operazioni di calcolo.
--
...ovvero, sarebbe la CPU che effettua la proiezione prospettica e la GPU si
occupa "solo" dello shading. Ma nella pagina in inglese:
--
They were initially used to accelerate the memory-intensive work of texture
mapping and rendering polygons, later adding units to accelerate geometric
calculations such as the rotation and translation of vertices into
different coordinate systems.
--
...e questo complica un po' le cose. Insomma, se non provo direttamente non
saprò mai!
Continuo a cercare...
-- 
  Eugenio
 
http://binaryunit.blogspot.com

Scriveva Eugenio sabato, 07/03/09:

In linea generale la fase di rendering è a totale carico della
cpu di sistema... la GPU si "limita" ad accelerrare la fase geometrica.
Recentemente con le implementazioni di CUDA o AtiStream è possibile
accelerare anche la fase di rendering, ma ancora siamo ad una fase
embrionale.