Grafica FS2004
file:///C:/Documents%20and%20Settings/arrex/Documenti/arrexhomepage/newhome/arrexvfr/Template.html
Le sfocature



Una delle domande più ricorrenti degli utenti di FS è "cosa sono queste texture sfuocate? Come faccio ad evitarle?".
Per legarsi al concetto appena espresso, diciamo subito che una cosa è sicura: aumentare il moltiplicatore non risolve il problema delle "sfocature", con buona pace di chi asserisce ciò! Il problema delle sfocature non è infatti legato al fatto che le texture sono elaborate ma non sono ancora state caricate dalla memoria principale alla scheda video, ma è legato al fatto che non sono state elaborate del tutto! Le texture di landclass infatti sono molto leggere e ciascuna tessera pesa un 40 kB circa e viene caricata molto velocemente!
L'elaborazione è invece critica, in quanto può essere un processo lungo. Costruiti per lavorare su una sola CPU, FS2002, FS2004 e FSX (prima del SP1) utilizzano il sistema definito fibers (una sorta di multitasking cooperativo presente in Windows) per allocare una certa quantità di tempo all'elaborazione delle texture; questo sistema è obsoleto ora che ci sono i sistemi multi core, in quanto il lavoro potrebbe essere affidato per intero ad un secondo core. Il sistema dei fibers invece non sfrutta il multithreading, ma recupera del tempo a quello sottratto al rendering dei triangoli ottenuto limitando il frame rate e lo assegna al motore di elaborazione delle texture. Questo le elabora in base all'ordine stabilito dalla coda FIFO di cui abbiamo già parlato; se non si ha bloccato il frame o se siamo sotto il valore di blocco viene allocato un tempo standard.
Ad ogni modo, anche supponendo che molto tempo sia dedicato a questo sottosistema, al massimo una sola tessera di landclass può essere elaborata per ogni frame. Va quindi da se che, supponendo di riuscire a farlo, a 30 fps non possiamo elaborare più di 30 tessere. Che senso ha allora poterne passare di più alla scheda con la storia del moltiplicatore? Ha senso perché le texture elaborate vengono conservate in memoria centrale (finché possono essere utili chiaramente), ma vengono scaricate molto presto dalla memoria video, per evitare di saturarla. Quindi spesso e volentieri queste devono essere ricaricate, specie se si ha poca memoria video.
Tutte le tessere di landclass impiegano più o meno lo stesso tempo ad essere elaborate? Neanche per sogno! Dipende chiaramente da quanti oggetti, strade, ferrovie eccetera ci sono sopra... ma specialmente dall'anello di mipmap, e ora spiego il perché: una tessera da 1 x 1 km viene elaborata a partire da una texture di partenza e conterrà statisticamente un certo numero di oggetti. Una tessera da 2 x 2 km quadrati richiede 4 texture (anche se a risoluzione inferiore) e un numero di oggetti statisticamente quattro volte superiore. Indovinate un po'? Una tessera da 4 x 4 richiede la bellezza di 16 texture da 64x64 punti e conterrà strade e amenità varie statisticamente presenti in quantità 16 volte maggiore! E via discorrendo, il prossimo gradino è 64... morale? Le tessere di landclass più lontane necessitano di un tempo incredibilmente più grande per essere calcolate! E sono queste ad intasare il processo di formazione delle texture! Per cui, quando si ha a che fare con tessere ai mip map più esterni, non si produrrà una di esse per frame, ma ci vorranno anche 3-4 secondi (90-120 frames al ritmo di 30 fps) per produrla! E nel frattempo nessuna altra tessera può essere prodotta; fortuna vuole che per lo meno le tessere già calcolate possano essere trasportate alla scheda video.
Ed ecco finalmente l'origine delle famose "sfocature". Supponiamo di volare ad una velocità tale per cui la nostra CPU non riesce a stare dietro alla produzione delle tessere: le texture che entrano nella coda di rendering sono più numerose di quelle che riescono ad uscirne perché pronte. FS è programmato per minimizzare le micropause, per cui continua a volare anche con texture mancanti o con mip map scadenti senza interrompere la simulazione. Le texture ad alta risoluzione non verranno mai prodotte, in quanto prima di loro i fibers sono impegnati a produrre texture lontane e che richiedono moltissimo tempo. Nel frattempo le texture ad alta risoluzione richieste per l'area che si stava sorvolando diventano obsolete, perché l'area si è allontanata e ora necessita di un mip map diverso. Vengono tolte dalla coda FIFO e viene aggiunta in fondo alla coda una texture a mipmap inferiore. Quindi alla fine ci si riduce a volare sullo scenario a mip map basso; in alcuni casi incredibilmente basso in cui un singolo texel viene applicato su qualcosa come 76x76 metri quadri di superficie! Il filtro bilineare applicato farà sembrare questi grossi quadrettoni sfumati, da cui l'impressione che le texture non siano a fuoco. In realtà lo sono ma sono semplicemente a bassissima risoluzione. Provate a guardare le immagini sottostanti rispettivamente con e senza filtro bilineare di un'area "sfuocata". È chiarissimo ora cosa sono le sfocature! Sono un artefatto provocato dal filtro bilineare in un'area che è coperta da una texture a mip map sbagliato.