-
88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 00:03:43.0 alle 2012-04-28 00:03:43.0Trollate totali: 11540...per millisecondo.
31 cicli per chiamata.
Boh, non so se quella cosa degli atomi al posto dei poligoni...
Intanto vado a vedere Star Trek.
-
Re: 88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 01:52:36.0 alle 2012-04-28 01:52:36.0Trollate totali: 11540Be', l'ho snellito raggruppando un paio di test sui bit di segno e usando registri per il passaggio degli argomenti. In media ha guadagnato un ciclo. Siamo a 90mila intersezioni per millisecondo, cioe` 90 milioni al secondo. Di piu` non mi viene, e in fondo e` quel che piu` o meno mi aspettavo.
-
Re: 88mila intersezioni raggio-sferaScritto daNon Autenticatoil 2012-04-28 11:21:24.0 alle 2012-04-28 11:21:24.0> ...per millisecondo.
> 31 cicli per chiamata.
>
>
È roba che ha a che vedere con il ray tracing?
> Boh, non so se quella cosa degli atomi al posto dei poligoni...
Non la so nemmeno io. I poligoni hanno un'orientazione che può servire per calcolare la riflessione della luce. Ma sti atomi?
> Intanto vado a vedere Star Trek.
-
Re: 88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 13:57:27.0 alle 2012-04-28 13:57:27.0Trollate totali: 11540> > ...per millisecondo.
> > 31 cicli per chiamata.
> >
> >
>
> È roba che ha a che vedere con il ray tracing?
Precisamente.
Nel rendering di una scena in ray tracing, si usa il piano dello schermo come "piano di proiezione": date le coordinate del punto di vista, e la direzione in cui la videocamera "inquadra" (insomma un vettore tridimensionale normalizzato) si proiettano verso la scena un raggio per ogni "pixel", cioe` uno per ogni coppia di coordinate intere sul piano di proiezione. Ogni volta, si guarda quali oggetti un raggio va a intersecare e si calcola la distanza del punto d'intersezione dal punto di vista, alla ricerca dell'intersezione piu` vicina (che e` l'unica visibile, a meno che l'oggetto sia trasparente). Tralasciando il tracciamento di altri raggi - da quel punto - che determinano la presenza di ombre, riflessioni e rifrazioni, infine si colora il pixel corrispondente con il colore di quel punto sull'oggetto colpito.
Nel processo, insomma, specie quando gli oggetti sono tutti sfere, una routine che controlli se una retta per due punti passa attraverso una sfera e` la parte del programma che viene usata di piu`.
> > Boh, non so se quella cosa degli atomi al posto dei poligoni...
>
> Non la so nemmeno io.
Non so se si puo` far andare sufficientemente veloce. Con 90 milioni di intersezioni al secondo, considerando che so... circa 10 livelli di ricerca per 210 pixel sul lato maggiore dello schermo (diciamo un 1024x600 di risoluzione), si andrebbe sui 15 fotogrammi al secondo riempiendo la scena di uno strato di oggetti. Insomma secondo me e` al limite delle possibilita` di un core intorno a 3 GHz. Potrebbe. Potrebbe anche no. E` un po' come l'Argent: va provata in pratica.
> I poligoni hanno un'orientazione che può servire per calcolare la riflessione della luce. Ma sti atomi?
Oh be', ho pensato che a 'sti atomi gli si potrebbe comunque attribuire in fase di modellazione di un oggetto, insomma "a priori". Alla fine la scena si comporterebbe come un campo vettoriale di punti... sparsi. Un punto viene colpito quando il suo "atomo" e` intersecato dal raggio, e poi riflette il raggio nella direzione data dalla normale alla superficie di cui "idealmente" fa parte.-
Re: 88mila intersezioni raggio-sferaScritto daNon Autenticatoil 2012-04-28 14:04:21.0 alle 2012-04-28 14:04:21.0> > > ...per millisecondo.
> > > 31 cicli per chiamata.
> > >
> > >
> >
> > È roba che ha a che vedere con il ray tracing?
>
> Precisamente.
>
> Nel rendering di una scena in ray tracing, si usa il piano dello schermo come "piano di proiezione": date le coordinate del punto di vista, e la direzione in cui la videocamera "inquadra" (insomma un vettore tridimensionale normalizzato) si proiettano verso la scena un raggio per ogni "pixel", cioe` uno per ogni coppia di coordinate intere sul piano di proiezione. Ogni volta, si guarda quali oggetti un raggio va a intersecare e si calcola la distanza del punto d'intersezione dal punto di vista, alla ricerca dell'intersezione piu` vicina (che e` l'unica visibile, a meno che l'oggetto sia trasparente). Tralasciando il tracciamento di altri raggi - da quel punto - che determinano la presenza di ombre, riflessioni e rifrazioni, infine si colora il pixel corrispondente con il colore di quel punto sull'oggetto colpito.
>
> Nel processo, insomma, specie quando gli oggetti sono tutti sfere, una routine che controlli se una retta per due punti passa attraverso una sfera e` la parte del programma che viene usata di piu`.
>
> > > Boh, non so se quella cosa degli atomi al posto dei poligoni...
> >
> > Non la so nemmeno io.
>
> Non so se si puo` far andare sufficientemente veloce. Con 90 milioni di intersezioni al secondo, considerando che so... circa 10 livelli di ricerca per 210 pixel sul lato maggiore dello schermo (diciamo un 1024x600 di risoluzione), si andrebbe sui 15 fotogrammi al secondo riempiendo la scena di uno strato di oggetti. Insomma secondo me e` al limite delle possibilita` di un core intorno a 3 GHz. Potrebbe. Potrebbe anche no. E` un po' come l'Argent: va provata in pratica.
Su Uichipedia dice che un tizio accusa la loro tecnica di essere un bluff. Dopo tutto l'azienda ha ricevuto un grant due milioni di dollari dal governo australiano.
> > I poligoni hanno un'orientazione che può servire per calcolare la riflessione della luce. Ma sti atomi?
>
> Oh be', ho pensato che a 'sti atomi gli si potrebbe comunque attribuire in fase di modellazione di un oggetto, insomma "a priori". Alla fine la scena si comporterebbe come un campo vettoriale di punti... sparsi. Un punto viene colpito quando il suo "atomo" e` intersecato dal raggio, e poi riflette il raggio nella direzione data dalla normale alla superficie di cui "idealmente" fa parte.
-
Re: 88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 14:16:45.0 alle 2012-04-28 14:16:45.0Trollate totali: 11540> Su Uichipedia dice che un tizio accusa la loro tecnica di essere un bluff. Dopo tutto l'azienda ha ricevuto un grant due milioni di dollari dal governo australiano.
Che importa? Loro non sono me. Io potrei anche farcela.
Come sarebbe a dire "modestia"? Cos'e`?
Seriamente, bluff o meno, e` un'idea che avevo gia` per la testa, quella di semplificare all'osso un raytracer, al punto che superasse la definizione di una scena poligonale ma senza implementare tutte le costose caratteristiche di un "vero" raytracer. E credo ci abbiano gia` provato (ne avevo sentito parlare tempo fa), ma magari usando comunque poche primitive grafiche "grandi" per costruire la scena, senza staccarsi troppo dal raytracing tradizionale per applicare invece il concetto di piccoli atomi, concentrando cioe` il lavoro sull'iper-ottimizzazione di una sola primitiva: la sfera. Alla fine quel potrei ottenere da questa strada sarebbe una scena composta da un gran numero di pixel volumetrici sferici.-
Re: 88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 14:22:20.0 alle 2012-04-28 14:22:20.0Trollate totali: 11540Ehi!
L'altra volta ho reinventato una cosa che esiste gia`.
http://en.wikipedia.org/wiki/Octree

Quella cosa dei cubi che dicevo.
Gaaaanzo quando succede.
-
Re: 88mila intersezioni raggio-sferaScritto daNon Autenticatoil 2012-04-28 14:26:49.0 alle 2012-04-28 14:26:49.0Scritto da: altg
> Ehi!
> L'altra volta ho reinventato una cosa che esiste gia`.
>
>http://en.wikipedia.org/wiki/Octree

>
> Quella cosa dei cubi che dicevo.
> Gaaaanzo quando succede.
old, comunque con un po' di floating point e relative chiavi di Morton sono incredibilmente ottimizzabili-
Re: 88mila intersezioni raggio-sferaScritto daaltgutente che non utieneil 2012-04-28 14:33:28.0 alle 2012-04-28 14:33:28.0Trollate totali: 11540> > Ehi!
> > L'altra volta ho reinventato una cosa che esiste gia`.
> >
> >http://en.wikipedia.org/wiki/Octree

> >
> > Quella cosa dei cubi che dicevo.
> > Gaaaanzo quando succede.
>
> old, comunque con un po' di floating point e relative chiavi di Morton sono incredibilmente ottimizzabili
Be', potevo aspettarmelo che fosse old, ma non sapevo il termine tecnico, ecco, non sapevo che si chiamasse "octree", se no mi risparmiavo il tentativo (fallito) di spiegarlo.
-
-
-
-
-
-
-