Rendering trilioni di "atomi" invece di poligoni?

9

Ho appena visto un video su ciò che gli editori chiamano "il prossimo passo importante dopo l'invenzione del 3D ". Secondo la persona che ci parla, usano una quantità enorme di atomi raggruppati in nuvole invece di poligoni, per raggiungere un livello di numero illimitato di dettagli .

Hanno fatto del loro meglio per rendere il video comprensibile per le persone che non conoscono alcuna tecnica di rendering, e quindi o per altri scopi hanno omesso tutti i dettagli su come funziona il loro motore.

Il livello di dettaglio nei loro video mi sembra piuttosto impressionante.

  • Come è possibile eseguire il rendering di scene utilizzando atomi personalizzati anziché poligoni sull'hardware corrente? (Velocità, memoria)
  • Se questo è reale, perché nessun altro ci ha mai pensato fino ad ora?

Sono, come sviluppatore OpenGL, davvero sconcertato da questo e mi piacerebbe davvero sentire cosa hanno da dire gli esperti. Pertanto, anche io non voglio che questo sembri un annuncio economico e includa il link al video solo se richiesto, nella sezione dei commenti.

    
posta Jan Doggen 01.08.2011 - 22:23
fonte

7 risposte

11

È facile farlo. Usando un Octtree dividi semplicemente il mondo in pezzi progressivamente più piccoli fino a raggiungere il livello di dettaglio necessario. Ad esempio, potrebbe essere la dimensione di un granello di sabbia. Pensa a Minecraft portato all'estremo.

Che cosa riproduci allora? Se il dettaglio è abbastanza piccolo, puoi prendere in considerazione il rendering dei blocchi: i nodi foglia dell'occhiello. Altre opzioni includono sfere o anche primitive geometriche. Un colore e un normale possono essere memorizzati su ciascun nodo e, per un LOD ridotto, è possibile memorizzare le informazioni composite a livelli più alti dell'albero.

Come puoi gestire così tanti dati? Se l'albero è una struttura dati reale, è possibile avere più puntatori che fanno riferimento agli stessi sottoalberi, proprio come riutilizzare una trama ma include anche la geometria. Il trucco è ottenere il maggior riutilizzo possibile a tutti i livelli. Ad esempio, se connetti 4 ottanti nella disposizione tetraedrica tutti allo stesso nodo figlio a tutti i livelli, puoi creare un frattale sierpinsky 3d molto grande senza quasi memoria. La scena reale sarà molto più ampia, naturalmente.

Il problema è che funzionerà solo con la geometria statica, perché l'animazione reale richiederebbe la manipolazione di tutti i dati ogni fotogramma. Tuttavia, il rendering, specialmente con il LOD variabile non è un problema.

Come rendere una cosa del genere? Sono un grande fan del ray tracing e gestisce questo tipo di cose abbastanza bene con e senza una GPU.

Tutto ciò è speculazione, naturalmente. Non ho informazioni specifiche sul caso di cui stai parlando. E ora per qualcosa di relativo ma diverso:

Un'enorme quantità di dati resi

EDIT Ed ecco uno che ho fatto, ma ho deliberatamente modificato le normali per rendere le scatole più chiare:

Coniglietto di Stanford in voxel

Quel frame rate era su un IIRC single core. Raddoppiando la profondità dell'albero si riduce in genere il frame rate a metà, mentre l'utilizzo di core multipli si adatta in modo ottimale. Normalmente tengo i primitivi (triangoli e simili) nel mio octtree, ma per i sorrisi ho deciso di rendere i nodi foglia dell'albero stesso in questo caso. È possibile ottenere prestazioni migliori se si ottimizzano attorno a un metodo specifico.

Da qualche parte su ompf c'è un'auto fatta con voxel che è davvero fantastica - tranne che è statica. Non riesco a trovarlo ora ...

    
risposta data 01.08.2011 - 22:50
fonte
6
  • How is it possible to render scenes using custom atoms instead of polygons on current hardware? (Speed, memory-wise)

Da quando guardo il video niente mi indica che è stato usato un hardware speciale. Infatti, si afferma che questo funziona nel software a 20fps, a meno che non mi sia sfuggito qualcosa.

Forse rimarrai sorpreso dal fatto che ci siano stati molti sviluppi nel rendering in tempo reale utilizzando una varietà di tecnologie come ray tracing, rendering di voxel e splatting di superficie. È difficile dire cosa sia stato usato in questo caso. (Se sei interessato, dai un'occhiata al link per un grande forum di ray tracing in tempo reale, o link per un interessante motore voxel. Google "surface splatting" per alcuni ottimi link su quell'argomento)

Se guardi il film, noterai che tutta la geometria è statica e sebbene sia dettagliata, c'è molta ripetizione di oggetti, che potrebbe suggerire di istanziare.

E molto probabilmente ci saranno un sacco di abbattimenti aggressivi, livelli di dettaglio e partizionamento dello spazio in corso.

Se guardi alla qualità visiva (non alla complessità geometrica) non sembra così impressionante. In effetti sembra abbastanza piatto. Lo shadowing mostrato potrebbe essere inserito nei dati e non essere valutato in tempo reale.

