Durante la mia incessante ricerca di nuove librerie utili a semplificare il lavoro del team mi sono imbattuto in questo fantastico tool free per Ogre, il Paged Geometry.
Cosa fa questo Paged Geometry? In parole povere permette di istanziare una mesh per centinaia di migliaia di volte in uno scenario, senza sacrificare le prestazioni. In parole ancora più povere, potete per esempio creare foreste sterminate, che si perdono all’orizzonte, mantenendo un frame rate eccezionale!



Queste immagini ne sono l’esempio più lampante. Nonostante siano realizzate con mesh e textures non proprio sbalorditive, senza la presenza di shaders oltretutto, risultano veramente eccezionali. Il test eseguito sul tool dimostra un frame rate variante dai 100 ai 150 FPS, ottenuto su una “vecchia” GeForce 7800 GT.
Fa pensare come, spesso ormai, i programmatori che si dedicano ad arricchire l’universo open source ottengano risultati quasi equivalenti, e talvolta migliori, a quelli dei grandi team che chiedono migliaia e migliaia di dollari per i loro software.
Immaginate ora di sostituire le palme con alberi più dettagliati e materiali comprendenti shaders. Il risultato si avvicina abbastanza a quello tanto decantato di Crysis. Attenzione però, credere di ottenere tutto quel ben di Dio tanto facilmente e a costo zero è solo un’illusione. Le dovute differenze ci sono e vanno evidenziate.
Prima tra tutte, la gestione delle ombre va ancora migliorata. In secondo luogo, è ancora da testare la dinamicità delle mesh istanziate, animabili per il momento solo con un Vertex Shader fatto ad-hoc. Ovviamente sono difetti minori per un tool che, già alla sua seconda release, dimostra potenzialità immense. E, ricordiamolo, è open source.
Ma come si comporta il Paged Geometry in presenza di più modelli da istanziare? La libreria processa in maniera diversa i modelli vicini e quelli lontani. Tornando all’esempio della foresta:
- riguardo agli alberi vicini, è possibile usare un numero praticamente illimitato di modelli diversi, grazie alle potenzialità di batching del tool, a patto però di tenere minimo il numero di materiali diversi utilizzati. In altre parole, ciò che pesa sulle performance del software non sono tanto le geometrie quanto i materiali che le ricoprono, siano essi texture o shader. Questo ovviamente significa che non è possibile strafare con la varietà della vegetazione, cosa che invece il CryEngine2 gestisce facilmente. Ma ritorno a precisare che non è possibile fare confronti pesanti tra engine di diversa natura.
- riguardo agli alberi lontani, la situazione è esattamente opposta. Ovvero peserà più sulle prestazioni la quantità di mesh diverse utilizzate rispetto ai materiali. Questo perchè gli alberi distanti sono processati con un metodo detto Impostor Rendering. In altre parole di ogni modello viene generata un’immagine che riprende la mesh da tutti i punti di vista, in modo da sostituire i possibili molti poligoni della geometria istanziata con i soli due di una Texture con canale Alpha.

Concludendo, vi consiglio caldamente di seguire lo sviluppo di questa fantastica libreria che potrebbe anche farvi risparmiare molta fatica e denaro ![]()
- Paged Geometry Wiki
