13840251110 在线客服 人才招聘 返回顶部
企业动态 技术分享 行业动态

使用WebGL轻松进行纹理压缩

2020-03-20分享
我们分享一下关于PlayCanvas中的纹理压缩技术这样我们就可以可以构建具有更大场景和改进功能的WebGL应用程序。

当前,许多WebGL开发人员从JPG或PNG图像加载纹理。这些文件格式在传输过程中会被大量压缩(尤其是JPG),但是不幸的是,当传递到WebGL时会占用大量视频内存。以下面的地球图像为例。
webgl技术
该图像为4096 x 2048像素,但被压缩为只有1.81MB的JPG文件。但是,WebGL将此图像解压缩为24位RGB,占用了33.6MB的VRM!例如,假设一种材料具有六个贴图:漫反射,法线,金属性,光泽,发射性和不透明度。这六个映像总共占了200MB以上的VRAM。此外,如果您的应用程序包含10多种独特的材料怎么办?可以很容易地预测到,这将导致浏览器选项卡崩溃,并严重影响最终用户!

WebGL通过提供对GPU硬件支持的多种压缩纹理格式的支持来解决这些问题。每个GPU支持以下格式中的至少一种:相反,WebGL支持所有以下格式:
·       DXT:在所有台式机设备和某些Android设备上受支持
·       PVR:在所有iOS设备和某些Android设备上受支持
·       ETC1:大多数Android设备上支持
 
PlayCanvas在纹理资源内部的简单检查器面板中压缩这些格式。以地球图像为例,PlayCanvas的压缩结果如下:

webgl纹理压缩
第一个数字是GZIP文件大小,第二个数字是此纹理的VRAM使用率。请注意,与原始JPG相比,压缩图像的VRAM使用率为1/6。大大减少!

看一看本文开头的I型演示。VRAM的用法如下:
纹理集 VRAM使用量(MB)
JPG + PNG 528.0
DXT 87.7
个人录像机 66.8
ETC1 87.7
 
纹理压缩使此演示移动友好。但是请记住,仅加载4MB数据后加载速度很快。为什么会这样呢?这些纹理使用称为细节级别的技术。使用此技术,将首先加载较低分辨率的版本并启动应用程序,而较高分辨率的版本则在后台异步传输。另请注意,该应用程序根本不需要加载光照贴图。这是因为在使用PlayCanvas的运行时光照贴图生成功能启动应用程序时会顺序创建光照贴图
PlayCanvas技术可确保在运行应用程序的设备上选择最佳的纹理格式。相反,在不支持Unity WebGL解决方案的平台上,Unity WebGL解决方案将加载DDS文件并根据需要将其解压缩。这意味着尽管在移动设备上最需要压缩,但移动设备没有任何好处。

综上,我们总结出以下结论:
·       DXT,PVR,ETC1的一键式纹理压缩
·       WebGL应用程序中所有纹理数据的6倍效率压缩
·       为运行PlayCanvas应用程序的设备选择最佳图像格式
 
> 在线咨询
Copyright © 2020-2025 原拓数字科技(沈阳)有限公司 工信部备案号:辽ICP备18006475号-2  技术支持:原拓动画