David Reveman has just completed a series of optimizationsin the Moonlight engine that allows Moonlight to takeadvantage of your GPU for the data intensive video renderingoperations. This is in addition to the standard GPU hardwareacceleration thatwe debuteda few weeks ago. This is what the video rendering loop looks like inMoonlight:Every one of those steps is an expensive process as it hasto crunch to a lot of data. For example, a 720p video whichhas a frame size of 1280x720, this turns out to be 921,600pixels. This frame while stored in RGB format at 8 bits perchannel takes 2,764,800 bytes of memory. If you are decodingvideo at 30 frames per second, you need to at least move fromthe encoded input to the video 82 megabytes per second.Things are worse because the data is transformed on every stepin that pipeline. This is what each step does:The video decoding is the step that decompressesyour video frames. This is done one frame at a time, theinput might be small, but the output will be the size of theoriginal video. The decoding process generates imagesin YUV format.This format is used to store images and videos but and withprevious versions of Moonlight, we had to convert this YUVdata into an in-memory bitmap encodedin RGBformat.The final step is to transfer this image to the graphicscard. This typically involves copying the data from thesystem memory to the graphics card, and in Unix this goesthrough the user process to the X server process, whicheventually moves the data to the graphics card.New Hardware Accelerated FrameworkThe new hardware acceleration framework now skips plenty ofthese steps and lets the GPU on the system take over, this iswhat the new pipeline looks like:The uncompressed image in YUV format is sent directly tothe GPU. Since OpenGL does not really know about YUV images,we use a custom pixel shader that runs on the graphics card todo the conversion for us and we also let the GPU take care ofscaling the image.The resulting buffer is composited with the rest of thescene, using thenew renderingframework introduced in Moonlight 4.Although native video playback solutions have been doingsimilar things for a while on Linux, we had to integrate thisinto the larger retained graphics system that is Moonlight.We might be late to the party, but it is now a hardwareaccelerated and smooth party.And what does this looks like? It looks like heaven.We were watching 1080p videos, running at full screen inDavid's office and it is absolutely perfect.Getting the CodeThe codeis available now onGithub and will be available in a few hours as apre-packagedbinary from our nightly builds. Posted on 23 Mar 2011
Moonlight Engine Latest Version
An open source version of Microsoft's Silverlight from the Mono project. Moonlight provides a runtime engine that allows Silverlight applications to run on Linux and also provides a Linux software development kit (SDK) for building Silverlight applications. Microsoft and Novell are sponsors of the project, which issued the first public release of Moonlight in the spring of 2008. For more information, visit www.mono-project.com. See Silverlight and Mono.
BioWare's Aurora Engine was used to create The Witcher computer game. It had been rewritten (around 80%) to utilise the latest version of DirectX 9. The new engine's main feature is a brand new rendering system responsible for realistic visuals. Vertex and pixel shaders have been implemented, allowing magical swords to glow subtly in the dark, as well as the eyes of some creatures. These shaders have also allowed for the implementation of numerous stunning full-screen effects, like witchers' night vision.
Banpresto entered the third party into the PC engine, and at the same time as the PC engine version of the original "Sailor Moon" was released, it was sometimes ridiculed in the magazine "Monthly PC Engine"
2ff7e9595c
Comentarios