MIP maps
(also known as
mipmaps
), are bitmaps grouped
together and associated with a texture to increase runtime rendering
quality and performance. Each bitmap image in the MIP map is a version
of the main bitmap image, but at a reduced level of detail from
the main image.
For example, you can have a MIP map that includes at the highest
quality a main image at 64 × 64 pixels. Lower quality images in
the MIP map would be 32 × 32, 16 × 16,
8 × 8, 4 × 4, 2 × 2,
and 1 × 1 pixels.
Texture streaming
is the ability to load the lowest quality
bitmap first, and then to progressively display higher quality bitmaps
as the bitmaps are loaded. Because lower quality bitmaps are small,
they load faster than the main image. Therefore, application users
can view image in an application before the main, high quality bitmap
loads.
Flash Player 9.115.0 and later versions and AIR implement this
technology (the process is called
mipmapping
), by creating
optimized versions of varying scale of each bitmap (starting at
50%).
Flash Player 11.3 and AIR 3.3 support texture streaming through
the
streamingLevels
parameter of the
Context3D.createCubeTexture()
and
Context3D.createTexture()
methods.
Texture compression lets you store texture images in compressed
format directly on the GPU, which saves GPU memory and memory bandwidth.
Typically, compressed textures are compressed offline and uploaded
to the GPU in compressed format. However, Flash Player 11.4 and
AIR 3.4 support runtime texture compression, which is useful in
certain situations, such as when rendering dynami textures from
vector art. To use runtime texture compression, perform the following
steps:
-
Create the texture object by calling the
Context3D.createTexture()
method,
passing either
flash.display3D.Context3DTextureFormat.COMPRESSED
or
flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA
in
the third parameter.
-
Using the
flash.display3D.textures.Texture
instance
returned by
createTexture()
, call either
flash.display3D.textures.Texture.uploadFromBitmapData()
or
flash.display3D.textures.Texture.uploadFromByteArray()
.
These methods upload and compress the texture in one step.
MIP maps are created for the following types of bitmaps:
-
a bitmap (JPEG, GIF, or PNG files) displayed using
the ActionScript 3.0 Loader class
-
a bitmap in the library of a Flash Professional document
-
a BitmapData object
-
a bitmap displayed using the ActionScript 2.0
loadMovie()
function
MIP maps are not applied to filtered objects or bitmap-cached
movie clips. However, MIP maps are applied if you have bitmap transformations
within a filtered display object, even if the bitmap is within masked
content.
Mipmapping happens automatically, but you can
follow a few guidelines to make sure your images take advantage
of this optimization:
-
For video playback, set the
smoothing
property
to
true
for the Video object (see the Video class).
-
For bitmaps, the
smoothing
property does
not have to be set to
true
, but the quality improvements
are more visible when bitmaps use smoothing.
-
Use bitmap sizes that are divisible by 4 or 8 for two-dimensional
images (such as 640 x 128, which can be reduced as follows: 320 x 64 >
160 x 32 > 80 x 16 > 40 x 8 >
20 x 4 > 10 x 2 >
5 x 1).
For three-dimensional textures,
use MIP maps where each image is at a resolution that is a power
of 2 (meaning 2^n). For example, the main image is at a resolution
of 1024 x 1024 pixels. The lower quality images
in the MIP map would then be at 512 x 512, 256 x 256,
128 x 128 down to 1 x 1 pixels
for a total of 11 images in the MIP map.
Note that mipmapping
does not occur for bitmap content with an odd width or height.