Silverlight 3 supports Advanced Audio Coding (AAC) audio decoding as well as hardware-accelerated H.264 video decoding. Silverlight 3 also offers 1080p smooth streaming. The native multimedia pipeline is also programmatically exposed, so that other formats can also be supported by third parties using managed code decoders. Silverlight 3 supports perspective 3D which enables 3D transformations of 2D elements. These transformations, as well as many 2D operations like stretches, alpha blending etc. are hardware accelerated. Custom animations, including transforms and blends, can be created on Silverlight elements using High Level Shader Language (HLSL) to make use of pixel shaders. A bitmap API is provided to let Silverlight 3 applications manipulate bitmaps. Silverlight now uses the graphics processing unit (GPU) to accelerate the composition of Visual Trees (like WPF, Silverlight elements correspond to Visual elements, which, when coupled with the layout information, forms a Composition Tree or Visual Tree which is then rendered to form the final display; see WPF architecture). Visual trees can now be cached; this increases performance in cases like transforms, which creates many throw-away intermediate states, by not making the state transitions on the main Visual tree. Silverlight 3 now also supports ClearType text rendering. UI elements in Silverlight 3 supports element-to-element binding—which allows one element to be bound to the state of another element, as well as a validation mechanism for data binding. Unlike Silverlight 2, which allowed the applications to save files only to the local isostorage, Silverlight 3 applications can save to any location on the file system via the system Save File dialog. However, the path where the file is saved will still be hidden from the Silverlight application. Any external assemblies used by Silverlight applications are cached too so that they need not be redownloaded for subsequent instantiations of the application. Silverlight 3 also includes a LocalConnection API to communicate (using a named pipe style model) among multiple running applications on the same machine, irrespective of the browser and can monitor for network connectivity events. Silverlight 3 can optionally use Binary XML to communicate with WCF services. Silverlight 3 supports Out-of-Browser experiences, i.e., Silverlight applications can be installed to the system for offline access (provided the application manifest is designed to allow local installation) where they run outside the browser. They are launched using the Start Menu or desktop shortcuts, and run without the browser window. Applications can check whether they are running