这就是创意!中细软杯创新创意作
图形设计

一款基于帧捕捉的开源图形调试器应用设计

  如果你是一名图形开发者,那么你很可能在某个项目中遇到过RenderDoC,它是一款图形调试器,帮助很多开发者节省了大量的时间,现在,RenderDoC在PowerVR上获得了支持,并且也支持 PVRTC压缩格式。

  RenderDoc起初是一个业余项目,仅支持Windows和D3D11,对于游戏开发者来说,RenderDoc天生就是一款可靠的调试器,它一直关注于实际的应用案例、直观的工作流程并且不断满足开发人员的要求。随着时间的推移,它逐渐扩展到支持更多的API和平台上,目前该软件的作者与Valve Software公司达成合约全职开发这个项目。

  最新推出的V1.0版本增加了很多新的特性,因为三星和谷歌提供的帮助,安卓平台也实现了对OpenGL ES和Vulkan的支持。

  RenderDoc的操作与PVRTrace非常的相似,它们都是采集每帧数据用于调试,PVRTrace适合调试多帧数据,RenderDoc则非常适合检查每一帧的细节。因此这些工具在使用时无疑是互补的。

  纹理查看器选项:在这个视图中你可以查看所有输入和输出纹理,同时也包括了PVRTC。现在还提供了叠加层,支持所有的mip层、纹理分片和表面。

  RenderDoc包括非常多有用的特性,尤其在分析图形应用时起到了非常大的帮助。

   灵活的纹理查看器,包括不同可见范围、通道以及子资源的查看。同时支持复杂的自定义着色器实现可视化的纹理打包或解码。

   网格查看器展示了顶点流的输入和输出,通过可视化选项来查找选择具体要检查的顶点资源。

   统一资源查看器,链接资源到UI,以及查看所涉及到的API调用。

   运行调试特性,比如书签、资源重命名,使项目案例能够自动保存,通过注释能够定位到具体的问题。

   为渲染对象调试不同的图层,可以显示哪些像素通过或失败,比如深度、模板或背面消除等,以便能够快速的诊断问题。

   导出缓存、网格和纹理数据到文件,可借助外部工具进一步检查。

   深度Python脚本能够访问所有UI上提供的数据,控制整个分析过程。

  如上文所述,PVRTC是PowerVR和iOS设备上的实际格式,目前RenderDoc也开始支持这种格式。

  PVRTC是PowerVR系列专有的纹理压缩方案,提供每个像素4或2比特的颜色数据压缩(4/2bpp)。它使用插值和调制方案来压缩纹理数据,纹理数据被编码为两幅低分辨率的图像,以及全分辨率、低比特精度的调制信号。更多关于这个压缩技术的具体信息可以查看白皮书:使用低频信号调制实现纹理压缩。

  目前PVRTC已经分为两代,PVRTC1和PVRTC2都支持4bpp和2bpp压缩比,它们大体上相似,但是PVRTC2有其他的优势:

   图像质量:一般来说,相比PVRTC1,PVRTC2将提供更好的图像质量,在色彩大面积不连续的图像中,不需要纹理处理技术比如边界扩展,图像质量将显著提高。在skybox中的图像边界也不再需要了,而且非贴片的纹理也会有很大的改善。这主要是因为添加了专门的模式来处理纹理部分之间的高对比区域。

   无二次幂限制维度:PVRTC2为开发者提供了任意大小的NPOT(无二次幂限制)纹理,它是一个没有维度的纹理,不需要限制在二次幂范围内。

   子纹理(Sub-texturing):与PVRTC1不同,sub-texturing仅在PVRTC2中支持,提供数据字边界(分别适用于PVRTC2 4bpp或2bpp的4x4或8x4)。这将会进一步支持应用程序的纹理映射等技术,应该注意的是,这需要在要替换纹理的各部分启动硬转换标志模式。

  PVRTC在相同的数据内存中支持不透明(RGB)和半透明(RGBA)纹理(不像其他格式比如S3TC等需要额外的数据来支持一个完整的alpha通道)。PVRTC具备竞争力的压缩比率(4bpp或2bpp)同时提供非常高的图像质量,与未压缩的32位像素纹理相比这表示节省内存空间比达到8:1或16:1。Alpha通道数据是在每个数据字基础上编码的,因此完全不透明的纹理部分就不需要对Alpha通道信息进行不必要的编码了。

  在PVRTC中,数据范围可达到64位的字,每个数据都包括低分辨率图像和4x4或8x4调制数据中的某一个像素。与传统基于块的格式不同,PVRTC使用相邻的数据字来重建原始图像,而前者使用单个块的内容来重建纹理上的像素点(texel),因此,与基于块的压缩技术相比,这将会带来相当可观的视觉增强。