Mi piacerebbe vedere una demo con geometria animata e illuminazione dinamica.

  • If this is real, why has nobody else even thought about it so far?

A meno che non sbagli completamente (e non sarebbe la prima volta che lo sono) la mia prima risposta suggerirebbe un uso (forse molto intelligente) della tecnologia esistente, forse ottimizzata ed estesa per creare questa demo. Trasformarlo in un vero motore di gioco, con tutti gli altri compiti oltre a rendere la geometria statica inclusa, è un gioco di palla completamente diverso.

Ovviamente tutto questo è pure speculation (il che mi rende molto divertente). Tutto quello che sto dicendo è che questo non è necessariamente un falso (in realtà non penso che sia e sono ancora impressionato), ma probabilmente non è così rivoluzionario come lo fanno sembrare.

    
risposta data 02.08.2011 - 00:31
fonte
5

Questi atomi in realtà non sono così magici / speciali / alieni all'attuale hardware grafico. È solo una specie di point cloud o rendering basato su voxel. Quindi, invece di triangoli, rendono punti o scatole, nulla di irraggiungibile con l'hardware attuale.

È stato ed è già stato fatto e non è la super invenzione, ma forse hanno escogitato un modo più efficiente di memoria e tempo per farlo. Anche se sembra interessante, dovresti prendere questo video con un pizzico di sale. Il rendering di 100.000 punti invece di un poligono completamente strutturato (che occupa già solo pochi pixel sullo schermo) non migliora la qualità grafica di un fattore di 100.000.

E comunque, ho sentito che il software id sta anche provando il rendering di voxel accelerato dalla GPU, ma ho un po 'più di fiducia in John Carmack che nel relatore di questo video:)

    
risposta data 01.08.2011 - 23:36
fonte
2

Questa è stata una truffa sugli investimenti.

Per quanto riguarda l'idea, non è fattibile sull'attuale hardware non dedicato. La quantità di punti necessaria per evitare spazi vuoti quando si guarda qualcosa da vicino è molto al di là della quantità di punti che si possono ottenere nella RAM di oggi. Anche se, non conosco alcuna struttura di dati o algoritmi di ricerca che porterebbe qualcosa vicino alla performance mostrata nella demo. E anche se , in qualche modo è stato possibile cercare questi punti in tempo reale, i messaggi di cache e l'ampiezza di banda della memoria assicuravano che non fosse possibile.

Non dubito del fatto che tali immagini non possano essere realizzate in tempo reale, ma solo con il metodo presentato. La mia ipotesi è che i demo siano stati renderizzati con voxel, che sono stati usati per decenni e possono già produrre dettagli abbastanza alti in tempo reale: link http://www.youtube.com/watch?v=VpEpAFGplnI

    
risposta data 01.08.2011 - 22:49
fonte
1

Da quello che ho visto, sembra che stiano usando forme parametriche invece di semplici forme poligonali, in altre parole cambiano la geometria in base alla risoluzione richiesta.

Questo può essere fatto usando tecniche come shader geometrici e amp; perlin noise.

Un'altra possibilità è usare GPGPU (ad esempio CUDA) per renderizzare la scena includendo non poligoni e per eseguire il ray-tracing (per ordine z e ombre). Un'altra possibilità è un hardware personalizzato che rende le formule al posto dei triangoli

    
risposta data 08.08.2011 - 16:31
fonte
0

Penso a tutte le loro affermazioni, la compressione della memoria sembra un'esagerazione, potrei capire qualcosa come la compressione RLE che ha un grande impatto. Alla fine penso che questo sistema avrà molti "pro", ma molti "contro", molto simili a ray-tracing, o rendering di superficie iso con cubi in marcia.

Per quanto riguarda il rendering di "trilioni" di atomi; Non penso che lo stiano dicendo. Quello che stanno facendo invece è cercare gli atomi di W * H, cioè un atomo per pixel sullo schermo. Questo potrebbe essere realizzato in un sacco di modi lenti e difficili. Alcuni modi per accellerarlo sono KD Trees, BSP Trees, Octrees, ecc. Alla fine, però, vengono ordinati molti dati e il fatto che la loro demo generi ordinariamente 1440x720 atomi, più di una volta per frame, a causa di ombre / riflessi nella loro demo, è sorprendente. Quindi cudos!

    
risposta data 18.10.2011 - 22:33
fonte
-1

il modo in cui funziona è molto più semplice di quanto si possa pensare, invece di precaricare dire un livello di gioco carica solo uno schermo, uno o pochi atomi per pixel sullo schermo, niente più, il motore / il gioco quindi predice quali sono i fotogrammi successivi e questa è l'unica cosa caricata, viene visualizzata solo la parte dell'oggetto visibile, non l'intero oggetto stesso. PRO: massima definizione e risoluzione del tuo monitor, utilizzo della memoria insufficiente Contro: la velocità di lettura dal disco è abbastanza grande e potrebbe portare a un frame rate basso.

    
risposta data 10.07.2015 - 09:06
fonte

Leggi altre domande sui tag