March 18, 2025

New Images and Videos runtimes loaders

Earlier last year, Evergine introduced a groundbreaking concept through its Evergine.Runtimes libraries , meticulously designed to enhance the flexibility, efficiency, and dynamism in asset loading processes. These libraries facilitate loading assets from local content repositories or dynamically downloading them from the internet, empowering developers to integrate dynamic content seamlessly within their applications.

The initial release featured:

  • Evergine.Runtimes.GLB
  • Evergine.Runtimes.STL

Both libraries specialized in runtime loading of 3D model assets in GLB and STL formats.

In this latest release, Evergine has expanded its capabilities by introducing two additional NuGet packages:

  • Evergine.Runtimes.Images
  • Evergine.Runtimes.Videos

Evergine.Runtimes.Images

Previously, Evergine employed the ImageSharp library for image loading and texture creation. After extensive interaction with industry clients and detailed analysis of their feedback, the decision was made to migrate image loading processes to the high-performance SkiaSharp library.

SkiaSharp is a cross-platform, high-performance 2D graphics API built on Google’s Skia Graphics Library. SkiaSharp provides extensive image format support, hardware acceleration, and optimized image processing capabilities across multiple platforms, ensuring consistent rendering quality and performance efficiency.

This strategic migration to SkiaSharp has yielded remarkable performance improvements, achieving efficiency gains of up to 98% across supported platforms.

The Evergine.Runtimes.Images library now facilitates rapid real-time texture loading in a variety of formats, including BMP, JPEG, JPG, PNG, and WEBP. Unlike previous implementations, which required precompiled Evergine content assets, the new runtime enables dynamic texture creation directly from images obtained via internet download, cloud storage, or user-generated uploads. This advancement significantly broadens application development possibilities.

Integrating the Evergine.Runtimes.Images library into your project is straightforward: simply include the corresponding NuGet package and follow the provided implementation example:

For further technical details, refer to the official Evergine documentation.

Evergine.Runtimes.Videos

Parallel to image enhancements, this release introduces the Evergine.Runtimes.Videos library, designed to streamline and unify the complex task of real-time video loading and playback across platforms. Real-time video rendering poses significant challenges due to variations in platform-specific mechanisms and APIs. After comprehensive research, the Evergine team selected FFmpeg as the optimal cross-platform library to standardize video loading and playback.

FFmpeg is an industry-leading multimedia framework capable of decoding, encoding, transcoding, muxing, demuxing, streaming, filtering, and playing virtually any multimedia format. Renowned for its efficiency and versatility, FFmpeg provides robust, optimized performance across various hardware and software environments.

Built upon FFmpeg, the new Evergine.Runtimes.Videos library has been rigorously tested with common video formats such as MP4 (H.264), WMV, MOV, and FLV. Additionally, this runtime supports both CPU-based and GPU-accelerated decoding, drastically reducing decoding time and enabling simultaneous playback of multiple high-resolution videos without performance degradation.

The following illustration demonstrates Evergine’s video runtime operating on a Windows platform configured with GPU-accelerated decoding via the DXVA2 standard:

Note. Video example provided by OpenAI’s Sora.

While video support in this release is currently limited to Windows x64, the Evergine development team is actively working towards extending this functionality to additional platforms in future updates.

To integrate this powerful new runtime into your project, add the Evergine.Runtimes.Videos NuGet package, and utilize the new VideoPlayer component available within Evergine Studio.

Note. VideoPlayer component on Evergine Studio

For comprehensive technical documentation and implementation details, please refer to the official Evergine documentation.

The Evergine team remains dedicated to continuously improving and expanding the Runtimes libraries, simplifying the process of dynamically loading assets for developers.

Jorge Canton
Author
Jorge Cantón
Plain Concepts Research

Wait! Don't leave yet.

Sign up for our monthly newsletter to be updated on all the latest news, case studies, and more.

We don't send spam and you can unsubscribe at any time.