谷歌和二项式
Basis Universal 补充了之前的内容
Basis Universal 格式允许您实现本机 GPU 纹理的性能,但提供更高级别的压缩。
Basis 是一种中间格式,可在使用前将 GPU 纹理快速转码为各种低级格式,以便在桌面系统和移动设备上使用。 目前支持的格式有 PVRTC1 (4bpp RGB)、BC7(6 RGB 模式)、BC1-5、ETC1 和 ETC2 格式。 未来预计将支持 ASTC 格式(RGB 或 RGBA)以及 BC4 的 5/7 RGBA 模式和 PVRTC4 的 1bpp RGBA。
基本格式的纹理占用的视频内存少 6-8 倍,所需传输的数据量大约是基于 JPEG 格式的典型纹理的一半,比 RDO 模式的纹理少 10-25%。 例如,JPEG 图像大小为 891 KB,ETC1 纹理为 1 MB,Basis 格式的数据大小在最高质量模式下为 469 KB。 将纹理放入显存时,测试中使用的 JPEG 和 PNG 纹理消耗了 16 MB 内存,而
Basis 需要 2 MB 内存来转换为 BC1、PVRTC1 和 ETC1,需要 4 MB 内存来转换为 BC7。
将现有应用程序迁移到 Basis Universal 的过程非常简单。 使用项目提供的“basisu”实用程序将现有纹理或图像重新编码为新格式就足够了,选择所需的质量级别。 接下来,在应用程序中,在渲染代码之前,需要初始化basisu转码器,它负责将中间格式翻译成当前GPU支持的格式。 同时,整个处理链中的图像保持压缩状态,包括以压缩形式加载到 GPU 中。 GPU 不会预先对整个图像进行转码,而是有选择地仅对图像的必要部分进行解码。
它支持在一个文件中保存异构纹理数组(立方体贴图)、体积纹理、纹理数组、mipmap 级别、视频序列或任意纹理片段。 例如,可以将一系列图像打包在一个文件中以创建小视频,或者使用所有图像的通用调色板并删除典型图像模板的重复数据来组合多个纹理。 Basis Universal 编码器实现支持使用 OpenMP 的多线程编码。 转码器目前仅在单线程模式下工作。
另外
值得注意的是,嵌入视频并仅在 GPU 端进行后续处理的能力使 Basis Universal 成为在 WebAssembly 和 WebGL 上创建动态用户界面的有趣解决方案,它可以以最小的 CPU 负载同时显示数百个小视频。 在SIMD指令可以与传统编解码器一起在WebAssembly中使用之前,这种性能水平还无法实现,因此基于纹理的视频可以用于传统视频不适用的领域。 目前正在准备发布对视频进行额外优化的代码,包括使用
来源: opennet.ru