2025年3月18日

新的图像和视频运行时加载器

去年早些时候,Evergine 通过其 Evergine.Runtimes 库引入了一个突破性概念,这些库经过精心设计,旨在增强资源加载过程的灵活性、效率和动态性。这些库支持从本地内容仓库加载资源或从互联网动态下载,使开发者能够在其应用程序中无缝集成动态内容。

初始版本包含:

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

这两个库专门用于运行时加载 GLB 和 STL 格式的 3D 模型资源。

在本次最新版本中,Evergine 通过引入两个额外的 NuGet 包扩展了其功能:

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

Evergine.Runtimes.Images

此前,Evergine 使用 ImageSharp 库进行图像加载和纹理创建。经过与行业客户的广泛互动及其反馈的详细分析,团队决定将图像加载流程迁移至高性能的 SkiaSharp 库。

SkiaSharp 是一个跨平台、高性能的 2D 图形 API,基于 Google 的 Skia 图形库构建。SkiaSharp 提供广泛的图像格式支持、硬件加速以及跨多平台的优化图像处理能力,确保了一致的渲染质量和性能效率。

这一向 SkiaSharp 的战略性迁移带来了显著的性能提升,在支持的平台上实现了高达 98% 的效率增益。

Evergine.Runtimes.Images 库现在支持多种格式的快速实时纹理加载,包括 BMP、JPEG、JPG、PNG 和 WEBP。与以往需要预编译 Evergine 内容资产的实现不同,新的运行时支持直接从网络下载、云存储或用户上传获取的图像动态创建纹理。这一进步极大地拓宽了应用程序开发的可能性。

将 Evergine.Runtimes.Images 库集成到您的项目中非常简单:只需包含相应的 NuGet 包并遵循提供的实现示例:

有关更多技术细节,请参阅 Evergine 官方文档。

Evergine.Runtimes.Videos

与图像增强并行,此版本引入了 Evergine.Runtimes.Videos 库,旨在简化和统一跨平台实时视频加载与播放的复杂任务。由于平台特定机制和 API 的差异,实时视频渲染面临重大挑战。经过全面研究,Evergine 团队选择 FFmpeg 作为标准化视频加载与播放的最佳跨平台库。

FFmpeg 是一个行业领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎任何多媒体格式。FFmpeg 以其高效性和多功能性著称,可在各种硬件和软件环境中提供稳健、优化的性能。

基于 FFmpeg 构建的全新 Evergine.Runtimes.Videos 库已通过常见视频格式的严格测试,例如 MP4 (H.264)、WMV、MOV 和 FLV。此外,该运行时同时支持基于 CPU 和 GPU 加速的解码,大幅减少了解码时间,并能在无性能下降的情况下同时播放多个高分辨率视频。

下图展示了 Evergine 的视频运行时在 Windows 平台上运行,并配置了通过 DXVA2 标准进行的 GPU 加速解码:

注意:视频示例由 OpenAI 的 Sora 提供。

虽然此版本中的视频支持目前仅限于 Windows x64,但 Evergine 开发团队正积极努力,以期在未来的更新中将此功能扩展到更多平台。

要将这个强大的新运行时集成到您的项目中,请添加 Evergine.Runtimes.Videos NuGet 包,并使用 Evergine Studio 中提供的全新 VideoPlayer 组件。

注意:Evergine Studio 中的 VideoPlayer 组件

有关全面的技术文档和实现细节,请参阅 Evergine 官方文档。

Evergine 团队始终致力于持续改进和扩展 Runtimes 库,为开发者简化动态加载资产的过程。

Jorge Canton
作者
Jorge Cantón
Plain Concepts Research