作者:游梦

图片与纹理区别

日常沟通中通常把图片与纹理混为一谈,实际在图形学中,它俩是严格意义上的两个对象,主要有以下两个方面的区别:

文件格式:

图片:JPG、JPEG、PNG、bmp、webp、SVG等常见格式

纹理:ETC(安卓)、DXT(Windows)、PVRTC(VR设备)、ASTC(跨平台)、Basis Universal(跨平台)

而常见的纹理文件如KTX、KTX2、DDS等,只是纹理存储介质俗称纹理容器,本文主要讲解KTX2纹理。

(图片生命周期,图源:PVRTexTool现支持KTX™2.0和 Basis Universal超级压缩_ktx2压缩-CSDN博客

使用方式:
图片:先从硬盘加载到内存中,通过解析成GPU可识别的纹理再供着色器程序使用
纹理:直接供着色器程序使用

纹理格式

在生产过程中见不到非压缩纹理,因为图形学中带宽与内存占用是一个引擎必须考虑的点,出于性能考虑所以通常会对图片与纹理进行压缩用于节省带宽与内存。

纹理压缩算法

纹理压缩算法主要用于减少纹理图像在计算机图形处理中所占用的存储空间,‌同时保持或接近原始图像的质量。‌这些算法通过不同的技术来压缩纹理数据,‌从而在保证图像质量的前提下,‌提高图形渲染的效率和性能。‌以下是一些常见的纹理压缩算法及其特点:‌

  1. DXT系列:‌包括DXT1、‌DXT2、‌DXT3、‌DXT4和DXT5,‌这些算法主要用于PC游戏和图形应用。‌DXT2和DXT3的主要区别在于Alpha信息的处理方式,‌而DXT4和DXT5则侧重于处理复杂的透明信息。‌DXT系列算法通过颜色和Alpha值的压缩,‌以及线性插值计算,‌实现了高效的纹理压缩。‌
  2. ETC系列:‌包括ETC1和ETC2,‌这些算法主要用于移动设备和嵌入式系统,‌如安卓设备。‌ETC2是ETC1的扩展,‌支持Alpha通道的压缩,‌并且对硬件要求较高,‌需要OpenGL ES 3.0或更高版本的支持。‌
  3. ASTC:‌由ARM和AMD联合开发,‌是一种灵活的纹理压缩格式,‌可以根据不同的图片选择不同的压缩率算法。‌ASTC不需要图片尺寸为2的幂次,‌同时支持LDR和HDR。‌其数据块大小固定为128位,‌但像素数量可变,‌从4×4到12×12像素都有。‌
  4. PVRTC:‌专为PowerVR显卡设计,‌仅支持iPhone、‌iPad和部分安卓机。‌PVRTC将图像分为低频信号和高频信号,‌通过不同的处理方式实现压缩。‌PVRTC分为4-bpp和2-bpp两种,‌提供了较高的压缩率。‌

KTX2纹理:

KTX 2.0增加了对Basis Universal超压缩GPU纹理的支持。这种压缩技术由Google与Binomial合作开发,可以产生紧凑的纹理,在运行时可以有效地转码为各种GPU压缩的纹理格式。此外,Khronos还发布了KHR_texture_basisu扩展,使glTF能够包含KTX 2.0纹理,从而产生可普遍分发的glTF资产,减少下载大小,并使用本机支持的纹理格式来减少GPU内存大小,提高不同设备和平台上的渲染速度,又因3DTiles瓦片使用的是glTF,从而为GIS行业常用的3DTiles模型提供了轻量化方案。

(压缩对比图,图源:Google与Binomial合作开源Basis Universal GPU纹理编解码器-腾讯云开发者社区-腾讯云

KTX2纹理格式优势:

1. 高效压缩:KTX2提供了先进的纹理压缩算法,例如ASTC(Adaptive Scalable Texture Compression)、BC(Block Compression)系列(如BC6/BC7)、ETC2(Embedded Texture Compression 2),这些算法可以显著减小纹理数据的大小,从而减少带宽需求和存储空间。

2. 多格式支持:KTX2不仅支持上述压缩格式,还支持非压缩格式,这使得它非常灵活,可以根据不同的应用场景选择最优的压缩方案。

3. GPU友好:KTX2格式直接与现代图形API(如OpenGL、Vulkan)兼容,这意味着它可以被GPU高效读取和处理,减少了CPU预处理的开销。

4. 多维度纹理:KTX2可以包含各种类型的纹理,包括2D、3D、立方体贴图以及纹理数组,甚至可以包含Mipmap层次结构,使得它成为一种非常全面的纹理存储格式。

5. 元数据嵌入:KTX2文件可以包含有关纹理的元数据,如纹理格式、尺寸、像素格式等,这样可以避免在加载时需要额外的信息,简化了纹理加载过程。

6. 跨平台:由于KTX2是Khronos Group制定的标准,它被设计为跨平台的,可以在不同的操作系统和硬件上使用,提高了纹理的可移植性和兼容性。

7. 未来兼容性:KTX2格式设计时考虑到了未来的发展,预留了空间用于添加新特性或支持新的压缩格式,确保了长期的可用性和可扩展性。

需要注意的是,KTX2的优势主要体现在现代硬件和软件环境中,对于老旧的系统或设备,可能因为硬件不支持这些高级压缩格式而无法完全利用KTX2的所有优点。

Mapmost SDK for WebGL 在多源数据支持上经过多年研发以及多个版本迭代,目前是市面上唯二支持DDS与KTX2纹理模型加载的引擎,相比于另一个CesiumJS引擎,Mapmost SDK for WebGL同时支持矢量瓦片渲染,CesiumJS目前尚不支持矢量瓦片渲染且没有研发规划。

(矢量瓦片 + DDS纹理的i3s格式数据渲染,图源:Mapmost SDK for WebGL)

(KTX2纹理的b3dm格式数据渲染,图源:Mapmost SDK for WebGL)

参考文献:

PVRTexTool现支持KTX™2.0和 Basis Universal超级压缩_ktx2压缩-CSDN博客

KTX Overview - The Khronos Group Inc

https://zhuanlan.zhihu.com/p/665140982DXT纹理压缩-CSDN博客


  关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