Utilizzo del mipmapping

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Le mappe MIP (dette anche mipmap), sono bitmap raggruppate e associate a una texture per migliorare la qualità e le prestazioni del rendering in runtime. Ogni immagine bitmap nella mappa MIP è una versione dell'immagine bitmap principale, ma a un livello di dettaglio ridotto rispetto ad essa.

Ad esempio, potete avere una mappa MIP che comprende al livello di qualità massimo un'immagine principale di 64 × 64 pixel. Le immagini di qualità inferiore nella mappa MIP sarebbero di 32 × 32, 16 × 16, 8 × 8, 4 × 4, 2 × 2 e 1 × 1 pixel.

Il texture streaming è la capacità di caricare per prima la bitmap con la qualità più bassa e poi caricare e visualizzare bitmap di qualità progressivamente più alta. Poiché le bitmap di qualità inferiore sono di piccole dimensioni, vengono caricate più rapidamente rispetto all'immagine principale. Di conseguenza, gli utenti dell'applicazione hanno la possibilità di vedere l'immagine nell'applicazione prima che venga caricata la bitmap principale di alta qualità.

Questa tecnologia (il processo è detto mipmapping) viene implementata da Flash Player 9.115.0. e versioni successive e da AIR, mediante la creazione di versioni ottimizzate di ogni bitmap con diverse dimensioni in scala (a partire dal 50%).

Flash Player 11.3 e AIR 3.3 supportano il texture streaming tramite il parametro streamingLevels dei metodi Context3D.createCubeTexture() e Context3D.createTexture().

La compressione delle texture permette di memorizzare le immagini delle texture in formato compresso direttamente sulla GPU, risparmiando memoria GPU e larghezza di banda della memoria. Solitamente le texture compresse vengono compresse offline e caricate sulla GPU in formato compresso. Tuttavia, Flash Player 11.4 e AIR 3.4 supportano la compressione runtime delle texture, che risulta utile in determinate situazioni quale il rendering di texture dinamiche dalla grafica vettoriale. Per utilizzare la compressione runtime delle texture, procedete nel modo seguente:

  • Create l'oggetto texture chiamando il metodo Context3D.createTexture(), passando flash.display3D.Context3DTextureFormat.COMPRESSED o flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA nel terzo parametro.

  • Utilizzando l'istanza flash.display3D.textures.Texture restituita da createTexture(), chiamate flash.display3D.textures.Texture.uploadFromBitmapData() o flash.display3D.textures.Texture.uploadFromByteArray(). Questi metodi caricano e comprimono la texture in un solo passaggio.

Le mappe MIP vengono create per i tipi di bitmap seguenti:

  • una bitmap (file JPEG, GIF o PNG) visualizzata utilizzando la classe Loader di ActionScript 3.0

  • una bitmap nella libreria di un documento Flash Professional

  • un oggetto BitmapData

  • una bitmap visualizzata utilizzando la funzione loadMovie() di ActionScript 2.0

Le mappe MIP non vengono applicate agli oggetti filtrati o ai clip filmato memorizzati nella cache delle bitmap. Tuttavia, le mappe MIP vengono applicate se sono presenti trasformazioni di bitmap all'interno di un oggetto di visualizzazione filtrato, anche se la bitmap si trova all'interno di contenuto sottoposto a mascheratura.

Il mipmapping viene applicato automaticamente; tuttavia è possibile seguire alcune linee guida per essere certi che le immagini usufruiscano di tale ottimizzazione:

  • Per la riproduzione video, impostate la proprietà smoothing dell'oggetto Video su true (vedete la classe Video).

  • Per le bitmap non è necessario impostare la proprietà smoothing su true; tuttavia i miglioramenti di qualità sono maggiormente visibili quando viene utilizzata l'attenuazione delle bitmap.

  • Per le immagini bidimensionali, utilizzate dimensioni delle bitmap divisibili per 4 o 8 (ad esempio 640 x 128, che può essere ridotta come segue: 320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x  > 5 x 1).

    Per le texture tridimensionali, usate mappe MIP in cui ogni immagine ha una risoluzione pari a una potenza di 2 (ovvero 2^n). Ad esempio, supponiamo che l'immagine principale abbia una risoluzione di 1024 x  1024 pixel. Le immagini di qualità inferiore nella mappa MIP in questo caso sarebbero di 512 x 512, 256 x 256, 128 x 128 e così via fino a 1 x 1 pixel, per un totale di 11 immagini nella mappa MIP.

    Notate che il mipmapping non si verifica per il contenuto bitmap con larghezza o altezza dispari.